Intellij IDEA内置的代码检查与checkstyle、PMD和findbugs的区别

17

最近我在寻找最佳的工具集来进行代码检查。我的IDE是Intellij 15.0,我知道它有很好的检查功能,但当我在互联网上搜索时,我没有找到Intellij内置检查代码和其他三个工具之间的好的比较。

有人试过它们全都使用过的吗?可以给一些最佳实践吗?Intellij是否涵盖了它们所有的功能?

我知道FindBugs在二进制级别运行,但仍然让它保持在比较中。

1个回答

21
Checkstyle项目本身中,我们使用了所有这些工具:CheckstylePMDFindBugsIntelliJ IDEA检查
以下是我的观察:
  • 在格式、空格、括号位置、Javadoc和一般代码风格方面,没有任何工具可以替代Checkstyle。虽然在命名和一些不好的实践方面与IntelliJ有些重叠,但仅此而已。
  • PMD规则与IntelliJ相似。这两个工具的主要目的都是检测典型错误或不良实践。您仍然会发现一些独特有用的PMD规则,例如:BigIntegerInstantiation、CommentDefaultAccessModifier、SingletonClassReturningNewInstance。
  • 我永远不会放弃FindBugs以换取其他工具。FindBugs专注于在代码中找到真正的漏洞,误报率低。通常情况下,它几乎不需要任何配置 - 只需启用所有规则并睡得安心。当然,它与IntelliJ有些重叠,但是检测到的漏洞越多,就越好。
"IntelliJ IDEA"检查工具是一个非常好的工具,因为它们包含了许多独特可靠的规则。而且不仅限于Java - 您可以直接检测XML、Properties、SQL、Spring、HTML、CSS等问题。但是需要大量配置和选择正确的规则集。启用所有规则将在每个较大的项目上报告数十万个违规情况。并且很难将这些检查嵌入Maven或Gradle构建中,以便项目自我验证。
我的建议是尽可能使用所有这些工具,因为每个工具都包含至少一打(有时是几打)其他地方无法使用的有用检查。"

1
谢谢你的回答,Michal。 你是否对所有这些工具都使用IntelliJ插件? 如果我们将SonarQube等工具插入到CI中运行,你是否仍然在IDE中使用它们? - Idan
我只使用CheckStyle-IDEA,因为它可以在提交之前快速实时分析并验证所有文件。 Checkstyle问题是最常见的问题,所以它非常有帮助。对于PMD和FindBugs,我调用mvn pmd:check findbugs:check或Gradle的等效命令。这些工具中的违规行为较少但更严重,所以如果我忘记了某些事情,CI将无论如何使构建失败。 - Michal Kordas

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