Подтвердить что ты не робот

Как автоматически генерировать комментарии для getter/setter на основе комментариев к поля в Eclipse?

Я хочу, чтобы Eclipse автоматически генерировал комментарии Javadoc для моих методов getter и setter на основе ранее определенных комментариев для полей. Как я могу достичь этого?

Справочная информация. Политика в нашей компании заключается в том, чтобы прокомментировать каждый метод и область (даже если у них есть пояснительные имена). Поэтому я должен делать избыточную работу, описывая поля и описывая геттеры/сеттеры снова.

Пример:

/**
 * name of the dynamic strategy
 */
private String dynName;

/**
 * get the name of the dynamic strategy
 * @return
 */
public String getDynName() {
    return dynName;
}

Поиск в Интернете показал, что я не единственный, у кого проблема, но я не мог найти никаких решений. Я проверил http://jautodoc.sourceforge.net/, но похоже, что он не способен это сделать.

4b9b3361

Ответ 1

Наконец-то я нашел решение (или, по крайней мере, обходное решение). Я читал о Spoon на SO. Это программный процессор Java, который позволяет читать и изменять исходные файлы Java. Его можно даже использовать как плагин Eclipse или Ant/Maven script.

Все, что вам нужно сделать, - это расширить AbstractProcessor, который будет обрабатывать метод. Если имя метода начинается с get/set, оно ищет соответствующее поле, извлекает его комментарий и заменяет или расширяет комментарий доступа к нему.

У меня немного ant script, который берет все мои источники и обрабатывает их.

Что-то, интегрированное в шаблоны кода затмений, было бы, конечно, более удобным, но пока этот способ в порядке!

Ответ 2

JAutodoc, так как ver 1.6 (через 1 год после вопроса) имеет новую опцию "[G, S] etter из комментария поля", которая делает именно то, что вы хотите.

Это довольно удобная функция. Комментарии поля обычно не включаются в окончательный HTML-код Javadoc, поскольку они могут/должны быть частными членами (генерация Javadoc для каждого частного участника тоже не подходит), поэтому комментарии будут полностью потеряны без него!

Интересно, может ли этот поток Q/A побудить автора реализовать эту приятную функцию.

Ответ 3

если вы используете инструмент Eclipse для переопределения/реализации методов... из исходного меню, есть возможность автоматически генерировать комментарии javadoc. есть шаблоны комментариев, которые вы можете изменить в настройках- > java- > code style → code templates → comments.

Ответ 4

Я согласен с тем, что дублирующая документация является проблемой. Как документировать приватную переменную, а затем предоставить ссылку на эту документацию в методах доступа?

(Очевидно, что следующее решение для очень простых методов доступа. Вы действительно не хотите раскрывать документацию частной переменной в своем API, особенно если ваш метод доступа действительно делает что-то примечательное.)

public class MyBean {

/**
 * The names description
 */
private String name;

/**
 * @return {@link #name}
 */
public String getName() {
    return name;
}

/**
 * @param name {@link #name}
 */
public void setName(String name) {
    this.name = name;
}
}

Обратите внимание, что если вы используете Eclipse, вам может потребоваться включить ссылку на частные переменные в javadoc следующим образом:

Щелкните правой кнопкой мыши проект в Проводнике пакетов и выберите Свойства Свернуть Компилятор Java node и выберите Javadoc Выберите включить конкретные настройки проекта и под Учитывайте только члены как видимые как: выберите private

Я подозреваю, что результаты поиска будут затронуты, но я еще не использовал проверенные на сколько.

Ответ 5

Если у вас есть макроязык, вы можете написать такую ​​функцию, как "открыть всплывающее окно, которое позволяет мне вводить текст, а затем генерирует getter и setter, включая его javadoc, на основе шаблонов".

У Eclipse фактически нет реальной поддержки такого макроязыка, но, возможно, вы все равно можете взглянуть на: Есть ли Macro Recorder для Eclipse?

Если вы не хотите переключаться между eclipse и другим инструментом, вы можете попробовать JEdit (jedit.org), который включает мощный макроязык beanshell. Таким образом, вы можете открыть eclipse и jedit, перетащить и отбросить файл, который хотите обработать, от eclipse до jedit, использовать макрос jedit, затем сохранить файл и, наконец, обновить файл в eclipse.

Это немного раздражает, но для некоторых процессов, которые я успешно принял.

Ответ 6

плагин JavadocWriter для IntelliJ IDEA говорит, что он делает "умную копию javadoc из поля в accessor". Caveat utilitor: я не пробовал сам плагин, и он не обновлялся через 3 года.

Ответ 7

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

Ответ 8

Я использую Eclipse Luna 4.4.

  • Выберите меню Window\Preferences, выберите Java\Code Style\Code Templates. Выберите раздел Comments\Getters | Setters, нажмите кнопку Edit....

enter image description here

  • Существует много существующих переменных, используйте кнопку Insert Variable...

    enter image description here

  • Измените свой формат комментария, затем нажмите кнопку Apply, затем нажмите OK, чтобы закончить.

Ответ 9

Фактически JAutodoc может генерировать комментарии для getter/setter на основе комментариев к полям. Вы должны проверить вариант "Создать комментарий от имени элемента", см. http://jautodoc.sourceforge.net/ для документации.