可以与CMAKE-BUILD一起使用Clang静态分析仪(扫描构建)



我想在cmake --build的方便下使用Clang static Analyzer命令行scan-build

我在网上发现的大多数资源似乎都表明您需要一个两步的过程:

scan-build cmake .
scan-build make

例如,对于这个小示例程序,带有scan-build捕获的错误:

#include <iostream>
int fun() {
    int x;
    return x; # main.cpp:5:5: warning: Undefined or garbage value returned to caller
}
int main() {
    int a = fun();
    std::cout << "Hello, World! " << a << std::endl;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.5)
project(test_program)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(test_program ${SOURCE_FILES})

如果我运行scan-build cmake --build cmake-build-release/,即使构建了二进制文件,也找不到错误。无论如何,是否可以使用scan-build在一个步骤中使用CMAKE?

如果要使用clang静态分析仪,则应设置CMAKE_EXPORT_COMPILE_COMMANDS=YES。这将创建CSA可以读取的汇编数据库。您甚至不需要构建项目。该文件位于:/path/to/build/compile_commands.json

scan-build是为无法创建编译数据库本身的项目而设计的。

然后您可以运行:

analyze-build --cdb /path/to/build/compile_commands.json 
              --use-analyzer /path/to/clang 
              --output /path/to/output

值得注意的是,clang-tidy现在具有所有CSA检查。您可以使用相同的编译数据库技术在代码库上运行clang-tidy

最新更新