[cfe-commits] r51116 - in /cfe/trunk/utils: ccc-analyzer scan-build

Ted Kremenek kremenek at apple.com
Wed May 14 13:10:33 PDT 2008


Author: kremenek
Date: Wed May 14 15:10:33 2008
New Revision: 51116

URL: http://llvm.org/viewvc/llvm-project?rev=51116&view=rev
Log:
Added "-a" option to scan-build to select the analysis (ASTConsumer) used by clang.  The default is -checker-cfref.

Modified:
    cfe/trunk/utils/ccc-analyzer
    cfe/trunk/utils/scan-build

Modified: cfe/trunk/utils/ccc-analyzer
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/ccc-analyzer?rev=51116&r1=51115&r2=51116&view=diff

==============================================================================
--- cfe/trunk/utils/ccc-analyzer (original)
+++ cfe/trunk/utils/ccc-analyzer Wed May 14 15:10:33 2008
@@ -50,7 +50,7 @@
           return path
       return path[:i]
 
-def analyze(clang, args,language,output,files,verbose,htmldir,file):
+def analyze(clang, args,language,output,files,verbose,htmldir,file,analysis_type):
     if language.find("c++") > 0:
       return
   
@@ -73,14 +73,12 @@
       command = 'cp'.split()
       args = command + files + target.split()      
     else:
-      command = clang.split() + '-checker-cfref'.split()
+      command = clang.split() + analysis_type.split()
       args = command + args;
       RunAnalyzer = 1
 
     if verbose == 2:
       print >> sys.stderr, '#SHELL (cd ' + os.getcwd() + ' && ' + ' '.join(command + print_args) + ')\n'
-      print >> sys.stderr, '#LINE (cd ' + os.getcwd() + ' && wc -l ' + file + ')\n'
-
 
     if RunAnalyzer and htmldir is not None:
       args.append('-o')
@@ -142,18 +140,29 @@
     
     # Forward to GCC.
     compile(args)    
-        
+    
+    # Set the analyzer flag.
+    analysis_type = os.environ.get('CCC_ANALYZER_ANALYSIS')
+    
+    if analysis_type is not None:
+      analysis_type = "-" + analysis_type
+    else:
+      analysis_type = "-checker-cfref"
+
+    # Determine the level of verbosity.
     if os.environ.get('CCC_ANALYZER_VERBOSE') is not None:
       verbose = 1
       
     if os.environ.get('CCC_ANALYZER_LOG') is not None:
       verbose = 2
       
+    # Determine what clang executable to use.
     clang_env = os.environ.get('CLANG') 
     
     if clang_env is not None:
       clang = clang_env
     
+    # Get the HTML output directory.
     htmldir = os.environ.get('CCC_ANALYZER_HTML')
       
     i = 0
@@ -268,7 +277,7 @@
             if language != 'unknown':
               analyze_args = [ '-x', language ] + analyze_args
             analyze_args = analyze_args + compile_opts
-            analyze(clang, analyze_args, language, output, files, verbose, htmldir, file)
+            analyze(clang, analyze_args, language, output, files, verbose, htmldir, file, analysis_type)
 #        compile(args)
 
 

Modified: cfe/trunk/utils/scan-build
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/scan-build?rev=51116&r1=51115&r2=51116&view=diff

==============================================================================
--- cfe/trunk/utils/scan-build (original)
+++ cfe/trunk/utils/scan-build Wed May 14 15:10:33 2008
@@ -523,14 +523,17 @@
 
 OPTIONS:
 
+  -a            - The analysis to run.  The default is 'checker-cfref'.
+                  Valid options are: 'checker-cfref', 'fsyntax-only'
+
   -o            - Target directory for HTML report files.  Subdirectories
                   will be created as needed to represent separate "runs" of
                   the analyzer.  If this option is not specified, a directory
                   is created in /tmp to store the reports.
-                
+
   -h            - Display this message.
   --help
-  
+
   -k            - Add a "keep on going" option to the specified build command.
   --keep-going    This option currently supports make and xcodebuild.
                   This is a convenience option; one can specify this
@@ -565,6 +568,7 @@
 my $HtmlDir;           # Parent directory to store HTML files.
 my $IgnoreErrors = 0;  # Ignore build errors.
 my $ViewResults  = 0;  # View results when the build terminates.
+my $Analysis = "checker-cfref";
 
 if (!@ARGV) {
   DisplayHelp();
@@ -582,6 +586,22 @@
     exit 0;
   }
   
+  if ($arg eq "-a") {
+    shift @ARGV;
+
+    if (!@ARGV) {
+      die "$Prog: '-a' option requires an analysis type.\n";
+    }
+    
+    $Analysis = shift @ARGV;
+    
+    if (!($Analysis eq "checker-cfref" or $Analysis eq "fsyntax-only")) {
+      die "$Prog: Invalid argument '$Analysis' to -a.\n";
+    }
+    
+    next;
+  }
+  
   if ($arg eq "-o") {
     shift @ARGV;
         
@@ -667,6 +687,8 @@
   $ENV{'CCC_ANALYZER_LOG'} = 1;
 }
 
+$ENV{'CCC_ANALYZER_ANALYSIS'} = $Analysis;
+
 # Run the build.
 
 RunBuildCommand(\@ARGV, $IgnoreErrors);





More information about the cfe-commits mailing list