mcpField
D
docvet

docvet

本地服务
github.com/Alberto-Codes开发工具106 天前更新

关于 docvet

docvet 是用于 Python 项目的命令行文档字符串检查工具,面向开发者和代码审查流程。它结合结构完整性、Git 历史新鲜度、渲染诊断与覆盖率检查;新鲜度提示不代表语义正确性证明。

主要功能

  1. 01检查文档字符串存在性与覆盖率
  2. 02按代码结构核对文档章节
  3. 03利用 Git 历史提示潜在过时内容
  4. 04检查 Griffe 渲染诊断
  5. 05发现缺少 `__init__.py` 的目录

适用场景

  1. 01在 CI 中检查 Python 文档质量
  2. 02在提交前发现缺失的文档章节
  3. 03审查代码变更后可能过时的说明
  4. 04用 LSP 或 MCP 将检查接入编辑器和 Agent

MCP 相关

docvet 可通过 `docvet mcp` 启动 MCP 服务,为 AI Agent 集成提供文档字符串检查能力。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"alberto-codes-docvet": {
"command": "uvx",
"args": [
"docvet"
]
}
}
}
启动命令uvx docvet

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypidocvet3.0.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

CI Coverage PyPI Python License Renovate enabled Ruff docs vetted

docvet

更好的文档字符串,更好的 AI。

为什么选择 docvet?

docvet 将文档字符串存在性指标、结构检查、基于历史记录的过时信号和渲染器诊断整合到一个 CLI 中,并提供编辑器和 Agent 接口。这些检查有助于审阅者发现文档缺漏;但无法证明文档内容正确描述了运行时行为。

层级检查项ruffinterrogatepydoclintdocvet
1. 存在性“是否存在文档字符串?”是(D 规则,需选择启用)是,带覆盖率指标跳过缺失的文档字符串是,带覆盖率指标
2. 风格“格式是否一致?”是(D 规则,需选择启用)--部分解析/风格检查有限的格式检查
3. 完整性“各个章节是否与代码结构一致?”部分支持(D 规则;预览中的 DOC 规则)--参数、返回值、生成值、引发的异常、属性、类型提示基于 AST 的章节与一致性检查
4. 准确性“哪些内容因过时而需要审阅?”上述结构检查--上述结构检查Git diff/blame 启发式检查;不提供语义证明
5. 渲染“是否存在解析器警告?”------Griffe 诊断
6. 可见性“软件包发现是否不完整?”------缺失 __init__.py 检查

对比信息于 2026-10-21 根据主要文档进行审阅:Ruff 的 D103 存在性规则 和 DOC501 异常完整性规则(需使用 --preview 并选择规则)、pydoclint 支持的检查项与风格以及 interrogate 的覆盖率文档。具体能力取决于启用的规则和配置;-- 表示这些来源未描述相应检查。

pydoclint 支持 Google、NumPy 和 Sphinx 风格,检查参数、返回值、生成值、引发的异常、类属性和类型提示。仅 docvet 的扩展功能就包含 21 条规则,包括 Raises、Yields、Receives、Warns、Attributes、Examples、交叉引用、参数一致性等。再加上存在性(覆盖率指标 + 阈值执行)、新鲜度(基于 git diff/blame 的过时信号)、griffe 渲染兼容性和 mkdocs 覆盖率:共计 5 类检查、32 条规则。规则总数统计的是目录中的条目,并不表示不同工具之间的覆盖能力等同。

结构一致性检查会比较文档中描述的元素与代码结构。新鲜度检查利用更改历史提示哪些内容需要审阅:代码变更不一定会导致文档内容失效,而代码和文档字符串同时修改后,文档内容仍可能不准确。这两类检查都无法确立语义上的正确性。

快速入门 | GitHub Action | Pre-commit | 配置 | AI Agent 集成 | 文档

检查内容

存在性(是否存在)——2 条规则: missing-docstring overload-has-docstring

完善度(完整性)——21 条规则: missing-raises missing-returns missing-yields missing-receives missing-warns missing-deprecation missing-param-in-docstring extra-param-in-docstring missing-other-parameters missing-attributes undocumented-init-params missing-typed-attributes missing-examples missing-cross-references extra-raises-in-docstring extra-yields-in-docstring extra-returns-in-docstring missing-return-type trivial-docstring prefer-fenced-code-blocks scaffold-incomplete

新鲜度(过时信号)——5 条规则: stale-signature stale-body stale-import stale-drift stale-age

Griffe(渲染)——3 条规则: griffe-unknown-param griffe-missing-type griffe-format-warning

覆盖率(可见性)——1 条规则: missing-init

快速开始

pip install docvet && docvet check --all

如需启用可选的 Griffe 渲染检查:

pip install docvet[griffe]

示例输出:

src/mypackage/helpers.py:1: missing-docstring Module has no docstring [required]
src/mypackage/utils.py:42: missing-raises Function 'parse_config' raises ValueError but has no Raises section [required]
src/mypackage/models.py:15: stale-signature Function 'process' signature changed but docstring not updated [required]
src/mypackage/api.py:1: missing-init Package directory missing __init__.py (invisible to mkdocs) [required]

配置

在 pyproject.toml 中通过 [tool.docvet] 进行配置。所有检查都会运行并输出检查结果。列在 fail-on 中的检查会导致退出代码非零;未列出的检查则作为警告处理。

如果 fail-on 中的某项检查无法运行——最常见的情况是未安装 docvet[griffe],导致无法运行 griffe——那么你配置的门禁就从未得到验证,因此 docvet 会在 stderr 中报告该问题并以代码 1 退出。使用 --format json 时,run 对象会将 status 报告为 "unavailable",并包含一个 unavailable_checks 数组,这可以将其与发现问题的门禁区分开来。设置 fail-on-unavailable = false(或传入 --no-fail-on-unavailable)即可改为发出警告并以代码 0 退出。没有任何门禁关注的不可用检查会被静默跳过——不过,决定门禁的条件不止 fail-on 中是否包含该检查:min-coverage 下限也会对 presence 设立门禁,即使没有在其中列出。

[tool.docvet]
exclude = ["tests", "scripts"]
fail-on = ["griffe", "coverage"]

[tool.docvet.freshness]
drift-threshold = 30
age-threshold = 90

Pre-commit

将以下内容添加到你的 .pre-commit-config.yaml:

repos:
  - repo: https://github.com/Alberto-Codes/docvet
    rev: v3.0.0
    hooks:
      - id: docvet

如需进行 Griffe 渲染检查,请添加可选依赖:

repos:
  - repo: https://github.com/Alberto-Codes/docvet
    rev: v3.0.0
    hooks:
      - id: docvet
        additional_dependencies: [griffe]

GitHub Action

将 docvet 添加到你的 GitHub Actions 工作流中——检查结果会以行内注释的形式显示在 PR 上:

- uses: Alberto-Codes/[email protected]

选择特定检查或固定版本:

- uses: Alberto-Codes/[email protected]
  with:
    checks: 'enrichment,freshness'
    docvet-version: '3.0.0'
    python-version: '3.13'

Griffe 渲染检查无需额外设置:无论是否固定版本,该 Action 都会安装 docvet[griffe],因此 checks 输入中提供的所有检查都可用。请注意,1.7.0 之前的 docvet 版本声明该额外依赖时没有设置上限,因此固定这些版本会安装 Griffe 当时发布的任意版本,而不一定是 docvet 发布时所针对的版本。

行为变更——这可能会让原本通过的构建变红。

早期版本安装的是普通的 docvet,因此会跳过 Griffe 检查,也不会产生任何检查结果。现在,该检查会运行。只要 fail-on 中列出的任意检查发现问题,determine_run_outcome(src/docvet/reporting.py)就会返回退出代码 1。因此,如果你的 pyproject.toml 在 [tool.docvet] fail-on 中包含 griffe,那么即使你没有做任何改动,构建也会从绿色变为失败。本仓库自己的 ci.yml 中的 docvet 作业就是这样的使用场景。

这些并不是新问题——只是终于对原本就有问题的文档字符串运行了检查。要让构建恢复通过,请修复 Griffe 检查结果,或从 fail-on 中移除 griffe。

AI Agent 集成

如需查看特定工具的集成代码片段,请参阅完整的 AI Agent 集成指南。

将 docvet 添加到你的 AI 编码工作流中。将以下内容放入 CLAUDE.md、.cursorrules 或 Agent 配置文件:

## Docstring Quality

After modifying Python functions, classes, or modules, run `docvet check` and fix all findings before committing.

推荐的 pyproject.toml 配置:

[tool.docvet]
fail-on = ["enrichment", "freshness", "coverage", "griffe"]
子命令速查
命令描述
docvet check运行所有已启用的检查(默认检查 git diff 中的文件)
docvet check --all对整个代码库运行所有检查
docvet check --staged仅对已暂存的文件运行所有检查
docvet presence检查是否缺少文档字符串,并提供覆盖率指标
docvet enrichment检查是否缺少文档字符串章节
docvet freshness通过 git 标记可能过时的文档字符串
docvet freshness --mode drift通过 git blame 审查可能过时的内容
docvet coverage查找 mkdocs 无法发现的文件
docvet griffe检查与 mkdocs 的渲染兼容性
docvet fix为缺少的文档字符串章节生成模板
docvet fix --dry-run预览模板变更,但不写入文件
docvet config显示带有来源注释的生效配置
docvet lsp启动 LSP 服务,为编辑器提供实时诊断
docvet mcp启动 MCP 服务,供 AI Agent 集成

更好的文档字符串,更好的 AI

AI 编码 Agent 在生成和修改代码时会依赖文档字符串作为上下文。Agent 会修改代码,但往往会让文档字符串过时;研究表明,过时或不准确的文档会造成实际危害,甚至比没有文档更糟:

正如 2025 年 DORA 报告所言:“AI 不会修复一个团队;它只会放大团队已有的特质。”唯一与 AI 生产力相关的信号是代码质量。

docvet 的 freshness 启发式规则会标记可能过时的内容以供审查,其 enrichment 规则则会根据代码结构检查受支持的文档字符串章节。在 CI、pre-commit 钩子或 Agent 工具链中运行 docvet check。

徽章

为项目添加徽章,表明文档已通过检查:

[![docs vetted | docvet](https://img.shields.io/badge/docs%20vetted-docvet-purple)](https://github.com/Alberto-Codes/docvet)

使用者

你是否在使用 docvet?欢迎提交拉取请求,将你的项目添加到此处。

许可证

MIT —— 详情请参阅 LICENSE。

mcp-name: io.github.Alberto-Codes/docvet

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。