Мультиъязычный CLI на Rust, который запускает линтеры, автоформаттеры, сканеры безопасности и проверки поддерживаемости кода с помощью одного инструмента и конфигурационного файла.
tonybaloney/wily
CLI-инструмент, который проходит по истории Git и отслеживает, как со временем меняются сложность и метрики Python-кода.
- Звёзды
- 1,336
- Форки
- 73
- Открытые issues
- 43
- Последний коммит
- 11 дней назад
Что это?
Wily — CLI-приложение для измерения метрик Python-кода в динамике. Оно проходит по всем ревизиям ветки с помощью Git, вычисляет метрики сложности и анализа кода для файлов на каждом коммите и сохраняет результаты в локальный кэш в каталоге .wily/.
С помощью этого кэша можно посмотреть, как между ревизиями изменились такие метрики, как цикломатическая сложность, индекс сопровождаемости, метрики Halstead или количество строк кода, отсортировать файлы по выбранной метрике или открыть в браузере график её изменений. Команда diff сравнивает текущие файлы с выбранной ссылкой Git, поэтому её можно использовать как pre-commit hook или проверку в CI.
Метрики сгруппированы по операторам: cyclomatic, cognitive, maintainability, halstead и raw. Их можно настроить в файле wily.cfg. Jupyter-ноутбуки сканируются по умолчанию; при необходимости можно выводить метрики отдельно для каждой ячейки.
Ключевые возможности
- 01Создаёт кэш метрик, проходя по коммитам ветки Git.
- 02Показывает изменения метрик между ревизиями с помощью wily report.
- 03Сортирует файлы в каталоге по выбранной метрике.
- 04Строит графики изменения метрик и открывает их в браузере с помощью wily graph.
- 05Сравнивает текущий код с любой ссылкой Git с помощью wily diff.
- 06Сканирует Python-код в ноутбуках .ipynb, при необходимости — отдельно по ячейкам.
Сценарии использования
- Отслеживание изменений сложности Python-кода по истории коммитов.
- Настройка проверки в CI или pre-commit, которая завершится ошибкой, если изменения повышают сложность по сравнению с предыдущей ревизией.
- Поиск самых сложных файлов проекта, чтобы определить приоритеты рефакторинга.
- Отслеживание тенденций качества кода в проектах для анализа данных на базе Jupyter.
Быстрый старт
- 1
Установите wily из PyPI с помощью pip
pip install wily - 2
Создайте кэш wily для папки с исходным кодом в репозитории git
wily build src/ - 3
Сформируйте отчет об изменениях сложности проанализированных файлов
wily report src/
Что важно знать
- Анализирует только код на Python.
- Для отслеживания истории нужен репозиторий git, а для создания кэша рабочая копия должна быть чистой.
В подборках
Темы
Частые вопросы
- Что такое wily?
- CLI-инструмент, который проходит по истории Git и отслеживает, как со временем меняются сложность и метрики Python-кода. Wily — CLI-приложение для измерения метрик Python-кода в динамике. Оно проходит по всем ревизиям ветки с помощью Git, вычисляет метрики сложности и анализа кода для файлов на каждом коммите и сохраняет результаты в локальный кэш в каталоге .wily/.
- wily можно использовать бесплатно? Какая у него лицензия?
- wily распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- wily всё ещё поддерживается?
- Активно поддерживается. Последний коммит в wily — 28 окт. 2026 г..
- Для чего можно использовать wily?
- Отслеживание изменений сложности Python-кода по истории коммитов. Настройка проверки в CI или pre-commit, которая завершится ошибкой, если изменения повышают сложность по сравнению с предыдущей ревизией. Поиск самых сложных файлов проекта, чтобы определить приоритеты рефакторинга. Отслеживание тенденций качества кода в проектах для анализа данных на базе Jupyter.
- Как установить wily?
- Установите wily из PyPI с помощью pip: pip install wily Создайте кэш wily для папки с исходным кодом в репозитории git: wily build src/ Сформируйте отчет об изменениях сложности проанализированных файлов: wily report src/
- Где скачать wily?
- Исходный код и инструкции по установке — на GitHub: https://github.com/tonybaloney/wily
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Инструмент для Python, который вычисляет цикломатическую сложность Маккейба функций и отмечает слишком сложный код как плагин flake8.
Статический анализатор Python: находит ошибки, проверяет соблюдение стандартов кодирования и выявляет проблемы в коде, не запуская его.
Строгий и принципиальный плагин для flake8: поддерживает единый стиль Python и выявляет сложные конструкции кода.
Линтер Python, который находит ошибки в исходном коде, разбирая его без импорта и не проверяя стиль.
Линтер Swift с более чем 200 настраиваемыми для каждого проекта правилами стиля и соглашений.