SuperAPI AI 工具集

dart-doc-validation

编程与开发

查看项目

更新于 10-15 18:06

技能介绍

用途

本技能用于校验 Dart 代码中的文档注释(///),帮助发现文档中的失效引用、未解析链接和未定义宏,适合在编写或更新文档注释、检查文档链接与宏、以及准备将包发布到 pub.dev 时使用。

主要能力

  • 发现文档问题:检查 analysis_options.yaml 中是否启用了 comment_references lint;运行文档生成器以暴露警告。
  • 自动化校验:运行 dart doc -o $(mktemp -d),关注输出中的 warning:、unresolved doc reference、undefined macro 等关键词。
  • 本地校验文档:使用带临时输出目录的 dart doc 命令,在不污染项目工作区的情况下解析所有文档注释并报告警告。
  • 浏览生成的文档:文档功能设计为在 Web 服务器上运行,如需本地浏览,可安装 dhttpd 包。
  • 修复常见警告:针对未解析的文档引用和未定义的宏给出处理方向。

使用方式

启用文档校验 lint:在 analysis_options.yaml 中启用 comment_references 规则:

linter:
  rules:
    - comment_references

本地校验文档:使用临时输出目录运行:

dart doc -o $(mktemp -d)

该命令会解析所有文档注释并报告如下警告:

warning: unresolved doc reference
warning: undefined macro

此方式适用于 Mac 和 Linux,生成的 HTML 文件存放在临时位置,不会弄乱包目录,同时仍会在终端输出中暴露所有校验警告。

浏览文档:文档使用为在 Web 服务器上运行而设计的功能。如需在本地浏览生成的文档,安装 dhttpd 包:

dart install dhttpd
TMP_DIR=$(mktemp -d) && dart doc -o "$TMP_DIR" &&  dhttpd --path "$TMP_DIR"

(或使用其他 HTTP 服务器,例如 python3 -m http.server。)

修复常见警告:

  • 未解析的文档引用:确保方括号包裹的标识符([Identifier])正确指向当前作用域或已导入库中存在的类、方法、属性或参数。
  • 未定义的宏:如果使用 {@macro macro_name},确保模板 {@template macro_name} 定义在同一文件或已导入且对文档生成器可见的文件中。

适用场景

  • 在 Dart 代码中编写或更新文档注释(///)。
  • 检查失效的文档链接、引用或宏。
  • 为发布到 pub.dev 准备包。

限制与不应使用的场景(Abstention Guardrails)

在以下情况不要应用本技能或重构文档注释:

  • 说明性伪代码与非 Dart 代码围栏:注释包含伪代码、非 Dart 语言标识符(例如 yaml、json、bash、text),或有意设计为无法作为有效 Dart 编译的抽象概念片段。
  • 生成代码:由工具生成的文件(例如 .g.dart、.mocks.dart、*.freezed.dart),其中注释是合成生成的。
  • 外部 Markdown 超链接:方括号文本后跟链接目标(例如 External Guide),这是标准 Markdown 超链接语法,而非未解析的 Dart 文档引用。