Python类型覆盖率分析器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/python-type-coverage-analyzer。
技能介绍
解决什么问题
Python 的类型注解是渐进式的:大型代码库中,mypy、pyright 这类静态检查器只检查已标注的部分,而 Any 会被静默放行。结果就是覆盖率无从量化:哪些函数签名没有参数类型?哪些返回类型缺失?哪些参数被 Any 吞掉了类型信息?手写脚本统计注解既容易漏报,也无法区分「故意用 Any 绕过」和「忘记标注」这两种情况。
工作原理
这个技能把覆盖率度量交给静态检查器本身,而不是用正则或 AST 猜测:
- 基于
mypy --html-report:从 mypy 生成的 HTML 报告中提取类型检查结果,汇总未类型化的函数签名、缺失的返回类型和Any类型参数。 - 结合
pyright类型完整性评分:用 pyright 的 type completeness 打分作为交叉参照,两份报告互补,避免单一工具的盲区。 - 定位到具体位置:报告指出问题函数与参数所在的文件和行号,而不是只给一个笼统的百分比。
- 迭代式改进:按报告逐项补齐注解后重新运行,覆盖率变化可直接对照。
适用边界与注意点
- 代码库需要能被 mypy 或 pyright 正常解析;运行时动态拼装的模块可能被跳过。
Any不一定是错的,有时是合理的逃生舱,需要人工判断后再处理。- mypy 是静态检查器,它能发现 bug,但类型覆盖率提升不等于运行时正确性有保证。
- 首次使用前,代码库应已有基础的 mypy 配置,否则报告结果可能不完整。
使用场景
- 接手一个旧 Python 项目,想统计哪些函数缺少参数和返回值类型注解,评估全库覆盖情况。
- CI 流水线接入类型检查后,需要快速定位本次改动中新增的 Any 类型参数和未标注函数签名。
- 准备把项目从动态类型迁移到静态类型,先跑一次报告摸清未类型化函数的分布与规模。
- 重构大型代码库之后,用 mypy 与 pyright 两份报告交叉核对类型完整性,确认没有遗漏返回类型。
适合人员
- 后端工程师,正在为存量 Python 服务补全类型注解,需要快速定位未标注的函数签名和返回类型。
- 工具链工程师,负责在 CI 中推广静态类型检查,需要定期输出类型覆盖率变化和 Any 类型清单。
- 技术负责人,计划在团队内推行类型安全,想先摸清现有代码库的类型注解缺失分布再定迁移策略。