class RuboCop::Cop::Gemspec::OrderedDependencies
spec.add_dependency ‘rspec’
# For tests
spec.add_dependency ‘rubocop’
# For code quality
# bad
@example TreatCommentsAsGroupSeparators: false
spec.add_dependency ‘rspec’
# For tests
spec.add_dependency ‘rubocop’
# For code quality
# good
@example TreatCommentsAsGroupSeparators: true (default)
spec.add_runtime_dependency ‘rspec’
spec.add_runtime_dependency ‘rubocop’
# good
spec.add_runtime_dependency ‘rubocop’
spec.add_runtime_dependency ‘rspec’
# good
spec.add_runtime_dependency ‘rspec’
spec.add_runtime_dependency ‘rubocop’
# bad
spec.add_development_dependency ‘rspec’
spec.add_development_dependency ‘rubocop’
# good
spec.add_development_dependency ‘rubocop’
spec.add_development_dependency ‘rspec’
# good
spec.add_development_dependency ‘rspec’
spec.add_development_dependency ‘rubocop’
# bad
spec.add_dependency ‘rspec’
spec.add_dependency ‘rubocop’
# good
spec.add_dependency ‘rubocop’
spec.add_dependency ‘rspec’
# good
spec.add_dependency ‘rspec’
spec.add_dependency ‘rubocop’
# bad
@example
Dependencies in the gemspec should be alphabetically sorted.
def get_dependency_name(node)
def get_dependency_name(node) node.method_name end
def on_new_investigation
def on_new_investigation 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)) next unless get_dependency_name(previous) == get_dependency_name(current) register_offense(previous, current) end end
def previous_declaration(node)
def previous_declaration(node) declarations = dependency_declarations(processed_source.ast) node_index = declarations.find_index(node) declarations.to_a[node_index - 1] end