You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pre-commit顶层exclude配置不生效?mypy仍检测排除文件夹

问题分析:pre-commit顶层exclude无法屏蔽mypy对指定文件夹的检查

核心原因

  • pre-commit顶层exclude的作用局限:它仅负责控制pre-commit是否将排除路径下的文件传递给钩子,但mypy会依据自身配置(比如mypy.ini中的mypy_path)主动扫描整个src目录,不受pre-commit文件传递逻辑的约束。
  • mypy钩子的全量扫描特性:mypy钩子默认执行全量代码检查,而非仅处理pre-commit传入的文件。哪怕pre-commit过滤了目标文件夹,mypy仍会按照自身规则扫描该路径。

解决方案

方案1:在mypy钩子中单独配置exclude

直接在pre-commit的mypy钩子项里添加exclude参数,精准屏蔽目标文件夹:

- repo: https://github.com/pre-commit/mirrors-mypy
  rev: v0.991
  hooks:
    - id: mypy
      args: [--strict]
      exclude: "src/project/proto/"
      additional_dependencies:
        [types-protobuf>=4.21.0.0, types-termcolor>=1.1.6, pytest>=7.2.0]

方案2:在mypy.ini中添加排除规则

修改mypy.ini,让mypy自身忽略目标文件夹:

[mypy]
python_version = 3.8
mypy_path = ./src:./tests
exclude = src/project/proto/

[mypy-lark.*]
ignore_missing_imports = True

方案3:强制mypy仅检查传入的文件

通过参数限制mypy只处理pre-commit传递的文件,此方案可能影响导入检查,按需选择:

- repo: https://github.com/pre-commit/mirrors-mypy
  rev: v0.991
  hooks:
    - id: mypy
      args: [--strict, --follow-imports=skip]
      additional_dependencies:
        [types-protobuf>=4.21.0.0, types-termcolor>=1.1.6, pytest>=7.2.0]

内容的提问来源于stack exchange,提问作者WZH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:35:23