Andrew Grimm
Andrew Grimm

Reputation: 81600

Do any source code analysis tools detect unused parameters in Ruby?

How can I detect unused parameters in Ruby?

Options I'm aware of include

But do any source code analysis tools or warning options allow you to detect unused parameters?

Background: I was doing some refactoring. I changed from (code slightly simplified):

# Not within the Foo class (therefore can't be as easily accessed by unit testing)
# and in addition, the name of the configuration file is hard-wired
def parse_configuration
  raw_configuration = YAML.load_file("configuration.yml")
  # Do stuff with raw_configuration to produce configuration_options_for_foo
  return configuration_options_for_foo
end

if __FILE__ == $0
  configuration_options_for_foo = parse_configuration
  foo = Foo.new(configuration_options_for_foo)
end

to

class Foo
  # Now unit tests can call Foo.new_using_yaml("configuration.yml")
  # or use "test_configuration.yml"
  def self.new_using_yaml(yaml_filename)
    # Where I went wrong, forgetting to replace "configuration.yml" with yaml_filename
    raw_configuration = YAML.load_file("configuration.yml")
    # Do stuff with raw_configuration to produce configuration_options_for_foo
    new(configuration_options_for_foo)
  end
end

if __FILE__ == $0
  foo = Foo.new_using_yaml("configuration.yml")
end

Upvotes: 3

Views: 402

Answers (3)

Andrew Grimm
Andrew Grimm

Reputation: 81600

Ruby-lint can detect an unused parameter.

RuboCop has just added (April 2014) detection of unused parameters with the cop "UnusedMethodArgument".

Upvotes: 0

Paul Fioravanti
Paul Fioravanti

Reputation: 16793

Reek can detect unused parameters.

Upvotes: 0

prater
prater

Reputation: 2530

I think Laser does this.

It's pretty alpha-y, but seems to do what you want.

http://github.com/michaeledgar/laser

Upvotes: 1

Related Questions