【发布时间】:2026-02-05 02:55:02
【问题描述】:
[这是一个更普遍的问题,并且依赖于设置编译器选项和使用静态代码分析工具的经验。]
目前,我在编译期间使用 -Werror 将所有警告标记为错误。
我打算使用 c++ 的静态代码分析工具。首先,我将使用 CppCheck,它具有如下所列的功能:http://cppcheck.sourceforge.net/#features,如下所示:
- 死指针
- 除以零
- 整数溢出
- 位移位操作数无效
- 无效转化
- STL 内存管理使用无效
- 空指针取消引用
- 越界检查
- 未初始化的变量
- 写入 const 数据
我的问题是,如果我解决了编译器标记的所有错误(通过 -Werror 检测到),那么 CppCheck 列出的所有这些问题(功能)不会在 build-deploy 的编译阶段得到覆盖工作流程?
更一般地说,将编译器选项设置为“最严格”级别(如在此答案中https://*.com/a/401276/712248)是否会标记 CppCheck 等静态分析工具可以检测到的所有问题(包括/排除误报)?那么,本质上,如果我使用最严格的编译器选项,那我就不需要使用静态分析工具了?
【问题讨论】:
-
快速回答是否定的。
-
许多监管机构除了编译器警告设置外,还推荐了不止一种静态分析工具。这就像邀请多个人进行代码检查一样;不同的人有不同的检查代码的方法。
标签: c++ static-code-analysis cppcheck compiler-options