5

我想为团队添加以下内容以预先提交:

-   repo: https://github.com/pre-commit/mirrors-mypy
    rev: 'v0.720'
    hooks:
    -   id: mypy
        args: [--ignore-missing-imports]

我的团队担心这可能过于严格。为了逐步介绍,我希望这个钩子不会使提交失败,而只是显示问题。那可能吗?

4

2 回答 2

24

你可以,但我不建议这样做——警告噪音可能会让你的整个团队忽略整个输出和整个工具

以下是你将如何做这样的事情(请注意,它降低了可移植性,bash主要是因为框架故意不建议这样做)

-   repo: https://github.com/pre-commit/mirrors-mypy
    rev: v0.720
    hooks:
    -   id: mypy
        verbose: true
        entry: bash -c 'mypy "$@" || true' --

两件作品使这项工作:

  1. verbose: true总是产生输出——这个选项实际上只用于调试目的,但你可以总是打开它(虽然它可能很吵/烦人)
  2. bash+ || true-- 忽略退出代码

免责声明:我是 pre-commit 的作者

于 2020-01-15T05:29:43.543 回答
2

另请注意,您可以通过设置环境变量暂时禁用挂钩SKIP。例如:

SKIP=flake8 git commit -m 'fix thing - work in progress'

当您只想进行稍后修复的本地“检查点”提交时,这尤其有用。

特别是关于 mypy的旁注:以这样的非阻塞方式使用 mypy 可能存在很大的问题。如果您允许合并具有类型错误的提交,其他人将开始在他们的预提交检查中看到这些类型错误。

当开发人员进行进一步的更改时,令人困惑的是出现的 mypy 错误是以前出现的,还是由于它们的进一步更改。这可能会导致沮丧/困惑,也可能会导致进一步的类型错误累积。

我认为关于在现有代码库中使用 mypy的 mypy 指南是非常好的建议。

如果您只需要暂时跳过 mypy 检查以便检查您的工作,推送 PR 以进行初步审查,或者其他任何事情,您可以SKIP=mypy按照上面提到的那样做。

于 2021-05-13T02:55:48.920 回答