我怎样才能让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_"))
我想补充一点,你应该在更大的SConstruct文件用grep的“环境”,找到其中最后三行应该去。 – 2017-02-10 10:25:43