class RuboCop::Cop::Gemspec::OrderedDependencies

Dependencies in the gemspec should be alphabetically sorted.

@example

# bad
spec.add_dependency 'rubocop'
spec.add_dependency 'rspec'

# good
spec.add_dependency 'rspec'
spec.add_dependency 'rubocop'

# good
spec.add_dependency 'rubocop'

spec.add_dependency 'rspec'

# bad
spec.add_development_dependency 'rubocop'
spec.add_development_dependency 'rspec'

# good
spec.add_development_dependency 'rspec'
spec.add_development_dependency 'rubocop'

# good
spec.add_development_dependency 'rubocop'

spec.add_development_dependency 'rspec'

# bad
spec.add_runtime_dependency 'rubocop'
spec.add_runtime_dependency 'rspec'

# good
spec.add_runtime_dependency 'rspec'
spec.add_runtime_dependency 'rubocop'

# good
spec.add_runtime_dependency 'rubocop'

spec.add_runtime_dependency 'rspec'

# good only if TreatCommentsAsGroupSeparators is true
# For code quality
spec.add_dependency 'rubocop'
# For tests
spec.add_dependency 'rspec'

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/gemspec/ordered_dependencies.rb, line 79
def autocorrect(node)
  OrderedGemCorrector.correct(
    processed_source,
    node,
    previous_declaration(node),
    treat_comments_as_separators
  )
end
investigate(processed_source) click to toggle source
# File lib/rubocop/cop/gemspec/ordered_dependencies.rb, line 61
def investigate(processed_source)
  return if processed_source.blank?

  dependency_declarations(processed_source.ast)
    .each_cons(2) do |previous, current|
    next unless consecutive_lines(previous, current)
    next unless case_insensitive_out_of_order?(
      gem_name(current),
      gem_name(previous)
    )
    unless get_dependency_name(previous) == get_dependency_name(current)
      next
    end

    register_offense(previous, current)
  end
end

Private Instance Methods

get_dependency_name(node) click to toggle source
# File lib/rubocop/cop/gemspec/ordered_dependencies.rb, line 96
def get_dependency_name(node)
  node.method_name
end
previous_declaration(node) click to toggle source
# File lib/rubocop/cop/gemspec/ordered_dependencies.rb, line 90
def previous_declaration(node)
  declarations = dependency_declarations(processed_source.ast)
  node_index = declarations.find_index(node)
  declarations.to_a[node_index - 1]
end