From 45df60c1f3289dd3061f613644815f745b76cce6 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Thu, 11 Oct 2012 00:40:41 +0000 Subject: [PATCH] Teach set-xcode-analyzer that the new default value for ExecPath is CLANG_ANALYZER_EXEC. llvm-svn: 165681 --- clang/tools/scan-build/set-xcode-analyzer | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/clang/tools/scan-build/set-xcode-analyzer b/clang/tools/scan-build/set-xcode-analyzer index 8ef5faa..93824af 100755 --- a/clang/tools/scan-build/set-xcode-analyzer +++ b/clang/tools/scan-build/set-xcode-analyzer @@ -20,10 +20,19 @@ def FindClangSpecs(path): if f.endswith(".xcspec") and f.startswith("Clang LLVM"): yield os.path.join(root, f) -def ModifySpec(path, pathToChecker): +def ModifySpec(path, isBuiltinAnalyzer, pathToChecker): t = tempfile.NamedTemporaryFile(delete=False) foundAnalyzer = False with open(path) as f: + if isBuiltinAnalyzer: + # First search for CLANG_ANALYZER_EXEC. Newer + # versions of Xcode set EXEC_PATH to be CLANG_ANALYZER_EXEC. + with open(path) as f2: + for line in f2: + if line.find("CLANG_ANALYZER_EXEC") >= 0: + pathToChecker = "$(CLANG_ANALYZER_EXEC)" + break + # Now create a new file. for line in f: if not foundAnalyzer: if line.find("Static Analyzer") >= 0: @@ -63,6 +72,7 @@ def main(): print "(-) You must quit Xcode first before modifying its configuration files." return + isBuiltinAnalyzer = False if options.path: # Expand tildes. path = os.path.expanduser(options.path) @@ -74,6 +84,7 @@ def main(): else: print "(+) Using the Clang bundled with Xcode" path = options.default + isBuiltinAnalyzer = True try: xcode_path = subprocess.check_output(["xcode-select", "-print-path"]) @@ -88,7 +99,7 @@ def main(): foundSpec = False for x in FindClangSpecs(xcode_path): foundSpec = True - ModifySpec(x, path) + ModifySpec(x, isBuiltinAnalyzer, path) if foundSpec == False: print "(-) No compiler configuration file was found. Xcode's analyzer has not been updated." -- 2.7.4