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

如何修改pre-commit的entry配置将匹配文件参数传给指定目录的flake8

问题1:当前配置是否默认传递匹配文件

当前配置没有实现自动传递pre-commit匹配到的文件,你现在写的entry: bash -c "cd src && flake8"没有接收pre-commit传入的文件参数,每次执行都会全量扫描src目录下的所有Python文件,这就是扫描耗时久的核心原因。

问题2:entry配置调整方案

你可以通过Bash的参数前缀替换功能,把pre-commit传入的、相对仓库根目录的文件路径,转换为相对src目录的路径再传给flake8,调整后的配置如下:

- repo: local
  hooks:
    - id: flake8
      name: flake8 src package
      alias: flake8-src
      files: ^src/
      types: [python]
      language: system
      entry: bash -c 'cd src && flake8 "${@#src/}"' --

配置说明

  • 末尾的--作用是将pre-commit传递给hook的所有文件参数,完整传入bash -c对应的脚本中,赋值给脚本的$@变量
  • ${@#src/}是Bash的参数替换语法,会把每个传入的路径参数开头的src/前缀删除,刚好匹配cd src之后的相对路径
  • 原有files: ^src/的配置保留即可,能保证pre-commit只会传入src目录下的文件,路径前缀替换逻辑不会出错

调整后flake8只会扫描本次pre-commit匹配到的变更文件,不会全量扫描整个src目录,执行效率会大幅提升。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:09:05