Docvet

io.github.Alberto-Codes由 GitHub 账号 Alberto-Codes 发布v3.0.1更新于 Oct 29, 2026

Docstring quality vetting for Python -- enrichment, freshness, coverage, and presence checks

已验证STDIO仅桌面开发者工具AI 与机器学习

概览

AI 生成的概览

Docvet 检查 Python 文档字符串质量(存在性、完整性、陈旧度、渲染与覆盖率),并通过 MCP 服务器提供给 AI 助手使用。

可以做什么
  • 对整个代码库、git diff 文件或仅暂存文件运行全部文档字符串检查
  • 检查文档字符串是否存在并给出覆盖率指标,标记缺失的文档字符串
  • 检查完整性:缺少 Raises、Returns、Yields、Attributes、Examples 以及参数不一致
  • 借助 git diff 与 blame 启发式标记可能过时的文档字符串
  • 通过 Griffe 检查 mkdocs 渲染兼容性,并找出对 mkdocs 不可见的文件
  • 为缺失的文档字符串章节生成脚手架(可先预览),并显示生效的配置
适用场景
适合在助手修改 Python 代码后需要同步维护文档字符串时使用,也适合在 CI、pre-commit 钩子或代理工作流中对文档字符串质量设卡。它给出的是结构与变更历史层面的提示,供人工复核,并不证明文字描述正确。
运行要求
作为本地进程运行,从 PyPI 安装(pip install docvet);可选的 Griffe 渲染检查需要 docvet[griffe] 附加依赖。配置写在 pyproject.toml 的 [tool.docvet] 中。未声明任何认证、环境变量或请求头。
安装前请注意
fix 命令会向源文件写入文档字符串脚手架,除非使用 dry-run 预览。列入 fail-on 的检查发现问题时会导致非零退出码;被设卡但无法运行的检查(例如未安装附加依赖时的 griffe)同样会以退出码 1 结束,除非关闭 fail-on-unavailable,这可能让原本通过的构建变红。检查结果属于启发式提示,并非正确性证明。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Docvet,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[CI] [Coverage] [PyPI] [Python] [License] [Renovate enabled] [Ruff] [docs vetted]

docvet

Better docstrings, better AI.

Why docvet?

docvet combines docstring presence metrics, structural checks, history-based staleness signals, and renderer diagnostics in one CLI, with editor and agent interfaces. These checks help reviewers find documentation gaps; they do not prove that prose describes runtime behavior correctly.

LayerCheckruffinterrogatepydoclintdocvet
1. Presence"Does a docstring exist?"Yes (D rules, opt-in)Yes, with coverage metricsSkips absent docstringsYes, with coverage metrics
2. Style"Is it formatted consistently?"Yes (D rules, opt-in)--Some parsing/style checksLimited format checks
3. Completeness"Do sections and code structure agree?"Partial (D rules; DOC rules in preview)--Arguments, returns, yields, raises, attributes, type hintsAST-based section and agreement checks
4. Accuracy"What needs review for staleness?"Structural checks above--Structural checks aboveGit diff/blame heuristics; no semantic proof
5. Rendering"Are there parser warnings?"------Griffe diagnostics
6. Visibility"Is package discovery incomplete?"------Missing __init__.py checks

Comparison reviewed 2026-10-21 against primary documentation: Ruff's D103 presence rule and DOC501 exception completeness rule (requires --preview and rule selection), pydoclint's supported checks and styles, and interrogate's coverage documentation. Capabilities depend on enabled rules and configuration; -- means no corresponding check is described in these sources.

pydoclint checks arguments, returns, yields, raises, class attributes, and type hints across Google, NumPy, and Sphinx styles. docvet's enrichment alone has 21 rules, including Raises, Yields, Receives, Warns, Attributes, Examples, cross-references, parameter agreement, and more. Add presence (coverage metrics + threshold enforcement), freshness (git diff/blame staleness signals), griffe rendering compatibility, and mkdocs coverage: 32 rules across 5 checks. Rule totals measure catalog entries, not equivalent coverage between tools.

Structural agreement checks compare documented elements with code structure. Freshness uses change history to suggest review: code can change without invalidating prose, and simultaneous code/docstring edits can still leave incorrect prose. Neither establishes semantic correctness.

Quickstart | GitHub Action | Pre-commit | Configuration | AI Agent Integration | Docs

What It Checks

Presence (existence) -- 2 rules: missing-docstring overload-has-docstring

Enrichment (completeness) -- 21 rules: 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

Freshness (staleness signals) -- 5 rules: stale-signature stale-body stale-import stale-drift stale-age

Griffe (rendering) -- 3 rules: griffe-unknown-param griffe-missing-type griffe-format-warning

Coverage (visibility) -- 1 rule: missing-init

Quickstart

bash
pip install docvet && docvet check --all

For optional griffe rendering checks:

bash
pip install docvet[griffe]

Example output:

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]

Configuration

Configure via [tool.docvet] in your pyproject.toml. All checks run and print findings. Checks listed in fail-on cause a non-zero exit code; unlisted checks are treated as warnings.

A check in fail-on that cannot run — most often griffe without the docvet[griffe] extra — never certified the gate you configured, so docvet reports it on stderr and exits 1. With --format json the run object reports status: "unavailable" and an unavailable_checks array, which is what distinguishes it from a gate that found problems. Set fail-on-unavailable = false (or pass --no-fail-on-unavailable) to warn and exit 0 instead. Unavailable checks that nothing gates on stay a quiet skip — though fail-on membership is not the only thing that gates: a min-coverage floor gates presence without naming it there.

toml
[tool.docvet]exclude = ["tests", "scripts"]fail-on = ["griffe", "coverage"]
[tool.docvet.freshness]drift-threshold = 30age-threshold = 90

Pre-commit

Add to your .pre-commit-config.yaml:

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

For griffe rendering checks, add the optional dependency:

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

GitHub Action

Add docvet to your GitHub Actions workflow — findings appear as inline annotations on your PR:

yaml
- uses: Alberto-Codes/[email protected]

Select specific checks or pin a version:

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

The griffe rendering check needs no setup: the action installs docvet[griffe], pinned or not, so every check the checks input offers is available. Note that docvet releases before 1.7.0 declare that extra without an upper bound, so pinning one installs whatever griffe publishes at the time rather than a version docvet was released against.

Behavior change — this can turn a passing build red.

Earlier releases installed plain docvet, so the griffe check was skipped and contributed zero findings. It now runs. determine_run_outcome (src/docvet/reporting.py) returns exit code 1 as soon as any check listed in fail-on reports findings, so if your pyproject.toml has griffe in [tool.docvet] fail-on, your build goes from green to failing with no change on your side. This repository's own ci.yml docvet job is exactly such a consumer.

These are not new problems — it is the check finally running on docstrings that were always broken. To get back to green, fix the griffe findings or remove griffe from fail-on.

AI Agent Integration

For tool-specific integration snippets, see the full AI Agent Integration guide.

Add docvet to your AI coding workflow. Drop this into your CLAUDE.md, .cursorrules, or agent configuration:

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

Recommended pyproject.toml configuration:

toml
[tool.docvet]fail-on = ["enrichment", "freshness", "coverage", "griffe"]

Subcommand Quick Reference

CommandDescription
docvet checkRun all enabled checks (default: git diff files)
docvet check --allRun all checks on entire codebase
docvet check --stagedRun all checks on staged files only
docvet presenceCheck for missing docstrings with coverage metrics
docvet enrichmentCheck for missing docstring sections
docvet freshnessFlag potentially stale docstrings via git
docvet freshness --mode driftReview potential staleness via git blame
docvet coverageFind files invisible to mkdocs
docvet griffeCheck mkdocs rendering compatibility
docvet fixScaffold missing docstring sections
docvet fix --dry-runPreview scaffolding changes without writing files
docvet configShow effective configuration with source annotations
docvet lspStart LSP server for real-time editor diagnostics
docvet mcpStart MCP server for AI agent integration

Better Docstrings, Better AI

AI coding agents rely on docstrings as context when generating and modifying code. Agents modify code but often leave docstrings stale, and research shows stale or incorrect documentation is actively harmful, worse than no docs at all:

As the 2025 DORA report puts it: "AI doesn't fix a team; it amplifies what's already there." The only signal correlating with AI productivity is code quality.

docvet's freshness heuristics flag potential staleness for review, and its enrichment rules check supported docstring sections against code structure. Run docvet check in your CI, pre-commit hooks, or agent toolchain.

Badge

Add a badge to your project to show your docs are vetted:

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

Used By

Are you using docvet? Open a pull request to add your project here.

License

MIT -- see LICENSE for details.

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

来源:README.md,提交 dfdd2bd

工具

0
SourceWeft 曾在隔离沙箱中以无凭据方式启动该软件包一次,以列出其工具,但未能完成:软件包安装失败。

版本历史

4
  1. v3.0.1最新Oct 22, 2026
  2. v3.0.0Oct 21, 2026
  3. v2.0.3Oct 21, 2026
  4. v1.16.0Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分