Java的静态分析工具推荐?

57

我对Java领域有些了解,正在搜索一款既能够进行静态分析,又能智能修复问题的工具。我发现了CodePro工具,但由于对Java社区的陌生,不知道其他供应商是否更好。

请问您基于上述条件可以推荐哪个工具?


您可以查看qulice.com,该网站将Checkstyle、PMD、FindBugs集成在一起,并进行了预配置。 - yegor256
http://softwarerecs.stackexchange.com 将成为您的好朋友。 - peterh
9个回答

48
  • Findbugs:用于静态分析Java代码中潜在的bug和错误。
  • PMD:静态规则检查器,用于查找和报告Java源代码中的常见问题。
  • Checkstyle:用于强制执行编码规范和标准的工具。
  • Lint4J:另一个可用于发现Java源代码中潜在问题的静态检查器。
  • Classycle:分析Java类依赖项的工具。
  • JDepend:用于分析Java包之间的依赖关系的工具。
  • SISSy:标识软件系统中的关键组件并测量其稳定性和扩展性的工具。
  • Google Codepro:一套用于优化Java应用程序性能、质量和可维护性的Eclipse插件。

请问您能否就您使用lint4j的情况发表一些评论?我刚刚尝试了一下,但它只对我的整个代码库产生了一个警告(一个假阳性!)。我知道我的代码不是那么干净!我的代码需要Java 6,并且lint4j项目似乎已经不再活跃了。lint4j不是开源软件,因此没有源代码。谢谢! - Greg Mattes
在扫描 200 KLOC 项目时,我从 lint4j 得到了几百个警告。其中大部分都是“好习惯”,例如“使用字符字面量而不是字符串字面量将单个常量字符附加到流中”。Findbugs 给出的建议肯定更重要。(但对于新代码,我总是同时使用它们!) - Bananeweizen

38

FindBugs、PMD和Checkstyle都是很好的选择,特别是如果你将它们集成到你的构建流程中。

在我上一个公司,我们还使用Fortify来检查潜在的安全问题。我们很幸运拥有企业许可证,所以我不知道涉及的费用。


13

findbugs已不再维护,已被spotbugs取代。 - svarog

11

JetBrains的IntelliJ IDEA。在.Net社区中,他们还开发了ReSharper。


7

Sonar是一种质量控制工具,通过遵守编码规则、度量指标和高级指标来衡量Java应用程序的质量。

Sonar基于以下项目:

您还可以使用Simian进行重复检测。


我不喜欢Sonar - 它们开始变得非常非常昂贵。 - pan40

1

CRAP4J 不仅是一个很棒的名字,而且非常有用。其他好的工具都在上面了,最好的(依我之见)是 FindBugs,因为它确实可以立即在大型代码库中找到真正的漏洞。


1
您可以尝试使用JavaDepend,它可以补充其他静态分析工具,并提供了一种类似于数据库的CQL语言来查询代码。

JavaDepend还提供了许多交互式视图,用于了解现有的代码库以及超过82个度量标准。


0

有几个提供Java解决方案的商业供应商:

Klocwork Coverity

它们不会“修复”它们发现的问题(我相信上面提到的其他工具也不会),但这些都是具有不同优势的工具。


0

以上所有工具都非常好用。PMD可能是最常用的。

另一个工具是Enerjy。它最近变成了免费的,所以你可以下载并尝试一下。Enerjy更加有条理,更适合大型团队使用。它使得自定义和共享规则更加容易。个人而言,我不是很喜欢,但也许你会比我更喜欢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接