我可以在自定义 doclet 的帮助下生成 Javadoc 注释吗?

Can I generate Javadoc comments with the help of a custom doclet?

我评论的意思:

/**
*My Comment from database
*/

我的问题:

我有一堆根本没有评论的 DTO。但是,SQL-数据库中有评论。我可以通过发送查询然后检索结果集来获得这些评论。

我的任务是创建一个 javadoc-API(作为 HTML 并在 java 代码中),其中包含来自 SQL 的注释-数据库为了让代码库更好理解。

我编写了一个 java 小程序,可以从 sql 数据库中检索评论。 我使用上面显示的所需 javadoc 评论格式将找到的评论写入文件。 评论栏中没有文本意味着评论为空(没关系!)

为了清楚起见,这里有前后的图片。 (不用担心文字是德语)

这是现在的样子

这是

之后的样子

如开头所述。我可以在自定义 doclet 的帮助下生成 Javadoc 注释(像这样)吗?有人告诉我,我使用简单 java 程序的解决方案很好,但最好为此任务制作一个 doclet。

我尝试了什么:

我阅读了一些关于该主题的 Doclet 概述、Javadoc 常见问题解答和教程。我发现您可以从 com.sun.javadoc.* 扩展 Doclet class;覆盖 start(RootDoc root) 方法。

借助此自定义 doclet,我可以在所需的包中打印 classes 的字段、标签和方法。

除此用例外,我没有找到有关如何实际编写您自己的 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;
    }
}

Is it even possible to write a doclet which generates javadoc comments in your code?

基本上没有。 doclet 无法向您的源代码添加注释,因为无法通过 doclet API 获得原始源代码。 javadoc 命令旨在从 源代码提取 javadoc 注释并将它们传递给doclet。

Or would it just be better to use my existing solution for the problem?

可能。

我实际上会从生成 HTML 的现有 doclet 开始。我会修改它以查询数据库以提取评论,并在生成 HTML.

将它们与 RootDoc 树中的评论合并

我不会尝试生成添加了额外注释的源代码。但如果您确实想采用这种方法,则需要从不同的框架开始。