跳到主要内容

unintended_html_in_doc_comment

稳定
核心

在文档注释中使用尖括号会被 Markdown 视为 HTML。

详情

#

不要在文档注释中使用带尖括号的文本,例如 <…>,除非你想编写 HTML 标签或链接。

Markdown 允许将 HTML 标签作为 Markdown 代码的一部分,因此你可以编写例如 T<sub>1</sub>。Markdown 不限制允许的标签,它只是将标签原样包含在输出中。

Dartdoc 只允许一些已知且有效的 HTML 标签,并且会忽略输出中任何不允许的 HTML 标签。请参阅下面的允许标签和指令列表。你的文档注释不应包含此列表之外的任何 HTML 标签。

Markdown 还允许你编写指向 URL 的“自动链接”,例如 <https://example.com/page.html>,仅由 <...> 分隔。Dartdoc 也允许此类链接。如果由 <...> 分隔的文本是有效的绝对 URL,以至少两个字符的方案后跟冒号开头,例如 <mailto:mr_example@example.com>,则它是一个自动链接。

任何其他出现 <word...></word...> 的情况都可能是错误,并且此 lint 会对此发出警告。如果某些内容看起来像 HTML 标签,即以 <</ 后跟一个字母开头,并且后面有匹配的 >,则除非它是自动链接或以允许的 HTML 标签开头,否则会被视为无效 HTML 标签。

此类错误可能会发生,例如在代码块之外编写带有类型参数的 Dart 代码时,例如 The type List<int> is ...,其中 <int> 看起来像一个 HTML 标签。缺少代码块的结束引号也会产生同样的效果:The type `List<int> is ... 也会将 <int> 视为一个 HTML 标签。

允许以下 HTML 指令:HTML 注释,<!-- text -->;处理指令,<?...?>;CDATA 节,以及 <[CDATA...]>。允许 DartDoc 链接,例如 [List<int>],这些链接不在 ] 之后或 [( 之前,并允许以下可识别的 HTML 标签:a, abbr, address, area, article, aside, audio, b, bdi, bdo, blockquote, br, button, canvas, caption, cite, code, col, colgroup, data, datalist, dd, del, dfn, div, dl, dt, em, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hr, i, iframe, img, input, ins, kbd, keygen, label, legend, li, link, main, map, mark, meta, meter, nav, noscript, object, ol, optgroup, option, output, p, param, pre, progress, q, s, samp, script, section, select, small, source, span, strong, style, sub, sup, table, tbody, td, template, textarea, tfoot, th, thead, time, title, tr, track, u, ul, var, video and wbr

错误示例 (BAD)

dart
/// The type List<int>.
/// <assignment> -> <variable> = <expression>

正确示例 (GOOD)

dart
/// The type `List<int>`.
/// The type [List<int>]
/// `<assignment> -> <variable> = <expression>`
/// \<assignment\> -> \<variable\> = \<expression\>`
/// <https://example.com/example>

启用

#

要启用 unintended_html_in_doc_comment 规则,请在你的 analysis_options.yaml 文件中的 linter > rules 下添加 unintended_html_in_doc_comment

analysis_options.yaml
yaml
linter:
  rules:
    - unintended_html_in_doc_comment

如果你使用的是 YAML map 语法来配置 linter 规则,请在 linter > rules 下添加 unintended_html_in_doc_comment: true

analysis_options.yaml
yaml
linter:
  rules:
    unintended_html_in_doc_comment: true