我最近被问及代码的 Coverity Prevent 的替代方案包含C / C ++和Java的基础。显然,在Java方面,可用的免费工具包括Findbugs(编译代码分析)和PMD(静态代码分析)。它们非常强大,特别是当您开始研究与IDE的集成时(再次,它是免费的)。

然而,当您开始使用各种编译器,体系结构等进入C / C ++领域时,事情会很糟糕。

我已经为Java方面提出了各种工具,包括Findbugs和PMD。当我考虑使用以下指标时,我正在寻找的是C / C ++方面的最佳选择:

  1. 价格:免费更好,但可以通过更好的价值打败。但是,每行代码收费的定价模型令人恐惧。
  2. 功能集:这个工具如何让我的生活更美好?在我检查错误之前,在我们发送代码之前,它会以什么方式检测我的错误?
  3. 可用性:我可以在办公桌前使用该工具吗?我可以分享报告和/或调查结果吗?我可以将该工具与Fogbugz(我们在我的小组中使用)集成吗?我可以将该工具集成到CruiseControl(或等效的)中吗?
  4. 最终的工具将是Findbugs和具有相同功能集的PMD的组合,并且每个座位的零美元都是有用和可用的。

有帮助吗?

解决方案

我想到的两个是 Splint for C和 Cppcheck

如果您想寻找更多选项,这些工具的这个功能就是“静态代码分析”。这可能会帮助您找到更多用于C和/或C ++的工具。此外,您可能对“的问题的答案感兴趣。哪些开源C ++静态分析工具可用?“

其他提示

C ++是一种足够复杂的语言,它的工具(例如重构或静态分析工具)不如Java或C#好。

Gimpel Software的 PC-lint 是最接近C ++标准错误检查工具的东西了解。它具有合理的定价模式。我不知道它与其他工具的整合程度如何。

Clang 开源项目最终应该能够完成您想要的大部分工作(并且看起来像< em>真的很酷),但它仍处于开发阶段。

PC-Lint是要走的路。与大多数其他工具不同,它具有完整的功能间和模块间值跟踪,并支持模板编译/解析的所有毛边。大约9年前,我为自己买了一份个人副本,只是因为它太便宜了。我最终在开源项目中使用了很多。 PC-Lint没有基于LOC的许可证,它没有打电话回家,也没有许可证服务器。它非常关注荣誉系统而且非常严肃。在过去的9年中,我发现了一些问题(而且这些问题很少见),但它们几乎总是在几周内得到解决。

开源方面,有基于Coverity的元编译分析技术的SMatch,该葡萄酒项目使用非常重要,效果很好。 PMD的cpd(复制粘贴检测器)子工具适用于C ++,并且非常快。对于圈复杂度,可以通过apt-get轻松安装pmccabe(在Linux上;在Windows上,我在cygwin下编译源码)。

PC-Lint确实需要一些配置才能让它运行良好,最多一两天。其他工具不能很好地工作,所以你可以使用像“find”这样的命令运行。 -name .c | xargs pmccabe | sort -n |尾巴-n 20“

我使用了 Klocwork Rational Software Analyzer ,它们都运行良好,但两者都是商业/非免费的。

我使用flawfinder.py在C / C ++中扫描160个危险函数。 http://www.dwheeler.com/flawfinder/

如果你想要一个基于flawfinder的ruby端口,你可以使用vulnxpose.rb。 https://github.com/nanotechz9l/Source-code-analyzer

这两个工具都扫描C / C ++源代码文件中的已知漏洞,包括缓冲区溢出,竞争条件,弱加密,chroot jail configs ......&amp;更多)。

瑞克

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