Могу ли я генерировать комментарии 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.
Я бы не стал создавать исходный код с добавлением дополнительных комментариев. Но если вы захотите использовать этот подход, вам нужно будет начать с другой структуры.