释放 静态代码分析器的版本 cpp检查2.6该 允许检测 C 和 C++ 代码中的各种错误即使使用嵌入式系统典型的非标准语法。
提供了一组插件,通过这些插件提供了 cppcheck 与各种开发、持续集成和测试系统的集成,以及检查代码是否符合编码风格等功能。
为了分析代码, 您可以使用自己的解析器和外部 Clang 解析器. 它还包括一个 donate-cpu.py 脚本,为 Debian 软件包的协作代码审查工作提供本地资源。
cppcheck的发展 专注于识别与未定义行为相关的问题 以及使用从安全角度来看是危险的构造。
目标也是尽量减少误报. 在确定的问题中:指向不存在的对象的指针、被零除、整数溢出、不正确的位移操作、不正确的转换、内存问题、不正确使用 STL、取消引用空指针、在访问实际缓冲区后应用检查、使用未初始化的变量溢出缓冲区限制。
cppcheck 2.6 的主要新特性
在这个新版本中e 向解析器的内核添加了各种检查,其中函数体中没有返回声明的验证,以及重叠数据记录、未定义行为定义的验证以及被比较值的验证都超出了表示范围类型的值。
另一个引人注目的新奇是 复制优化不适用于 return std::move (local);,此外还添加了对 Unix 平台以不同颜色显示诊断消息的支持,并且库标记现在可以包含一个标签对于具有唯一属性的智能指针。 现在向这些类型的智能指针发出悬空链接警告。
另外, Misra C 2012 控制已全面实施, 包括修正案 1 和修正案 2,但规则 1.1、1.2 和 17.3 除外。 编译器应执行检查 1.1 和 1.2。 像 GCC 这样的编译器可以检查 17.3。
在其他突出的变化中 这个新版本:
- 不能同时打开文件在不同的流中读写;
- 添加了 ValueFlow 的符号分析。 计算两个未知变量之间的差异时使用简单的增量;
- 用于“define”标记列表的规则也可以匹配#include;
- 图书馆标签现在可以包含一个标签因此可以接受像 std::size、std::empty、std::begin、std::end 等容器的自由函数。 您可以为容器指定产量或操作;
- 修复了处理 –cppcheck-build-dir 参数的问题;
htmlreport 现在可以打印关于作者的信息(使用 git blame); - 对非恒定但可以变为恒定的变量发出延长警告;
- 累积的分析器错误和缺陷已得到修复。
最后,如果您有兴趣了解更多关于这个新版本的信息,可以咨询 以下链接中的详细信息。
如何在 Linux 上安装 cppcheck?
对于那些有兴趣能够在他们的 Linux 发行版上安装 cppcheck 的人,他们可以按照我们在下面分享的说明进行操作。
如果您是 Debian 用户或任何其他基于或衍生自它的发行版(例如 Deepin 或 Ubuntu),则可以通过键入以下命令直接从终端安装:
sudo apt-get install cppcheck
现在,对于 Fedora 用户及其衍生产品,他们可以通过键入以下命令来执行安装:
sudo yum instalar cppcheck
或者对于 Arch Linux 用户或它的任何其他衍生产品,他们可以使用以下命令进行安装:
sudo pacman -S cppcheck