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

直接执行pre-commit与通过Makefile/脚本执行结果不一致问题

问题:pre-commit 通过 Makefile/脚本执行时误报Passed

直接在命令行执行pre-commit钩子检查时能正确检测出问题(返回Failed),但通过Makefile或bash脚本执行相同命令时,所有钩子(如mypy、ruff、black)都误报Passed,该问题同样出现在Bitbucket流水线中。

现象对比

  • 直接执行命令:pre-commit run mypy --files ./pyworker_v2/**/*,结果正确显示Failed
  • 通过Makefile或bash脚本执行上述命令,结果错误显示Passed

相关配置与执行输出

Makefile 配置

SOURCE_DIR=./some_codebase/**/*

check-mypy:
    pre-commit run mypy --files $(SOURCE_DIR)

Makefile执行输出

$ make check-mypy
pre-commit run mypy --files ./pyworker_v2/**/*
mypy.....................................................................Passed

直接命令行执行输出

$ pre-commit run mypy --files ./pyworker_v2/**/*
mypy.....................................................................Failed
- hook id: mypy
- exit code: 1

.pre-commit-config.yaml 配置

minimum_pre_commit_version: 3.3.3

repos:
  - repo: local
    hooks:
      - id: mypy
        name: mypy
        entry: mypy --config-file ./pyproject.toml --enable-incomplete-feature=Unpack --install-types --non-interactive
        language: system
        types: [python]

测试用bash脚本

#!/bin/bash

pre-commit run mypy --files ./pyworker_v2/**/*

已尝试的无效操作

  • 使用绝对路径替代相对路径执行命令,问题未解决
  • 测试不存在的目录路径,pre-commit能正确检测并返回失败,说明路径解析逻辑正常
  • 查阅并清理git hook缓存、pre-commit缓存,未找到问题根源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:25:18