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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@336023 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
George Karpenkov 2018-06-29 22:05:32 +00:00
parent 534c44af2b
commit b87dc38b62
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")