J'avais envie cette aprés-midi de savoir combien de lignes de code (Pb, C ou autres) j'avais dans certains répertoires, donc je me suis bricolé ce petit utilitaire qui scanne le répertoire de votre choix et compte ensuite les lignes dans les fichiers qu'il contient
Il est trés simple de modifier le filtre de fichiers pour ajouter/retirer des extensions au scan
Le code :
Code : Tout sélectionner
Global Dir$ = PathRequester("Choisissez un répertoire à scanner","")
Global Filter$ = "txt c cpp c++ h hpp h++ bash py java pb pbi pbf sb sbi" ;<<Modifiez ici les extensions de fichiers à prendre en compte
Global NewList Files.s()
Procedure ExploreDirectory(Directory$, DirID = 0)
; Debug Directory$
If ExamineDirectory(DirID,Directory$,"*.*")
While NextDirectoryEntry(DirID)
If (DirectoryEntryType(DirID) = #PB_DirectoryEntry_Directory And DirectoryEntryName(DirID) <> "." And DirectoryEntryName(DirID) <> "..")
;Debug DirectoryEntryName(DirID)
ExploreDirectory(Directory$ + DirectoryEntryName(DirID) + "\", DirID +1)
Else
AddElement(Files())
Files() = Directory$ + DirectoryEntryName(DirID)
EndIf
Wend
Else
Debug "Erreur d'accès à "+Directory$
EndIf
EndProcedure
Procedure ScanFiles(param)
ExploreDirectory(Dir$)
Protected Total = 0, Size = ListSize(Files()), i=0
SetGadgetAttribute(1, #PB_ProgressBar_Maximum,Size)
ForEach Files()
i+1
;Debug "Progression : "+StrF((i/Size)*100,2)+"% ("+i+"/"+Size+" files), reading ["+Files()+"]"
SetGadgetState(1,i)
SetGadgetText(2,GetFilePart(Files())+GetExtensionPart(Files()))
If FindString(Filter$,GetExtensionPart(Files()))
Debug GetExtensionPart(Files())
ReadFile(0, Files())
Total + CountString(ReadString(0, #PB_File_IgnoreEOL),#LF$)
CloseFile(0)
EndIf
Next
MessageRequester("Résultats de scan",Str(Total) + " lignes de code ont été détectées", #PB_MessageRequester_Info)
FreeList(Files())
CloseWindow(0)
End
EndProcedure
OpenWindow(0,0,0,200,50,"Scan des fichiers en cours...", #PB_Window_ScreenCentered)
ProgressBarGadget(1,10,5,180,20,0, 100, #PB_ProgressBar_Smooth)
TextGadget(2,10,30,180,20,"Examen de l'arborescence...")
CreateThread(@ScanFiles(),0)
Repeat : event = WaitWindowEvent() : Until event = #PB_Event_CloseWindow