我怎样才能让Clang的“scan-build”与SCons一起工作?

问题描述:

我有一个使用SCons构建的项目,我试图使用Clang Static Analyzer来分析代码。但是,在运行时我怎样才能让Clang的“scan-build”与SCons一起工作?

scan-build scons 

SCons似乎忽略了由scan-build引入的设置。我该如何做这项工作?

scan-build的工作方式是设置各种环境变量,这些变量通常由构建系统(例如make)用来控制构建如何发生。其中一些是:

  • CC - 程序使用的C编译器
  • CXX的名字 - 程序的名称为C++编译器使用
  • CCC_* - 控制锵的静态分析仪的行为的各种环境变量

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_")) 
+0

我想补充一点,你应该在更大的SConstruct文件用grep的“环境”,找到其中最后三行应该去。 – 2017-02-10 10:25:43