Java有一些非常好的开源静态分析工具,例如 查找错误, 格子风格PMD. 。这些工具易于使用,非常有帮助,可以在多个操作系统上运行,并且 自由的.

可以使用商业 C++ 静态分析产品。虽然拥有这样的产品很棒,但对于学生来说成本太高,而且通常很难获得试用版。

另一种方法是寻找可在多个平台(Windows 和 Unix)上运行的开源 C++ 静态分析工具。通过使用开源工具,可以对其进行修改以满足某些需求。找到工具并不是一件容易的事。

下面是其他人发现或建议的 C++ 静态分析工具的简短列表。

有哪些 其他 有谁知道并且可以推荐的便携式开源 C++ 静态分析工具吗?

一些相关链接。

有帮助吗?

解决方案

Oink 是一个构建在 Elsa C++ 前端之上的工具。Mozilla 的 Pork 是 Elsa/Oink 的一个分支。

看: http://danielwilkerson.com/oink/index.html

其他提示

程序检查 是开源且跨平台的。

苹果电脑:

brew install cppcheck

关于 GNU 编译器,gcc 已经有一个内置选项,可以启用额外的功能 警告 对于那些-Wall 的人。选项是 -Weffc++ 这是关于违反一些准则的 斯科特·迈耶斯 发表在他的书中“有效且更有效的 C++".

特别是该选项检测以下项目:

  • 为具有动态分配内存的类定义复制构造函数和赋值运算符。
  • 在构造函数中优先进行初始化而不是赋值。
  • 在基类中使析构函数成为虚拟的。
  • 让“operator=”返回对*this 的引用。
  • 当必须返回对象时,不要尝试返回引用。
  • 区分增量和减量运算符的前缀和后缀形式。
  • 切勿重载“&&”、“||”或“,”。

目前正在开发中,但是 进行 C 分析,目标是随着时间的推移处理 C++。它是的一部分 LLVM 项目。

更新: :虽然登陆页面上写着“分析仪是一个持续进行中的工作”,但它现在仍然是 有记录的 作为 C 和 C++ 的静态分析器。

问题: 如何运行 GCC/Clang 进行静态分析?(仅警告)

编译器选项:-f仅语法

其他人提到了 -Weffc++,但这实际上是我默认情况下不打开的唯一 GCC 警告之一。然而,我打开的一组警告是我的工具包中最重要的静态分析工具。您可以看到 建议警告的完整列表.

总之:

-学究式-Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -W逻辑操作 -Wmissing-声明 -Wmissing-include-dirs -Wno except -Wold -style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -Wno-unused

请注意,其中一些需要新版本的 gcc,因此如果您卡在 4.5 或其他版本上,您可能需要从列表中删除它们。

约翰·卡马克还提到 PVS工作室 在这个有趣的 关于“静态代码分析”的博客文章.

如果您所说的开源确实意味着“免费”,那么微软的 预禁食 分析是一个很好的分析。当然仅限 Windows。它完全集成在 Visual Studio 和编译器中。例如。:

cl /analyze Sample.cpp

Mozilla 的静态分析工作 也许值得一看。

夹板 似乎满足了 C 的要求。

如果你没有指定开源我会说 金佩尔软件PCLint 可能是 C++ 中用于静态代码检查的最佳工具之一。但是,当然,它不是开源的。

苹果电脑:

brew install splint

微软的 预快速 Windows 驱动程序工具包中也提供了该功能。7.0版本可下载 这里.

微软文档声明它只能针对驱动程序代码运行,但是这个(旧的) 博客文章 列出了运行它的步骤。也许它可以集成到正常的构建过程中?

我们一直在开发一个名为 metriculator 的 Eclipse CDT 插件。它仍在开发中,但有一些主要指标(例如LSLOC、McCabe、EfferentCoupling)已经实施。

http://sinv-56013.edu.hsr.ch/redmine/projects/metricular/wiki/Documentation 了解更多详细信息,例如视频演示和文档。

最新的夜间版本可通过更新站点安装: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/

进一步说明

Metriculator 静态分析 C++ 源代码并生成软件指标。指标被实施为CODAN检查器。可以在单独的视图中探索分析结果。每个度量标准都有可配置的属性(例如“每个函数代码最大线”的阈值)。超过这些阈值将报告问题并在源代码编辑器中创建标记。

使用公制仪,您可以:

  • 分析 C++ 文件/文件夹/项目
  • 使用 Codans 首选项页面定义指标阈值并启用/禁用指标
  • 源代码编辑器中有问题标记
  • 探索指标结果
  • 将指标结果导出为标签云(通过更新站点作为可选功能提供)

目前 metriculator 具有以下指标:

  • McCabe(循环复杂度)
  • 每种类型的传出耦合
  • 逻辑源代码行
  • 每种类型的成员数量
  • 每个函数的参数数量

你应该尝试 oo-browser 它与 xemacs 有很棒的集成

还可以编写 GCC 的扩展代码 熔化 (一种旨在扩展 GCC 的领域特定语言)或 C 语言中的 GCC 插件(更难)来进行一些自定义分析。

Doxygen 进行一些控制流分析并生成图表。这些可能不是您正在寻找的内容,但我发现它们很有用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top