您好我的JUNIT测试中出现了findbugs错误。
这是我的测试。
public class MyTest {
@Autowired
private MyService myService;
@Test
public void serviceShouldSayMine() {
Assert.assertEquals(this.myService.getText(), "Mine");
}
}
我发现错误过滤器。
<findbugsfilter>
<match>
<class name="~.*Test"/>
<or>
<field name="~.*Dao"/>
<field name="~.*Service"/>
<field name="~.*TestUtils"/>
</or>
<bug pattern="UWF_UNWRITTEN_FIELD" type="UWF_UNWRITTEN_FIELD"/>
</match>
<match>
<class name="~.*Test"/>
<or>
<field name="~.*Dao"/>
<field name="~.*Service"/>
<field name="~.*TestUtils"/>
</or>
<bug pattern="NP_UNWRITTEN_FIELD" type="NP_UNWRITTEN_FIELD"/>
</match>
</findbugsfilter>
我将过滤器添加到eclipse但我仍然收到错误读取未写入的字段myService,当我点击它时,它说
Pattern id: UWF_UNWRITTEN_FIELD, type: UwF, category: CORRECTNESS
This field is never written. All reads of it will return the default value.
Check for errors (should it have been initialized?), or remove it if it is useless.
以及
Pattern id: NP_UNWRITTEN_FIELD, type: NP, category: CORRECTNESS
The program is dereferencing a field that does not seem to ever have a non-null
value written to it. Dereferencing this value will generate a null pointer exception.
我的过滤器有什么问题,
我的目标是过滤掉所有类
a。)以* Test或* TestCase结束
b。)上面的类以* Service或* Dao
结尾的方法答案 0 :(得分:3)
问题在于xml标签的情况。它应该是这样的:
<FindBugsFilter>
<Match>
<Class name="~.*Test"/>
<Bug pattern="UWF_UNWRITTEN_FIELD" type="UWF_UNWRITTEN_FIELD"/>
</Match>
</FindBugsFilter>
答案 1 :(得分:2)
尝试删除错误(转到问题或标记视图,右键单击并选择删除)。进行完全重建并查看错误是否恢复。
更改checkstyle规则时,它不会删除旧规则中的错误。所以你需要手动删除它们。