Могу ли я генерировать комментарии Javadoc с помощью пользовательского доклета?

Что я имею в виду под комментарием:

/**
*My Comment from database
*/

Моя проблема:

Я получил кучу DTO, которые вообще не комментируются. Тем не менее, есть комментарии в базе данных SQL. Я могу получить эти комментарии, отправив запрос, а затем получив ResultSet.

Моя задача - создать javadoc-API (как HTML, так и внутри javacode) с комментариями из базы данных SQL, чтобы сделать кодовую базу более понятной.

Я написал небольшую Java-программу, которая получает комментарии из базы данных sql. Я записываю найденный комментарий в файл с желаемым форматом комментария javadoc, показанным выше. Отсутствие текста в столбце комментария означает пустое значение для комментария (это нормально!)

Для уточнения здесь приведены фотографии до и после. (не беспокойтесь о том, что текст на немецком языке)

Вот как это выглядит прямо сейчас

до

Вот так это должно выглядеть после

после

Как упомянуто в начале. Могу ли я генерировать комментарии Javadoc (как этот) с помощью пользовательского доклета? Мне сказали, что мое решение с простой Java-программой было хорошим, но для этой задачи было бы лучше сделать доклет.

Что я пробовал:

Я прочитал несколько обзоров Doclet, часто задаваемых вопросов по Javadoc и учебных пособий по этой теме. Я обнаружил, что вы можете расширить класс Doclet из com.sun.javadoc.*; переопределить метод запуска (RootDoc ​​root).

При этом я мог печатать поля, теги и методы классов в желаемом пакете с помощью этого пользовательского доклета.

Кроме этого варианта использования, я не нашел более подробной информации о том, как на самом деле написать свои собственные доклеты.

Можно ли даже написать доклет, который генерирует комментарии 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 ответ

Решение

Можно ли даже написать доклет, который генерирует комментарии Javadoc в вашем коде?

В основном нет. Доклет не может добавлять комментарии к вашему исходному коду, поскольку исходный код недоступен для него через API доклета. Команда javadoc предназначена для извлечения комментариев javadoc из исходного кода и передачи их в доклет.

Или было бы лучше использовать моё существующее решение проблемы?

Возможно.

На самом деле я бы начал с существующего доклета, который генерирует HTML. Я бы изменил его, чтобы запросить базу данных для извлечения комментариев, и объединить их с комментариями в дереве RootDoc ​​при создании HTML.

Я бы не стал создавать исходный код с добавлением дополнительных комментариев. Но если вы захотите использовать этот подход, вам нужно будет начать с другой структуры.

Другие вопросы по тегам