如何使用 Findbugs omitVisitors?

How to use Findbugs omitVisitors?

我将 Findbugs 与 Gradle 一起使用。我在 中有一个项目 Findbugs 发现了一个潜在的错误。

错误类型 ODR_OPEN_DATABASE_RESOURCE org.kec.db.connection.DBAccess.query(String) 可能无法关闭 PreparedStatement。

我无法更改代码,所以我想将错误 [​​=20=] 添加到 OmitVisitors 列表中。

据我了解 OmitVisitors 的用法,它需要 class 个名称的列表。我的问题是我找不到错误类型和 class 名称之间的映射。

如何省略访问者?

我下载了 findbugs 源和 运行

find -name *.java | xargs grep -lir ODR_OPEN_DATABASE_RESOURCE

它说

./src/java/edu/umd/cs/findbugs/detect/FindOpenStream.java

所以我想你应该使用 FindOpenStream 作为名称

可以使用 Findbugs filters 排除某些已分析的 类 的特定错误。您需要列出要排除的 class/bug 个匹配项。在您的情况下,XML 文件将如下所示:

<FindBugsFilter>
    <Match>
        <Class name="org.kec.db.connection.DBAccess" />
        <Method name="query" />
        <Bug pattern="ODR_OPEN_DATABASE_RESOURCE" />
    </Match>
</FindBugsFilter>

在 Gradle 脚本中,需要为 excludeFilter 属性.

设置排除错误的 XML 文件
findbugs {
    excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml")
}