我的意思是评论:
/**
*My Comment from database
*/
我的问题:
我收到了一堆根本没有评论的DTO。但是,SQL-Database中有注释。我可以通过发送查询然后检索ResultSet来获取这些注释。
我的任务是使用SQL数据库中的注释创建一个javadoc-API(作为HTML和javacode内部),以使代码库更易于理解。
我编写了一个小的java程序,用于从sql-database中检索注释。 我将找到的注释写入文件,其中包含上面显示的所需javadoc注释格式。 注释列中的任何文本都不表示注释为空(这没关系!)
这里要说明的是之前和之后的图片。 (不要担心文字是德语)
这就是它现在的样子
这是
之后的样子如开头所述..我可以在自定义doclet的帮助下生成Javadoc注释(如此)吗?我被告知使用简单的java程序我的解决方案很好,但最好为这个任务制作一个doclet。
我尝试了什么:
我阅读了几篇关于该主题的Doclet概述,Javadoc常见问题解答和教程。我发现你可以从com.sun.javadoc扩展Doclet类。*;覆盖start(RootDoc root)方法。
有了这个,我可以借助这个自定义doclet打印所需包中的字段,标签和类方法。
除了这个用例之外,我没有找到关于如何实际编写自己的Doclet的详细信息。
甚至可以编写一个在代码中生成javadoc注释的doclet吗?或者使用我现有的解决方案来解决问题会更好吗?
这是我的自定义doclet:
package myPackage;
import com.sun.javadoc.*;
public class ListClass extends Doclet{
public static void main(String[] args) {
String[] blarg = new String[] {
"-private", //shows private fields and methods
"-doclet",
"myPackage.ListClass", //Doclet to use
"-sourcepath",
"C:/DEV/workspace_jss/MyTestProject/src", //path to Package
"myPackage" //package name
};
com.sun.tools.javadoc.Main.execute(blarg);
}
public static boolean start(RootDoc root) {
ClassDoc[] classes = root.classes();
for(ClassDoc cDoc : classes) {
System.out.println(cDoc);
FieldDoc fields[] = cDoc.fields();
for(FieldDoc field : fields) {
System.out.println(" field: " + field);
System.out.println(" field name: " + field.name());
System.out.println(" field commentText: " + field.commentText());
System.out.println(" field type: " + field.type());
Tag[] tags = field.tags();
for(Tag tag : tags) {
System.out.println(" tag: " + tag);
System.out.println(" tag name: " + tag.name());
System.out.println(" tag text: " + tag.text());
}
}
MethodDoc methods[] = cDoc.methods();
for(MethodDoc method : methods) {
System.out.println(" method: " + method);
}
}
return true;
}
}
答案 0 :(得分:2)
甚至可以编写一个在代码中生成javadoc注释的doclet吗?
基本上没有。 doclet无法在源代码中添加注释,因为原始源代码无法通过doclet API使用。 javadoc命令旨在从源代码中提取 javadoc注释并将它们传递给doclet。
或者使用我现有的解决方案来解决问题会更好吗?
可能。
我实际上是从一个生成HTML的现有doclet开始的。我会修改它以查询数据库以提取注释,并在生成HTML时将它们与合并与RootDoc树中的注释一起使用。
我不会尝试生成添加了额外注释的源代码。但是你确实想要采用这种方法,你需要从一个不同的框架开始。