如何让Clang的"扫描构建"与SCons一起工作?

Gre*_*ill 20 clang scons clang-static-analyzer scan-build

我有一个用SCons构建的项目,我正在尝试使用Clang Static Analyzer来分析代码.但是,在跑步时

scan-build scons
Run Code Online (Sandbox Code Playgroud)

SCons似乎忽略了引入的设置scan-build.我怎样才能做到这一点?

Gre*_*ill 30

方法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_"))
Run Code Online (Sandbox Code Playgroud)