如何解决Java:如何使用自定义doclet获取方法的注释不是Javadoc!
我为自己编写了一个自定义doclet。我正在使用JDK 1.8。 (我必须这样做。)
import com.sun.javadoc.*;
import java.util.Formatter;
public class TagFunction {
private final static Formatter formatter = new Formatter();
public static boolean start(RootDoc root) {
for (ClassDoc clazz : root.classes()) {
processClass(clazz);
}
return true;
}
private static void processClass(ClassDoc clazz) {
for (AnnotationDesc anno : clazz.annotations()) {
formatter.format("Annotation %s%n",anno);
}
for (MethodDoc method : clazz.methods()) {
formatter.format("Method %s%n",method);
for (Tag tag : method.tags()) {
formatter.format("Tag %s%n",tag);
}
if(!(method.commentText().isEmpty())) {
formatter.format("Beschreibung: %s%n",method.commentText());
}
formatter.format("%n");
}
System.out.println(formatter);
}
}
当然,我在课堂上用过它。
//import org.junit.jupiter.api.Test;
public class MyClass {
/**
* @param a
* @since 1.1
* @see a
* @a asdf
* @b asdfsfd
* @c asfsdf
*/
@Override
public void a(String a) {
}
}
它的工作方式与我预期的不同。首先,我很困惑 anno 不返回任何内容。我也不确定,为什么我不能从方法中获取 @Override ,而不能从JavaDoc中获取所有其他自定义注释。
这是我的输出。
XXX\.jdks\corretto-1.8.0_265\bin\javadoc.exe" -docletpath . -doclet TagFunction MyClass.java
Loading source file MyClass.java...
Constructing Javadoc information...
Method MyClass.a(java.lang.String)
Tag @param:a
Tag @since:1.1
Tag @see:a
Tag @a:asdf
Tag @b:asdfsfd
Tag @c:asfsdf
问题1: ClassDoc.AnnotationDesc 到底有什么用?我以为它将输出标签。
问题2:如何获取doclet以输出 @Override 标签?下一步将是使用 @Test 标记尝试,但是如果我尝试了,我的cmd.exe会告诉我这不是有效的Java代码。 Javadoc.exe 似乎找不到包 org.junit.jupiter.api.Test; ,这就是为什么我现在不包括该行的原因。
问题3:有人可以向我解释注释和标签之间的区别吗?这两个词在大多数文档和网站上似乎可以互换使用。我认为每一个标记,无论是以@开头的JavaDocs中方法或文档的元数据都是注解/标签,也许有些区别我都不知道。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。