Reek

Бесплатно
Открытый исходный код

Сайт: github.com/troessner/reek

Reek — это статический анализатор исходного кода для языка программирования Ruby, предназначенный для обнаружения так называемых «code smells» — конструкций в коде, которые могут указывать на проблемы дизайна, поддерживаемости или возможные дефекты. Инструмент анализирует исходники и сообщает о типичных сигнатурах плохого кода, таких как чрезмерная длина методов, дублирование логики, высокая цикломатическая сложность, использование глобального состояния и другие паттерны, которые усложняют сопровождение и развитие проекта.

Проект развивается как утилита командной строки и библиотека, интегрируемая в процессы разработки и автоматизированного тестирования. Reek предоставляет набор настроек и правил, позволяющих адаптировать проверки под конкретные требования проекта: включать или отключать определённые инспекции, изменять пороговые значения и указывать пути исключений. В случае ограниченной или устаревшей информации о конкретных версиях инструмент описан в терминах общей функциональности, привычной для подобных анализаторов кода Ruby.

  • Обнаружение дублирования: выявляет повторяющиеся фрагменты кода и места, где целесообразно вынести общую реализацию.
  • Анализ длины методов: сигнализирует о слишком длинных или перегруженных методах, которые стоит декомпозировать.
  • Измерение сложности: оценивает цикломатическую и структурную сложность, указывая на участки с большим количеством условных ветвлений и вложений.
  • Поиск плохих практик дизайна: фиксирует антипаттерны, такие как чрезмерная зависимость от глобальных переменных, большие классы и нарушение принципов единственной ответственности.
  • Настраиваемые правила: позволяет изменять набор проверок и пороги, а также исключать файлы и каталоги из анализа.
  • Интеграция в CI/CD: совместим с автоматизированными конвейерами сборки и тестирования для раннего выявления регрессий качества кода.
  • Форматы вывода: предоставляет читаемые отчёты в консоли и машинно-обрабатываемые форматы для последующей агрегации и визуализации.
  • Поддержка стилей: помогает поддерживать согласованный стиль кодовой базы за счёт единых правил и предупреждений для команды.
Подробнее