看這篇文章之前,建議大家先進行一些簡單的自定義規則的實踐。
findbugs自定義規則中比較重要的幾個類:
BetterVisitor:
此類實現了Visitor這個接口,在這個接口中定義了一系列的監察方法,在BetterVisitor這個類中除了實現了Visitor這個接口中定義的所有方法,還定義了一些自己的方法,接下來就來看看這些方法的作用:
1.visit(Code obj)
public void visit(Code obj) {
visit((Attribute) 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)方法經常用來重置自定義規則類中的變量的。