Эта статья относится к:
Спецификация кода и тестирование — очень важная часть разработки, и мне не нужно больше говорить о важности. Нам нужны некоторые инструменты автоматизации, чтобы упростить управление проектами. В этой статье рекомендуется несколько практических инструментов автоматизации.
предварительно совершить мою предыдущую статьюНекоторые инструменты рекомендуют поддерживать большие проекты PythonКратко упоминается в , здесь немного больше.
pre-commit использует файл конфигурации:.pre-commit-config.yaml, официальная документация находится по адресуздесь. Здесь для проектов Python я надеюсь, что git precommit hooks может выполнять следующие функции: может обнаруживать код, который не соответствует спецификации pep8, и может автоматически форматировать. Для этого нужны два инструмента:blackиflake8,blackавто формат,flake8Выявление ошибок в коде.
Весь рабочий процесс показан на следующем рисунке:
Конкретные этапы выполнения следующие:
- Установить предварительную фиксацию:
pip install pre-commit - Писать
.pre-commit-config.yamlконфигурационный файл - использовать
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