0

我的评论是什么意思:

/**
*My Comment from database
*/

我的问题:

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

我的任务是使用来自 SQL 数据库的注释创建一个 javadoc-API(作为 HTML 并在 javacode 中),以使代码库更易于理解。

我编写了一个从 sql 数据库中检索注释的小型 java 程序。我使用上面显示的所需 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;
    }
}
4

1 回答 1

2

是否有可能编写一个在您的代码中生成 javadoc 注释的 doclet?

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

或者使用我现有的解决方案来解决问题会更好吗?

可能。

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

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

于 2018-01-11T10:37:25.603 回答