Используйте аннотацию, чтобы указать, какие классы / интерфейсы должны генерировать Javadoc? - PullRequest
1 голос
/ 07 мая 2010

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

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

Спасибо

Ответы [ 2 ]

1 голос
/ 07 мая 2010

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

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

0 голосов
/ 25 мая 2010

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

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

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

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

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

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

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

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

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

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

...