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

llvm-svn: 336023
This commit is contained in:
George Karpenkov 2018-06-29 22:05:32 +00:00
parent a262cf3146
commit 5c23d6ab3c
1 changed files with 14 additions and 0 deletions

View File

@ -136,6 +136,9 @@ CleanupScript = "cleanup_run_static_analyzer.sh"
# 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, PBuildLogFile):
# 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, PBuildLogFile):
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, PBuildLogFile):
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")