Pre-commit hooks, Giga
https://giga.chat/link/gcsJhXtnzn Python, Project Structure
https://giga.chat/link/gcsJhXtnzn
Pre-commit hooks («предварительные хуки») — это специальные скрипты или правила,
выполняющиеся автоматически непосредственно перед отправкой изменений в систему контроля версий (таких как Git).
Их главная задача —
предотвращать попадание некачественного или некорректного кода в основную ветку проекта путем
автоматической проверки и исправления ошибок.
Предоставляемый pre-commit hook может включать в себя различные виды проверок:
- Проверка стиля кода (форматирование, linting);
- Проверка типов (статический анализ);
- Исправление пробелов в конце строк;
- Проведение unit-тестов;
- Ликвидация потенциальных уязвимостей безопасности.
Используя pre-commit hooks, разработчики могут обеспечить высокий уровень чистоты и согласованности кода в команде,
избежать простых ошибок и уменьшить вероятность возникновения проблем в процессе совместной работы.
Как работают Pre-commit Hooks?
Каждый раз, когда разработчик пытается отправить изменения (commit) в репозиторий, система контроля версий сначала проверяет,
существуют ли настроенные pre-commit hooks. Если такие имеются, они выполняются последовательно один за другим.
Только после успешного завершения всех проверок производится сам commit.
Типичные типы проверок в pre-commit hooks:
- Форматирование кода:
- autofixers, такие как Black или Isort, могут автоматически привести код к нужному стилю.
- Проверка стилей и линтеры:
- flake8, pylint, ruff помогают выявить проблемы с качеством кода.
- Статический анализ:
- mypy или pytype позволяют проверить типы данных и устранить потенциальные ошибки на этапе компиляции.
- Тестирование:
- выполнение быстрых юнит-тестов, чтобы убедиться, что вносимые изменения не нарушают существующий функционал.
- Безопасность:
- bandit или safety проводят проверку на возможные уязвимости и безопасность кода.
Настройка Pre-commit Hooks
Наиболее популярным способом настроить pre-commit hooks является использование инструмента pre-commit.
Этот инструмент предоставляет удобный интерфейс для настройки множества проверенных сторонних пред-коммита:
- Установите pre-commit:
pip install pre-commit
- Добавьте файл
.pre-commit-config.yamlв корень своего проекта:
repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.2.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: debug-statements - repo: https://github.com/pycqa/isort rev: 5.10.1 hooks: - id: isort - repo: https://github.com/psf/black rev: 22.3.0 hooks: - id: black
- Активируйте pre-commit hooks в вашем репозитории:
pre-commit install
Теперь каждый раз, когда вы попытаетесь совершить commit, указанные проверки будут выполняться автоматически.
Преимущества использования Pre-commit Hooks:
- Повышение качества кода.
- Устранение рутинных ошибок ещё до отправки изменений.
- Сокращение количества рефакторингов и правок после push.
- Единство подхода среди членов команды.
Таким образом, pre-commit hooks являются мощным инструментом, помогающим поддерживать чистоту и качество кода,
повышая эффективность и стабильность разработки программного продукта.
Комментариев нет:
Отправить комментарий