可以与CMAKE-BUILD一起使用Clang静态分析仪(扫描构建)
Can clang static analyzer (scan-build) be used with cmake --build?
我想在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
。
相关文章:
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 如何执行 cppcheck 交叉翻译单元 (CTU) 静态分析?
- 如何将 AST 用于自定义前端操作和 clang 静态分析
- C++静态分析,模板类
- 覆盖性静态分析说无符号的int是char(C++)
- Android NDK-天然C 代码的静态分析
- 静态分析,用于检测 Visual Studio C++ 2012 上的缓冲区溢出
- 这个C++静态分析规则按原样有意义吗
- 如何使用模板化库控制静态分析编译器错误消息
- 了解COM的静态分析工具
- 是否有任何c++静态分析工具来检测向量的潜在错误
- 用于静态分析本机Windows二进制文件大小的工具
- 静态分析工具,用于检测由于类型提升而导致的无休止循环
- 为什么Xcode 4.3静态分析报告此代码的逻辑错误
- 如何获得与C++0x标准兼容的Coverity静态分析
- Visual Studio 11终极静态分析显示没有输出
- Clang静态分析-根据执行流检查可为空的变量初始化
- 用MPI进行Clang静态分析
- 如何使用Eclipse cdt对c++代码进行静态分析
- 头文件包含静态分析工具