]> granicus.if.org Git - clang/commitdiff
[analyzer] [tests] Allow specifying entire -analyze-config on the command line, make...
authorGeorge Karpenkov <ekarpenkov@apple.com>
Tue, 2 Oct 2018 21:19:23 +0000 (21:19 +0000)
committerGeorge Karpenkov <ekarpenkov@apple.com>
Tue, 2 Oct 2018 21:19:23 +0000 (21:19 +0000)
Differential Revision: https://reviews.llvm.org/D52801

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@343636 91177308-0d34-0410-b5e6-96231b3b80d8

utils/analyzer/SATestBuild.py

index 3c886a7d6a4ed7fbf6e4f255e7cd445e9dbfb1e6..f78e86adbd695022fe2fb36b2646deafcb979af8 100755 (executable)
@@ -255,6 +255,13 @@ def applyPatch(Dir, PBuildLogFile):
         sys.exit(1)
 
 
+def generateAnalyzerConfig(Args):
+    Out = "serialize-stats=true,stable-report-filename=true"
+    if Args.extra_analyzer_config:
+        Out += "," + Args.extra_analyzer_config
+    return Out
+
+
 def runScanBuild(Args, Dir, SBOutputDir, PBuildLogFile):
     """
     Build the project with scan-build by reading in the commands and
@@ -277,15 +284,7 @@ def runScanBuild(Args, Dir, SBOutputDir, PBuildLogFile):
     SBOptions += "-plist-html -o '%s' " % SBOutputDir
     SBOptions += "-enable-checker " + AllCheckers + " "
     SBOptions += "--keep-empty "
-    AnalyzerConfig = [
-        ("stable-report-filename", "true"),
-        ("serialize-stats", "true"),
-    ]
-    AnalyzerConfigSerialized = ",".join(
-        "%s=%s" % (key, value) for (key, value) in AnalyzerConfig)
-    if Args.extra_args:
-        AnalyzerConfigSerialized += "," + Args.extra_args
-    SBOptions += "-analyzer-config '%s' " % AnalyzerConfigSerialized
+    SBOptions += "-analyzer-config '%s' " % generateAnalyzerConfig(Args)
 
     # Always use ccc-analyze to ensure that we can locate the failures
     # directory.
@@ -306,6 +305,7 @@ def runScanBuild(Args, Dir, SBOutputDir, PBuildLogFile):
                 SBPrefix = ""
                 ExtraEnv['OUTPUT'] = SBOutputDir
                 ExtraEnv['CC'] = Clang
+                ExtraEnv['ANALYZER_CONFIG'] = generateAnalyzerConfig(Args)
                 continue
 
             # If using 'make', auto imply a -jX argument
@@ -330,7 +330,7 @@ def runScanBuild(Args, Dir, SBOutputDir, PBuildLogFile):
         sys.exit(1)
 
 
-def runAnalyzePreprocessed(Dir, SBOutputDir, Mode):
+def runAnalyzePreprocessed(Args, Dir, SBOutputDir, Mode):
     """
     Run analysis on a set of preprocessed files.
     """
@@ -351,6 +351,7 @@ def runAnalyzePreprocessed(Dir, SBOutputDir, Mode):
     CmdPrefix += "-analyze -analyzer-output=plist -w "
     CmdPrefix += "-analyzer-checker=" + Checkers
     CmdPrefix += " -fcxx-exceptions -fblocks "
+    CmdPrefix += " -analyzer-config " + generateAnalyzerConfig(Args)
 
     if (Mode == 2):
         CmdPrefix += "-std=c++11 "
@@ -435,7 +436,7 @@ def buildProject(Args, Dir, SBOutputDir, ProjectBuildMode, IsReferenceBuild):
             runCleanupScript(Dir, PBuildLogFile)
             runScanBuild(Args, Dir, SBOutputDir, PBuildLogFile)
         else:
-            runAnalyzePreprocessed(Dir, SBOutputDir, ProjectBuildMode)
+            runAnalyzePreprocessed(Args, Dir, SBOutputDir, ProjectBuildMode)
 
         if IsReferenceBuild:
             runCleanupScript(Dir, PBuildLogFile)
@@ -794,9 +795,10 @@ if __name__ == '__main__':
     Parser.add_argument('-j', '--jobs', dest='jobs', type=int,
                         default=0,
                         help='Number of projects to test concurrently')
-    Parser.add_argument('--extra-analyzer-args', dest='extra_args',
-                        type=str, default="",
-                        help="Extra arguments to add to -analyzer-config")
+    Parser.add_argument('--extra-analyzer-config', dest='extra_analyzer_config',
+                        type=str,
+                        default="",
+                        help="Arguments passed to to -analyzer-config")
     Args = Parser.parse_args()
 
     TestsPassed = testAll(Args)