LoginSignup
0
0

More than 5 years have passed since last update.

カスタムチェックの作り方 - Visitor / BetterVisitor

Last updated at Posted at 2015-04-02

社内共有用に英語化する前の下書き

どっちのメソッドを使うの?

カスタムチェックを作ろうと FindBugs のお奨めクラスを継承すると visitHoge 系と visit(Hoge) 系メソッドがある事に気が付く。
どちらのメソッドを使うべきなのだろうか?

推奨

visit(Hoge) 系メソッドがおススメ

全体像

visitHoge 系メソッドは FindBugs が利用している Apache bcel の Visitor インタフェースが宣言していて、解析対象のコードの各エレメントをウォークスルーするのもこちら側のメソッドになる。

visit(Hoge) 系メソッドは FindBugs 側のお奨めクラスの根っこの方にいる BetterVisitor(implement Visitor) が宣言しているメソッドで、visitHoge メソッドの呼び出しを visit(Hoge) へと振り向けてくれている。

推奨する理由

FindBugs のウォークスルーは Visitor 側、つまりお奨めクラスの親クラスで実装されている。
そのため、visitHoge 系にはうっかり super.visitHoge() を忘れるとそこで動きが詰まってしまうものがあるのだが、ウォークスルーが途中で止まっていること、その理由が super.visitHoge() の呼び忘れというのは結構見つけにくい。

親クラスの visit(Hoge) 側にも visit(Code) ぐらいは実装があるが、visit(Code) はほとんど自分で実装する事のないメソッド(たぶん)なので、visit(Hoge) 系を使っていれば事故率がだいぶ下がる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0