Javaクラスファイルの盗用を発見するため,クラスファイルから直接バースマーク(クラスファイル特有の情報の集合)を抽出し,比較します.
今回のリリースで,バースマークを抽出するときの前処理を行うことが可能になった.Preprocess, Extract, Compare, Filter という順序で処理を行うことが可能となる.Preprocess では,すべてのクラスファイルを見ることができるので,Extract, Compare に必要な情報を予め調べておくことが可能になる.
ただし,Preprocess が必要なバースマークは少ないと思われるので,デフォルトでは何もしないようにしている.
Preprocess導入に伴い,Preprocessで調べた内容を Extract, Compare に渡す必要がある.これは BirthmarkContext で行うようにした.BirthmarkExtractor, BirthmarkComparator ともに BirthmarkContext を受け取り,Preprocess から Filter までの一連の処理の間,BirthmarkContext は同一のものを保持するように保障した.
また,コマンドラインインターフェースを大幅に変えた.
- 依存するASMのバージョンを 2.2.3 から 3.1 に上げた.
- コマンドラインインターフェースを変更した.
- BirthmarkPreprocessor を導入した.
- BirthmarkExtractor, BirthmarkComparator のインターフェースを変更した(BirthmarkContextを引数に受け取るようにした).