sevencop 0.15.0 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8acc90d7c82f23729f66dce9a0376410c1cdd2f01d71592b9c3575a4a9d9c416
4
- data.tar.gz: 3d49905a627a5cfd72a00e73328a898fddb0c3a9f78942a32932486e87182eff
3
+ metadata.gz: 3e346d243517396c6f0813c7369dab4817564a13f019700543e6bf10a8469a7e
4
+ data.tar.gz: 66c31821ed67e2c39946ee62cea8192104924847de0d0e3fb0c029eb0e9c7d47
5
5
  SHA512:
6
- metadata.gz: 80f9368358f530ff0eceef9a9a071b26a772b28aee8c8fe3199d8e9fc53571205c94ad2be9af4f8485c5c91f7de6934c7e16773fb3c460ed4ac5a9d68525a74a
7
- data.tar.gz: d79f8f27058781abde3fb6773aa427714edb95deff385dc5777ca4d3b069d6bbd62d6b21178786a6f9b7ca9dad3745bbf46f78b40b1e737b5006ab5b4dda9028
6
+ metadata.gz: 9f19c719aa7a9c7fe2c5c48b9a0bb15840ec743759722ccb4ae497472fde33269158105e7128fe43bcfeb1795a8be385738c8d325de9b7d9dc106a9aede56736
7
+ data.tar.gz: b6ea5b4210c1aed498d72eaf6c1b088e8d7aae22904b5b7afd10f1ce84a584e5a5d01b7b0f265d885c2ea86d179fcdd74d2bc50f7e4c5d77157bedaae0406b36
data/.rubocop.yml CHANGED
@@ -10,6 +10,9 @@ AllCops:
10
10
  SuggestExtensions: false
11
11
  TargetRubyVersion: 2.6
12
12
 
13
+ Gemspec/RequireMFA:
14
+ Enabled: false
15
+
13
16
  Metrics:
14
17
  Enabled: false
15
18
 
@@ -23,9 +26,25 @@ RSpec:
23
26
  RSpec/ExampleLength:
24
27
  Enabled: false
25
28
 
29
+ RSpec/FilePath:
30
+ CustomTransform:
31
+ RSpecExamplesInSameGroup: rspec_examples_in_same_group
32
+
26
33
  RSpec/MultipleExpectations:
27
34
  Enabled: false
28
35
 
36
+ Sevencop/AutoloadOrdered:
37
+ Enabled: true
38
+
39
+ Sevencop/HashElementOrdered:
40
+ Enabled: true
41
+
42
+ Sevencop/MethodDefinitionArgumentsMultiline:
43
+ Enabled: true
44
+
45
+ Sevencop/MethodDefinitionKeywordArgumentOrdered:
46
+ Enabled: true
47
+
29
48
  Sevencop/MethodDefinitionOrdered:
30
49
  Enabled: true
31
50
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sevencop (0.15.0)
4
+ sevencop (0.17.0)
5
5
  rubocop
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -2,49 +2,31 @@
2
2
 
3
3
  [![test](https://github.com/r7kamura/sevencop/actions/workflows/test.yml/badge.svg)](https://github.com/r7kamura/sevencop/actions/workflows/test.yml)
4
4
 
5
- Custom cops for [RuboCop](https://github.com/rubocop/rubocop).
5
+ Opinionated custom cops for [RuboCop](https://github.com/rubocop/rubocop).
6
6
 
7
- ## Installation
7
+ ## Usage
8
8
 
9
- Add this line to your application's Gemfile:
9
+ Install `sevencop` gem:
10
10
 
11
11
  ```ruby
12
+ # Gemfile
12
13
  gem 'sevencop', require: false
13
14
  ```
14
15
 
15
- And then execute:
16
-
17
- ```
18
- bundle install
19
- ```
20
-
21
- Or install it yourself as:
22
-
23
- ```
24
- gem install sevencop
25
- ```
26
-
27
- ## Usage
28
-
29
- Require sevencop from your .rubocop.yml:
16
+ then require `sevencop` and enable the cops you want to use on .rubocop.yml:
30
17
 
31
18
  ```yaml
32
19
  # .rubocop.yml
33
20
  require:
34
21
  - sevencop
35
- ```
36
22
 
37
- then enable the cops you want to use:
38
-
39
- ```yaml
40
- # .rubocop.yml
41
- Sevencop/RailsBelongsToOptional:
23
+ Sevencop/MethodDefinitionOrdered:
42
24
  Enabled: true
43
25
  ```
44
26
 
45
27
  ## Cops
46
28
 
47
- See YARD comments in each cop class for details:
29
+ Choose the cops you want to use and enable them on your .rubocop.yml.
48
30
 
49
31
  - [Sevencop/AutoloadOrdered](lib/rubocop/cop/sevencop/autoload_ordered.rb)
50
32
  - [Sevencop/HashElementOrdered](lib/rubocop/cop/sevencop/hash_element_ordered.rb)
@@ -56,5 +38,7 @@ See YARD comments in each cop class for details:
56
38
  - [Sevencop/RailsOrderField](lib/rubocop/cop/sevencop/rails_order_field.rb)
57
39
  - [Sevencop/RailsUniquenessValidatorExplicitCaseSensitivity](lib/rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity.rb)
58
40
  - [Sevencop/RailsWhereNot](lib/rubocop/cop/sevencop/rails_where_not.rb)
41
+ - [Sevencop/RequireOrdered](lib/rubocop/cop/sevencop/require_ordered.rb)
42
+ - [Sevencop/RSpecExamplesInSameGroup](lib/rubocop/cop/sevencop/rspec_examples_in_same_group.rb)
59
43
 
60
44
  Note that all cops are `Enabled: false` by default.
data/config/default.yml CHANGED
@@ -61,3 +61,18 @@ Sevencop/RailsWhereNot:
61
61
  Enabled: false
62
62
  Safe: false
63
63
  VersionAdded: '0.7'
64
+
65
+ Sevencop/RequireOrdered:
66
+ Description: |
67
+ Sort `require` and `require_relative` in alphabetical order.
68
+ Enabled: false
69
+ VersionAdded: '0.16'
70
+
71
+ Sevencop/RSpecExamplesInSameGroup:
72
+ Description: |
73
+ Combine examples in the same groups in the time-consuming kinds of specs.
74
+ Enabled: false
75
+ VersionAdded: '0.17'
76
+ Include:
77
+ - spec/controllers/**/*
78
+ - spec/requests/**/*
@@ -25,6 +25,8 @@ module RuboCop
25
25
 
26
26
  include RangeHelp
27
27
 
28
+ include ::Sevencop::CopConcerns::Ordered
29
+
28
30
  MSG = 'Sort `autoload` in alphabetical order.'
29
31
 
30
32
  RESTRICT_ON_SEND = %i[
@@ -32,14 +34,15 @@ module RuboCop
32
34
  ].freeze
33
35
 
34
36
  # @param node [RuboCop::AST::SendNode]
37
+ # @return [void]
35
38
  def on_send(node)
36
- previous_older_autoload = find_previous_older_autoload(node)
37
- return unless previous_older_autoload
39
+ previous_older_sibling = find_previous_older_sibling(node)
40
+ return unless previous_older_sibling
38
41
 
39
42
  add_offense(node) do |corrector|
40
43
  swap(
41
44
  range_by_whole_lines(
42
- previous_older_autoload.location.expression,
45
+ previous_older_sibling.location.expression,
43
46
  include_final_newline: true
44
47
  ),
45
48
  range_by_whole_lines(
@@ -54,12 +57,12 @@ module RuboCop
54
57
  private
55
58
 
56
59
  # @param node [RuboCop::AST::SendNode]
57
- # @return [RuboCop::AST::SendNode]
58
- def find_previous_older_autoload(node)
59
- node.left_siblings.find do |sibling|
60
- next unless sibling.send_type?
61
- next unless sibling.method?(:autoload)
62
- next unless in_same_section?(sibling, node)
60
+ # @return [RuboCop::AST::SendNode, nil]
61
+ def find_previous_older_sibling(node)
62
+ node.left_siblings.grep(::RuboCop::AST::Node).reverse.find do |sibling|
63
+ break unless sibling.send_type?
64
+ break unless sibling.method?(:autoload)
65
+ break unless in_same_section?(sibling, node)
63
66
 
64
67
  node.first_argument.source < sibling.first_argument.source
65
68
  end
@@ -68,7 +71,10 @@ module RuboCop
68
71
  # @param node1 [RuboCop::AST::SendNode]
69
72
  # @param node2 [RuboCop::AST::SendNode]
70
73
  # @return [Boolean]
71
- def in_same_section?(node1, node2)
74
+ def in_same_section?(
75
+ node1,
76
+ node2
77
+ )
72
78
  !node1.location.expression.with(
73
79
  end_pos: node2.location.expression.end_pos
74
80
  ).source.include?("\n\n")
@@ -77,7 +83,11 @@ module RuboCop
77
83
  # @param range1 [Paresr::Source::Range]
78
84
  # @param range2 [Paresr::Source::Range]
79
85
  # @param corrector [RuboCop::AST::Corrector]
80
- def swap(range1, range2, corrector:)
86
+ def swap(
87
+ range1,
88
+ range2,
89
+ corrector:
90
+ )
81
91
  corrector.insert_before(range1, range2.source)
82
92
  corrector.remove(range2)
83
93
  end
@@ -39,7 +39,10 @@ module RuboCop
39
39
  # @param corrector [RuboCop::AST::Corrector]
40
40
  # @param node [RuboCop::AST::ArgsNode]
41
41
  # @return [String]
42
- def autocorrect(corrector, node)
42
+ def autocorrect(
43
+ corrector,
44
+ node
45
+ )
43
46
  indent = ' ' * node.parent.location.expression.column
44
47
 
45
48
  corrector.replace(
@@ -30,9 +30,12 @@ module RuboCop
30
30
  include RangeHelp
31
31
  include VisibilityHelp
32
32
 
33
+ include ::Sevencop::CopConcerns::Ordered
34
+
33
35
  MSG = 'Sort method definition in alphabetical order.'
34
36
 
35
37
  # @param node [RuboCop::AST::DefNode]
38
+ # @return [void]
36
39
  def on_def(node)
37
40
  previous_older_sibling = find_previous_older_sibling(node)
38
41
  return unless previous_older_sibling
@@ -43,7 +46,8 @@ module RuboCop
43
46
  swap(
44
47
  range_with_comments_and_lines(previous_older_sibling),
45
48
  range_with_comments_and_lines(node),
46
- corrector: corrector
49
+ corrector: corrector,
50
+ newline: true
47
51
  )
48
52
  end
49
53
  end
@@ -52,7 +56,7 @@ module RuboCop
52
56
  private
53
57
 
54
58
  # @param node [RuboCop::AST::DefNode]
55
- # @return [RuboCop::AST::DefNode]
59
+ # @return [RuboCop::AST::DefNode, nil]
56
60
  def find_previous_older_sibling(node)
57
61
  previous_siblings_in_same_section_of(node).find do |sibling|
58
62
  next if sibling.type != node.type
@@ -64,33 +68,14 @@ module RuboCop
64
68
  # @param node [RuboCop::AST::Node]
65
69
  # @return [Array<RuboCop::AST::Node>]
66
70
  def previous_siblings_in_same_section_of(node)
67
- return node.left_siblings if node.defs_type?
71
+ siblings = node.left_siblings.grep(::RuboCop::AST::Node)
72
+ return siblings if node.defs_type?
68
73
 
69
- node.left_siblings.reverse.take_while do |sibling|
74
+ siblings.reverse.take_while do |sibling|
70
75
  !visibility_block?(sibling)
71
- end.reverse
72
- end
73
-
74
- # @param node [RuboCop::AST::Node]
75
- # @return [Paresr::Source::Range]
76
- def range_with_comments(node)
77
- comment = processed_source.ast_with_comments[node].first
78
- if comment
79
- node.location.expression.with(begin_pos: comment.location.expression.begin_pos)
80
- else
81
- node.location.expression
82
76
  end
83
77
  end
84
78
 
85
- # @param node [RuboCop::AST::Node]
86
- # @return [Parser::Source::Range]
87
- def range_with_comments_and_lines(node)
88
- range_by_whole_lines(
89
- range_with_comments(node),
90
- include_final_newline: true
91
- )
92
- end
93
-
94
79
  # @param node [RuboCop::AST::DefNode]
95
80
  # @return [#<=>]
96
81
  def sort_key_of(node)
@@ -99,17 +84,6 @@ module RuboCop
99
84
  node.method_name
100
85
  ]
101
86
  end
102
-
103
- # @param range1 [Paresr::Source::Range]
104
- # @param range2 [Paresr::Source::Range]
105
- # @param corrector [RuboCop::AST::Corrector]
106
- def swap(range1, range2, corrector:)
107
- corrector.insert_before(
108
- range1,
109
- "#{range2.source}\n"
110
- )
111
- corrector.remove(range2)
112
- end
113
87
  end
114
88
  end
115
89
  end
@@ -81,7 +81,10 @@ module RuboCop
81
81
 
82
82
  # @param [RuboCop::AST::Corrector] corrector
83
83
  # @param [RuboCop::AST::Node] node
84
- def autocorrect(corrector, node)
84
+ def autocorrect(
85
+ corrector,
86
+ node
87
+ )
85
88
  corrector.remove(
86
89
  node.location.expression.with(
87
90
  begin_pos: node.left_sibling.location.expression.end_pos
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Sevencop
6
+ # Sort `require` and `require_relative` in alphabetical order.
7
+ #
8
+ # @example
9
+ # # bad
10
+ # require 'b'
11
+ # require 'a'
12
+ #
13
+ # # good
14
+ # require 'a'
15
+ # require 'b'
16
+ #
17
+ # # bad
18
+ # require_relative 'b'
19
+ # require_relative 'a'
20
+ #
21
+ # # good
22
+ # require_relative 'a'
23
+ # require_relative 'b'
24
+ #
25
+ # # good
26
+ # require 'a'
27
+ # require 'd'
28
+ #
29
+ # require 'b'
30
+ # require 'c'
31
+ #
32
+ # # good
33
+ # require 'b'
34
+ # require_relative 'c'
35
+ # require 'a'
36
+ class RequireOrdered < Base
37
+ extend AutoCorrector
38
+
39
+ include RangeHelp
40
+
41
+ include ::Sevencop::CopConcerns::Ordered
42
+
43
+ RESTRICT_ON_SEND = %i[
44
+ require
45
+ require_relative
46
+ ].freeze
47
+
48
+ # @param node [RuboCop::AST::SendNode]
49
+ # @return [void]
50
+ def on_send(node)
51
+ previous_older_sibling = find_previous_older_sibling(node)
52
+ return unless previous_older_sibling
53
+
54
+ add_offense(
55
+ range_with_comments(node),
56
+ message: "Sort `#{node.method_name}` in alphabetical order."
57
+ ) do |corrector|
58
+ swap(
59
+ range_with_comments_and_lines(previous_older_sibling),
60
+ range_with_comments_and_lines(node),
61
+ corrector: corrector
62
+ )
63
+ end
64
+ end
65
+
66
+ private
67
+
68
+ # @param node [RuboCop::AST::SendNode]
69
+ # @return [RuboCop::AST::SendNode, nil]
70
+ def find_previous_older_sibling(node)
71
+ node.left_siblings.reverse.find do |sibling|
72
+ break unless sibling.send_type?
73
+ break if sibling.method_name != node.method_name
74
+ break unless in_same_section?(sibling, node)
75
+
76
+ node.first_argument.source < sibling.first_argument.source
77
+ end
78
+ end
79
+
80
+ # @param node1 [RuboCop::AST::SendNode]
81
+ # @param node2 [RuboCop::AST::SendNode]
82
+ # @return [Boolean]
83
+ def in_same_section?(
84
+ node1,
85
+ node2
86
+ )
87
+ !node1.location.expression.with(
88
+ end_pos: node2.location.expression.end_pos
89
+ ).source.include?("\n\n")
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Sevencop
6
+ # Combine examples in same group in the time-consuming kinds of specs.
7
+ #
8
+ # @example
9
+ #
10
+ # # bad
11
+ # context 'when user is logged in' do
12
+ # it 'returns 200' do
13
+ # subject
14
+ # expect(response).to have_http_status(200)
15
+ # end
16
+ #
17
+ # it 'creates Foo' do
18
+ # expect { subject }.to change(Foo, :count).by(1)
19
+ # end
20
+ # end
21
+ #
22
+ # # good
23
+ # context 'when user is logged in' do
24
+ # it 'creates Foo and returns 200' do
25
+ # expect { subject }.to change(Foo, :count).by(1)
26
+ # expect(response).to have_http_status(200)
27
+ # end
28
+ # end
29
+ #
30
+ class RSpecExamplesInSameGroup < Base
31
+ extend AutoCorrector
32
+
33
+ EXAMPLE_METHOD_NAMES_REGULAR = ::Set[
34
+ :it,
35
+ :its,
36
+ :specify,
37
+ :example,
38
+ :scenario,
39
+ ].freeze
40
+
41
+ MSG = 'Combine examples in the same group in the time-consuming kinds of specs.'
42
+
43
+ # @param node [RuboCop::AST::BlockNode]
44
+ # @return [void]
45
+ def on_block(node)
46
+ return unless example?(node)
47
+
48
+ previous_sibling_example = previous_sibling_example_of(node)
49
+ return unless previous_sibling_example
50
+
51
+ add_offense(node)
52
+ end
53
+ alias on_numblock on_block
54
+
55
+ private
56
+
57
+ # @!method example?(node)
58
+ # @param node [RuboCop::AST::Node]
59
+ # @return [Boolean]
60
+ def_node_matcher :example?, <<~PATTERN
61
+ (block
62
+ (send nil? EXAMPLE_METHOD_NAMES_REGULAR ...)
63
+ ...
64
+ )
65
+ PATTERN
66
+
67
+ # @param node [RuboCop::AST::BlockNode]
68
+ # @return [RuboCop::AST::BlockNode, nil]
69
+ def previous_sibling_example_of(node)
70
+ node.left_siblings.find do |sibling|
71
+ sibling.is_a?(::RuboCop::AST::Node) && example?(sibling)
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sevencop
4
+ module CopConcerns
5
+ module Ordered
6
+ private
7
+
8
+ # @param node [RuboCop::AST::Node]
9
+ # @return [Paresr::Source::Range]
10
+ def range_with_comments(node)
11
+ comment = processed_source.ast_with_comments[node].first
12
+ if comment
13
+ node.location.expression.with(begin_pos: comment.location.expression.begin_pos)
14
+ else
15
+ node.location.expression
16
+ end
17
+ end
18
+
19
+ # @param node [RuboCop::AST::Node]
20
+ # @return [Parser::Source::Range]
21
+ def range_with_comments_and_lines(node)
22
+ range_by_whole_lines(
23
+ range_with_comments(node),
24
+ include_final_newline: true
25
+ )
26
+ end
27
+
28
+ # @param range1 [Paresr::Source::Range]
29
+ # @param range2 [Paresr::Source::Range]
30
+ # @param corrector [RuboCop::AST::Corrector]
31
+ # @param newline [Boolean]
32
+ def swap(
33
+ range1,
34
+ range2,
35
+ corrector:,
36
+ newline: false
37
+ )
38
+ inserted = range2.source
39
+ inserted += "\n" if newline
40
+ corrector.insert_before(range1, inserted)
41
+ corrector.remove(range2)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sevencop
4
+ module CopConcerns
5
+ autoload :Ordered, 'sevencop/cop_concerns/ordered'
6
+ end
7
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sevencop
4
- VERSION = '0.15.0'
4
+ VERSION = '0.17.0'
5
5
  end
data/lib/sevencop.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'sevencop/cop_concerns'
3
4
  require_relative 'sevencop/rubocop_extension'
4
5
  require_relative 'sevencop/version'
5
6
 
@@ -13,3 +14,5 @@ require_relative 'rubocop/cop/sevencop/rails_inferred_spec_type'
13
14
  require_relative 'rubocop/cop/sevencop/rails_order_field'
14
15
  require_relative 'rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity'
15
16
  require_relative 'rubocop/cop/sevencop/rails_where_not'
17
+ require_relative 'rubocop/cop/sevencop/require_ordered'
18
+ require_relative 'rubocop/cop/sevencop/rspec_examples_in_same_group'
data/sevencop.gemspec CHANGED
@@ -8,15 +8,14 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ['Ryo Nakamura']
9
9
  spec.email = ['r7kamura@gmail.com']
10
10
 
11
- spec.summary = 'Custom cops for RuboCop.'
11
+ spec.summary = 'Opinionated custom cops for RuboCop.'
12
12
  spec.homepage = 'https://github.com/r7kamura/sevencop'
13
13
  spec.license = 'MIT'
14
14
  spec.required_ruby_version = '>= 2.6.0'
15
15
 
16
16
  spec.metadata['homepage_uri'] = spec.homepage
17
17
  spec.metadata['source_code_uri'] = spec.homepage
18
- spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/main/CHANGELOG.md"
19
- spec.metadata['rubygems_mfa_required'] = 'true'
18
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/releases"
20
19
 
21
20
  # Specify which files should be added to the gem when it is released.
22
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sevencop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-27 00:00:00.000000000 Z
11
+ date: 2022-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -51,8 +51,12 @@ files:
51
51
  - lib/rubocop/cop/sevencop/rails_order_field.rb
52
52
  - lib/rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity.rb
53
53
  - lib/rubocop/cop/sevencop/rails_where_not.rb
54
+ - lib/rubocop/cop/sevencop/require_ordered.rb
55
+ - lib/rubocop/cop/sevencop/rspec_examples_in_same_group.rb
54
56
  - lib/sevencop.rb
55
57
  - lib/sevencop/config_loader.rb
58
+ - lib/sevencop/cop_concerns.rb
59
+ - lib/sevencop/cop_concerns/ordered.rb
56
60
  - lib/sevencop/rubocop_extension.rb
57
61
  - lib/sevencop/version.rb
58
62
  - sevencop.gemspec
@@ -62,8 +66,7 @@ licenses:
62
66
  metadata:
63
67
  homepage_uri: https://github.com/r7kamura/sevencop
64
68
  source_code_uri: https://github.com/r7kamura/sevencop
65
- changelog_uri: https://github.com/r7kamura/sevencop/blob/main/CHANGELOG.md
66
- rubygems_mfa_required: 'true'
69
+ changelog_uri: https://github.com/r7kamura/sevencop/releases
67
70
  post_install_message:
68
71
  rdoc_options: []
69
72
  require_paths:
@@ -82,5 +85,5 @@ requirements: []
82
85
  rubygems_version: 3.3.7
83
86
  signing_key:
84
87
  specification_version: 4
85
- summary: Custom cops for RuboCop.
88
+ summary: Opinionated custom cops for RuboCop.
86
89
  test_files: []