是否有一种简单的方法来编写FindBugs检测器进行比较?

时间:2018-02-21 23:04:49

标签: java optional static-analysis findbugs spotbugs

我目前想编写一些分析java代码库的静态分析工具,并帮助检测任何比较java Optional和null的情况。

可能的代码如下:

    Optional result = method();
    if (result != null) {
         //do something
    } else {
         //never reached because method should never return null
    }

当我查看可能扩展的FindBugs时,我找到的主要比较检测器在这里:https://github.com/findbugsproject/findbugs/blob/d1e60f8dbeda0a454f2d497ef8dcb878fa8e3852/findbugs/src/java/edu/umd/cs/findbugs/detect/FindRefComparison.java

有很多代码要搜索如何编写可以进行此比较检测的内容,并且似乎不容易扩展。

虽然这种静态分析工具对我们很有用,因为它有助于防止有人决定将函数的方法签名从一个可能会或可能不会为null的对象更改为始终返回java的对象的情况可选,但没有更新它使用的所有位置,但它没有那么有价值,我可以花时间试图在FindBugs中实现它。

  1. 我是否解析了FindBugs代码库,以至于添加这种检查会花费一些力气来扩展?
  2. 有没有更简单的方法来获得我想要的东西?

1 个答案:

答案 0 :(得分:0)

var str = '4-D-52XX-P4X-12X-08XX-XXX-0000-9'

var x = '5300'

str  = '4-D-5300-P4X-12X-08XX-XXX-0000-9'

我想我在ErrorProne中使用了它。如果我得到一些测试工作,我会将其贡献给社区。