【问题标题】:Can I generate Javadoc comments with the help of a custom doclet?我可以在自定义 doclet 的帮助下生成 Javadoc 注释吗?
【发布时间】:2018-06-20 14:35:18
【问题描述】:

我所说的评论是什么意思:

/**
*My Comment from database
*/

我的问题:

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

我的任务是使用 SQL 数据库中的 cmets 创建一个 javadoc-API(作为 HTML 并在 javacode 中),以便更好地理解代码库。

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

为了澄清,这里是之前和之后的图片。 (不用担心文字是德语)

这就是现在的样子

这应该是之后的样子

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

我尝试了什么:

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

有了这个,我可以在这个自定义 doclet 的帮助下打印所需包中类的字段、标签和方法。

除了这个用例之外,我没有找到关于如何实际编写自己的 Doclet 的更多详细信息。

是否有可能编写一个 doclet 在您的代码中生成 javadoc cmets?还是使用我现有的解决方案更好?

这是我现在的自定义 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;
    }
}

【问题讨论】:

    标签: java javadoc doclet


    【解决方案1】:

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

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

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

    可能。

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

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

    【讨论】:

    • 谢谢!我将试验一下 htmlDoclet,看看我能做什么。
    猜你喜欢
    • 2016-08-15
    • 2012-07-03
    • 2012-09-16
    • 2018-06-24
    • 2017-01-28
    • 1970-01-01
    • 2019-03-16
    • 2016-05-24
    • 2011-08-02
    相关资源
    最近更新 更多