是否有一个简单的CLI Java linter?[关闭]


86

我一直在尝试找到能够在与Eclipse分离的CLI上运行的Java linter,我可以将其称为git的提交挂钩或从我们的自动构建脚本中调用。这样的事情存在吗?

理想情况下,它需要检查未使用的导入和变量,遵循样式准则,正确使用异常等。尽管这些功能的某些子集会比我们现在拥有的功能更好-什么都没有!


2
//,这不是对软件推荐的要求吗?
弥敦道(Nathan Basanese)2016年

3
我不知道该在这里还是在meta上提问,但是这样的问题到底有什么建议呢?当然,对于这个问题没有一个单一的,客观的答案,但是同样,对于许多技术问题也是如此。这个问题可以重新表述为“我没有皮林特,我也不知道哪些工具可用,当前和广泛使用”。有帮助吗?我宁愿在StackOverflow上找到经过策划,排名和日期记录的Q / A,而不是其他地方。遇到这种问题的人应该去哪里?
凯尔·克鲁

Answers:


77
  • SpotBugs(早期的Findbugs),用于查找现有的错误。很好!
  • PMD用于查找可能导致错误的模式(例如,未使用的变量)
  • Checkstyle强制执行编码标准和约定(例如,空格,Javadoc)
  • 容易出错,可以直接挂接到应用程序的编译步骤

所有这些工具都有一些重叠的规则。还有许多其他类似的工具,但是它们是最受欢迎和支持的工具。


您会说Findbugs和PMD做不同的事情吗?上次查看此内容时,我断定它们非常相似,我们只需要一个(并选择了PMD)。我们还运行Checkstyle,是的,发现甚至PMD和Checkstyle也重叠。
汤姆·安德森

@TomAnderson-我会说他们肯定会做不同的事情,是的。他们两个都有价值(显然也有重叠)。
jtahlborn

是的,目标非常不同。Findbugs有时通过进行深入分析来尝试查找ACTUAL错误。PMD仅查找已知有时会导致错误的模式。就个人而言,我使用FindBugs和Checkstyle,因为重叠较少。
mikeslattery

您可能要提到的是,pmd有2种不同类型的检查,pmd和cpd。
jtahlborn

4
Findbugs现在是SpotBugs(在GitHub上
Matruskan,

12

另外,请查看Sonar,它结合了许多其他工具,并且也提供了不错的视图。

Checkstyle,FindBugs,PMD,Clirr,fb-contrib的规则。


不确定如何将其添加到提交后的挂钩中,但是http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven可能是一个不错的起点(尤其是在使用Maven的情况下)。

甚至可能考虑使用http://docs.codehaus.org/display/SONAR/Continuous+Integration中列出的方法之一,因为似乎您可能正在尝试为整个团队寻找更好的工具(“这些功能将比我们现在拥有的功能更好-什么都没有!”


2
+1在提出问题四年后,SonarQube似乎更加活跃,现代化和完善。它曾经合并了上面提到的工具,但是现在它本机实现了它们,从而避免了重叠blog.sonarsource.com/…–
user2518618

-1

这正是我正在使用的工具:一种CLI友好的工具,可用于检查Java代码的质量。它还具有交互模式。您可以运行单个查询(以检查单个警告)或一起运行所有查询。

这些工具尚处于初期阶段,但我几乎每天都在努力。在这里可用:

https://github.com/ftomassetti/effectivejava

请让我知道您对此有何看法,并随时提出问题。


3
该项目的最后提交是2年前。不知道这是否正在被积极开发。
丹尼尔·伊格尔

不它不是。但是后来我开始研究JavaParser。该项目没有为您提供CLI,可以在其之上构建CLI。
Federico Tomassetti
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.