2010-05-07 4 views
1

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

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

Благодаря

+1

Я не пробовал, но этот продукт имеет гибкие исключения и позволяет исключать классы на основе аннотации. См. Http://www.filigris.com/products/docflex_javadoc/templates.php – mdma

ответ

0

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

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

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

1

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

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

Смежные вопросы