Разрешение соглашений о кодировании проектов Python с помощью хуков перед фиксацией

Python

Эта статья относится к:

Спецификация кода и тестирование — очень важная часть разработки, и мне не нужно больше говорить о важности. Нам нужны некоторые инструменты автоматизации, чтобы упростить управление проектами. В этой статье рекомендуется несколько практических инструментов автоматизации.

предварительно совершить мою предыдущую статьюНекоторые инструменты рекомендуют поддерживать большие проекты PythonКратко упоминается в , здесь немного больше.

pre-commit использует файл конфигурации:.pre-commit-config.yaml, официальная документация находится по адресуздесь. Здесь для проектов Python я надеюсь, что git precommit hooks может выполнять следующие функции: может обнаруживать код, который не соответствует спецификации pep8, и может автоматически форматировать. Для этого нужны два инструмента:blackиflake8,blackавто формат,flake8Выявление ошибок в коде.

Весь рабочий процесс показан на следующем рисунке:

Конкретные этапы выполнения следующие:

  1. Установить предварительную фиксацию:pip install pre-commit
  2. Писать.pre-commit-config.yamlконфигурационный файл
  3. использоватьpre-commit installУстановите Git крючки на ваш.git/содержание

наш.pre-commit-config.yamlЭто очень просто, а именно:

repos:
- repo: https://github.com/ambv/black
  rev: stable
  hooks:
    - id: black
      language_version: python3.7
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v1.2.3
  hooks:
    - id: flake8

Тогда в следующий раз, когда мы отправим фиксацию, она будет запущена первой.blackиflake8Проверьте, как нестандартное место, и может помочь вам автоматически форматировать. После того, как вы повторно отправите изменения фиксации, мы можем успешно отправить.

Сделайте это на практике:

Создайте новый тестовый файл:bad_pep8.py:

Есть несколько моментов, которые не соответствуют спецификации pep8, попробуем закоммитить:

Видно, что оба крючка не прошли, и вдобавокblackПомогите нам отформатировать код.

в то же времяflake8подскажите намxПеременная определена, но не используется, удалите эту строку, затем снова добавьте и зафиксируйте:

Если вы не считаете необходимым принудительно определять переменную и не использовать ее (из вывода видно, что номер этой спецификации — F841), вы можете создать ее в корневом каталоге проекта..flake8файл конфигурации, как показано ниже. Для более подробной настройки см.официальная документация.

[flake8]
ignore = F841