Valid XHTML     Valid CSS2    


        #  (gH)   -_-  ldphp.pl  ;  TimeStamp (unix) : 08 Janvier 2008 vers 13:05
        
        ############################################################################
        #
        #  ldphp.pl : liste des fonctions d'un module Php ; (gH) 2008
        #
        ############################################################################
        
        $version_ldphp = 1.3 ;
        
        use lib $ENV{"PERL_MACROS"} ; # répertoire qui contient mes macros
        use strFuncs ;
        
        #
        #   on détecte : include
        #                include_once
        #                require_once
        #                function
        #
        
        if ($ARGV[0] eq "") {
                print "\n" ;
                print "   syntaxe : ldphp nom_de_fichier.php \n" ;
                print "\n" ;
                exit(-1) ;
        }  ; # fin de test sur les arguments
        
        $fs     = "ldphp.sor"   ;         # fichier de sortie
        open( FS ,">$fs") || die "\n impossible d'écrire dans le fichier $fs\n\n" ;
        
        $nomp    = $ARGV[0]     ;         # nom du programme
        if (! ( (-e $nomp) && (-r $nomp) ) ) { die "\n Impossible de lire dans le fichier $nomp\n\n" ; } ;
        
        print "\n" ;
        $msg = "Analyse du fichier $nomp" ;
        print    " $msg \n" ;
        print FS " $msg \n" ;
        print FS " ".("=" x length($msg))."\n" ;
        print FS "  ".&dateEtHeure()."\n\n" ;
        
        print FS " Liste des fichiers inclus \n" ;
        print FS " ------------------------- \n" ;
        print FS " (format : nom du fichier et nombre de lignes dans le fichier) \n\n" ;
        
        # on passe en revue le fichier et on cherche les inclusions
        # puis les fonctions
        
        @tdmar      = split(" ","include( include_once( require_once(")      ; # tableau des mots à rechercher
        $lstFicTmp  = " $nomp " ;  # liste des fichiers
        $lstFonc    = " "       ;  # liste des fonctions
        $lstFicVus  = " $nomp " ;  # fichiers déjà vus
        
        while (&nbMots($lstFicTmp)>0) {
        
             $nomf      = &premierMot($lstFicTmp) ;
             $nomf      = trim($nomf) ;
             if (length($nomf)>0) {
        #print " FICHIER $nomf\n" ;
             $lstFicTmp = &phraseSansPremierMot($lstFicTmp) ;
             $lstFic   .= $nomf." " ;
             open(FC,"<$nomf") || die "\n impossible de lire dans le fichier $nomf\n\n\n" ;
             $nblc = 0 ;
             while ($lig=<FC>) {
               $nblc++ ;
        
               # 1. recherche d'inclusion
        
               foreach $mac (@tdmar) {
                 $pdi = index($lig,$mac) ; # position de include ou assimilé
                 if ($pdi>-1) {
                    $ll = substr($lig,0,index($lig,')')) ; #
                    $dl = substr($ll,1+index($ll,'"'))    ; # début de ligne
                    $nn = substr($dl,0,index($dl,'"'))  ; # nom de fichier
                    $nn = &trim($nn) ;
        #print " $nn \n" ;
                    if ($nn ne "once(") {
                    if (index(" $lstFicTmp "," $nn ")==-1) { # ajout éventuel
                    if (index(" $lstFicVus "," $nn ")==-1) { # ajout éventuel
                      $lstFicTmp .= " $nn" ;
                      $lstFicVus .= " $nn" ;
                    } ; # fin de si
                    } ; # fin de si
                    } ; # fin de si
                 } ; # fin si on a vu le mot à chercher
               } ; # fin pour chaque
        
               # 2. recherche du mot function
        
               $mac = "function" ;
               $pdf = index($lig,$mac) ; # position de function
               if (($pdf>-1) && (&premierMot($lig) eq $mac)) {
                    $dl = substr($lig,length($mac)+1)  ; # début de ligne
                    $nf = substr($dl,0,index($dl,'(')) ; # nom de fichier
                    $nf = &trim($nf) ;
                    if (index(" $lstFonc "," $nf ")==-1) { # ajout éventuel
                      $lstFonc .= " $nf "  ;
                      $fdnbl{$nf} = $nblc ;
                      $sdnbl{$nf} = $nomf ;
                    } ; # fin de si
               } ; # fin si on a vu le mot function
             } ; # fin de tant que non fin de fichier sur FC
             $tdnbl{$nomf} = $nblc ;
             close(FC) ;
          }
        } ; # fin de tant que sur lstFic
        
        # affichage des fichiers
        
        @tabfic = sort split(" ",$lstFic) ;
        print "\n" ;
        $numf  = 0 ; # nombre de fichiers
        $nbl_t = 0 ; # nombre de lignes en tout
        foreach $fic (@tabfic) {
               $numf++ ;
               $ls = "     ".sprintf("%3d",$numf).". " ;
               if ($fic eq $nomp) { $ls .=  "*" ; } else { $ls .=  " " ; } ;
               $ls .= " ".surncarg($fic,20).sprintf("%6d",$tdnbl{$fic})."\n" ;
               $nbl_t += $tdnbl{$fic} ;
               print $ls ;
               print FS $ls ;
        } ; # fin pour chaque
        print "                         total  ".sprintf("%6d",$nbl_t)." lignes\n" ;
        print FS "                         total  ".sprintf("%6d",$nbl_t)." lignes\n" ;
        print FS "\n" ;
        
        # affichage des fonctions
        
        print FS " Liste des fonctions  (et position dans le fichier)\n" ;
        print FS " --------------------\n\n" ;
        
        $numf = 0 ;
        foreach $fonc (sort split(" ",$lstFonc)) {
               $numf++ ;
               $ls = "     ".sprintf("%3d",$numf).". " ;
               $ls .= " ".surncarg($fonc,30) ;
               $ls .= " ".surncarg($sdnbl{$fonc},30) ;
               $ls .= " ".sprintf("%6d",$fdnbl{$fonc})."\n" ;
               print FS $ls ;
        } ; # fin pour chaque
        print FS "\n" ;
        
        # fonctions par fichier
        
        foreach $fic (@tabfic) {
           $ls = "Fonction(s) du fichier $fic" ;
           print FS " $ls  (et position dans le fichier)\n" ;
           print FS " ".("-" x length($ls))."\n" ;
           $numf = 0 ;
           foreach $fonc (sort split(" ",$lstFonc)) {
              if ($sdnbl{$fonc} eq $fic) {
                    $numf++ ;
                    $ls = "     ".sprintf("%3d",$numf).". " ;
                    $ls .= " ".surncarg($fonc,30) ;
                    $ls .= " ".sprintf("%6d",$fdnbl{$fonc})."\n" ;
                    print FS $ls ;
              } ; # fin de si
           } ; # fin pour chaque
           if ($numf==0) {
              print FS "  aucune fonction.\n" ;
           } ; # fin de si
           print FS "\n" ;
        } ; # fin pour chaque
        
        
        # affichages de fin
        
        print "\n         ... vous pouvez consulter $fs\n\n" ;
        print FS "\n" ;
        close(NP) ;
        close(FS) ;
        
        

 

 

retour gH    Retour à la page principale de   (gH)