Несколько готовых хуков для предварительной фиксации.
См. также: https://github.com/pre-commit/pre-commit.
Добавьте это в свой .pre-commit-config.yaml
- репозиторий: https://github.com/pre-commit/pre-commit-hooksrev: v5.0.0 # Используйте ссылку, по которой вы хотите указать крючки: - id: конечный пробел# - id: ...
check-added-large-files
Предотвратите фиксацию гигантских файлов.
Укажите, что является «слишком большим» с помощью args: ['--maxkb=123']
(по умолчанию = 500 КБ).
Ограничивает проверенные файлы теми, которые указаны как подготовленные для добавления git.
Если установлен git-lfs
, файлы lfs будут пропущены (требуется git-lfs>=2.2.1
)
--enforce-all
— проверить все перечисленные файлы, а не только те, которые подготовлены для добавления.
check-ast
Просто проверьте, анализируются ли файлы как действительные Python.
check-builtin-literals
Требовать литеральный синтаксис при инициализации пустых или нулевых встроенных типов Python.
Позволяет вызывать конструкторы с позиционными аргументами (например, list('abc')
).
Позволяет вызывать конструкторы из пространства имен builtins
( __builtin__
) ( builtins.list()
).
Игнорируйте это требование для определенных встроенных типов с помощью --ignore=type1,type2,…
.
Запретите синтаксис ключевого слова dict
с помощью --no-allow-dict-kwargs
.
check-case-conflict
Проверьте наличие файлов с именами, которые будут конфликтовать в файловой системе без учета регистра, например MacOS HFS+ или Windows FAT.
check-docstring-first
Проверяет распространенную ошибку размещения кода перед строкой документации.
check-executables-have-shebangs
Проверяет, что недвоичные исполняемые файлы имеют правильный shebang.
check-illegal-windows-names
Проверьте наличие файлов, которые невозможно создать в Windows.
check-json
Пытается загрузить все файлы JSON для проверки синтаксиса.
check-merge-conflict
Проверьте наличие файлов, содержащих строки конфликта слияния.
--assume-in-merge
— позволяет запускать перехватчик, когда нет текущей операции слияния
check-shebang-scripts-are-executable
Проверяет работоспособность скриптов с шебангом.
check-symlinks
Проверяет наличие символических ссылок, которые ни на что не указывают.
check-toml
Пытается загрузить все файлы TOML для проверки синтаксиса.
check-vcs-permalinks
Гарантирует, что ссылки на веб-сайты vcs являются постоянными.
--additional-github-domain DOMAIN
— Добавить проверку указанного домена. Можно повторять несколько раз. например, если ваша компания использует GitHub Enterprise, вы можете использовать что-то вроде --additional-github-domain github.example.com
check-xml
Пытается загрузить все XML-файлы для проверки синтаксиса.
check-yaml
Пытается загрузить все файлы yaml для проверки синтаксиса.
--allow-multiple-documents
— разрешить файлы yaml, использующие многодокументный синтаксис.
--unsafe
— вместо загрузки файлов просто проанализируйте их синтаксис. Проверка только синтаксиса разрешает расширения и небезопасные конструкции, которые в противном случае были бы запрещены. Использование этой опции удаляет все гарантии переносимости на другие реализации yaml. Подразумевается --allow-multiple-documents
.
debug-statements
Проверьте импорт отладчика и breakpoint()
в исходном коде Python.
destroyed-symlinks
Обнаруживает символические ссылки, которые заменяются обычными файлами с содержимым пути, на который указывала эта символическая ссылка. Обычно это происходит в Windows, когда пользователь клонирует репозиторий, в котором есть символические ссылки, но у него нет разрешения на создание символических ссылок.
detect-aws-credentials
Проверяет наличие секретов AWS, которые вы настроили с помощью интерфейса командной строки AWS. Доступны следующие аргументы:
--credentials-file CREDENTIALS_FILE
— дополнительный файл конфигурации стиля AWS CLI в нестандартном расположении, из которого можно получить настроенные учетные данные. Можно повторять несколько раз.
--allow-missing-credentials
— разрешить прохождение перехватчика, если учетные данные не обнаружены.
detect-private-key
Проверяет наличие закрытых ключей.
double-quote-string-fixer
Этот хук заменяет строки в двойных кавычках строками в одинарных кавычках.
end-of-file-fixer
Проверяет, что файлы заканчиваются новой строкой и только новой строкой.
file-contents-sorter
Сортировка строк в указанных файлах (по умолчанию в алфавитном порядке). Вы должны предоставить целевые files
в качестве входных данных. Обратите внимание, что этот хук удалит пустые строки и НЕ учитывает комментарии. Все новые строки будут преобразованы в переводы строк ( n
).
Доступны следующие аргументы:
--ignore-case
— преобразовать символы нижнего регистра в заглавные.
--unique
— убедиться, что каждая строка уникальна.
fix-byte-order-marker
удаляет маркер порядка байтов UTF-8
fix-encoding-pragma
Устарело, поскольку py2 является EOL — вместо этого используйте pyupgrade.
Добавьте # -*- coding: utf-8 -*-
в начало файлов Python.
Чтобы удалить прагму кодирования, перейдите --remove
(полезно в кодовой базе только для Python3)
forbid-new-submodules
Запретить добавление новых подмодулей git.
Это предназначено для помощи при переходе от подмодулей. Если вы хотите полностью запретить их, используйте forbid-submodules
forbid-submodules
запрещает любые подмодули в репозитории.
mixed-line-ending
Заменяет или проверяет смешанное окончание строки.
--fix={auto,crlf,lf,no}
Эта опция несовместима с CRLF для проверки входа LF в git setup, поскольку git размазывает ее позже, чем вызывается перехватчик.
auto
— автоматически заменяет наиболее часто встречающееся окончание строки. Это аргумент по умолчанию.
crlf
, lf
— Принудительно заменить строку, заканчивающуюся на CRLF и LF соответственно.
no
— проверяет, есть ли какое-либо смешанное окончание строки без изменения какого-либо файла.
name-tests-test
проверяет правильность именования тестовых файлов.
--pytest
(по умолчанию): убедиться, что тесты соответствуют .*_test.py
--pytest-test-first
: убедиться, что тесты соответствуют test_.*.py
--django
/ --unittest
: убедиться, что тесты соответствуют test.*.py
no-commit-to-branch
Защитите определенные ветки от прямых проверок.
Используйте args: [--branch, staging, --branch, main]
для установки ветки. И main
, и master
защищены по умолчанию, если не задан аргумент ветки.
-b
/ --branch
можно указать несколько раз для защиты нескольких ветвей.
-p
/ --pattern
можно использовать для защиты ветвей, соответствующих предоставленному регулярному выражению (например, --pattern, release/.*
). Может быть указано несколько раз.
Обратите внимание, что для no-commit-to-branch
по умолчанию установлено значение always_run
. В результате он будет игнорировать любые настройки files
, exclude
, types
или exclude_types
. Установите always_run: false
, чтобы разрешить пропуск этого перехватчика в соответствии с этими фильтрами файлов. Предостережение: в этой конфигурации этот хук всегда будет разрешать пустые коммиты ( git commit --allow-empty
).
pretty-format-json
Проверяет, что все ваши файлы JSON красивы. «Красиво» здесь означает, что ключи отсортированы и имеют отступы. Вы можете настроить это с помощью следующих параметров командной строки:
--autofix
— автоматически форматировать файлы json
--indent ...
— Управляет отступом (либо числом для количества пробелов, либо строкой пробелов). По умолчанию 2 пробела.
--no-ensure-ascii
сохраняет символы Юникода вместо преобразования в escape-последовательности
--no-sort-keys
— при автоисправлении сохранять исходный порядок ключей (вместо сортировки ключей)
--top-keys comma,separated,keys
— ключи, которые должны оставаться вверху сопоставлений.
requirements-txt-fixer
Сортирует записи в требованиях.txt и ограничениях.txt и удаляет неверную запись для pkg-resources==0.0.0
sort-simple-yaml
Сортирует простые файлы YAML, состоящие только из ключей верхнего уровня, сохраняя комментарии и блоки.
Обратите внимание, что sort-simple-yaml
по умолчанию не соответствует ни одному files
поскольку он применяет очень специфический формат. Вы должны согласиться на это, установив files
, например:
- идентификатор: sort-simple-yamlfiles: ^config/simple/
trailing-whitespace
Обрезает конечные пробелы.
Чтобы сохранить жесткие разрывы строк Markdown, используйте args: [--markdown-linebreak-ext=md]
(или другие расширения, используемые вашими файлами markdown). Если по какой-то причине вы хотите рассматривать все файлы как уценку, используйте --markdown-linebreak-ext=*
.
По умолчанию этот крючок обрезает все пробелы на концах строк. Чтобы вместо этого указать собственный набор символов для обрезки, используйте args: [--chars,"<chars to trim>"]
.
check-byte-order-marker
: вместо этого используйте fix-byte-order-marker
Если вы хотите использовать эти хуки, они также доступны в виде отдельного пакета.
Просто pip install pre-commit-hooks