1. 概述

使用Javadoc是个好主意的原因有很多。例如,我们可以从 Java 代码生成 HTML,遍历它们的定义,并发现与它们相关的各种属性。

而且, 方便了开发人员之间的沟通, 提高了可维护性 。 Java DocLint是一个分析 Javadoc 的工具。每当发现错误的语法时,它就会抛出警告和错误。

在本教程中,我们重点讨论如何使用它。稍后,我们将研究它在某些情况下可能产生的问题,以及有关如何避免这些问题的一些准则。

2. 如何使用DocLint

假设我们有一个名为 Sample.java 的 类文件:

/**
 * This sample file creates a class that
 * just displays sample string on standard output.
 *
 * @autho  Baeldung
 * @version 0.9
 * @since   2020-06-13 
 */
public class Sample {

    public static void main(String[] args) {
        // Prints Sample! on standard output.
        System.out.println("Sample!");
    }
}

故意,这里有一个错误, @author 参数写成 @autho 。让我们看看如果我们尝试在没有 DocLint 的情况下创建 Javadoc*:*

jdoc

从控制台输出中我们可以看到,Javadoc 引擎无法找出文档中的错误,也没有返回任何错误或警告。

要使 Java DocLint 返回此类警告,我们必须使用 –Xdoclint 选项执行 javadoc 命令。 (我们稍后会详细解释):

jdoc错误

正如我们在输出中看到的,它直接提到了 Java 文件第 5 行中的错误:

Sample.java:5: error: unknown tag: autho
 * @autho  Baeldung
   ^

3. -Xdoclint

-Xdoclint 参数具有用于不同目的的三个选项。我们将快速浏览一下每一项。

3.1. 没有任何

none 选项禁用 -Xdoclint 选项:

javadoc -Xdoclint:none Sample.java

3.2. 团体

当我们想要应用与某些组相关的某些检查时,此选项非常有用,例如:

javadoc -Xdoclint:syntax Sample.java

组变量有多种类型:

  • 可访问性 – 检查可访问性检查器要检测的问题(例如, 表格 标签中没有指定标题或摘要属性)
  • html – 检测高级 HTML 问题,例如将块元素放入内联元素中或未关闭需要结束标记的元素
  • Missing – 检查是否缺少 Javadoc 注释或标签(例如,缺少注释或类,或者方法上缺少 @return 标签或类似标签)
  • 引用 – 检查与 Javadoc 标记中对 Java API 元素的引用相关的问题(例如,在 @see 中找不到项目,或者 @param 之后的错误名称)
  • 语法 – 检查低级问题,例如未转义的尖括号(< 和 >)和与号(&)以及无效的 Javadoc 标记

可以一次应用多个组:

javadoc -Xdoclint:html,syntax,accessibility Sample.java

3.3. 全部

此选项同时启用所有组,但如果我们想排除其中一些组怎么办?

我们可以使用 -group 语法:

javadoc -Xdoclint:all,-missing

4. 如何禁用 DocLint

由于 Java DocLint 在 Java 8 之前并不存在 ,因此这可能会带来不必要的麻烦,尤其是在旧的第三方库中。

我们已经在上一节中看到了 javadoc 命令的 none 选项。此外,还有一个选项可以 从 Maven、Gradle、Ant 等构建系统中禁用 DocLint 。我们将在接下来的几小节中看到这些。

4.1.梅文

maven-javadoc-plugin 版本 3.0.0 开始,添加了新的doclint配置。让我们看看如何配置它来禁用 DocLint:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
            <doclint>none</doclint> <!-- Turn off all checks -->
        </configuration>
        <executions>
            <execution>
                <id>attach-javadocs</id>
                <goals>
                    <goal>jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>

一般情况下,不建议使用 none 选项, 因为它会跳过所有类型的检查。我们应该使用 全部,缺失 反而。

当使用早期版本(v3.0.0之前)时,我们需要使用不同的设置:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
      <additionalparam>-Xdoclint:none</additionalparam>
    </configuration>
  </plugin>
</plugins>

4.2.摇篮

我们可以使用一个简单的脚本在 Gradle 项目中停用 DocLint:

if (JavaVersion.current().isJava8Compatible()) {
    allprojects {
        tasks.withType(Javadoc) {
            options.addStringOption('Xdoclint:none', '-quiet')
        }
    }
}

不幸的是,Gradle 不像上面示例中的 Maven 那样支持 extraparam ,所以我们需要手动完成。

4.3.蚂蚁

Ant 像 Maven 一样使用 extraparam ,因此我们可以设置 -Xdoclint:none, 如上面演示的那样。

5. 结论

在本文中,我们研究了使用 Java DocLint 的各种方法。当我们想要一个干净的、容易出错的 Javadoc 时,它可以帮助我们。

如需更多深入信息,最好查看官方文档


« 上一篇: Java Weekly, 第391期
» 下一篇: JPA与JDBC的比较