Исключите автоматически генерируемые Django файлы в pre-commit-config.yaml с помощью REGEX

Поскольку автоматически сгенерированные файлы Django не удовлетворяют многочисленным требованиям pylint, моя проверка pre-commit не работает: output pylint errors

Обычно файлы выглядят следующим образом: example file

Похоже, что они автоматически располагаются в подпапке под названием "migrations": auto-generated django files in migration folder

Теперь я попытался использовать выражения pre-commit exclude expressions с помощью правильного REGEX. Этот вариант, похоже, сработал на онлайн REGEX-тестере: [\w-]+\d+[^\\]*.py

Вот доказательство: proof of working regex

Теперь, если поместить это в мой pylint pre-commit checker, то, к сожалению, ничего не получается: added exclude expression to pre-commit config YAML

Я также пытался просто исключить папку "migrations", но также не смог найти рабочего выражения. Как я могу заставить это работать?

Используйте следующее, чтобы найти и исключить все файлы, содержащие подпапку "migrations":

exclude: (migrations)

ваш regex, который вы тестировали, и regex, который вы использовали, отличаются:

# one you tested
[\w-]+\d+[^\\]*.py
# the one you tried
^[\w-]+\d+[^\\]*.py

привязка ^ к началу строки, что не то, что вы хотите (ваши файлы находятся в подкаталоге, а не в корне хранилища)

дополнительно, слеши всегда будут прямыми слешами для сопоставления файлов в pre-commit'е, поэтому вместо этого вы должны исключить (и проверить против) прямые слеши:

[\w-]+\d+[^/]*.py

незначительная ошибка заключается в том, что вы можете встретить whatever1_py из-за неэскейпированного . (возможно, это не проблема, но вот улучшение):

[\w-]+\d+[^/]*\.py

вы также используете javascript regex тестер - хотя это не имеет значения для функций, которые вы используете здесь, вы, вероятно, хотите использовать python, так как шаблоны здесь python регулярные выражения

попробуйте следующее:

exclude: '[\w-]+\d+[^/]*\.py'

Отказ от ответственности: я написал pre-commit, хотя здесь это имеет меньшее значение, поскольку это просто путаница в regex

Вернуться на верх