Skip to content

Repository files navigation

Deslopify: Python LLM Slop Linter

Deslopify — это специализированный статический анализатор кода (линтер) для Python-проектов. Его главная цель — находить специфический "мусор" (slop), скрытые баги, галлюцинации и архитектурные антипаттерны, которые часто оставляют большие языковые модели (LLM) при генерации или рефакторинге кода.

В отличие от стандартных линтеров (flake8, pylint), которые фокусируются на PEP 8, deslopify ищет логические недочеты: "поглощение" ошибок (except: pass), оставленные пустые заглушки функций, изменяемые аргументы по умолчанию и прочие следы автоматической генерации кода.

Ключевые особенности

  • Сфокусированность на LLM-паттернах: Ищет то, что другие линтеры могут пропустить, считая код синтаксически верным.
  • Поддержка Legacy: Написан на Python 3.5. Это позволяет запускать его в старых или изолированных средах без необходимости обновлять интерпретатор.
  • Плагинная архитектура: Легко расширяется новыми проверками. Каждый плагин изолирован и тестируется отдельно.
  • Умное игнорирование: Автоматически пропускает файлы тестов (test_*.py) и виртуальные окружения (venv, .git, .idea и т.д.).

Установка и использование (macOS / Linux)

Утилита спроектирована так, чтобы её можно было вызывать из корня любого проверяемого (целевого) проекта на вашем компьютере.

  1. Склонируйте этот репозиторий в удобное для вас место (например, ~/Projects/deslopify).
  2. Добавьте алиас в конфигурационный файл вашей оболочки (~/.zshrc или ~/.bash_profile):
alias deslopify="python3 /абсолютный/путь/к/папке/deslopify/main.py"
  1. Обновите конфигурацию терминала:
source ~/.zshrc
  1. Перейдите в папку с проектом, который вы хотите проверить, и запустите линтер:
cd /путь/к/вашему/проекту
deslopify

Линтер просканирует все .py файлы в текущей директории и выведет список найденных проблем с указанием файла и номера строки.

Встроенные проверки (Плагины)

На данный момент реализованы следующие проверки:

  1. EmptyFunctionChecker: Находит функции и методы, состоящие только из pass, ... (многоточия) или одиночного docstring. Корректно игнорирует абстрактные методы (@abstractmethod).
  2. TryExceptPassChecker: Находит опасный паттерн подавления ошибок: блоки try...except, в которых обработчик состоит только из pass.
  3. MutableDefaultArgsChecker: Ищет изменяемые структуры данных ([], {}, set()) в значениях по умолчанию аргументов функций.

Полный список планируемых проверок можно найти в файле todo.md.

Разработка плагинов и тестирование

Проект имеет встроенную систему "Snapshot-тестирования" для проверки самих плагинов. Каждый плагин обязан иметь два файла в своей директории:

  • example_pass.py: Валидный код, на который плагин не должен срабатывать.
  • example_fail.py: Плохой код, в котором плагин обязан найти ошибку.

Чтобы запустить тесты и убедиться, что все плагины работают корректно:

cd /абсолютный/путь/к/папке/deslopify
python3 run_tests.py

Подробные инструкции по написанию новых плагинов и работе с AST (Abstract Syntax Tree) находятся в файле plugin_descr.md.

About

A specialized Python static analyzer (linter) designed to detect and clean up AI-generated 'slop', hidden bugs, and architectural anti-patterns left behind by LLMs.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages