java - FindBugs 忽略@Nullable

标签 java nullable findbugs

我有一个单元测试,我故意将 null 参数传递给一个方法,以验证该方法是否正确检测到 null。我向参数添加了 @Nullable 注释,但 FindBugs 提示说(故意的)空参数是一个错误。这是代码:

@Test(expected = ApiDataError.class) public void dateNull() {
    try {
        @Nullable final Date date = null;
        ApiFault.check(date, TEST);
    } catch (final ApiDataError ex) {
        assertEquals(ex.getMessage(), format(ApiFault.NULL_VALUE, TEST));
        throw ex;
    }
}

FindBugs 报告:

错误:com.foo.test.ex.ApiFaultTests.dateNull() 中的非虚拟方法调用为 com.foo.commons.ex.error.ApiFault.check(Date, String) 的非空参数传递空值)

我怎样才能让 FindBugs 不再喊狼来了?

我使用 Eclipse Kepler,服务版本 2,以及 FindBugs 3.00。

最佳答案

使用 exclusion filter告诉 FindBugs 在分析单元测试类时不要报告错误。您的过滤器可能看起来像这样:

<FindBugsFilter>
    <!-- Passing null is deliberate in this unit test-->
    <Match>
        <Class name="com.foo.test.ex.ApiFaultTests" />
        <Method name="dateNull" />
        <Bug code="NP" />
    </Match>
</FindBugsFilter>

关于java - FindBugs 忽略@Nullable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30988123/

相关文章:

java - "must implement inherited abstract method"

sql-server - 如何将 NOT NULL FOREIGN KEY 列添加到 MS SQL 中的现有(已填充)表中?

java - 是否有隐式扩展到泛型类型的可空注释?

gradle - 无法在Gradle中运行多个插件

Java 平面文件解析器 (jffp) LineFormatTest

java - 如何在hibernate.cfg.xml中连接postgresql

java - 跨多个代码库查找错误报告

java - 使用 StringUtils.isEmpty 而不会丢失有关空指针的编译器警告

java - 在开发和部署期间断言语句的行为方式

f# - 为什么不允许 F# 记录具有 AllowNullLiteralAttribute?