用途:为 Elixir 项目编写与改进文档,围绕 @moduledoc、@doc、@typedoc、doctest、交叉引用和元数据给出规范与示例。
主要能力:
- 首行摘要规则:ExDoc 与 mix docs 会抽取首段作摘要,首行需简洁、可独立成立。
- @moduledoc 结构:首段摘要,## Examples 展示真实用法(可运行则用 doctest),## Configuration 说明必需配置,仅用二级标题 ##。
- 行为模块:用 ## Callbacks 列出 @callback 期望。
- @doc 结构:说明功能与返回值;接受关键字列表时用 ## Options 逐项说明;@spec 置于 @doc 与 def 之间。
- @typedoc:文档化 @type 与 @opaque,尤其 @opaque 调用方无法检查结构时更重要。
- 元数据:@doc since:、@doc deprecated:,可合并为一个属性。
- 何时用 false:非公开 API 的私有实现模块、协议实现、回调实现、内部辅助函数用 @moduledoc false 或 @doc false;真正公开的导出函数不应 @doc false,应改为 defp。
- 文档与代码注释区分:文档面向 API 使用者说明契约与返回值;# 注释面向读源码者解释实现选择。
- 完成检查(门禁):修改 doctest 后运行项目 doctest 验证(通常 mix test);改动交叉引用、反引号或 m: 链接后运行 mix docs,解决 ExDoc 关于缺失模块、回调或坏链接的警告;新增或改动公开 API 后,确认每个导出 def/defmacro 都有意加的 @doc 或 @doc false,每个公开模块都有 @moduledoc 或 @moduledoc false。
使用方式:按主题查阅随附参考文件——doctest 语法与陷阱看 references/doctests.md;模块、函数、类型间链接语法看 references/cross-references.md;提示块、制表符与格式看 references/admonitions-and-formatting.md。仅在需要写 doctest、调试 doctest 失败、添加链接或使用提示块与标签页时加载对应参考。
限制:纯函数适合写 doctest,有副作用的函数应跳过;一级标题 # 在 ExDoc 输出中保留给模块名,正文只用 ##。价格、平台支持等资料未提供。