Python/ django

@pythonl
Фото 🐍 Ruff доволен, mypy молчит, тесты зелёные. А в коде четыре одинаковых функции Автор статьи столкнулся с этим в проекте, который писал ИИ-агент. Вместо поиска готовых функций агент добавлял новые копии. Когда понадобилось изменить нормализацию данных, он уже не мог разобраться, какую из четырёх править. Обычные проверки не покрывают всю структуру проекта: * Ruff находит нарушения правил и умеет проверять сложность при соответствующей настройке. * mypy проверяет типы. * pytest проверяет сценарии, для которых написаны тесты. При этом дублирование между файлами, неиспользуемые функции и нарушения архитектурных границ могут остаться незамеченными. Автор предлагает добавить структурный анализ. Его инструмент pyscn ищет дубли, сложные функции, мёртвый код и нарушения правил зависимостей: uvx pyscn analyze . Что полезно забрать в свой проект: * Блокировать в CI новые проблемы, а не сразу весь накопленный техдолг. * Следить за изменением сложности, а не только за общей оценкой. * Закрепить допустимые зависимости между модулями проверяемыми правилами. * Дать агенту запускать анализатор до отправки кода на ревью. Высокая сложность сама по себе ещё не повод переписывать функцию. Иногда длинная последовательность понятных проверок лучше искусственного дробления. Статья — https://codescan.dev/blog/ruff-mypy-pytest-and-then-what
Если у вас установлено приложение,
вы можете сразу перейти в канал