10

保持ポリシー = SOURCE の注釈用の注釈プロセッサがあります。

ステップデバッグする方法がわかりません。

  • mvn install、compile、package、または ant javac を実行すると、印刷ステートメント、ロガー情報が発行され、コンパイル ログにそれらの sysout が表示されます。

  • ただし、Eclipse でプロセッサをステップ デバッグする方法がわかりません。つまり、コンパイル時にどのようにステップデバッグするのですか?

4

3 に答える 3

7

最近のオプションは、 http: //github.com/google/compile-testingのようなものを使用することです。これにより、任意の注釈プロセッサに対してコンパイル ジョブを呼び出すことができ、ブレーク ポイントを設定したり、ステップ スルーしたりできます。

@Test public void testStuff() {
  // Create a source file to process, or load one from disk.
  JavaFileObject file = JavaFileObjects.fromSourceLines("test.Foo",
    "package test;",
    "",
    "import bar.*;",
    "",
    "@MyAnnotation(blah=false)",
    "interface TestInterface {",
    "  Bar someBar();",
    "}",

  // assert conditions following a compilation in the context of MyProcessor.
  assert_().about(javaSource()).that(file)
      .processedWith(new MyProcessor())
      .failsToCompile()
      .withErrorContaining("some error message").in(file).onLine(5);
}

このテストでは、テスト データ ソースで @MyAnnotation が正しく宣言されていないため、何らかのエラー メッセージが表示されることが予想されます。このアサーションが失敗した場合は、IDE でデバッグ モードで実行し、MyProcessor でブレークポイントを設定して、デバッグ中に完全なコンパイラ環境をアクティブにしてステップ スルーできます。

プロセッサ内の特定のメソッドの単体テストでは、 CompilationRule という @Rule を使用して、要素と型のユーティリティ クラスを取得し、コンパイラの特定のロジックをより分離した方法でテストすることもできます。

于 2014-11-06T21:49:57.787 に答える
5

デバッグ構成を使用して、EclipseからJavaコンパイラーを呼び出す必要があります(「デバッグ構成...」メニューから構成を手動で作成する必要があります)。

JDK 1.6以降でJavaコンパイラを呼び出す「正しい」方法は、ToolProviderから取得したjavax.toolsのJavaCompilerインターフェイスを使用することですクラス/パッケージのドキュメントがかなりあるため、すべてのリンクを含めます。読む必要があります)。

「迅速で汚い」方法(これは機能するはずcom.sun.tools.javac.Main.main()ですが、私は保証しません)は、通常のコマンドライン引数を渡して呼び出すことです。これを行うにはtools.jar、クラスパスが必要です(にあります$JAVA_HOME/lib)。

于 2012-10-04T20:49:26.587 に答える
2

注釈処理はコンパイル中に発生するため、通常のデバッグは機能しません。プロジェクトのコンテキストでデバッグする場合は、Gradle または Maven をデバッグ モードにして、Eclipse リモート デバッグを使用できます。次に、注釈プロセッサのファイルにブレークポイントを配置できます。

任意のプロジェクトでのアノテーション プロセッサのデバッグを参照してください。

免責事項:私は投稿を書きました。

于 2016-03-29T14:05:38.507 に答える