]> granicus.if.org Git - clang/commitdiff
Initial support for generating index.html file.
authorTed Kremenek <kremenek@apple.com>
Wed, 2 Apr 2008 18:03:36 +0000 (18:03 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 2 Apr 2008 18:03:36 +0000 (18:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49104 91177308-0d34-0410-b5e6-96231b3b80d8

utils/scan-build

index 357cfccb69a4a5229eb6304fd8aff5f29f8ba48f..1f8aefbd88d1a943dae291327ba3fa66825788ba 100755 (executable)
@@ -114,6 +114,34 @@ sub SetHtmlEnv {
   $ENV{'CCC_ANALYZER_HTML'} = $Dir;
 }
 
+##----------------------------------------------------------------------------##
+# ScanFile - Scan a report file for various identifying attributes.
+##----------------------------------------------------------------------------##
+
+sub ScanFile {
+  
+  my $Index = shift;
+  my $Dir = shift;
+  my $FName = shift;
+  
+  open(IN, "$Dir/$FName") or die "$Prog: Cannot open '$Dir/$FName'\n";
+
+  my $BugDesc = "";
+  
+  while (<IN>) {
+    
+    if (/<!-- BUGDESC (.*) -->$/) {
+      $BugDesc = $1;
+      last;
+    }
+
+  }
+
+  close(IN);
+    
+  push @$Index,[ $FName, $BugDesc ];
+}
+
 ##----------------------------------------------------------------------------##
 # Postprocess - Postprocess the results of an analysis scan.
 ##----------------------------------------------------------------------------##
@@ -137,8 +165,45 @@ sub Postprocess {
     `rm -fR $Dir`;
     return;
   }
+  
+  # Scan each report file and build an index.
+  
+  my @Index;
+    
+  foreach my $file (@files) { ScanFile(\@Index, $Dir, $file); }
+  
+  # Generate an index.html file.
+  
+  my $FName = "$Dir/index.html";
+  
+  open(OUT, ">$FName") or die "$Prog: Cannot create file '$FName'\n";
+  
+print OUT <<ENDTEXT;
+<html>
+<head>
+</head>\n<body>
+<table class="reports">
+ENDTEXT
 
+  for my $row ( sort { $a->[1] cmp $b->[1] } @Index ) {
+    
+    print OUT "<tr>\n";
+
+    my $ReportFile = $row->[0];
 
+    print OUT " <td class=\"DESC\">$row->[1]</td>\n";
+    
+    for my $j ( 2 .. $#{$row} ) {
+      print OUT "<td>$row->[$j]</td>\n"
+    }
+    
+#    print OUT "<td><input type=\"button\" value=\"View\"></td>\n";
+    print OUT "<td><a href=\"$ReportFile#EndPath\">View</a></td>\n";
+    print OUT "</tr>\n";
+  }
+  
+  print OUT "</table>\n</body></html>\n";  
+  close(OUT);
 }
 
 ##----------------------------------------------------------------------------##
@@ -173,7 +238,7 @@ sub RunBuildCommand {
 
 sub DisplayHelp {
   
-print <<ENDTEXT
+print <<ENDTEXT;
 USAGE: $Prog [options] <build command> [build options]
 
 OPTIONS:
@@ -198,9 +263,9 @@ BUILD OPTIONS
 
   You can specify any build option acceptable to the build command.
 
-  For example:
+EXAMPLE
 
-     $Prog -o /tmp/myhtmldir make -j4
+    $Prog -o /tmp/myhtmldir make -j4
      
   The above example causes analysis reports to be deposited into
   a subdirectory of "/tmp/myhtmldir" and to run "make" with the "-j4" option.