用于分析C ++代码库的工具

时间:2010-11-23 17:30:45

标签: c++ code-analysis static-analysis

哪些工具对分析C ++代码库最有用? 他们花了多少钱? 我们可以使用免费和试用软件进行管理,还是有商业软件是好的,我们真的需要付费?

主要目标是了解质量 - 记忆问题等,同时理解代码(例如发现建筑问题),也许是编码标准。

主要是静态分析,但我们希望能够运行代码。 认为它需要“强大,因为它应该与奥术编译器的代码一起使用。”

6 个答案:

答案 0 :(得分:5)

最好的免费工具是编译器的警告错误,我总是在最高级别使用它们。第一个目标应该是没有任何作弊的清洁构建(例如,禁用或丢弃不明白的警告)。

Visual C ++内置Code Analysis,它有助于捕获一些错误和Win32 API滥用,但它不包含在免费版本中,并且(显然)是特定于Windows的。这曾经是一个名为Prefast的内部Microsoft工具 - 类似于.Net中的FxCop。

PC-Lint很好,但是冗长且不自由。如果你能得到一个配置文件来捕获“有用的东西”并忽略噪音,那将是一个很大的优势。这也适用于Windows,但我知道有其他平台的版本。

答案 1 :(得分:3)

答案 2 :(得分:2)

我听说Valgrind非常好。 “自动检测许多内存管理和线程错误,并详细描述您的程序”

答案 3 :(得分:1)

程序中的头号臭是code duplication。 您可以使用克隆检测器来查找重复项。许多克隆探测器只比较文本行的完全匹配;其他比较令牌流,将找到几乎完全匹配,其中差异只是更改标识符。您可以使用我们的CloneDR来查找插入或删除任意语言结构的重复项,使用语言语法作为指导。 CloneDR适用于大型C ++系统以及许多其他语言。在链接中,您可以找到典型的克隆检测报告。

一种流行的广谱静态检查器是PCLint。这将检查工具预定义的各种常见编码错误。我不知道它如何处理C ++的“奥术”(编译器)方言。

如果要定义自定义检查,则需要full C++ front end parser并能够任意配置检查。我们的DMS Software Reengineering Toolkit是一个可以配置为完成此操作的引擎。 DMS的C ++前端可以配置为处理“奥术”C ++方言,但已经涵盖ANSI,GCC3和GCC4,MS Visual Studio 7和2005.由于DMS是一个程序转换引擎,它甚至可以用来“改进”代码通过用较好的结构取代不良结构来提高质量。

虽然不是静态分析,但用于衡量代码测试情况的​​test coverage工具在评估代码质量方面非常有用。仅仅因为你的所有测试都通过了,并不意味着你已经测试得很好;未经授权的代码可以说有任何/所有各种问题。

答案 4 :(得分:0)

Theres CCCC:http://cccc.sourceforge.net/ - 关于指标的研究项目的结果。

说实话,我在这些事情上找不到多少好处。你希望得到什么?

答案 5 :(得分:0)

您可以试用Vigilant Sentry,它会分析C和C ++,并在您的软件中查找高级错误。这包括内存或资源泄漏,以及导致内存损坏等问题。

小型企业版目前只有795美元(目前市场上价格最便宜),企业价格为4995美元。祝你好运,找到你需要的东西。