2013-05-10 60 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