首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FindBugs忽略@Nullable

FindBugs忽略@Nullable
EN

Stack Overflow用户
提问于 2015-06-22 19:21:23
回答 2查看 2K关注 0票数 1

我有一个单元测试,在这里我故意将一个空参数传递给一个方法,以验证该方法是否正确地检测到空值。我在参数中添加了@Nullable注释,但是FindBugs抱怨(故意) null参数是一个错误。下面是代码:

代码语言:javascript
运行
复制
@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报告:

Bug: com.foo.test.ex.ApiFaultTests.dateNull()中的非虚方法调用对com.foo.commons.ex.error.ApiFault.check(Date,String)的非空参数传递null

我怎么才能让FindBugs停止哭泣呢?

我使用EclipseKepler2,服务版本2和FindBugs 3.00。

EN

回答 2

Stack Overflow用户

发布于 2015-06-22 21:17:52

使用排除滤波器告诉FindBugs在分析单元测试类时不要报告错误。您的过滤器可能如下所示:

代码语言:javascript
运行
复制
<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>
票数 3
EN

Stack Overflow用户

发布于 2015-06-23 20:29:46

阅读这个问题的其他帖子时,我假设您的测试方法期望参数为非空,但是您希望通过null作为这个单元测试的一部分。

在这种情况下,您可以简单地用@SuppressFBWarnings注释单元测试方法。

代码语言:javascript
运行
复制
@SuppressFBWarnings(value="NP_NONNULL_PARAM_VIOLATION",
    justification="testing nullness contract violation")
@Test(expected = ApiDataError.class)
public void dateNull() throws ApiDataError {
    final Date date = null;
    ApiFault.check(date, TEST);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30988123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档