ich XCode nicht, aber unter Verwendung von Scan-build in Linux die folgenden Werke für mich. In meinem Fall möchte ich die statische Analyse auf allen nicht generierten Code der ersten Partei ausführen. Ich möchte es jedoch vermeiden, es mit dem Code von Drittanbietercode und generiertem Code auszuführen.
In der Befehlszeile wird clang-analyzer in den Build eingebunden, wenn scan-build CC- und CXX-Umgebungsvariablen in ccc-analyzer- und C++ - analyzer-Positionen setzt. Ich schrieb zwei einfache Skripte namens ccc-analyzer.py und C++ - analyzer.py und hakte sie in die Kompilierung anstelle des Standard-Skripts ein. In diesen Wrapper-Skripten habe ich einfach den Pfad der kompilierten Datei betrachtet und dann entweder den rohen Compiler direkt ausgeführt (wenn ich statische Analyse vermeiden möchte) oder den c * -Analyzer (wenn ich statische Analyse durchführen möchte). Mein Skript ist in Python und gebunden an meinem speziellen Build-System, sondern als Beispiel der Modifikation benötigt:
import subprocess
import sys
def main(argv):
is_third_party_code = False
for i in range(len(argv)):
arg = argv[i]
if arg == '-c':
file_to_compile = argv[i + 1]
if '/third_party/' in file_to_compile or \
file_to_compile.startswith('gen/'):
is_third_party_code = True
break
if is_third_party_code:
argv[0] = '/samegoal/bin/clang++'
else:
argv[0] = '/samegoal/scan-build/c++-analyzer'
return subprocess.call(argv)
if __name__ == '__main__':
sys.exit(main(sys.argv))
Apple ein ordentliches Forum für vertrauliche Gespräche von Produkten unter NDA wird veröffentlicht am http://devforums.apple.com in denen Fragen wie diese von Apple-Leuten und anderen offen gelegten Entwicklern beantwortet werden können. – cdespinosa
(es sei denn, Sie fragen nach dem Scan-Build-Tool unter http://clang.llvm.org/StaticAnalysis.html, das tatsächlich öffentlich ist. In diesem Fall sollten Sie nur die Quelldateien auflisten, die Sie analysieren möchten, wie gezeigt in Basic Usage auf dieser Seite.) – cdespinosa
Ich spreche nur über das Scan-Build-Tool. Leider hat es bei der grundlegenden Verwendung nichts dagegen, Dateien von der Analyse auszuschließen. Wenn Sie scan-build für ein Projekt verwenden, analysiert es standardmäßig alle Dateien in diesem Projekt, einschließlich meiner umfangreichen statischen Bibliothek. –