[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