【问题标题】:How can I make Clang's "scan-build" work with SCons?如何使 Clang 的“扫描构建”与 SCons 一起使用?
【发布时间】:2012-03-07 12:02:03
【问题描述】:

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

scan-build scons

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

【问题讨论】:

    标签: clang scons clang-static-analyzer scan-build


    【解决方案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_"))
    

    【讨论】:

    • 我要补充一点,您应该在较大的 SConstruct 文件中使用 grep 查找“环境”以查找最后三行的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    相关资源
    最近更新 更多