发布 cppcheck 2.6,C++ 和 C 语言的静态代码分析器

cppcheck 2.6 静态代码分析器的新版本已发布。它可以检测 C 和 C++ 代码中的各种错误,包括嵌入式系统中常见的非标准语法错误。该版本提供了一系列插件,支持将 cppcheck 与各种开发、持续集成和测试系统集成,并提供代码风格检查等功能。用户可以使用 cppcheck 的原生解析器或外部 Clang 解析器进行代码分析。此外,该软件包还包含 donate-cpu.py 脚本,用于为协作式软件包代码检查提供本地资源。 Debian该项目的源代码以 GPLv3 许可证发布。

cppcheck 的开发重点是识别与未定义行为相关的问题以及从安全角度来看危险的设计的使用。 目标还在于最大限度地减少误报。 已识别的问题包括:指向不存在对象的指针、除以零、整数溢出、不正确的位移操作、不正确的转换、使用内存时出现的问题、STL 的不正确使用、空指针取消引用、实际访问后使用检查到缓冲区、缓冲区溢出、使用未初始化的变量。

在新版本中:

  • 分析器核心中添加了以下检查:
    • 函数体中缺少返回运算符;
    • 记录重叠数据,确定未定义的行为;
    • 正在比较的值超出了类型的值表示形式;
    • 复制优化不适用于 return std::move(local);
    • 不能同时打开文件在不同的流(stream)中进行读写;
  • 对于 Unix 平台,增加了对以不同颜色显示诊断消息的支持;
  • 添加了 ValueFlow 的符号分析。 在计算两个未知变量之间的差异时使用简单的delta;
  • 用于标记列表“define”的规则也可以匹配#include;
  • 库标签现在可以包含一个标签,以及相应的自由函数,它可以接受诸如 std::size、std::empty、std::begin、std::end 等容器。 可以指定连接器的产量或动作;
  • 库标签现在可以包含一个标签对于具有唯一所有权的智能指针。 现在发出有关对这些类型的智能指针的悬空引用的警告;
  • 修复了处理 —cppcheck-build-dir 参数的问题;
  • htmlreport 现在可以显示有关作者的信息(使用 gitblame);
  • 关于不是常量但可能是常量的变量的扩展警告;
  • 分析仪累积的错误和缺点已得到纠正。

此外,Misra C 2012 的检查,包括修正案 1 和修正案 2,已全面实施,但规则 1.1、1.2 和 17.3 除外。 检查 1.1 和 1.2 必须由编译器执行。 验证17.3可以由GCC等编译器执行。

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster