No commit activity in last 3 years
No release in over 3 years
ImproveYourCode is a tool that examines Ruby classes, modules and methods and reports any code smells it finds.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

< 2.5, >= 2.4.0.0
~> 2.0
 Project Readme

Improve Your Code

Code smell detector for Ruby

Table of Contents

  • Quickstart
  • Example
  • Fixing Smell Warnings

Quickstart

ImproveYourCode is a tool that examines Ruby classes, modules and methods and reports any.

Install it via rubygems:

gem install improve_your_code

and run it like this:

improve_your_code

Example

Imagine a source file main.rb containing:

module A
  # UncommunicativeModuleName: A has the name 'A'

  class Main

    # TooManyConstants: Main has 4 constants
    # TooManyMethods: Main Your class has 8 methods. We propose to use 
    # ExtractClass Pattern

    # TooManyInstanceVariables: Main has at least 4 instance variables.
    # We propose to use Facade Pattern

    FIRST = 1
    SECOND = 2
    THIRD = 3
    FOURTH = 4

    # LongParameterList: initialize has 4 parameters.
    # We propose to use Builder Pattern

    def initialize(first, second, third, fourth)
      @first = first
      @second = second
      @third = third
      @fourth = fourth
    end

    def first
      # TooManyStatements: first Your method has 6 statements.
      # We propose to use ExtractMethod Pattern

      # UncommunicativeVariableName: first has the variable name 'a'

      a = 1
      b = 2
      c = 3
      d = 4
      e = 5
      f = 6
    end

    def second

    end

    def third

    end

    def fourth

    end

    def fifth

    end

    def a(a)
      # UnusedParameters: a has unused parameter 'a'

      b = 1
    end

    private

    def b
      # UnusedPrivateMethod: Main has the unused private instance
      # method 'b'

    end
  end
end

ImproveYourCode will report the following code smells in this file:

$ improve_your_code

W

main.rb -- 17 warnings:
  [8]:LongParameterList: initialize has 4 parameters. We propose to use Builder Pattern.
  [2]:TooManyConstants: Main has 4 constants
  [2]:TooManyInstanceVariables: Main has at least 4 instance variables. We propose to use Facade Pattern
  [2]:TooManyMethods: Main Your class has 8 methods. We propose to use ExtractClass Pattern
  [15]:TooManyStatements: first Your method has 6 statements. We propose to use ExtractMethod Pattern
  [40]:UncommunicativeMethodName: a has the name 'a'
  [46]:UncommunicativeMethodName: b has the name 'b'
  [1]:UncommunicativeModuleName: A has the name 'A'
  [41]:UncommunicativeVariableName: a has the variable name 'b'
  [16]:UncommunicativeVariableName: first has the variable name 'a'
  [17]:UncommunicativeVariableName: first has the variable name 'b'
  [18]:UncommunicativeVariableName: first has the variable name 'c'
  [19]:UncommunicativeVariableName: first has the variable name 'd'
  [20]:UncommunicativeVariableName: first has the variable name 'e'
  [21]:UncommunicativeVariableName: first has the variable name 'f'
  [40]:UnusedParameters: a has unused parameter 'a'
  [46]:UnusedPrivateMethod: Main has the unused private instance method 'b'
17 total warnings

Fixing Smell Warnings

ImproveYourCode focuses on high-level code smells, so we can't tell you how to fix warnings in a generic fashion; this is and will always be completely dependent on your domain language and business logic.