awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
troessner avatar

troessner/reek

0
View on GitHub↗
4,126 stars·282 forks·Ruby·MIT·19 viewsgithub.com/troessner/reek↗

Reek

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.

Features

  • Code Smell Detectors - Automatically scans Ruby source files to identify design flaws and maintainability issues known as code smells.
  • Ruby Linting Tools - Scans Ruby source code to identify design flaws and maintainability issues using static analysis.
  • Architectural Debt Detectors - Acts as a software analysis engine for automating the detection of architectural debt in Ruby codebases.
  • Data Clump Detectors - Identifies groups of parameters that frequently appear together, signaling missing abstractions and duplicate code.
  • Quality Governance Systems - Enforces architectural standards by defining project-specific thresholds and exclusion rules for code quality.
  • Static Analysis Rule Configurations - Offers adjustable detector sensitivity for configuring thresholds on method length, constant counts, and other metrics.
  • Long Parameter List Detectors - Identifies methods or blocks that exceed a specified number of parameters to highlight potential smells.
  • Control Coupling Detectors - Detects methods that use parameters to decide execution paths, signaling potential duplication or fragmented responsibilities.
  • Code Smell Scanners - Scans source files in directories or via standard input to identify design flaws and maintainability issues.
  • Feature Envy Detectors - Identifies methods that reference other objects more than their own class to signal misplaced logic.
  • Large Class Detectors - Identifies classes that exceed thresholds for constants, instance variables, or method counts.
  • Long Method Detectors - Identifies methods with too many statements by counting operations and logic within control structures.
  • Metric-Based Heuristics - Evaluates code metrics against configurable numeric limits to determine if a specific code smell is present.
  • Simulated Polymorphism Detectors - Identifies case statements and repetitive conditionals where polymorphism should replace manual dispatch.
  • Detector Toggles - Provides control over detector toggles and thresholds via configuration files, command-line switches, and inline comments.
  • Static Analysis AST Parsing - Utilizes abstract syntax tree parsing to detect structural design flaws and code smells in Ruby source code.
  • Static Code Analyzers - Inspects Ruby source code without execution to find structural weaknesses and potential bugs.
  • Static Analysis Reports - Generates analysis results in text, JSON, YAML, HTML, and XML formats for flexible consumption.
  • Analysis File Filters - Allows the inclusion or exclusion of specific files and directories from analysis using external configuration and regular expressions.
  • Automated Code Analysis Tools - Provides capabilities to automate quality checks across the development lifecycle by linking analysis to build tasks and APIs.
  • Code Refactoring Tools - Facilitates the gradual cleanup of legacy Ruby codebases through the use of issue baselining to manage technical debt.
  • External Configuration Loading - Supports loading custom configuration files from the filesystem to override default analysis settings.
  • Directory-Specific Policies - Allows customization of detector settings for specific project subdirectories to accommodate different architectural patterns.
  • Pluggable Formatters - Implements a pluggable architecture for report formatters, supporting various outputs like JSON, YAML, XML, and HTML.
  • Build and Task Automation - Integrates source file analysis as a build task via tools like Rake for automated quality gating.
  • Continuous Integration Checks - Supports integration into continuous integration pipelines, including containerized analysis for tools like CodeClimate.
  • Unused Parameter Detection - Identifies method parameters that are declared but never referenced within the function body.
  • Lint Report Exports - Exports detected code smells in JSON, XML, and YAML formats for integration with external quality tools.
  • Analysis Rule Filters - Allows restricting analysis to a specific set of smells to focus on particular architectural quality issues.
  • Dead Method Detectors - Detects private instance methods that are never called within a class to reduce maintenance overhead.
  • Issue Baselining - Provides mechanisms to snapshot existing issues as a baseline to ignore legacy warnings and focus on new regressions.
  • Naming Convention Analyzers - Identifies poorly named methods, modules, parameters, and variables that fail to clearly communicate intent.
  • State Dependency Analyzers - Identifies instance methods that do not depend on object state, signaling a need for relocation to utility modules.
  • Warning Suppressions - Provides mechanisms to disable specific linting rules and warnings using configuration files or inline comments.
  • Analysis Scope Filters - Includes configuration mechanisms to target or exclude specific files and directories during the analysis process.
  • Static Code Analysis - Integrates automated scanning for maintainability issues into continuous integration pipelines to detect regressions.
  • Code Analysis and Metrics - Detector for common code smells in source files.
  • Static Analysis Tools - Code smell detector for Ruby.

Star history

Star history chart for troessner/reekStar history chart for troessner/reek

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does troessner/reek do?

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.

What are the main features of troessner/reek?

The main features of troessner/reek are: Code Smell Detectors, Ruby Linting Tools, Architectural Debt Detectors, Data Clump Detectors, Quality Governance Systems, Static Analysis Rule Configurations, Long Parameter List Detectors, Control Coupling Detectors.

Which projects share features with troessner/reek?

Projects with overlapping indexed features include: pycqa/pylint — Pylint is a static code analysis tool for Python that checks source code for errors, coding standard violations, and… pylint-dev/pylint — Pylint is a static code analyzer for Python that scans source code for errors, coding standard violations, code… pycqa/flake8 — Flake8 is a Python style checker and static analysis tool that identifies programmatic errors and violations of coding… phan/phan — Phan is a static analyzer and type checker for PHP that identifies bugs and type incompatibilities without executing… detekt/detekt — Detekt is a static analysis tool, code quality linter, and complexity analyzer for Kotlin source code. It functions as… wordpress/wordpress-coding-standards — WordPress Coding Standards is a collection of rules for the PHP CodeSniffer engine designed to enforce consistent…

Projects sharing features with Reek

These projects share indexed features with Reek. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • pycqa/pylintPyCQA avatar

    PyCQA/pylint

    5,685View on GitHub↗

    Pylint is a static code analysis tool for Python that checks source code for errors, coding standard violations, and code smells without executing the program. It parses code into an abstract syntax tree and walks the tree to detect issues, enforces configurable style rules and naming conventions, and identifies duplicate code blocks by comparing tokenised source sequences. The tool also includes an inference engine that deduces variable types by simulating code paths, enabling deeper analysis even in untyped code. What distinguishes Pylint is its plugin-based checker architecture, which allo

    Python
    View on GitHub↗5,685
  • pylint-dev/pylintpylint-dev avatar

    pylint-dev/pylint

    5,685View on GitHub↗

    Pylint is a static code analyzer for Python that scans source code for errors, coding standard violations, code smells, and type-related issues without executing the program. It functions as a plugin-based linter framework, allowing users to extend its analysis capabilities with custom or third-party checks for project-specific rules and framework support. The tool also includes a duplicate code detector that identifies identical or near-identical code blocks across a project to help reduce redundancy. Beyond its core linting functionality, Pylint can generate UML class and package diagrams f

    Pythonclosembercode-qualityhacktoberfest
    View on GitHub↗5,685
  • pycqa/flake8PyCQA avatar

    PyCQA/flake8

    3,760View on GitHub↗

    Flake8 is a Python style checker and static analysis tool that identifies programmatic errors and violations of coding standards in source files. It serves as a linting wrapper that aggregates multiple checkers into a single interface, functioning as a pluggable framework for Python code analysis. The tool incorporates a cyclomatic complexity analyzer to measure the logical complexity of functions and identify code that requires refactoring. It is designed for extensibility, allowing the integration of custom plugins and rules through defined entry points. The system provides capabilities fo

    Pythoncomplexity-analysisflake8linter
    View on GitHub↗3,760
  • phan/phanphan avatar

    phan/phan

    5,617View on GitHub↗

    Phan is a static analyzer and type checker for PHP that identifies bugs and type incompatibilities without executing the code. It serves as a quality gate for continuous integration pipelines and a tool for verifying type safety, specifically checking union types, generics, and array shapes. The project is distinguished by its use of a background daemon and Language Server Protocol implementation, which provide real-time diagnostics and navigation within editors. It also features a baseline-based suppression system that allows developers to record existing errors in a snapshot file to focus e

    PHP
    View on GitHub↗5,617
  • Compare all 30 related projects→