gpt4 book ai didi

python - Pylint 使用 git-pylint-commit-hook 忽略文件

转载 作者:行者123 更新时间:2023-12-03 16:42:17 31 4
gpt4 key购买 nike

我正在使用 pylint 1.6.4git-pylint-commit-hook 2.1.1在预提交时对我的文件进行 lint。我也用 alembic为了生成我的迁移,它们存储在 <project-root>/migrations/versions .

问题是生成的迁移无效,pylint 会为它们生成警告。我可以使用 --ignore=migrations 忽略迁移。 (无论如何,Pylint 默认都会忽略它们,因为迁移不是 python 模块,它只是一个目录)。但是 git-pylint-commit-hook 调用 pylint 并列出已更改的文件以进行验证。如果你给它一个文件名列表,而不是模块,pylint 不会检查文件是否应该被忽略。

当有新的迁移要提交时,这会导致预提交 Hook 失败。

Running pylint on migrations/versions/d1f0e08ea6d2_skill_table.py (file 2/13).. 8.6/10.00   FAILED
************* Module d1f0e08ea6d2_skill_table.py
C: 5, 0: Trailing whitespace (trailing-whitespace)
C: 1, 0: Invalid module name "d1f0e08ea6d2_skill_table" (invalid-name)
C: 16, 0: Import "from alembic import op" should be placed at the top of the module (wrong-import-position)
C: 17, 0: Import "import sqlalchemy as sa" should be placed at the top of the module (wrong-import-position)
C: 20, 0: Missing function docstring (missing-docstring)
C:171, 0: Missing function docstring (missing-docstring)

我尝试添加 #pylint: skip-file到每个迁移文件的开头。这会跳过文件,但会生成文件被跳过的错误:
Running pylint on migrations/versions/d1f0e08ea6d2_skill_table.py (file 2/13).. 0/10.00 FAILED
************* Module d1f0e08ea6d2_skill_table.py
I: 1, 0: Ignoring entire file (file-ignored)

所以我试图忽略错误 file-ignored在 .pylintrc 中像这样:
[messages control]
disable=unused-argument

它可以工作并且不再报告错误但预提交 Hook 失败,因为它没有找到任何语句:
Running pylint on migrations/versions/d1f0e08ea6d2_skill_table.py (file 2/13).. 0/10.00 FAILED

Report
======
0 statements analysed.

请注意,在这两种情况下,pylint 都将文件评估为 0.0/10.0,因此设置较低的失败阈值不是解决方案。

问题是,如何让 git-pylint-commit-hook 和 pylint 忽略我的迁移?

最佳答案

这是一个老问题,但我自己也遇到过这个问题。我在搜索 this 时找到了答案线。

要解决此问题,只需添加 exclude带有与您的文件夹匹配的正则表达式的指令。

例如,如果要排除迁移文件夹,只需添加:
exclude: ^tests/
到您的 Pylint 设置。我的看起来像这样:

-   repo: local
hooks:
- id: system
name: PyLint
entry: poetry run pylint
language: system
exclude: ^alembic/
files: \.py$

关于python - Pylint 使用 git-pylint-commit-hook 忽略文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39074384/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com