社内共有用に英語化する前の下書き
どのクラスを継承して作るの?
カスタムチェックを作ろうと FindBugs の既存のチェックのクラスツリーを調べてみると、継承関係が深い事に気が付く。Object から 7 段階ぐらい継承してできていたりする。深い。
継承木の途中にたくさんの実装がある場合もあって、必ずしも末端の方のクラスを継承すればいいわけではなさそうだ。どうなってるんだ?
さて、何を継承すればいいんだろうか?
結論
素直に OpcodeStackDetector を継承しよう。
理由
いろいろなメソッドが使えるようになるので、Object から数えて 6 段階目のこのクラスを継承しよう。ほとんどのチェックがこれを継承しているし。
sawOpcode を使ったバイトコードの解析をしないなら 1 つ上の BytecodeScanningDetector でもいいかもしれない。
これが継承木で出てくる最初の Detector で、カスタムチェックは Detector か Detector2 である必要があるので、これより上から継承するのはお奨めしない。