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