Fin*_*arr 8 java static-analysis
我已经尝试了几种不同的Java静态分析器,特别是Findbugs和PMD.
我正在寻找可能值得在Java代码上运行的其他静态分析器的示例.
Bal*_*usC 12
在FindBugs和PMD旁边,还有Bandera,ESC/Java和JLint.你可以在这里找到它们的比较(PDF).这是相关的摘录:
Bug Category - Example | ESC | FindBugs | JLint | PMD --------------------------------------------------+-----+----------+-------+----- General - Null dereference | V | V | V | V Concurrency - Possible deadlock | V | V | V | V Exceptions - Possible unexpexted exception | V | | | Array - Length may be less than zero | V | | V | Mathematics - Division by zero | V | | V | Conditional, loop - Unreachable code | | V | | V String - Checking equality using == or != | | V | V | V Object overriding - Equal objects/equal hashcodes | | V | V | V I/O stream - Stream not closed on all paths | | V | | Unused or duplicate statement - Unused local | | V | | V Design - Should be a static inner class | | V | | Unnecessary statement - Unnecessary return | | | | V
注意:该文章来自2004年.这些工具可能同时得到了改进.
如您所见,FindBugs和PMD发现了很多,也是最流行的静态分析器工具.但是,现在智能IDE还包括一些要点,例如null deference,未使用的本地和无法访问的代码.例如,Eclipse可以警告它们.