воскресенье, 1 июня 2025 г.

Pre-commit hooks, Giga

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.

Этот инструмент предоставляет удобный интерфейс для настройки множества проверенных сторонних пред-коммита:

  1. Установите pre-commit:
pip install pre-commit
  1. Добавьте файл .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
  1. Активируйте pre-commit hooks в вашем репозитории:
pre-commit install

Теперь каждый раз, когда вы попытаетесь совершить commit, указанные проверки будут выполняться автоматически.

Преимущества использования Pre-commit Hooks:

  • Повышение качества кода.
  • Устранение рутинных ошибок ещё до отправки изменений.
  • Сокращение количества рефакторингов и правок после push.
  • Единство подхода среди членов команды.

Таким образом, pre-commit hooks являются мощным инструментом, помогающим поддерживать чистоту и качество кода,

повышая эффективность и стабильность разработки программного продукта.

Комментариев нет:

Отправить комментарий