Lints: rubcop y reek

Rubocop

RuboCop is a Ruby static code analyzer. Out of the box it will enforce many of the guidelines outlined in the community Ruby Style Guide.

[~/rubytesting/rubocop]$ cat test.rb 
def badName
  if something
    test
    end
end

[~/rubytesting/rubocop]$ rubocop --version
0.26.1
[~/rubytesting/rubocop]$ date
martes,  7 de octubre de 2014, 10:22:07 WEST

[~/rubytesting/rubocop]$ rubocop test.rb 
Inspecting 1 file
W

Offenses:

test.rb:1:5: C: Use snake_case for methods.
def badName
    ^^^^^^^
test.rb:2:3: C: Use a guard clause instead of wrapping the code inside a conditional expression.
  if something
  ^^
test.rb:2:3: C: Favor modifier if usage when having a single-line body. Another good alternative is the usage of control flow &&/||.
  if something
  ^^
test.rb:4:5: W: end at 4, 4 is not aligned with if at 2, 2
    end
    ^^^

1 file inspected, 4 offenses detected

[~/rubytesting/rubocop]$ cat test2.rb 
def good_name
  test if something
end

[~/rubytesting/rubocop]$ rubocop test2.rb 
Inspecting 1 file
.

1 file inspected, no offenses detected

Code Smells: reek

reek is a tool that examines Ruby classes, modules and methods and reports any Code Smells it

)[~/rubytesting/reek]$ ls 
Gemfile      Gemfile.lock Rakefile     dirty.rb
[~/rubytesting/reek]$ cat dirty.rb 
class Dirty
  # This method smells of :reek:NestedIterators but ignores them
  def awful(x, y, offset = 0, log = false)
    puts @screen.title
    @screen = widgets.map {|w| w.each {|key| key += 3}}
    puts @screen.contents
  end
end
[~/rubytesting/reek]$ reek dirty.rb 
dirty.rb -- 8 warnings:
  [1]:Dirty has no descriptive comment (IrresponsibleModule)
  [3]:Dirty#awful has 4 parameters (LongParameterList)
  [3]:Dirty#awful has boolean parameter 'log' (BooleanParameter)
  [5]:Dirty#awful has the variable name 'w' (UncommunicativeVariableName)
  [3]:Dirty#awful has unused parameter 'log' (UnusedParameters)
  [3]:Dirty#awful has unused parameter 'offset' (UnusedParameters)
  [3]:Dirty#awful has unused parameter 'x' (UnusedParameters)
  [3]:Dirty#awful has unused parameter 'y' (UnusedParameters)



Subsecciones
Casiano Rodriguez León 2015-01-07