Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Ruby
  3. reek

reek

MITRuby

A static analysis tool that detects code smells in Ruby classes, modules, and methods to improve code quality.

Visit WebsiteGitHubGitHub
4.1k stars282 forks0 contributors

What is reek?

Reek is a static code analysis tool for Ruby that detects code smells—indicators of poor design or maintainability issues—in Ruby classes, modules, and methods. It helps developers identify problems like uncommunicative names, feature envy, and large classes to improve code quality and readability.

Target Audience

Ruby developers and teams working on codebases where maintainability and clean design are priorities, particularly those using Rails or managing legacy Ruby projects.

Value Proposition

Developers choose Reek for its focus on high-level design flaws rather than syntax style, its flexible configuration options, and its strong integration ecosystem with editors, CI tools, and testing frameworks.

Overview

Code smell detector for Ruby

Use Cases

Best For

  • Identifying design flaws in Ruby classes and methods
  • Enforcing code quality standards in team projects
  • Refactoring legacy Ruby codebases
  • Integrating static analysis into CI/CD pipelines
  • Teaching clean code principles in Ruby
  • Preparing code for review by highlighting maintainability issues

Not Ideal For

  • Projects needing immediate, zero-configuration linting for syntax errors and style conventions, as Reek focuses on design smells and requires setup
  • Teams with heavily metaprogrammed or dynamic Ruby code, where static analysis might produce false positives or miss issues
  • Environments where all code smell detectors must be enabled by default, since Reek disables controversial ones like UnusedPrivateMethod out of the box
  • Multi-language projects, as Reek is exclusively for Ruby with limited support for other implementations

Pros & Cons

Pros

Comprehensive Design Insight

Identifies over a dozen high-level code smells such as Feature Envy and Large Class, helping developers spot design flaws that impact maintainability, as detailed in the Code Smells documentation.

Highly Configurable Setup

Supports YAML configuration files, directory-specific settings, and inline source code comments for suppressing warnings, allowing teams to tailor checks precisely to their codebase and workflow.

Seamless Rails Integration

Includes pre-configured directory directives for Rails applications (e.g., controllers, models), making it easy to apply appropriate checks without manual tuning for common frameworks.

Legacy Code Onboarding

Generates a 'todo' configuration via the --todo flag to suppress existing smells, facilitating gradual introduction into established projects without overwhelming warnings.

Cons

Controversial Defaults

Some detectors like UnusedPrivateMethod are disabled by default due to community disagreement, requiring manual activation in configuration for full coverage, which can lead to overlooked issues if not set up.

Configuration Complexity

The hierarchy of configuration files and directory-specific rules can be confusing, with the README warning about risks of misconfiguration when multiple .reek.yml files exist, potentially causing inconsistent analysis.

Limited Language Support

Exclusively for Ruby, with official support only for CRuby 3.0-3.3 and JRuby 9.4, excluding other Ruby implementations or languages, making it unsuitable for polyglot codebases.

Frequently Asked Questions

Quick Stats

Stars4,125
Forks282
Contributors0
Open Issues49
Last commit14 days ago
CreatedSince 2008

Tags

#parsing#quality#code-smells#developer-tools#rails#code-quality#rubygem#linting#refactoring#ruby#static-analysis#linters#code-review

Built With

R
Ruby

Links & Resources

Website

Included in

Static Analysis & Code Quality14.5kRuby14.1k
Auto-fetched 1 day ago

Related Projects

PHP ParserPHP Parser

A PHP parser written in PHP

Stars17,426
Forks1,120
Last commit1 month ago
TypeScript ESLintTypeScript ESLint

:sparkles: Monorepo for all the tooling which enables ESLint to support TypeScript

Stars16,216
Forks2,904
Last commit1 day ago
pyrightpyright

Static Type Checker for Python

Stars15,387
Forks1,783
Last commit1 day ago
ReviewdogReviewdog

🐶 Automated code review tool integrated with any code analysis tools regardless of programming language

Stars9,236
Forks483
Last commit2 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub