Javadoc中允许的HTML标记

Mar*_*ein 27 html javadoc checkstyle

Checkstyle规则JavadocStyle不允许使用标记<u>.根据文档,在Sun提供的DocCheck doclet检查后,检查结果已经过模式化.不幸的是,我没有在任何地方找到DocCheck.我也没有在Javadoc中找到任何关于允许的HTML标记的官方文档.有没有?

mer*_*nst 30

从Java 8开始,Javadoc仅允许HTML标记的子集.

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

我没有找到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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)


bar*_*uin 15

在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>
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,`<u>`元素已明确添加到Checkstyle 5.8中的硬编码标签列表中.列表仍然无法修改,但这个特殊问题已得到解决. (3认同)