Пакет jdk.javadoc.doclet
API Doclet предоставляет среду, которая в сочетании с API Language Model и Compiler Tree API позволяет клиентам инспектировать структуры программ и библиотек на уровне исходного кода, включая комментарии API, встроенные в исходный код.
standard doclet может использоваться для генерации документации в формате HTML. Он поддерживает настраиваемые taglets, которые могут использоваться для генерации настраиваемого вывода для пользовательских тегов в комментариях документации.
Примечание: Объявления в этом пакете заменяют объявления в более старом пакете com.sun.javadoc. Подробную информацию о сопоставлении старых типов с новыми типами см. в Руководстве по миграции.
Doclet вызывается javadoc, и этот API может использоваться для записи информации о программе в файлы. Например, стандартный doclet вызывается по умолчанию для генерации документации в формате HTML.
Вызов определяется интерфейсом Doclet — метод интерфейса run определяет точку входа.
public boolean run(DocletEnvironment environment)Экземпляр
DocletEnvironment содержит среду, в которой будет инициализирован doclet. Из этой среды можно извлечь всю другую информацию в виде elements. Кроме того, можно использовать API и утилиты, описанные в Language Model API, для запроса элементов и типов.
Терминология
- Выбранный
- Элемент считается выбранным, если управление выбором разрешает его документацию. (Обратите внимание, что синтетические элементы никогда не выбираются.)
- Указанный
- Набор элементов, указанных пользователем, считается указанными элементами. Указанные элементы служат исходными точками для определения включенных элементов, которые должны быть задокументированы.
- Включенный
- Элемент считается включенным, если он указан, если он содержит указанный элемент или находится в указанном элементе и выбран. Включенные элементы будут задокументированы.
Параметры
Управление выбором javadoc может быть задано с помощью следующих параметров:-
--show-members:valueи--show-types:valueмогут использоваться для фильтрации членов со следующими значениями:- public — учитывает только общедоступные элементы
- protected — учитывает общедоступные и защищенные элементы
- package — учитывает общедоступные, защищенные и пакеты с закрытым доступом
- private — учитывает все элементы
-
--show-packages:value"exported" или "all" могут быть использованы для учета только экспортированных пакетов или всех пакетов в модуле. -
--show-module-contents:valueможет использоваться для указания уровня, на котором модули могут быть задокументированы. Значение "api" указывает на документацию уровня API, а "all" — на подробную документацию.
-
--moduleдокументирует указанные модули. -
--expand-requires:valueрасширяет набор модулей, которые должны быть задокументированы, включая некоторые или все зависимости модулей. Значение может быть одним из следующих:- transitive — каждый модуль, явно указанный в командной строке, расширяется, чтобы включать замыкание его транзитивных зависимостей
- all — каждый модуль, явно указанный в командной строке, расширяется, чтобы включать замыкание его транзитивных зависимостей, а также все его прямые зависимости
-
packagenamesможет быть использован для указания пакетов. -
-subpackagesможет быть использован для рекурсивной загрузки пакетов. -
-excludeможет быть использован для исключения каталогов пакетов. -
sourcefilenamesможет быть использован для указания имен файлов исходного кода.
Взаимодействие со старыми параметрами
Новые--show-* параметры предоставляют более подробную замену старым параметрам -public, -protected, -package, -private. Кроме того, старые параметры могут продолжать использоваться как сокращенные формы комбинаций новых параметров, как описано ниже: | Старый параметр | Эквивалентно этим значениям с новым параметром | ||||
|---|---|---|---|---|---|
--show-members |
--show-types |
--show-packages |
--show-module-contents |
||
-public |
public | public | exported | api | |
-protected |
protected | protected | exported | api | |
-package |
package | package | all | all | |
-private |
private | private | all | all | |
Имя квалифицированного элемента — это имя, к которому добавлен имя пакета, например, java.lang.String. Неквалифицированное имя не содержит имени пакета, например, String.
Пример
Ниже приведен пример doclet, отображающий информацию о классе и его членах, поддерживающий параметр.// note imports deleted for clarity
public class Example implements Doclet {
Reporter reporter;
@Override
public void init(Locale locale, Reporter reporter) {
reporter.print(Kind.NOTE, "Doclet using locale: " + locale);
this.reporter = reporter;
}
public void printElement(DocTrees trees, Element e) {
DocCommentTree docCommentTree = trees.getDocCommentTree(e);
if (docCommentTree != null) {
System.out.println("Element (" + e.getKind() + ": "
+ e + ") has the following comments:");
System.out.println("Entire body: " + docCommentTree.getFullBody());
System.out.println("Block tags: " + docCommentTree.getBlockTags());
}
}
@Override
public boolean run(DocletEnvironment docEnv) {
reporter.print(Kind.NOTE, "overviewfile: " + overviewfile);
// get the DocTrees utility class to access document comments
DocTrees docTrees = docEnv.getDocTrees();
// location of an element in the same directory as overview.html
try {
Element e = ElementFilter.typesIn(docEnv.getSpecifiedElements()).iterator().next();
DocCommentTree docCommentTree
= docTrees.getDocCommentTree(e, overviewfile);
if (docCommentTree != null) {
System.out.println("Overview html: " + docCommentTree.getFullBody());
}
} catch (IOException missing) {
reporter.print(Kind.ERROR, "No overview.html found.");
}
for (TypeElement t : ElementFilter.typesIn(docEnv.getIncludedElements())) {
System.out.println(t.getKind() + ":" + t);
for (Element e : t.getEnclosedElements()) {
printElement(docTrees, e);
}
}
return true;
}
@Override
public String getName() {
return "Example";
}
private String overviewfile;
@Override
public Set<? extends Option> getSupportedOptions() {
Option[] options = {
new Option() {
private final List<String> someOption = Arrays.asList(
"-overviewfile",
"--overview-file",
"-o"
);
@Override
public int getArgumentCount() {
return 1;
}
@Override
public String getDescription() {
return "an option with aliases";
}
@Override
public Option.Kind getKind() {
return Option.Kind.STANDARD;
}
@Override
public List<String> getNames() {
return someOption;
}
@Override
public String getParameters() {
return "file";
}
@Override
public boolean process(String opt, List<String> arguments) {
overviewfile = arguments.get(0);
return true;
}
}
};
return new HashSet<>(Arrays.asList(options));
}
@Override
public SourceVersion getSupportedSourceVersion() {
// support the latest release
return SourceVersion.latest();
}
} Этот doclet можно вызвать с помощью командной строки, например:
javadoc -doclet Example \
-overviewfile overview.html \
-sourcepath source-location \
source-location/Example.java Руководство по миграции
Многие типы в старом API com.sun.javadoc не имеют эквивалентов в этом пакете. Вместо этого используются типы в API javax.lang.model и com.sun.source.
В следующей таблице приведены рекомендации по сопоставлению старых типов с их заменами. В некоторых случаях прямого эквивалента нет.
- Since:
- 9
- See Also:
-
Doclet,DocletEnvironment
| Interface | Description |
|---|---|
| Doclet | Пользовательский модуль документирования (doclet) должен реализовать этот интерфейс, как описано в описании пакета. |
| Doclet.Option | Инкапсулирование имени опции, псевдонимов, параметров и описаний, используемых модулем документирования (doclet). |
| DocletEnvironment | Представляет операционную среду одного вызова модуля документирования (doclet). |
| Reporter | Этот интерфейс предоставляет средства для сообщений об ошибках, предупреждениях и заметках. |
| Taglet | Интерфейс для пользовательского тега (taglet), поддерживаемого модулями документирования, такими как |
| Class | Description |
|---|---|
| StandardDoclet | Этот модуль документирования генерирует HTML-документацию для указанных модулей, пакетов и типов. |
| Enum | Description |
|---|---|
| Doclet.Option.Kind | Тип опции. |
| DocletEnvironment.ModuleMode | |
| Taglet.Location | Тип расположения, в котором может использоваться тег. |
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/jdk.javadoc/jdk/javadoc/doclet/package-summary.html