![]() |
1
141
我两者都用。我认为它们是相辅相成的。 正如你所说的, PMD 在源代码上工作,因此会发现以下问题:违反命名约定、缺少大括号、错误放置的空检查、长参数列表、不必要的构造函数、缺少切入开关等。PMD还告诉您 Cyclomatic complexity 对于您的代码,我觉得非常有用(findbugs没有告诉您有关圈复杂度的信息)。 FindBugs 处理字节码。以下是findbugs发现PMD不存在的一些问题:equals()方法在子类型上失败,clone方法可能返回空值,布尔值的引用比较,不可能的强制转换,32位in t被不在0-31范围内的值移位,包含自身的集合,equals方法始终返回true,无限循环等。 通常每个人都会发现一组不同的问题。两者兼用。这些工具教了我很多关于如何编写好的Java代码的知识。 |
![]() |
2
22
PMD最好的特点是 XPath规则 与规则设计器捆绑在一起,使您可以轻松地从代码示例(类似于regex和xpath gui构建器)构建新规则。findbugs具有更强的现成性,但是构建特定于项目的规则和模式非常重要。 例如,我遇到了一个涉及2个嵌套for循环的性能问题,导致了O(n^2)运行时间,这很容易避免。我用PMD构造了一个 即席查询 ,以查看嵌套for循环的其他实例-//for statement/statement//forstatement。这又指出了问题的两个实例。这不是一般规则。 |
![]() |
3
3
偏振模色散
|