Как я могу заставить «скан-сборку» Clang работать с SCons? - PullRequest
19 голосов
/ 16 февраля 2012

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

scan-build scons

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

1 Ответ

28 голосов
/ 16 февраля 2012

Способ работы 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_"))
...