Java有一些非常好的开源静态分析工具,例如FindBugs,Checkstyle和PMD。这些工具易于使用,非常有用,可在多个操作系统上运行,并且 free 。
商业C ++静态分析产品可用。虽然拥有这样的产品很棒,但学生的成本太高,而且通常很难获得试用版。
另一种方法是找到可在多个平台(Windows和Unix)上运行的开源C ++静态分析工具。通过使用开源工具,可以对其进行修改以满足特定需求。找到工具并非易事。
以下是其他人发现或建议的C ++静态分析工具的简短列表。
-Weffc++
(来自答案)有哪些其他可移植开源C ++静态分析工具有谁知道并且可以推荐?
一些相关链接。
答案 0 :(得分:71)
答案 1 :(得分:52)
关于GNU编译器,gcc已经有一个内置选项,可以为-Wall提供额外的警告。选项是 -Weffc ++ ,它是关于违反了 Scott Meyers 的一些指导原则,这些指南发表在他的书“有效且更有效的C ++ ”中。< / p>
特别是该选项会检测以下项目:
答案 2 :(得分:26)
目前正在开发中,但是clang进行了C分析,并且目标是随着时间的推移处理C ++。它是LLVM项目的一部分。
更新:当着陆页显示“分析器是一个持续的工作进行中”时,它现在是documented作为C和C ++的静态分析器。< / p>
问题:How can I run GCC/Clang for static analysis? (warnings only)
编译器选项:-fsyntax-only
答案 3 :(得分:20)
Oink是一个建立在Elsa C ++前端之上的工具。 Mozilla的Pork是Elsa / Oink的一个分支。
答案 4 :(得分:16)
其他人提到了-Weffc ++,但这实际上是我默认情况下没有打开的唯一GCC警告之一。但是,我打开的警告集是我的工具包中最重要的静态分析工具。您可以看到complete list of recommended warnings。
总结:
-pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat = 2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs - Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow = 5 -Wswitch-default -Wundef -Werror -Wno-unused < / p>
请注意,其中一些需要新版本的gcc,因此如果您回到4.5或其他位置,可能需要从列表中删除它们。
答案 5 :(得分:14)
John Carmack在这个有趣的PVS-Studio中也提到了blog post on "Static Code Analysis"。
答案 6 :(得分:7)
如果通过开源,你真的意味着“免费”,那么微软的prefast分析是一个很好的分析。 Windows仅限课程。它完全集成在Visual Studio&amp;编译器。 e.g:
cl /analyze Sample.cpp
答案 7 :(得分:6)
答案 8 :(得分:4)
Splint似乎填补了C的费用。
如果你没有指定开源,我会说Gimpel Software的PCLint可能是C ++中用于静态代码检查的最佳工具之一。但是,当然,它不是开源的。
Mac OSX:
brew install splint
答案 9 :(得分:3)
Windows驱动程序工具包中也提供了Microsoft PREFast。版本7.0可下载here。
Microsoft文档声明它只应针对驱动程序代码运行,但这个(旧)blog post列出了运行它的步骤。也许它可以集成到正常的构建过程中?
答案 10 :(得分:2)
我们一直在研究名为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跳棋。可以在单独的视图中探索分析结果。每 metric具有可配置属性(例如,'每行代码最大行数的阈值 功能')。超过这些阈值将报告问题并创建标记 在源代码编辑器中。
使用公制,您可以:
目前,公制者具有以下指标:
答案 11 :(得分:1)
您应该尝试oo-browser,它与xemacs
有很棒的集成答案 12 :(得分:1)
还可以使用MELT(用于扩展GCC的域专用语言)或C中的GCC插件(更难)来编写GCC的扩展来进行一些自定义分析。
答案 13 :(得分:0)
Doxygen进行一些控制流分析并生成图表。那些可能不是你想要的,但我认为它们很有用。