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
investigate(processed_source)
click to toggle source
# File lib/rubocop/cop/gemspec/ordered_dependencies.rb, line 60 def investigate(processed_source) return if processed_source.ast.nil? 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 85 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 79 def previous_declaration(node) declarations = dependency_declarations(processed_source.ast) node_index = declarations.find_index(node) declarations.to_a[node_index - 1] end