Как я могу заставить сканирование-сборку Clang работать с SCons?

У меня есть проект, созданный с помощью SCons, и я пытаюсь использовать Clang Static Analyzer для анализа кода. Однако при беге

scan-build scons

SCons, кажется, игнорирует настройки, введенные scan-build. Как я могу заставить это работать?


person Greg Hewgill    schedule 16.02.2012    source источник


Ответы (1)


Способ работы scan-build заключается в том, что он устанавливает различные переменные среды, которые обычно используются системами сборки (такими как make) для управления тем, как происходит сборка. Вот некоторые из них:

  • CC - имя программы для использования в качестве компилятора C
  • CXX - имя программы для использования в качестве компилятора C++
  • CCC_* — различные переменные среды, управляющие поведением статического анализатора Clang.

SCons обычно очищает среду перед запуском сборки (это функция). Чтобы вышеуказанные переменные среды вступили в силу, сделайте что-то вроде этого в SConstruct:

env = Environment()
env["CC"] = os.getenv("CC") or env["CC"]
env["CXX"] = os.getenv("CXX") or env["CXX"]
env["ENV"].update(x for x in os.environ.items() if x[0].startswith("CCC_"))
person Greg Hewgill    schedule 16.02.2012
comment
Я бы добавил, что вы должны искать среду в больших файлах SConstruct, чтобы найти, где должны быть последние три строки. - person Chad Brewbaker; 10.02.2017