2013-05-10 134 views
21

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

回答

14

在Javadoc评论中使用HTML没有实际限制。 Javadoc documentation指出:

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

JavadocStyle Checkstyle检查硬编码允许HTML标签的列表(通过查看Checkstyle的5.6源验证)。所以如果你想保留其它好的属性的检查,你将不得不忍受限制的一组HTML标签。对于下划线问题的一个解决方法是使用CSS(这是允许的)这样的:只有

<span style="text-decoration:underline;">underlined text</span> 
+2

仅供参考,''元素已明确添加到Checkstyle 5.8中的硬编码标签列表中。该列表仍然无法修改,但是这个特定问题已解决。 – 2015-02-12 17:04:17

20

的Javadoc允许HTML标签的子集,因为Java 8的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 

更新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