代码之家  ›  专栏  ›  技术社区  ›  Vulkanos

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

  •  0
  • Vulkanos  · 技术社区  · 7 年前

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

    /**
    *My Comment from database
    */
    

    我的问题:

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

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

    我编写了一个从sql数据库检索注释的小型java程序。 我使用上面显示的所需javadoc注释格式将找到的注释写入文件。 注释列中没有文本表示注释为空(这是可以的!)

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

    这就是现在的样子

    before

    之后应该是这样的

    after

    如开头所述。。我可以在自定义doclet的帮助下生成Javadoc注释(如下所示)吗?我被告知,我用一个简单的java程序实现的解决方案很好,但最好为这项任务制作一个doclet。

    我尝试了什么:

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

    通过这个自定义doclet,我可以在所需的包中打印字段、标记和类的方法。

    除了这个用例之外,我没有发现关于如何编写自己的doclet的更多细节。

    甚至可以编写一个doclet在代码中生成javadoc注释吗?还是使用我现有的解决方案更好?

    这是我现在的自定义文档:

    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;
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Stephen C    7 年前

    甚至可以编写一个doclet在代码中生成javadoc注释吗?

    基本上不会。doclet无法向源代码添加注释,因为原始源代码无法通过doclet API使用。javadoc命令旨在 摘录 javadoc注释 从…起 源代码并将其传递给doclet。

    还是使用我现有的解决方案更好?

    可能地

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

    我不会试图生成添加了额外注释的源代码。但如果你真的想采用这种方法,你就需要从一个不同的框架开始。

    推荐文章