【问题标题】:Pylint does not ignore migrationsPylint 不会忽略迁移
【发布时间】:2021-01-12 11:19:45
【问题描述】:

我使用 Pylint 并通过预提交挂钩运行它。它不会忽略我的迁移文件夹。我应该在配置中添加什么?

repos:
  - repo: https://github.com/PyCQA/pylint
    rev: pylint-2.5.2
    hooks:
      - id: pylint
        name: pylint
        entry: pylint
        language: system
        types: [python]
        args:
        - --rcfile=./backend/.pylintrc
        - --load-plugins=pylint_django

还有文件.pylintrc

[MASTER]
init-hook='import sys; sys.path.append("./backend")'
max-line-length=120
disable=
    missing-module-docstring,
    missing-function-docstring,
    missing-class-docstring,
    too-few-public-methods,
    no-self-use,
    fixme,
ignore=migrations

【问题讨论】:

  • 1) 什么情况下的预提交挂钩? 2) 什么是 pre-commit.com?
  • 标签应该是pre-commit.com吗?它不是工具的名称(它似乎是 "pre-commit"(尽管名称过于笼统)。
  • @PeterMortensen 是的,请不要重新标记,也请不要再次编辑我的答案,谢谢

标签: python django pylint django-migrations pre-commit.com


【解决方案1】:

预先提交 passes filenames as positional arguments 到钩子

这意味着它将 pylint 称为:

pylint path/to/filename.py path/to/migrations/filename.py ...

当你像这样调用 pylint 时,它会显式地为命令行上的任何文件产生 lint 错误。 ignore 设置仅用于 pylint 的递归模式

建议的修复方法是在您的预提交配置中 exclude 来自 pylint 的那些文件

还要注意您的配置还有另一个问题:

  • 您正在使用基于存储库的配置,但随后使用 language: system 挂钩覆盖该设置,因此您将完全放弃存储库配置

把这些放在一起:

repos:
  - repo: local
    hooks:
      - id: pylint
        name: pylint
        entry: pylint
        language: system
        types: [python]
        exclude: ^migrations/
        args:
        - --rcfile=./backend/.pylintrc
        - --load-plugins=pylint_django

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

【讨论】:

  • 感谢您的回答!这真的很有意义,应该可以工作。但是我还是有同样的问题,也许我应该看看别的东西。
  • “它不起作用”——你能显示一些输出吗?我的第一个猜测是您没有迁移文件夹,而是something/migrations(因此我在示例中使用的正则表达式模式不匹配)
  • 是的,我遇到了正则表达式的问题。现在好了,谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-10-17
  • 2021-05-27
  • 1970-01-01
  • 2016-12-28
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多