Введение в Javadoc

1. Обзор

Хорошая документация по API - один из многих факторов, способствующих общему успеху программного проекта.

К счастью, все современные версии JDK предоставляют инструмент Javadoc - для генерации документации API из комментариев, присутствующих в исходном коде.

Предпосылки:

, JDK 1.4 (JDK 7 рекомендуется для последней версии Maven

Плагин Javadoc) , Папка JDK /bin , добавленная в переменную среды PATH

, (Необязательно) IDE со встроенными инструментами

Давайте начнем с комментариев.

  • Структура комментариев Javadoc выглядит очень похоже на обычный многострочный комментарий ** , но ключевым отличием является дополнительная звездочка в начале:

----//This is a single line comment
/**
 **  This is a regular multi-line comment
 ** //** **
 **  This is a Javadoc
 ** /----
  • Комментарии в стиле Javadoc также могут содержать теги HTML. **

2.1. Javadoc формат

  • Комментарии Javadoc могут быть размещены над любым классом, методом или полем, которое мы хотим задокументировать. **

Эти комментарии обычно состоят из двух разделов:

, Описание того, что мы комментируем

, Теги автономного блока (помеченные символом « @ »), которые

описать конкретные метаданные

Мы будем использовать некоторые из наиболее распространенных тегов блоков в нашем примере. Полный список тегов блоков см. В reference guide .

2.2. Javadoc на уровне класса

Давайте посмотрим, как будет выглядеть комментарий Javadoc на уровне класса:

----/** **
**  Hero is the main entity we'll be using to . . .
**
**  Please see the {@link com.baeldung.javadoc.Person} class for true identity
**  @author Captain America
**
** /public class SuperHero extends Person {
   //fields and methods
}
----

У нас есть краткое описание и два разных тега блока - автономный и встроенный:

  • Отдельные теги появляются после описания с тегом в качестве первого

слово в строке, например тег @ author Встроенные теги могут появляться где угодно и окружены фигурными

скобки ** , например, тег @ link в описании

В нашем примере мы также видим два вида используемых тегов блоков:

  • \ {@ link} предоставляет встроенную ссылку на ссылочную часть нашего источника

код ** @ author имя автора, добавившего класс, метод или поле

это комментируется

2.3. Javadoc на Поле Уровень

Мы также можем использовать описание без каких-либо тегов блока, как это внутри нашего класса SuperHero :

----/** **
 **  The public name of a hero that is common knowledge
 ** /private String heroName;
----

Для закрытых полей не будет сгенерирован Javadoc, если мы явно не передадим опцию -private команде Javadoc.

2.4. Javadoc на уровне метода

Методы могут содержать различные теги блоков Javadoc.

Давайте посмотрим на метод, который мы используем:

----/** **
 **  <p>This is a simple description of the method. . .
 **  <a href="http://www.supermanisthegreatest.com">Superman!</a>
 **  </p>
 **  @param incomingDamage the amount of incoming damage
 **  @return the amount of health hero has after attack
 **  @see <a href="http://www.link__to__jira/HERO-402">HERO-402</a>
 **  @since 1.0
 ** /public int successfullyAttacked(int incomingDamage) {
   //do things
    return 0;
}
----

Метод successfullyAttacked содержит описание и многочисленные автономные теги блоков.

Существует множество блочных тегов, помогающих создать правильную документацию, и мы можем включать в себя всевозможные виды информации. Мы можем даже использовать базовые теги HTML в комментариях.

Давайте рассмотрим теги, с которыми мы сталкиваемся в примере выше:

  • @ param предоставляет любое полезное описание параметра метода или

вход следует ожидать ** @ return предоставляет описание того, что метод может или может вернуть

  • @ see создаст ссылку, аналогичную тегу \ {@ link} , но более подробно

контекст ссылки, а не встроенный ** @ since указывает, какая версия класса, поля или метода была добавлена

к проекту ** @ version указывает версию программного обеспечения, обычно используемую с

Макросы% I% и% G% ** @ throws используется для дальнейшего объяснения случаев, когда программное обеспечение

ожидать исключения ** @ deprecated дает объяснение, почему код устарел, когда он

возможно, устарели, и каковы альтернативы

Хотя оба раздела технически необязательны, нам потребуется хотя бы один раздел, чтобы инструмент Javadoc мог генерировать что-либо значимое.

3. Поколение Javadoc

Чтобы сгенерировать наши страницы Javadoc, мы хотим взглянуть на инструмент командной строки, который поставляется вместе с JDK, и плагин Maven.

3.1. Инструмент командной строки Javadoc

Инструмент командной строки Javadoc является очень мощным, но имеет некоторую сложность.

Выполнение команды javadoc без каких-либо параметров или параметров приведет к ошибке и ожидаемым выходным параметрам.

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

Давайте откроем командную строку и перейдем в каталог проекта.

Предполагая, что все классы находятся в папке src в каталоге проекта:

----[email protected]:~$ javadoc -d doc src\**
----

Это создаст документацию в каталоге с именем doc , как указано с флагом – d . Если существует несколько пакетов или файлов, нам необходимо предоставить все из них.

Использование IDE со встроенной функциональностью, конечно, проще и обычно рекомендуется.

3.2. Javadoc с плагином Maven

Мы также можем использовать плагин Maven Javadoc:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
            <tags>
            ...
            </tags>
        </plugin>
    </plugins>
</build>

В базовом каталоге проекта мы запускаем команду для генерации наших Javadoc в каталог в target \ site:

----[email protected]:~$ mvn javadoc:javadoc
----

The модуль Maven очень мощный и облегчает создание сложных документов.

Давайте теперь посмотрим, как выглядит сгенерированная страница Javadoc:

ссылка:/uploads/overview-125x125.png%20125w[]

Мы можем увидеть древовидное представление классов, которые расширяет наш класс SuperHero . Мы можем увидеть наше описание, поля и метод, и мы можем нажать на ссылки для получения дополнительной информации.

Детальный вид нашего метода выглядит так:

ссылка:/uploads/ss__javadoc-1024x579-768x434.png%20768w[]

3.3. Пользовательские теги Javadoc

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

Для этого нам просто нужно включить параметр -tag в нашу командную строку Javadoc в формате <tag-name>: <местоположения-разрешено>: <заголовок> .

Чтобы создать собственный тег с именем @ location , разрешенный в любом месте, который отображается в заголовке «Известные расположения» в нашем сгенерированном документе, нам нужно выполнить:

----[email protected]:~$ javadoc -tag location:a:"Notable Locations:" -d doc src\**
----

Чтобы использовать этот тег, мы можем добавить его в раздел блоков комментария Javadoc:

----/** **
 **  This is an example...
 **  @location New York
 **  @returns blah blah
 ** /----

Плагин Maven Javadoc достаточно гибок, чтобы также разрешать определения наших пользовательских тегов в нашем pom.xml .

Чтобы настроить тот же тег выше для нашего проекта, мы можем добавить следующее в раздел <tags> нашего плагина:

...
<tags>
    <tag>
        <name>location</name>
        <placement>a</placement>
        <head>Notable Places:</head>
    </tag>
</tags>
...

Этот способ позволяет нам указывать пользовательский тег один раз, а не указывать его каждый раз.

4. Заключение

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

Более простой способ создания документации - использовать любые встроенные параметры IDE или включить плагин Maven в наш файл pom.xml и выполнить соответствующие команды.

Примеры кода, как всегда, можно найти по адресу over на GitHub .