主な情報源としてバイトコードを使用する
💪やること
主な情報源にバイトコード(*.classファイル)を使用します。
🚩目的
読み取る情報の正確性を上げたい
記述の揺れやバージョン違いの差異を持ち込まない
🤔経緯
情報源としてソースコード(*.javaファイル)も使用できます。しかしこれはバージョンや書き方によって解析の正確性に疑問があります。Javaparserなどを使用することによりある程度の担保はできますが、バイトコードを読む手段がある以上、より正確で安定したバイトコードを使用するのが良いと判断しました。 コンパイルされていないソースコードではなくコンパイル済みのバイトコードを対象とすることにより、使用されていないimportやFQCNの解決などを検討しなくてよくなり、動作しないコードを読み取ることによる問題の切り分けも不要になる。
🏆結果
ソースコードでは解析しづらい依存関係が正確に把握できる。
ソースコードにしか現れないものの取り扱いが難しくなる。ソースコードには現れないものの取り扱いが難しくなる。これらにはシンタックスシュガーとして実装された拡張for文(Java5)やtry-with-resources(Java7)などが挙げられます。