четверг, 26 июня 2025 г.

Woorkflow, VsCode, Gitlab, CI, Giga, Makefile

Woorkflow, VsCode, Gitlab, CI, Giga, Makefile

https://giga.chat/link/gcsWxJqDsl

I. ЛОКАЛЬНАЯ РАБОТА (VSCode):

Интеграция инструментов в VSCode поможет тебе получать немедленную обратную связь и

автоматически исправлять ошибки,

делая код чище и качественнее.

Настройка VSCode:

  1. Форматирование с помощью Black:
    • Скачай расширение Python от Microsoft (официальное).
    • В настройках (Ctrl + ,) найди раздел Python > Formatting: Provider и выбери Black.
    • Теперь при сохранении файла (Ctrl+S) или нажатии сочетания клавиш (Shift+Alt+F)
    • код будет автоматически переформатирован.
  2. Автоформатирование на сохранение:
    • Включить автоприменение форматирования при сохранении можно,
    • включив опцию Editor: Format On Save.
  3. Linter (flake8):
    • Тот же самый Python extension поддерживает встроенный линтер Flake8.
    • Настройте его в VSCode, найдя раздел Python > Linting: Engine и выберите Flake8.
    • Сразу увидите предупреждения и ошибки в коде, не покидая редактор.
  4. Type Checking (mypy & pyright):
    • Есть официальные расширения для VSCode для mypy и pyright.
    • Эти расширения предоставляют статическую проверку типов прямо в редакторе,
    • выделяя ошибки и несоответствия.
  5. Импорт Sorter (isort):
    • Isort можно запускать вручную, но для постоянного эффекта можно подключить через форматирование.
    • Через настройки VSCode (Python > Formatting: Additional Arguments)
    • можно задать аргументы для запуска isort совместно с Black.

II. НАСТРОЙКА CI НА GITLAB:

Работа с CI (Continuous Integration) полезна для того, чтобы постоянно следить за качеством кода,

даже когда изменения вносятся несколькими людьми.

Конфигурация .gitlab-ci.yml:

Рассмотрим настройку CI с учётом инструментов, которые ты упомянул.

image: python:3.12-slim-buster

before_script:
  - pip install poetry
  - poetry config virtualenvs.create false
  - poetry install --no-root

stages:
  - lint
  - format
  - type-check

format-code:
  stage: format
  script:
    - poetry run black src/annotation_ci_proj
    - poetry run isort src/annotation_ci_proj

type-check-mypy:
  stage: type-check
  script:
    - poetry run mypy src/annotation_ci_proj

type-check-pyright:
  stage: type-check
  script:
    - poetry run pyright src/annotation_ci_proj

lint-check:
  stage: lint
  script:
    - poetry run flake8 src/annotation_ci_proj

Подробности по каждому шагу:

  1. Stage: format:
    • Запускает Black и isort для переформатирования и очистки импорта.
    • Если найденные изменения значительные, то лучше остановить билд и попросить автора поправить код вручную.
  2. Stage: type-check:
    • Параллельный запуск mypy и pyright для проверки аннотаций типов.
    • Это помогает поймать ошибки раньше и увеличить уверенность в работоспособности кода.
  3. Stage: lint:
    • Запуск Flake8 для обнаружения стилистических ошибок и плохого кода.

III. Автоматика и стратегия работы:

Лучше всего комбинировать оба подхода:

  • Местная разработка (VSCode): быстрое получение обратной связи и автоисправления.
  • GitLab CI: регулярная проверка при каждом коммите или пушинге, гарантирующая высокий уровень качества кода.

IV. Алгоритм дальнейших действий:

  1. Подготовь .gitignore,
  2. чтобы сохранять чистые локальные изменения
  3. (не допускать попадания временных файлов).
  4. Настрой Makefile для локального запуска всех инструментов сразу:
.PHONY: clean lint types help help: @echo "Available commands:" @echo " make clean Remove all generated files" @echo " make lint Run linters on the project" @echo " make types Check type annotations using mypy/pyright" clean: poetry lock --no-update poetry cache clear --all lint: poetry run flake8 src/annotation_ci_proj types: poetry run mypy src/annotation_ci_proj poetry run pyright src/annotation_ci_proj

  1. Запускай локально через Makefile:
make lint
make types

Заключение:

Такое сочетание локальной интеграции в VSCode и постоянной проверки через CI гарантирует,

что твой код будет оставаться качественным, красивым и безопасным для будущих модификаций.

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

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