Я не использую XCode, но при использовании scan-build в linux у меня работает следующее. В моем случае, я хочу запустить статический анализ для всего первого, не сгенерированного кода. Тем не менее, я хочу избежать запуска его для кода третьего_партии и сгенерированного кода.
В командной строке clang-analyzer подключается к сборке, когда scan-build устанавливает переменные среды CC и CXX в местоположения ccc-analyzer и c ++ - analyzer. Я написал два простых скрипта с именами ccc-analyzer.py и c ++ - analyzer.py и подключил их к компиляции вместо стандартных. В этих сценариях-обёртках я просто посмотрел путь к компилируемому файлу и затем запустил либо необработанный компилятор напрямую (если я хочу избежать статического анализа), либо c * -анализатор (если я хочу, чтобы статический анализ происходил). Мой скрипт написан на python и привязан к моей конкретной системе сборки, но в качестве примера необходимо изменить:
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))