注释和处理器之间的匹配

时间:2014-07-10 09:55:30

标签: java junit intellij-idea annotations annotation-processing

如何为注释找到相应的处理器?例如,考虑来自JUnit的@Before注释。

Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Before {
}

我使用IDEA,通过搜索@Before它只找到用法。并且注释中的断点是不可能的。

1 个答案:

答案 0 :(得分:1)

我认为应该可以找到使用断点的处理器,但它有点复杂。本文介绍如何在注释处理器上设置断点:
Debugging an annotation processor in every IDE

基本上你必须设置一些编译器标志,使编译器使用的JVM在调试模式下运行:

-J-Xdebug -J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005

我已尝试按照文章中的描述在eclipse中设置标记,但似乎此选项已被删除。我不知道在IDEA中这是否可行。

如果您不想调试特定处理器,可以尝试在init javax.annotation.processing.AbstractProcessor方法上设置断点 - 尽管不能保证每个处理器都会使用此摘要有些人可能有自己的javax.annotation.processing.Processor实现。也不能保证注释仅由处理器处理,编译器可能直接处理一些注释。注释也可以在运行时处理,您可能需要在Annotation类本身中添加一些断点。

要在标准库类中设置断点,我必须attach the source in eclipse