![]() |
1
12
旁边 FindBugs 和 PMD Bandera , ESC/Java 和 JLint here (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年的文章,工具可能会有所改进。
|
![]() |
2
2
Findbugs基本上是标准的,因为它非常健壮(对于一个从研究开始的工具来说),经常维护,而且最近的版本确实涵盖了大部分基础。它还具有强大的Eclipse集成和各种过滤和排序选项,可以让您获得首选的信噪比。 我唯一的愿望是它能为推荐提供一个工作流,所以我可以选择忽略特定的实例(例如,对于我无法控制的代码),而只看到更改。连续分析也会很好,当我有备用核心。 我熟悉几种非常有前途的研究工具,它们使用静态分析来检查API一致性或线程分析。不幸的是,他们没有一个是真正的生产质量,他们要求在开发方面的一些投资。 |
![]() |
3
1
这里有一个java静态分析工具列表: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java Findbugs是我个人的最爱,因为它易于使用的界面和全面的分析,另外还有eclipse和idea的插件。 |
![]() |
4
1
许多的 IntelliJ CE是开源的、免费的,并且具有这个特性。 |
![]() |
5
0
This page 有一些开源代码分析器的列表(带有小的描述)。 |