A static analysis tool that detects code smells in Ruby classes, modules, and methods to improve code quality.
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.
Ruby developers and teams working on codebases where maintainability and clean design are priorities, particularly those using Rails or managing legacy Ruby projects.
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.
Code smell detector for Ruby
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.
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.
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.
Generates a 'todo' configuration via the --todo flag to suppress existing smells, facilitating gradual introduction into established projects without overwhelming warnings.
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.
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.
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.
A PHP parser written in PHP
:sparkles: Monorepo for all the tooling which enables ESLint to support TypeScript
Static Type Checker for Python
🐶 Automated code review tool integrated with any code analysis tools regardless of programming language
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.