代码之家  ›  专栏  ›  技术社区  ›  Finbarr

在Java代码上运行什么样的静态分析器,为什么?

  •  8
  • Finbarr  · 技术社区  · 15 年前

    我正在寻找其他静态分析器的例子,可能值得在Java代码上运行。

    5 回复  |  直到 15 年前
        1
  •  12
  •   DaveFar Fabian Barney    13 年前

    旁边 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
  •   Uri    15 年前

    Findbugs基本上是标准的,因为它非常健壮(对于一个从研究开始的工具来说),经常维护,而且最近的版本确实涵盖了大部分基础。它还具有强大的Eclipse集成和各种过滤和排序选项,可以让您获得首选的信噪比。

    我唯一的愿望是它能为推荐提供一个工作流,所以我可以选择忽略特定的实例(例如,对于我无法控制的代码),而只看到更改。连续分析也会很好,当我有备用核心。

    我熟悉几种非常有前途的研究工具,它们使用静态分析来检查API一致性或线程分析。不幸的是,他们没有一个是真正的生产质量,他们要求在开发方面的一些投资。

        3
  •  1
  •   Dimitar    15 年前

    这里有一个java静态分析工具列表: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java

    Findbugs是我个人的最爱,因为它易于使用的界面和全面的分析,另外还有eclipse和idea的插件。

        4
  •  1
  •   Peter Lawrey    14 年前

    许多的

    IntelliJ CE是开源的、免费的,并且具有这个特性。

        5
  •  0
  •   Sardathrion - against SE abuse    14 年前

    This page 有一些开源代码分析器的列表(带有小的描述)。