我有一个单元测试,我故意将 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/