class Chutney::UnusedVariable

service class to lint for unused variables

Public Instance Methods

lint() click to toggle source
# File lib/chutney/linter/unused_variable.rb, line 6
def lint
  scenarios do |feature, scenario|
    next unless scenario.is_a? CukeModeler::Outline

    scenario.examples.each do |example|
      example.rows.first.cells.map(&:value).each do |variable|
        next if used?(variable, scenario)

        add_issue(I18n.t('linters.unused_variable', variable: variable), feature, scenario, example)
      end
    end
  end
end
used?(variable, scenario) click to toggle source
# File lib/chutney/linter/unused_variable.rb, line 20
def used?(variable, scenario)
  variable = "<#{variable}>"

  scenario.steps.each do |step|
    return true if step.text.include? variable
    next unless step.block
    return true if used_in_docstring?(variable, step)
    return true if used_in_table?(variable, step)
  end
  false
end
used_in_docstring?(variable, step) click to toggle source
# File lib/chutney/linter/unused_variable.rb, line 32
def used_in_docstring?(variable, step)
  step.block.is_a?(CukeModeler::DocString) && step.block.content.include?(variable)
end
used_in_table?(variable, step) click to toggle source
# File lib/chutney/linter/unused_variable.rb, line 36
def used_in_table?(variable, step)
  return false unless step.block.is_a?(CukeModeler::Table)

  step.block.rows.each do |row|
    row.cells.each { |cell| return true if cell.value.include?(variable) }
  end
  false
end