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

person Tatiana    schedule 12.01.2021    source источник
comment
1) Хук предварительной фиксации в каком контексте? 2) Что такое pre-commit.com?   -  person Peter Mortensen    schedule 12.01.2021
comment
Должен быть тег pre-commit.com? Это не название инструмента (похоже, это pre-commit (хотя и слишком общее название)).   -  person Peter Mortensen    schedule 12.01.2021
comment
@PeterMortensen да, пожалуйста, не меняйте теги и не редактируйте мои ответы снова, спасибо   -  person Anthony Sottile    schedule 12.01.2021


Ответы (1)


pre-commit передает имена файлов в качестве позиционных аргументов хукам

это означает, что он вызывает pylint как:

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

когда вы вызываете pylint таким образом, он явно создает ошибки lint для любых файлов в командной строке. параметр ignore используется только для режима рекурсии pylint

предлагаемое исправление - исключить эти файлы из 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

отказ от ответственности: я являюсь автором предварительной фиксации

person Anthony Sottile    schedule 12.01.2021
comment
Спасибо за ответ! Это действительно имеет смысл и должно работать. Но у меня все еще та же проблема, может мне стоит взглянуть на что-нибудь еще. - person Tatiana; 15.01.2021
comment
это не работает - вы можете показать какой-нибудь результат? мое первое предположение заключается в том, что у вас нет папки миграции, а вместо этого something/migrations (и поэтому шаблон регулярного выражения, который я использовал в моем примере, не будет совпадать) - person Anthony Sottile; 15.01.2021
comment
Да, у меня проблема с регулярным выражением. Теперь все нормально, спасибо! - person Tatiana; 19.01.2021