diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2017-09-22 01:43:12 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2017-09-22 01:43:12 +0000 |
commit | 392a9db8513eada8ead05d60b591eee6d76823b6 (patch) | |
tree | cd9321effd41d64c8c8aef84b5d6ccdfa4e0554e /utils | |
parent | d578df7f788a01e207f4373e05ab4d6e05a595e4 (diff) |
[Analyzer] Static analyzer script for updating reference results
The script updates reference results from the previous run, and stages them.
Differential Revision: https://reviews.llvm.org/D38157
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@313950 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rwxr-xr-x | utils/analyzer/SATestUpdateDiffs.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/utils/analyzer/SATestUpdateDiffs.py b/utils/analyzer/SATestUpdateDiffs.py new file mode 100755 index 0000000000..994fd1f074 --- /dev/null +++ b/utils/analyzer/SATestUpdateDiffs.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python + +""" +Update reference results for static analyzer. +""" + +from subprocess import check_call, check_output, CalledProcessError +import csv +import os +import sys + +Verbose = 1 +def runCmd(Command): + if Verbose: + print "Executing %s" % Command + check_call(Command, shell=True) + +def updateReferenceResults(ProjName, ProjBuildMode): + ProjDir = SATestBuild.getProjectDir(ProjName) + + RefResultsPath = os.path.join(ProjDir, + SATestBuild.getSBOutputDirName(IsReferenceBuild=True)) + CreatedResultsPath = os.path.join(ProjDir, + SATestBuild.getSBOutputDirName(IsReferenceBuild=False)) + + if not os.path.exists(CreatedResultsPath): + print >> sys.stderr, "New results not found, was SATestBuild.py "\ + "previously run?" + sys.exit(-1) + + # Remove reference results. + runCmd('git rm -r "%s"' % (RefResultsPath,)) + + # Replace reference results with a freshly computed once. + runCmd('cp -r "%s" "%s"' % (CreatedResultsPath, RefResultsPath,)) + + # Run cleanup script. + with open(SATestBuild.getBuildLogPath(RefResultsPath), "wb+") + as PBuildLogFile: + SATestBuild.runCleanupScript(ProjDir, PBuildLogFile) + + SATestBuild.normalizeReferenceResults(ProjDir, RefResultsPath, ProjBuildMode) + + # Clean up the generated difference results. + SATestBuild.cleanupReferenceResults(RefResultsPath) + + # Remove the created .diffs file before adding. + runCmd('rm -f "%s/*/%s"' % (RefResultsPath, SATestBuild.DiffsSummaryFileName)) + + runCmd('git add "%s"' % (RefResultsPath,)) + +def main(argv): + if len(argv) == 2 and argv[1] in ('-h', '--help'): + print >> sys.stderr, "Update static analyzer reference results based "\ + "\non the previous run of SATestBuild.py.\n" + "\nN.B.: Assumes that SATestBuild.py was just run." + sys.exit(-1) + + with SATestBuild.projectFileHandler() as f: + for (ProjName, ProjBuildMode) in SATestBuild.iterateOverProjects(f): + updateReferenceResults(ProjName, int(ProjBuildMode)) + +if __name__ == '__main__': + main(sys.argv) |