Использовать аннотацию, чтобы указать, какие классы/интерфейсы должны генерировать javadoc?

У меня есть java-программа, и я хочу создать javadoc для классов/интерфейсов. Однако я просто хочу создать javadoc для определенных классов и интерфейсов. Я просто хочу знать, есть ли способ добавить аннотацию в начале каждого класса/интерфейса, чтобы указать, что этот класс/интерфейс не должен генерироваться javadoc (что-то вроде @no-generate-javadoc)

У кого-нибудь есть идеи, пожалуйста?

Спасибо


person ipkiss    schedule 07.05.2010    source источник
comment
Я не пробовал, но этот продукт имеет гибкие исключения и позволяет исключать классы на основе аннотаций. См. filigris.com/products/docflex_javadoc/templates.php.   -  person mdma    schedule 07.05.2010


Ответы (2)


Спасибо за упоминание нашего инструмента - DocFlex/Javadoc.

Кстати, простое исключение классов и членов — это еще не все. После этого сгенерированный документ JavaDoc должен выглядеть согласованным.

Например, предположим, что у нас есть следующая ситуация:

  • класс C1 расширяет класс C2
  • класс C2 расширяет класс C3
  • класс C3 содержит общедоступный метод m() -- который должен быть задокументирован

Теперь предположим, что класс C3 нужно исключить из документации. Что произойдет с методом m() ? Это должно быть указано в документации как объявлено в классе C2! Тогда для класса C1 m() должен появиться как унаследованный от класса C2 (а не от класса C3, как это на самом деле есть в коде).

Та же ситуация и с полями, что на самом деле еще сложнее, потому что поля с одинаковыми именами не перегружают, а затеняют друг друга. Например

  • класс C1 расширяет класс C2
  • класс C2 реализует интерфейс I
  • класс C2 содержит приватное поле F
  • интерфейс I содержит общедоступное поле F -- которое может быть задокументировано

Предположим, что интерфейс I нужно исключить из документации. Что делать с полем I.F? На самом деле ничего! Он не должен попасть в документацию, потому что он затенен C2.F, который является приватным и, следовательно, должен быть невидимым.

Решает ли простая настройка (делегирование) стандартного доклета такие проблемы?

Наш инструмент делает!

person Leonid Rudy    schedule 25.05.2010

Написание собственного доклета очень просто и даст вам именно то, что вы хотите. Вы по-прежнему можете делегировать стандартному доклету, поэтому ваша реализация должна включать только ваши конкретные изменения.

ExcludeDoclet будет хорошей отправной точкой. Он читает исключенные классы из файла. Вы получаете исключения по аннотации, вызывая метод annotations() для ClassDoc (на самом деле это базовый класс, ProgramElementDoc), чтобы получить аннотации, а затем сверить их с желаемыми исключающими аннотациями. При желании вы также можете сделать это рекурсивно для суперклассов и реализованных интерфейсов,

person mdma    schedule 07.05.2010