Pylint 不会忽略迁移

问题描述

我使用 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

解决方法

预提交 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 的作者

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...