Я не использую XCode, но с помощью скан-сборки в Linux следующие работы для меня. Я в моем случае, я хочу запустить статический анализ во всех первых, не сгенерированных кода. Тем не менее, я хочу, чтобы не запускать его по коду third_party и сгенерированному коду.
В командной строке clang-analyzer подключается к сборке, когда scan-build устанавливает переменные окружения CC и CXX в ccc-анализатор и C++ - места анализатора. Я написал два простых сценария 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))
Apple, имеет приличный форум для конфиденциального обсуждения продуктов, выпущенных под NDA в http://devforums.apple.com в котором на такие вопросы могут ответить представители Apple и другие раскрытые разработчики. – cdespinosa
(если вы не просите об использовании инструмента построения сканирования по адресу http://clang.llvm.org/StaticAnalysis.html, который действительно является общедоступным. В этом случае просто укажите исходные файлы, которые вы хотите проанализировать, как показано в основном использовании на этой странице.) – cdespinosa
Я просто говорю об инструменте сканирования. К сожалению, при базовом использовании он не имеет ничего об исключении файлов из анализа. Если вы используете scan-build для проекта, он по умолчанию анализирует все файлы в этом проекте, включая мою массивную статическую библиотеку. –