r336023 - [analyzer] [tests] Allow the tested project to specify it's own analyzer wrapper

George Karpenkov via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 29 15:05:32 PDT 2018


Author: george.karpenkov
Date: Fri Jun 29 15:05:32 2018
New Revision: 336023

URL: http://llvm.org/viewvc/llvm-project?rev=336023&view=rev
Log:
[analyzer] [tests] Allow the tested project to specify it's own analyzer wrapper

Modified:
    cfe/trunk/utils/analyzer/SATestBuild.py

Modified: cfe/trunk/utils/analyzer/SATestBuild.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/analyzer/SATestBuild.py?rev=336023&r1=336022&r2=336023&view=diff
==============================================================================
--- cfe/trunk/utils/analyzer/SATestBuild.py (original)
+++ cfe/trunk/utils/analyzer/SATestBuild.py Fri Jun 29 15:05:32 2018
@@ -136,6 +136,9 @@ CleanupScript = "cleanup_run_static_anal
 # This is a file containing commands for scan-build.
 BuildScript = "run_static_analyzer.cmd"
 
+# A comment in a build script which disables wrapping.
+NoPrefixCmd = "#NOPREFIX"
+
 # The log file name.
 LogFolderName = "Logs"
 BuildLogName = "run_static_analyzer.log"
@@ -285,6 +288,7 @@ def runScanBuild(Dir, SBOutputDir, PBuil
     # Always use ccc-analyze to ensure that we can locate the failures
     # directory.
     SBOptions += "--override-compiler "
+    ExtraEnv = {}
     try:
         SBCommandFile = open(BuildScriptPath, "r")
         SBPrefix = "scan-build " + SBOptions + " "
@@ -292,6 +296,15 @@ def runScanBuild(Dir, SBOutputDir, PBuil
             Command = Command.strip()
             if len(Command) == 0:
                 continue
+
+            # Custom analyzer invocation specified by project.
+            # Communicate required information using environment variables
+            # instead.
+            if Command == NoPrefixCmd:
+                SBPrefix = ""
+                ExtraEnv['OUTPUT'] = SBOutputDir
+                continue
+
             # If using 'make', auto imply a -jX argument
             # to speed up analysis.  xcodebuild will
             # automatically use the maximum number of cores.
@@ -305,6 +318,7 @@ def runScanBuild(Dir, SBOutputDir, PBuil
             check_call(SBCommand, cwd=SBCwd,
                        stderr=PBuildLogFile,
                        stdout=PBuildLogFile,
+                       env=dict(os.environ, **ExtraEnv),
                        shell=True)
     except CalledProcessError:
         Local.stderr.write("Error: scan-build failed. Its output was: \n")




More information about the cfe-commits mailing list