Skip to content
Snippets Groups Projects
Commit 45df60c1 authored by Ted Kremenek's avatar Ted Kremenek
Browse files

Teach set-xcode-analyzer that the new default value for ExecPath is CLANG_ANALYZER_EXEC.

llvm-svn: 165681
parent 686d7cbf
No related branches found
No related tags found
No related merge requests found
...@@ -20,10 +20,19 @@ def FindClangSpecs(path): ...@@ -20,10 +20,19 @@ def FindClangSpecs(path):
if f.endswith(".xcspec") and f.startswith("Clang LLVM"): if f.endswith(".xcspec") and f.startswith("Clang LLVM"):
yield os.path.join(root, f) yield os.path.join(root, f)
def ModifySpec(path, pathToChecker): def ModifySpec(path, isBuiltinAnalyzer, pathToChecker):
t = tempfile.NamedTemporaryFile(delete=False) t = tempfile.NamedTemporaryFile(delete=False)
foundAnalyzer = False foundAnalyzer = False
with open(path) as f: 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: for line in f:
if not foundAnalyzer: if not foundAnalyzer:
if line.find("Static Analyzer") >= 0: if line.find("Static Analyzer") >= 0:
...@@ -63,6 +72,7 @@ def main(): ...@@ -63,6 +72,7 @@ def main():
print "(-) You must quit Xcode first before modifying its configuration files." print "(-) You must quit Xcode first before modifying its configuration files."
return return
isBuiltinAnalyzer = False
if options.path: if options.path:
# Expand tildes. # Expand tildes.
path = os.path.expanduser(options.path) path = os.path.expanduser(options.path)
...@@ -74,6 +84,7 @@ def main(): ...@@ -74,6 +84,7 @@ def main():
else: else:
print "(+) Using the Clang bundled with Xcode" print "(+) Using the Clang bundled with Xcode"
path = options.default path = options.default
isBuiltinAnalyzer = True
try: try:
xcode_path = subprocess.check_output(["xcode-select", "-print-path"]) xcode_path = subprocess.check_output(["xcode-select", "-print-path"])
...@@ -88,7 +99,7 @@ def main(): ...@@ -88,7 +99,7 @@ def main():
foundSpec = False foundSpec = False
for x in FindClangSpecs(xcode_path): for x in FindClangSpecs(xcode_path):
foundSpec = True foundSpec = True
ModifySpec(x, path) ModifySpec(x, isBuiltinAnalyzer, path)
if foundSpec == False: if foundSpec == False:
print "(-) No compiler configuration file was found. Xcode's analyzer has not been updated." print "(-) No compiler configuration file was found. Xcode's analyzer has not been updated."
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment