gpt4 book ai didi

java - 如何在编译期间逐步调试注释处理器?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:24 26 4
gpt4 key购买 nike

我有一个注释处理器,用于保留策略=SOURCE 的注释。

我不知道如何逐步调试它。

  • 当我运行 mvn install、compile 或 package 或 ant javac 时,我发出了打印语句、记录器信息,并且我在编译日志中看到了它们的系统输出。

  • 但是,我不知道如何在 Eclipse 中逐步调试处理器。我的意思是,您如何逐步调试编译时?

最佳答案

最近的一个选择是使用类似 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 中以 Debug模式运行它,在 MyProcessor 中设置断点,并在调试期间使用完整的编译器环境激活。

对于处理器中的特定方法的单元测试,您还可以使用称为 CompilationRule 的 @Rule,您可以从中获取元素和类型实用程序类,以便以更全面的方式测试编译器中的特定逻辑孤立的方式。

关于java - 如何在编译期间逐步调试注释处理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12734335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com