看这篇文章之前,建议大家先进行一些简单的自定义规则的实践。
findbugs自定义规则中比较重要的几个类:
BetterVisitor:
此类实现了Visitor这个接口,在这个接口中定义了一系列的监察方法,在BetterVisitor这个类中除了实现了Visitor这个接口中定义的所有方法,还定义了一些自己的方法,接下来就来看看这些方法的作用:
1.visit(Code obj)
public void visit(Code obj) {
visit((Attribute) obj);
}
这个方法是自定义规则中最常用的,它的作用是:在检测某个检测类的不同方法时进入此方法
重写这个方法的时候一定要在方法中写:super.visit(obj)
<span style="white-space:pre"> </span>public void visit(Code obj) {
super.visit(obj);
}
例如:
public class TestedClass {
public void method1( ...) {
.....
}
public void method2(...) {
.....
}
}
在检测TestedClass时:当findbugs扫描到method1方法时就会进入visit(Code obj)方法中,在检测method1方法中代码的时候不会再进入visit(Code obj)方法中,直到扫描到method2方法的时候才会再次进入visit(Code obj)。
所以visit(Code obj)方法经常用来重置自定义规则类中的变量的。