如何运行GCC/Clang进行静态分析?(警告)
How can I run GCC/Clang for static analysis? (warnings only)
不编译代码,我希望GCC或Clang报告警告。
是否可以运行编译器仅用于静态分析?
我找不到一种方法来传递编译器警告标志并告诉它不要编译。
编辑:刚刚发现clang有一个静态分析器
GCC和Clang都有一个选项-fsyntax-only
,使编译器只执行语法检查而不进行任何实际编译。
除了其他回复之外,gcc
在编译期间(甚至在一些优化过程中)正在进行一些分析。所以你可以丢弃生成的代码,仍然得到所有的警告,例如gcc -Wall -O -c code.c -o /dev/null
请注意,你可以通过额外的通道来扩展GCC,做一些额外的、特定于应用程序的检查和警告,例如使用MELT(一种高级领域特定语言来扩展GCC)。
如果你想要强大的静态分析,并愿意为此目的提供额外的注释,也可以考虑Frama c。
相关文章:
- Clang 给了我符号更改的警告,但代码仍然产生正确的输出
- 当 noexcept 函数尝试在 gcc 或 clang 中调用非 noexcept 函数时启用警告
- 在 C++11 中轻松初始化模板类的静态成员,没有 clang 警告
- Clang-CL 警告 strnicmp 已弃用,请使用 ISO C 并C++符合标准的名称_strnicmp
- 冲突的 CLANG"虚拟 dtor"和"已弃用的复制运算符"警告
- 有没有办法在初始化字符串时避免来自 clang-tidy(fuchsia-default-arguments)的警告?
- 为什么 gcc 和 clang 都没有发出任何警告?
- Clang:覆盖之前在命令行上指定的所有警告和错误警告标志
- 为什么 Clang 警告未使用的指针和未使用的基元,而不是未使用的对象?
- clang++ 8.0.1 自分配重载警告
- Clang 对使用的类型别名发出"unused type alias"警告
- Clang 4.0.0 Cuda和Cmake最小警告的最佳实践
- GCC和Clang不警告未使用的异常变量
- clang++ 是否忽略了某些弃用警告的外部"C"?
- 如果对象在同一层次结构中,-Wreturn-std-move clang 警告是否正确
- 警告绑定到临时值的 clang 是否正确
- 在 Clang 中禁用特定警告实例的简洁方法
- 为什么尽管使用了 -isystem,但 clang 在我的标头上报告警告,而 gcc 没有报告警告?
- 关于静态模板化 constexpr 的 Clang 警告(未定义内联函数)
- #pragma警告clang/msvc兼容性