From: George Karpenkov Date: Tue, 2 Oct 2018 21:19:23 +0000 (+0000) Subject: [analyzer] [tests] Allow specifying entire -analyze-config on the command line, make... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5d94ed487335f62c0646d9ac5e913d787496761b;p=clang [analyzer] [tests] Allow specifying entire -analyze-config on the command line, make sure it's always propagated Differential Revision: https://reviews.llvm.org/D52801 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@343636 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/utils/analyzer/SATestBuild.py b/utils/analyzer/SATestBuild.py index 3c886a7d6a..f78e86adbd 100755 --- a/utils/analyzer/SATestBuild.py +++ b/utils/analyzer/SATestBuild.py @@ -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)