本当に「ソースコードを分析する必要がある」場合は、バイトコードを検査できるライブラリは適していません。
それ以外の場合は、タスクを正確に定義する必要があります。ソースコードを見るかバイトコードを見るかに関係なく、クラスを分析しようとしている、またはソースコードを分析して、最初にコンパイルしてからコンパイル結果を分析することを検討したい。後者の場合、両方のステップの労力を代替ソリューションと比較する必要があります。たとえば、直接ソース コード分析を組み込むことができます。
バイト コードの解析は、ソース コードの解析よりも簡単です。これが、Java プログラムの実行前にバイトコードが生成される理由です。具体的な質問に答えると、はい、3 つのライブラリすべてが、指示と関連情報を分析する方法を提供します。どちらがニーズに最も適しているかは、Stackoverflow の範囲外の問題です。
バイトコードの分析が役立つかどうかは、正確な要件によって異なります。フィールドとメソッドへのアクセスに関しては、そのアプローチを使用してそれらのほとんどを正確に取得できます。インライン化されたコンパイル時定数のみがその起源を欠いています。型の使用に関しては、すべてのソース コード成果物が既存の対応するバイト コードを持っているわけではないことを考慮する必要があります。たとえば、拡大キャストは実際のコードを生成せず、ローカル変数は通常、宣言された型を持ちません (デバッグ情報はさておき)。 、ただし、実際の使用方法に依存する暗黙の型のみ。また、デバッグ情報が含まれていない限り、ジェネリックに関する情報もありません。