32

Checkstyle 规则JavadocStyle不允许标记<u>。根据文档,这些检查是根据 Sun 提供的 DocCheck doclet 进行的检查而设计的。不幸的是,我在任何地方都没有找到 DocCheck。我也没有找到任何关于 Javadoc 中允许的 HTML 标签的官方文档。有没有?

4

2 回答 2

39

从 Java 8 开始,Javadoc 只允许 HTML 标记的子集。

Javadoc 的doclint 组件强制执行此限制。您可以通过传递给 javadoc 来禁用所有 doclint 警告-Xdoclint:none,但您应该考虑修复您的 Javadoc 注释,否则生成的 HTML API 文档可能看起来很糟糕或可能会忽略内容。(除了缺少 Javadoc标记外,我通常 -Xdoclint:all,-missing会收到有关所有内容的警告。)@

我还没有找到doclint 允许的标签的公共文档,但这里是它允许的HTML 标签的列表,我从Java 8 的文件中收集到langtools/src/share/classes/com/sun/tools/doclint/HtmlTag.java

A
B
BIG
BLOCKQUOTE
BODY
BR
CAPTION
CENTER
CITE
CODE
DD
DFN
DIV
DL
DT
EM
FONT
FRAME
FRAMESET
H1
H2
H3
H4
H5
H6
HEAD
HR
HTML
I
IMG
LI
LINK
MENU
META
NOFRAMES
NOSCRIPT
OL
P
PRE
SCRIPT
SMALL
SPAN
STRONG
SUB
SUP
TABLE
TBODY
TD
TFOOT
TH
THEAD
TITLE
TR
TT
U
UL
VAR

JDK 9 的更新

JDK 9 允许的标签集与 JDK 8 不同。这是两个 JDK 的标签列表,并附有关于仅其中一个 JDK 允许的标签的注释。同样,数据来自HTMLTag.java文件。

A
BIG       // JDK 8 only
B         // JDK 8 only
BLOCKQUOTE
BODY
BR
CAPTION
CENTER
CITE      // JDK 8 only
CODE
DD
DFN       // JDK 8 only
DIR       // JDK 9 only
DIV
DL
DT
EM
FONT
FOOTER    // JDK 9 only
FRAME     // JDK 8 only
FRAMESET  // JDK 8 only
H1
H2
H3
H4
H5
H6
HEAD
HEADER     // JDK 9 only
HR
HTML
I
IFRAME     // JDK 9 only
IMG
INPUT      // JDK 9 only
LI
LINK
LISTING    // JDK 9 only
MAIN       // JDK 9 only
MENU
META
NAV        // JDK 9 only
NOFRAMES   // JDK 8 only
NOSCRIPT
OL
P
PRE
SCRIPT
SECTION     // JDK 9 only
SMALL
SPAN
STRONG
SUB
SUP         // JDK 8 only
TABLE
TBODY
TD
TFOOT       // JDK 8 only
TH
THEAD       // JDK 8 only
TITLE
TR
TT
U           // JDK 8 only
UL
VAR         // JDK 8 only
于 2015-06-20T18:16:03.600 回答
20

在 Javadoc 注释中使用 HTML 并没有真正的限制。Javadoc 文档指出:

注释用 HTML 编写 - 文本必须用 HTML 编写,因为它们应该使用 HTML 实体并且可以使用 HTML 标记。您可以使用浏览器支持的任何 HTML 版本;我们已经编写了标准 doclet,以在其他地方(文档注释之外)生成符合 HTML 3.2 的代码,其中包含级联样式表和框架。(由于框架集,我们在每个生成的文件前加上“HTML 4.0”。)

允许的 HTML 标记列表在JavadocStyle Checkstyle检查中进行了硬编码(通过查看 Checkstyle 5.6 源代码进行验证)。因此,如果您想继续检查它的其他良好属性,您将不得不使用受限的 HTML 标记集。下划线问题的一种解决方法是使用 CSS(这是允许的),如下所示:

<span style="text-decoration:underline;">underlined text</span>
于 2013-05-12T21:52:28.990 回答