# troessner/reek

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/troessner-reek).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

4,126 stars · 282 forks · Ruby · MIT

## Links

- GitHub: https://github.com/troessner/reek
- Homepage: https://github.com/troessner/reek
- awesome-repositories: https://awesome-repositories.com/repository/troessner-reek.md

## Description

Reek is a static code analyzer for Ruby projects designed to identify design flaws and maintainability issues known as code smells. It functions as a quality assurance tool that inspects source code without executing it to find structural weaknesses and architectural debt.

The analyzer identifies specific patterns such as large classes, long methods, and uncommunicative naming. It also detects more complex design issues, including feature envy, data clumps, simulated polymorphism, and control coupling.

The tool includes capabilities for issue baselining to manage legacy code and configuration-driven filtering to exclude specific directories. It supports automated quality checks via continuous integration pipelines and provides analysis reports in formats such as JSON, YAML, XML, and HTML.

## Tags

### DevOps & Infrastructure

- [Code Smell Detectors](https://awesome-repositories.com/f/devops-infrastructure/security-automation-workflows/code-smell-detectors.md) — Automatically scans Ruby source files to identify design flaws and maintainability issues known as code smells. ([source](https://github.com/troessner/reek/blob/master/docs/Rake-Task.md))
- [Continuous Integration Checks](https://awesome-repositories.com/f/devops-infrastructure/continuous-integration-pipelines/continuous-integration-checks.md) — Supports integration into continuous integration pipelines, including containerized analysis for tools like CodeClimate. ([source](https://github.com/troessner/reek/blob/master/Dockerfile))

### Part of an Awesome List

- [Ruby Linting Tools](https://awesome-repositories.com/f/awesome-lists/devtools/ruby-extensions/ruby-linting-tools.md) — Scans Ruby source code to identify design flaws and maintainability issues using static analysis.
- [Architectural Debt Detectors](https://awesome-repositories.com/f/awesome-lists/devtools/ruby-extensions/ruby-linting-tools/architectural-debt-detectors.md) — Acts as a software analysis engine for automating the detection of architectural debt in Ruby codebases.
- [Code Analysis and Metrics](https://awesome-repositories.com/f/awesome-lists/devtools/code-analysis-and-metrics.md) — Detector for common code smells in source files.
- [Static Analysis Tools](https://awesome-repositories.com/f/awesome-lists/devtools/static-analysis-tools.md) — Code smell detector for Ruby.

### Data & Databases

- [Data Clump Detectors](https://awesome-repositories.com/f/data-databases/duplicate-detection-tools/probabilistic-duplicate-detection/data-clump-detectors.md) — Identifies groups of parameters that frequently appear together, signaling missing abstractions and duplicate code. ([source](https://github.com/troessner/reek/blob/master/docs/Data-Clump.md))
- [Static Analysis Reports](https://awesome-repositories.com/f/data-databases/reporting-tools/multi-format-generators/audit-report-generators/analysis-report-generators/static-analysis-reports.md) — Generates analysis results in text, JSON, YAML, HTML, and XML formats for flexible consumption. ([source](https://github.com/troessner/reek/blob/master/docs/API.md))

### Development Tools & Productivity

- [Quality Governance Systems](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/quality-governance-systems.md) — Enforces architectural standards by defining project-specific thresholds and exclusion rules for code quality.
- [Static Analysis Rule Configurations](https://awesome-repositories.com/f/development-tools-productivity/static-analysis-rule-configurations.md) — Offers adjustable detector sensitivity for configuring thresholds on method length, constant counts, and other metrics. ([source](https://github.com/troessner/reek/blob/master/CHANGELOG.md))
- [Analysis File Filters](https://awesome-repositories.com/f/development-tools-productivity/analysis-file-filters.md) — Allows the inclusion or exclusion of specific files and directories from analysis using external configuration and regular expressions.
- [Automated Code Analysis Tools](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/automated-code-analysis-tools.md) — Provides capabilities to automate quality checks across the development lifecycle by linking analysis to build tasks and APIs. ([source](https://github.com/troessner/reek/blob/master/CHANGELOG.md))
- [Code Refactoring Tools](https://awesome-repositories.com/f/development-tools-productivity/code-refactoring-tools.md) — Facilitates the gradual cleanup of legacy Ruby codebases through the use of issue baselining to manage technical debt.
- [External Configuration Loading](https://awesome-repositories.com/f/development-tools-productivity/external-configuration-loading.md) — Supports loading custom configuration files from the filesystem to override default analysis settings. ([source](https://github.com/troessner/reek/blob/master/docs/Command-Line-Options.md))
- [Directory-Specific Policies](https://awesome-repositories.com/f/development-tools-productivity/linting-configurations/directory-specific-policies.md) — Allows customization of detector settings for specific project subdirectories to accommodate different architectural patterns. ([source](https://github.com/troessner/reek/blob/master/README.md))
- [Pluggable Formatters](https://awesome-repositories.com/f/development-tools-productivity/terminal-output-formatters/pluggable-formatters.md) — Implements a pluggable architecture for report formatters, supporting various outputs like JSON, YAML, XML, and HTML.
- [Build and Task Automation](https://awesome-repositories.com/f/development-tools-productivity/workflow-automation-tools/build-task-automation.md) — Integrates source file analysis as a build task via tools like Rake for automated quality gating. ([source](https://github.com/troessner/reek/blob/master/docs/Reek-Driven-Development.md))

### Programming Languages & Runtimes

- [Long Parameter List Detectors](https://awesome-repositories.com/f/programming-languages-runtimes/unused-parameter-detection/long-parameter-list-detectors.md) — Identifies methods or blocks that exceed a specified number of parameters to highlight potential smells. ([source](https://github.com/troessner/reek/blob/master/docs/Long-Parameter-List.md))
- [Unused Parameter Detection](https://awesome-repositories.com/f/programming-languages-runtimes/unused-parameter-detection.md) — Identifies method parameters that are declared but never referenced within the function body. ([source](https://github.com/troessner/reek/blob/master/docs/Unused-Parameters.md))

### Software Engineering & Architecture

- [Control Coupling Detectors](https://awesome-repositories.com/f/software-engineering-architecture/code-duplication-reduction/coupling-reducing-duplication/control-coupling-detectors.md) — Detects methods that use parameters to decide execution paths, signaling potential duplication or fragmented responsibilities. ([source](https://github.com/troessner/reek/blob/master/docs/Control-Couple.md))
- [Code Smell Scanners](https://awesome-repositories.com/f/software-engineering-architecture/code-smell-scanners.md) — Scans source files in directories or via standard input to identify design flaws and maintainability issues. ([source](https://github.com/troessner/reek/blob/master/docs/Command-Line-Options.md))
- [Feature Envy Detectors](https://awesome-repositories.com/f/software-engineering-architecture/feature-envy-detectors.md) — Identifies methods that reference other objects more than their own class to signal misplaced logic. ([source](https://github.com/troessner/reek/blob/master/docs/Feature-Envy.md))
- [Large Class Detectors](https://awesome-repositories.com/f/software-engineering-architecture/large-class-detectors.md) — Identifies classes that exceed thresholds for constants, instance variables, or method counts. ([source](https://github.com/troessner/reek/blob/master/docs/Large-Class.md))
- [Long Method Detectors](https://awesome-repositories.com/f/software-engineering-architecture/long-method-detectors.md) — Identifies methods with too many statements by counting operations and logic within control structures. ([source](https://github.com/troessner/reek/blob/master/docs/Too-Many-Statements.md))
- [Metric-Based Heuristics](https://awesome-repositories.com/f/software-engineering-architecture/metric-based-heuristics.md) — Evaluates code metrics against configurable numeric limits to determine if a specific code smell is present.
- [Simulated Polymorphism Detectors](https://awesome-repositories.com/f/software-engineering-architecture/polymorphism-patterns/simulated-polymorphism-detectors.md) — Identifies case statements and repetitive conditionals where polymorphism should replace manual dispatch. ([source](https://github.com/troessner/reek/blob/master/docs/Simulated-Polymorphism.md))
- [Analysis Rule Filters](https://awesome-repositories.com/f/software-engineering-architecture/analysis-rule-filters.md) — Allows restricting analysis to a specific set of smells to focus on particular architectural quality issues. ([source](https://github.com/troessner/reek/blob/master/docs/Command-Line-Options.md))
- [Dead Method Detectors](https://awesome-repositories.com/f/software-engineering-architecture/dead-method-detectors.md) — Detects private instance methods that are never called within a class to reduce maintenance overhead. ([source](https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md))
- [Issue Baselining](https://awesome-repositories.com/f/software-engineering-architecture/error-reporting/suppressed-issue-trackers/issue-baselining.md) — Provides mechanisms to snapshot existing issues as a baseline to ignore legacy warnings and focus on new regressions.
- [Naming Convention Analyzers](https://awesome-repositories.com/f/software-engineering-architecture/naming-convention-analyzers.md) — Identifies poorly named methods, modules, parameters, and variables that fail to clearly communicate intent. ([source](https://github.com/troessner/reek/blob/master/docs/Uncommunicative-Name.md))
- [State Dependency Analyzers](https://awesome-repositories.com/f/software-engineering-architecture/state-dependency-analyzers.md) — Identifies instance methods that do not depend on object state, signaling a need for relocation to utility modules. ([source](https://github.com/troessner/reek/blob/master/docs/Utility-Function.md))
- [Warning Suppressions](https://awesome-repositories.com/f/software-engineering-architecture/warning-issuance-systems/warning-suppressions.md) — Provides mechanisms to disable specific linting rules and warnings using configuration files or inline comments. ([source](https://github.com/troessner/reek/blob/master/docs/Smell-Suppression.md))

### System Administration & Monitoring

- [Detector Toggles](https://awesome-repositories.com/f/system-administration-monitoring/audit-log-filters/severity-level-filtering/detector-severity-thresholds/detector-toggles.md) — Provides control over detector toggles and thresholds via configuration files, command-line switches, and inline comments. ([source](https://github.com/troessner/reek#readme))

### Testing & Quality Assurance

- [Static Analysis AST Parsing](https://awesome-repositories.com/f/testing-quality-assurance/static-code-analysis/ast-extraction/static-analysis-ast-parsing.md) — Utilizes abstract syntax tree parsing to detect structural design flaws and code smells in Ruby source code.
- [Static Code Analyzers](https://awesome-repositories.com/f/testing-quality-assurance/static-code-analyzers.md) — Inspects Ruby source code without execution to find structural weaknesses and potential bugs.
- [Analysis Scope Filters](https://awesome-repositories.com/f/testing-quality-assurance/code-quality-review/static-analysis/analysis-scope-filters.md) — Includes configuration mechanisms to target or exclude specific files and directories during the analysis process. ([source](https://github.com/troessner/reek/blob/master/CHANGELOG.md))
- [Static Code Analysis](https://awesome-repositories.com/f/testing-quality-assurance/static-code-analysis.md) — Integrates automated scanning for maintainability issues into continuous integration pipelines to detect regressions.

### Security & Cryptography

- [Lint Report Exports](https://awesome-repositories.com/f/security-cryptography/multi-format-vulnerability-reports/lint-report-exports.md) — Exports detected code smells in JSON, XML, and YAML formats for integration with external quality tools. ([source](https://github.com/troessner/reek#readme))
