java - 我可以借助自定义 doclet 生成 Javadoc 注释吗?

标签 java javadoc doclet

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

/**
*My Comment from database
*/

我的问题:

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

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

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

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

这就是现在的样子

before

这就是之后的样子

after

正如开头所提到的......我可以在自定义 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;
    }
}

最佳答案

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 树中的注释合并。

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

关于java - 我可以借助自定义 doclet 生成 Javadoc 注释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48204100/

相关文章:

java - zk - 是否可以为模型中的每条记录添加绑定(bind)?

java.lang.ClassNotFoundException : javax. servlet.jsp.SkipPageException 异常

linux - Eclipse Javadoc 没有正确显示 HTML 表格

java - 验证输入的设计模式?

java - 将位图设置为 TextView 的背景 - Android

java - 生成自定义 javadoc 时遇到问题; 'cannot find doclet'

enums - 在自定义 doclet 中处理某些 5.0 语言功能(枚举和注释)的问题

java - 如何在 Windows 上向 doclet 添加多个源路径?

java - 我应该在调用方法时发表评论吗?

java - String.charAt(int i) 在 Java 中是如何实现的?