0

Java クラス ファイルとして提供されるユーザー定義のストアド プロシージャをホストするアプリケーションに取り組んでいます。手順は決定論的である必要があり、非決定論の原因となるさまざまなパッケージとメソッドをブラックリストに載せたいと思います。java.lang.Class と javax.tools.* で利用できるものを見てきました。

java.lang.Class を使用して、メンバー、メソッド パラメーター、戻り値の型を監査できるようです。ただし、メソッドの内容を監査するには、生のクラス ファイルを分析する必要があるようです。

監査が必要な静的初期化ブロックやメンバー変数の初期化などのまれなケースもあります。デフォルトのコンストラクターが非決定論的である java.util.Date のようなケースがありますが、それ以外は問題ありません。

クラスファイルのこれらの側面を簡単に分析できるフレームワークまたはツールはありますか?

4

1 に答える 1

1

はい、あります。「これらの側面を分析する」と言うように、たとえばAspectJを使用します;)たとえば、javaagentでロードタイムウィービングを使用できます。もう 1 つの方法は、aspectj クラスローダーを使用してユーザーのクラスをロードすることです。特定のメソッド呼び出しを探すポインカットを宣言できます。ユーザーのメソッドを囲んで実行時間などをカウントすることもできます。

于 2011-07-23T14:39:54.487 に答える