X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=deptrack%2Fdeptrack.pl;h=b31ed068efb6a820fc6bab342645879929c70eae;hb=588d5eac34d8f281bf3b06da0079c2517e82b116;hp=f54491da2dc04a75af95524478e8ae15461cb389;hpb=0a7f073d9ad1ab8433a76986ce54633d3f35e52b;p=old-projects.git diff --git a/deptrack/deptrack.pl b/deptrack/deptrack.pl index f54491d..b31ed06 100755 --- a/deptrack/deptrack.pl +++ b/deptrack/deptrack.pl @@ -3,6 +3,11 @@ # $Id$ use DBI; +use strict; + +my $dsn = "DBI:mysql:database=deptrack;host=localhost"; +my $dbh = DBI->connect($dsn,"deptrack","phptrax"); + # return program syntax sub syntax { @@ -13,10 +18,7 @@ sub syntax { # worker function called by tagextract and tagstrip sub tagcrunch { my($tag1,$tag2,$intag,@lines) = @_; - my $line; - my $pos; - my @out; - my $add; + my($line,$pos,@out,$add); while ($line = shift(@lines)) { if ($intag) { @@ -82,19 +84,18 @@ sub commentstrip { # parse a directory sub parsedir { - my ($dir,$vdir) = @_; - my $dirhandle; + my($dir,$vdir) = @_; # build virtual path if (length($vdir)>0) { $vdir="$vdir/" } - opendir($dirhandle, $dir); - my @list = grep /^[^\.]/, readdir($dirhandle); - closedir($dirhandle); + opendir(DIRHANDLE, $dir); + my @list = grep /^[^\.]/, readdir(DIRHANDLE); + closedir(DIRHANDLE); - my @phpfiles=grep /.*.(php|inc)/,@list; + my @phpfiles=grep /\.(php|inc)$/,@list; foreach my $file (@phpfiles) { parsefile("$dir/$file","$vdir$file"); } @@ -102,7 +103,7 @@ sub parsedir { foreach my $entry (@list) { if (-d $entry) { if ($entry !~ /^CVS$/) { - &parsedir("$dir/$entry", "$vdir$entry"); + &parsedir("$dir/$entry", "$vdir$entry", "$vdir"); } } } @@ -110,38 +111,52 @@ sub parsedir { # parse a file sub parsefile { - my ($file,$vfile) = @_; - my $fhandle; + my($file,$vfile,$vdir) = @_; + my(@lines,@phplines,@includes); - open($fhandle,$file); - @lines = <$fhandle>; - close($fhandle); + open(FHANDLE,$file); + @lines = ; + close(FHANDLE); + # strip out commented code @lines = tagstrip("",@lines); - @lines = tagextract("",@lines); - @lines = tagstrip("/*","*/",@lines); - @lines = commentstrip("\/\/",@lines); - @lines = grep /(require|include)\s*\(/, @lines; - print @lines; + + # deal with PHP lines + @phplines = tagextract("",@lines); + @phplines = tagstrip("/*","*/",@phplines); + @phplines = commentstrip("\/\/",@phplines); + @phplines = commentstrip("#",@phplines); + @includes = grep /(require|include)\s*\(/, @phplines; + foreach my $include (@includes) { + if ($include =~ /\.inc(\.php)?$/) { + + } else { + + } + } } # create DB entries for a directory sub listdir { - my ($dir,$vdir) = @_; - my $dirhandle; + my($dir,$vdir) = @_; + my($sth); # build virtual path if (length($vdir)>0) { - $vdir="$vdir/" + $vdir="$vdir/"; } - opendir($dirhandle, $dir); - my @list = grep /^[^\.]/, readdir($dirhandle); - closedir($dirhandle); + opendir(DIRHANDLE, $dir); + my @list = grep /^[^\.]/, readdir(DIRHANDLE); + closedir(DIRHANDLE); - my @phpfiles=grep /.*.(php|inc)/,@list; + my @phpfiles=grep /\.(php|inc)/,@list; foreach my $file (@phpfiles) { - my $sth = $dbh->prepare("insert into file set path='$vdir$file'"); + if ($file =~ /\.inc(\.php)?$/) { + $sth = $dbh->prepare("insert into file set path='$vdir$file',type='include'"); + } else { + $sth = $dbh->prepare("insert into file set path='$vdir$file',type='page'"); + } $sth->execute; } @@ -158,12 +173,8 @@ sub listdir { my $nargs = @ARGV; $nargs || syntax(); -$dsn = "DBI:mysql:database=deptrack;host=localhost"; -$dbh = DBI->connect($dsn,"deptrack","phptrax"); - my $topdir = $ARGV[0]; $topdir =~ s/\/$//; listdir($topdir,""); parsedir($topdir,""); -#parsefile("p.php","");