比较PMD和CheckStyle有一个问题。但是,我找不到关于PMD和FindBugs之间差异/相似性的详细分类。我相信一个关键的区别是PMD适用于源代码,而FindBugs适用于编译后的字节码文件。但是就功能而言,这应该是一个选择,还是两者相辅相成?
比较PMD和CheckStyle有一个问题。但是,我找不到关于PMD和FindBugs之间差异/相似性的详细分类。我相信一个关键的区别是PMD适用于源代码,而FindBugs适用于编译后的字节码文件。但是就功能而言,这应该是一个选择,还是两者相辅相成?
Answers:
我同时使用。我认为他们是相辅相成的。
如您所说,PMD在源代码上工作,因此会发现诸如以下问题:违反命名约定,缺少花括号,放错位置的空检查,长参数列表,不必要的构造函数,缺少换行符等。PMD还向您介绍了Cyclomatic复杂的代码,我觉得非常有帮助的(FindBugs的不告诉你的圈复杂度)。
FindBugs适用于字节码。以下是一些问题,FindBugs会发现哪些PMD不会发现:equals()方法在子类型上失败,clone方法可能返回null,对布尔值进行引用比较,无法转换,将32bit int移位了一个不在0-31范围内的值,包含自身的集合,equals方法始终返回true,无限循环等。
通常每个人都会发现不同的问题。同时使用。这些工具教会了我很多关于如何编写好的Java代码的知识。