Reek
What it is
Reek is a free, open-source tool that examines Ruby classes, modules, and methods and reports code smells. It can inspect files or directories and accept Ruby code through standard input. Checks include issues such as Feature Envy, Large Class, Long Parameter List, Too Many Statements, and Unused Parameters. Reports can be produced as plain text, HTML, YAML, JSON, XML, or GitHub output. Teams can configure Reek through a `.reek.yml` file and suppress warnings with source comments. The README describes directory-specific settings for Rails paths such as `app/controllers` and `app/models`, and lists editor integrations for Vim, TextMate, Atom, SublimeLinter, VS Code, and Emacs. It also names workflow projects including overcommit, ruby-critic, pronto-reek, and action-reek. Install it with RubyGems using `gem install reek`. Official support covers CRuby 3.0 through 3.3 and JRuby 9.4. Reek identifies higher-level smells but does not provide generic fixes, because suitable changes depend on domain language and business logic. Its license is MIT.
For and against
For
- Checks classes, modules, and methods for code smells
- Offers six report formats
- Configuration and warning suppression options
- Lists multiple editor integrations
- Free under the MIT license
Against
- Does not provide generic fixes for reported smells
- Official support covers specified Ruby versions
- Unused Private Method detection is disabled by default
The verdict
Reek offers configurable Ruby code-smell detection and a range of output and integration options at no cost. Developers need to interpret its findings and decide on fixes for their own code and business context.
Who it suits
Reek suits Ruby developers who want configurable code-smell reports for files, directories, or standard input. It can fit editor and workflow setups, including Rails projects.
Plans and prices
Reek
Ruby code smell detection · install via RubyGems
Read 11 Oct 2026 · github.com
On the record
- Code checks
- Its detectors include checks for issues such as Feature Envy, Large Class, Long Parameter List, Too Many Statements, and Uncommunicative Name.github.com · read 11 Oct 2026
- Configuration
- Reek supports a `.reek.yml` configuration file and permits smell warnings to be suppressed with source code comments.github.com · read 11 Oct 2026
- Detection
- Reek includes checks for code smells such as Feature Envy, Large Class, Long Parameter List, Too Many Statements, and Unused Parameters.github.com · read 11 Oct 2026
- Detector defaults
- The README says the controversial Unused Private Method detector is disabled by default and must be explicitly enabled.github.com · read 11 Oct 2026
- Editor integrations
- The README lists integrations for Vim, TextMate, Atom, SublimeLinter, VS Code, and Emacs.github.com · read 11 Oct 2026
- Input
- Reek can inspect directories or source files and can also accept Ruby code through standard input.github.com · read 11 Oct 2026
- Installation
- The README says to install Reek with RubyGems using `gem install reek`.github.com · read 11 Oct 2026
- Integrations
- The README lists editor integrations for Vim, TextMate, Atom, SublimeLinter, VS Code, and Emacs.github.com · read 11 Oct 2026
- License
- GitHub identifies the repository license as MIT.github.com · read 11 Oct 2026
- Notable limit
- Reek says it cannot provide generic fixes for reported smells because fixes depend on domain language and business logic.github.com · read 11 Oct 2026
- Notable limits
- The README says Reek identifies high-level code smells but cannot give generic fixes because fixes depend on domain language and business logic.github.com · read 11 Oct 2026
- Other integrations
- The README lists support projects including overcommit, ruby-critic, pronto-reek, and action-reek.github.com · read 11 Oct 2026
- Output
- Reek supports plain text, HTML, YAML, JSON, XML, and GitHub output formats.github.com · read 11 Oct 2026
- Output formats
- Reek supports plain text, HTML, YAML, JSON, XML, and GitHub output formats.github.com · read 11 Oct 2026
- Purpose
- Reek examines Ruby classes, modules, and methods and reports code smells.github.com · read 11 Oct 2026
- Rails
- The README describes directory-specific configuration as a way to make Reek Rails-friendly.github.com · read 11 Oct 2026
- Rails use
- The README describes configuring Reek for Rails with directory-specific settings for paths such as `app/controllers` and `app/models`.github.com · read 11 Oct 2026
- Release
- The changelog lists version 6.5.0 dated 2025-03-24.github.com · read 11 Oct 2026
The review
Reek is a free, open-source static analyzer for Ruby classes, modules, and methods. It is best suited to Ruby developers and teams that want configurable smell reports in local, editor, Rails, or CI workflows. Its value is broad reporting and integration without a license cost, while interpretation and remediation remain firmly with the development team.
Ruby projects choosing Reek get a focused design-review signal rather than an automated refactoring service. That makes it useful for maintainability reviews, but less suitable when you need fixes applied automatically or guidance that understands a business domain.
Overview
Reek examines Ruby source and reports high-level code smells. Detectors cover Feature Envy, Large Class, Long Parameter List, Too Many Statements, Uncommunicative Name, Unused Parameters, and related patterns. These findings can expose classes and methods worth reviewing, but a warning is not proof of a defect: the project explicitly says generic fixes are impossible because appropriate changes depend on domain language and business logic.
The project is open source under the MIT license. Version 6.5.0 is dated March 24, 2025. Installation uses RubyGems with gem install reek, giving Ruby teams a conventional command-line starting point.
Key features
Reek accepts individual source files, directories, or Ruby code through standard input. A .reek.yml file provides project-level configuration, while source-code comments can suppress selected warnings. This combination supports shared policy and deliberate exceptions, although teams must invest time deciding which smells deserve action.
Reports are available as plain text, HTML, YAML, JSON, XML, and GitHub output. Plain text fits terminal reviews; structured formats can feed other tooling; GitHub output suits repository discussions. The range is practical for both humans and automation without changing the underlying analysis.
Rails projects can use directory-specific settings for locations such as app/controllers and app/models. Editor integrations cover Vim, TextMate, Atom, SublimeLinter, VS Code, and Emacs. Workflow projects named by Reek include overcommit, ruby-critic, pronto-reek, and the action-reek GitHub Action, so it can sit inside pre-commit, review, or continuous-integration processes.
The Unused Private Method detector is disabled by default and must be enabled explicitly. That conservative default avoids imposing a potentially controversial check, but teams wanting it need an extra configuration decision. Reek has no autofix, so every accepted finding requires a developer-led change or an intentional decision to leave the code as it is.
Pricing
| Plan | Price | Includes | Best for |
|---|---|---|---|
| Reek | free | Ruby code smell detection; install via RubyGems | Any Ruby developer or team needing open-source analysis |
There is no paid tier, seat charge, quota, renewal, or trial period to weigh. The trade-off is capability rather than billing: Reek supplies detection and reporting, not automatic fixes or domain-specific remediation advice.
Platforms
Reek is listed for Linux. Official Ruby compatibility covers CRuby 3.0 through 3.3 and JRuby 9.4. The command-line and standard-input model can fit local or automated Linux environments, while editor and workflow integrations extend where results appear.
Who it's for
Choose Reek for a Ruby codebase that needs repeatable design-smell checks, configurable exclusions, multiple report formats, and integration with Rails, editors, or CI. It is particularly appropriate for teams comfortable reviewing warnings in the context of their own architecture and business rules.
Look elsewhere if your priority is automatic cleanup, a cross-language analyzer, or prescriptive fixes. Reek reports patterns; it does not decide whether a smell is acceptable in your application or implement the correction.
Pros and cons
Pros
- Free MIT-licensed distribution: there is no subscription or trial constraint, making it practical for individual and commercial Ruby projects.
- Broad output coverage: text, HTML, YAML, JSON, XML, and GitHub formats accommodate terminals, dashboards, scripts, and pull-request workflows.
- Configurable project fit: .reek.yml, inline suppression, and Rails directory settings let teams adapt checks to their codebase.
- Established integration surface: listed editor and workflow integrations reduce the need to build every connection yourself.
Cons
- No autofix: every warning requires manual engineering judgment and implementation.
- Interpretation burden: generic fixes are intentionally unavailable because suitable changes depend on domain and business logic.
- Linux listing only: readers seeking a broader published platform matrix may need another tool.
- Selective defaults: Unused Private Method analysis is off until explicitly enabled, so default reports do not include that detector.
Alternatives
clang-tidy is the better choice for free LLVM-backed analysis of C or C++ projects rather than Ruby.
Pick Cppcheck when you need a freemium analyzer spanning Linux, macOS, Windows, and self-hosted deployments, with a free core and a separate project tier.
PMD suits teams wanting a free, downloadable static analyzer for languages covered by its configurable checks across Linux, macOS, Windows, and self-hosted setups.
Choose SwiftLint for open-source, MIT-licensed linting focused on Swift.
Astral is the alternative for a broader open-source toolset built around Ruff, uv, and ty.
Biome fits web projects seeking an open-source toolchain with extension, desktop, and web platform availability.
Use Checkstyle for configurable Java source-code analysis, or Credo for open-source static analysis aimed at Elixir.
For a wider directory of linting tools, browse Linters.
Verdict
Reek is a strong choice for Ruby teams that want free, configurable code-smell detection with Rails, editor, and CI-friendly reporting. Choose it when your developers can evaluate findings in context; look elsewhere when you require automatic fixes, prescriptive recommendations, or analysis centered on another language.