sevencop 0.14.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b95d5ba5dafb534e8e3a9e5c49bd9724db92840e1ca00543251c48a6b0f74f5
4
- data.tar.gz: c6f7822017c94416417238387b5e16b76b00e401a8819a27c0d6df40ac1373c2
3
+ metadata.gz: c55fa975db18f38f073127cff1b736321d599328040959966ca3c7ee68e576f4
4
+ data.tar.gz: a976b6455cf9083a81dca72c0ecd2b7df79e963ca1fd49124d6c756799975ee3
5
5
  SHA512:
6
- metadata.gz: 131bb0495d50ebd37c0c03aa81b22d79d3488d8428697cd3af4263342f884b1857363920c40fa6794ba99e1de3e118bf94cf205cee96cc0aad77525f040072ee
7
- data.tar.gz: f49be306dde9d6fda9db8d79a653c7814a4b43059265ceaf42fb4bbad2eee61fe112cb0ad56cdb152f626c26da9b54302f89f51f98652aa5ef37574ffcb06d45
6
+ metadata.gz: 8f9f873aead1ae719deb96b16f46850fb8daa55a81dbb7709f548352b624bffdb34f639176f5580bbc25bd279c8acd679b175b0a9755c89260c23ef303975a18
7
+ data.tar.gz: 43e716bfb540bfa7a607aeefae2bef61334518b636d277fcff4155af7145734d17f6eec10494a72b09e40b3d6736175f28b84db18091f89dad4c179bd5479320
data/.rubocop.yml CHANGED
@@ -26,6 +26,18 @@ RSpec/ExampleLength:
26
26
  RSpec/MultipleExpectations:
27
27
  Enabled: false
28
28
 
29
+ Sevencop/AutoloadOrdered:
30
+ Enabled: true
31
+
32
+ Sevencop/HashElementOrdered:
33
+ Enabled: true
34
+
35
+ Sevencop/MethodDefinitionArgumentsMultiline:
36
+ Enabled: true
37
+
38
+ Sevencop/MethodDefinitionKeywordArgumentOrdered:
39
+ Enabled: true
40
+
29
41
  Sevencop/MethodDefinitionOrdered:
30
42
  Enabled: true
31
43
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sevencop (0.14.0)
4
+ sevencop (0.16.0)
5
5
  rubocop
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -2,58 +2,42 @@
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/BelongsToOptional:
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
- - [Sevencop/BelongsToOptional](lib/rubocop/cop/sevencop/belongs_to_optional.rb)
31
+ - [Sevencop/AutoloadOrdered](lib/rubocop/cop/sevencop/autoload_ordered.rb)
50
32
  - [Sevencop/HashElementOrdered](lib/rubocop/cop/sevencop/hash_element_ordered.rb)
51
- - [Sevencop/InferredSpecType](lib/rubocop/cop/sevencop/inferred_spec_type.rb)
52
33
  - [Sevencop/MethodDefinitionArgumentsMultiline](lib/rubocop/cop/sevencop/method_definition_arguments_multiline.rb)
53
- - [Sevencop/MethodDefinitionKeywordArgumentsOrdered](lib/rubocop/cop/sevencop/method_definition_keyword_arguments_ordered.rb)
34
+ - [Sevencop/MethodDefinitionKeywordArgumentOrdered](lib/rubocop/cop/sevencop/method_definition_keyword_argument_ordered.rb)
54
35
  - [Sevencop/MethodDefinitionOrdered](lib/rubocop/cop/sevencop/method_definition_ordered.rb)
55
- - [Sevencop/OrderField](lib/rubocop/cop/sevencop/order_field.rb)
56
- - [Sevencop/UniquenessValidatorExplicitCaseSensitivity](lib/rubocop/cop/sevencop/uniqueness_validator_explicit_case_sensitivity.rb)
57
- - [Sevencop/WhereNot](lib/rubocop/cop/sevencop/where_not.rb)
36
+ - [Sevencop/RailsBelongsToOptional](lib/rubocop/cop/sevencop/rails_belongs_to_optional.rb)
37
+ - [Sevencop/RailsInferredSpecType](lib/rubocop/cop/sevencop/rails_inferred_spec_type.rb)
38
+ - [Sevencop/RailsOrderField](lib/rubocop/cop/sevencop/rails_order_field.rb)
39
+ - [Sevencop/RailsUniquenessValidatorExplicitCaseSensitivity](lib/rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity.rb)
40
+ - [Sevencop/RailsWhereNot](lib/rubocop/cop/sevencop/rails_where_not.rb)
41
+ - [Sevencop/RequireOrdered](lib/rubocop/cop/sevencop/require_ordered.rb)
58
42
 
59
43
  Note that all cops are `Enabled: false` by default.
data/config/default.yml CHANGED
@@ -4,25 +4,12 @@ Sevencop/AutoloadOrdered:
4
4
  Enabled: false
5
5
  VersionAdded: '0.12'
6
6
 
7
- Sevencop/BelongsToOptional:
8
- Description: |
9
- Force `belongs_to` with `optional: true` option.
10
- Enabled: false
11
- Safe: false
12
- VersionAdded: '0.5'
13
-
14
7
  Sevencop/HashElementOrdered:
15
8
  Description: |
16
9
  Sort Hash elements by key.
17
10
  Enabled: false
18
11
  VersionAdded: '0.6'
19
12
 
20
- Sevencop/InferredSpecType:
21
- Description: |
22
- Identifies redundant spec type.
23
- Enabled: false
24
- VersionAdded: '0.9'
25
-
26
13
  Sevencop/MethodDefinitionArgumentsMultiline:
27
14
  Description: |
28
15
  Inserts new lines between method definition arguments.
@@ -35,29 +22,48 @@ Sevencop/MethodDefinitionOrdered:
35
22
  Enabled: false
36
23
  VersionAdded: '0.14'
37
24
 
38
- Sevencop/MethodDefinitionKeywordArgumentsOrdered:
25
+ Sevencop/MethodDefinitionKeywordArgumentOrdered:
39
26
  Description: |
40
27
  Sort method definition keyword arguments in alphabetical order.
41
28
  Enabled: false
42
29
  VersionAdded: '0.13'
43
30
 
44
- Sevencop/OrderField:
31
+ Sevencop/RailsBelongsToOptional:
32
+ Description: |
33
+ Force `belongs_to` with `optional: true` option.
34
+ Enabled: false
35
+ Safe: false
36
+ VersionAdded: '0.5'
37
+
38
+ Sevencop/RailsInferredSpecType:
39
+ Description: |
40
+ Identifies redundant spec type.
41
+ Enabled: false
42
+ VersionAdded: '0.9'
43
+
44
+ Sevencop/RailsOrderField:
45
45
  Description: |
46
46
  Wrap safe SQL String by `Arel.sql`.
47
47
  Enabled: false
48
48
  Safe: false
49
49
  VersionAdded: '0.4'
50
50
 
51
- Sevencop/UniquenessValidatorExplicitCaseSensitivity:
51
+ Sevencop/RailsUniquenessValidatorExplicitCaseSensitivity:
52
52
  Description: |
53
53
  Specify :case_sensitivity option on use of UniquenessValidator.
54
54
  Enabled: false
55
55
  Safe: false
56
56
  VersionAdded: '0.3'
57
57
 
58
- Sevencop/WhereNot:
58
+ Sevencop/RailsWhereNot:
59
59
  Description: |
60
60
  Identifies passing multi-elements Hash literal to `where.not`.
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'
@@ -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(
@@ -17,7 +17,7 @@ module RuboCop
17
17
  #
18
18
  # # good
19
19
  # def foo(c:, d:, a: 2, b: 1); end
20
- class MethodDefinitionKeywordArgumentsOrdered < Base
20
+ class MethodDefinitionKeywordArgumentOrdered < Base
21
21
  extend AutoCorrector
22
22
 
23
23
  MSG = 'Sort method definition keyword arguments in alphabetical order.'
@@ -30,24 +30,24 @@ 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
39
42
 
40
- add_offense(node) do |corrector|
43
+ add_offense(
44
+ range_with_comments(node)
45
+ ) do |corrector|
41
46
  swap(
42
- range_by_whole_lines(
43
- range_with_comments(previous_older_sibling),
44
- include_final_newline: true
45
- ),
46
- range_by_whole_lines(
47
- range_with_comments(node),
48
- include_final_newline: true
49
- ),
50
- corrector: corrector
47
+ range_with_comments_and_lines(previous_older_sibling),
48
+ range_with_comments_and_lines(node),
49
+ corrector: corrector,
50
+ newline: true
51
51
  )
52
52
  end
53
53
  end
@@ -56,7 +56,7 @@ module RuboCop
56
56
  private
57
57
 
58
58
  # @param node [RuboCop::AST::DefNode]
59
- # @return [RuboCop::AST::DefNode]
59
+ # @return [RuboCop::AST::DefNode, nil]
60
60
  def find_previous_older_sibling(node)
61
61
  previous_siblings_in_same_section_of(node).find do |sibling|
62
62
  next if sibling.type != node.type
@@ -68,21 +68,11 @@ module RuboCop
68
68
  # @param node [RuboCop::AST::Node]
69
69
  # @return [Array<RuboCop::AST::Node>]
70
70
  def previous_siblings_in_same_section_of(node)
71
- return node.left_siblings if node.defs_type?
71
+ siblings = node.left_siblings.grep(::RuboCop::AST::Node)
72
+ return siblings if node.defs_type?
72
73
 
73
- node.left_siblings.reverse.take_while do |sibling|
74
+ siblings.reverse.take_while do |sibling|
74
75
  !visibility_block?(sibling)
75
- end.reverse
76
- end
77
-
78
- # @param node [RuboCop::AST::Node]
79
- # @return [Paresr::Source::Range]
80
- def range_with_comments(node)
81
- comment = processed_source.ast_with_comments[node].first
82
- if comment
83
- node.location.expression.with(begin_pos: comment.location.expression.begin_pos)
84
- else
85
- node.location.expression
86
76
  end
87
77
  end
88
78
 
@@ -94,17 +84,6 @@ module RuboCop
94
84
  node.method_name
95
85
  ]
96
86
  end
97
-
98
- # @param range1 [Paresr::Source::Range]
99
- # @param range2 [Paresr::Source::Range]
100
- # @param corrector [RuboCop::AST::Corrector]
101
- def swap(range1, range2, corrector:)
102
- corrector.insert_before(
103
- range1,
104
- "#{range2.source}\n"
105
- )
106
- corrector.remove(range2)
107
- end
108
87
  end
109
88
  end
110
89
  end
@@ -19,7 +19,7 @@ module RuboCop
19
19
  # # good (We cannot identify offenses in this case.)
20
20
  # belongs_to :group, options
21
21
  #
22
- class BelongsToOptional < Base
22
+ class RailsBelongsToOptional < Base
23
23
  extend AutoCorrector
24
24
 
25
25
  MSG = 'Specify :optional option.'
@@ -20,7 +20,7 @@ module RuboCop
20
20
  # # spec/models/user_spec.rb
21
21
  # RSpec.describe User, type: :request
22
22
  #
23
- class InferredSpecType < Base
23
+ class RailsInferredSpecType < Base
24
24
  extend AutoCorrector
25
25
 
26
26
  # @return [Array<Hash>]
@@ -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
@@ -22,7 +22,7 @@ module RuboCop
22
22
  # # good
23
23
  # reorder(Arel.sql('field(id, ?)'), a)
24
24
  #
25
- class OrderField < Base
25
+ class RailsOrderField < Base
26
26
  extend AutoCorrector
27
27
 
28
28
  MSG = 'Wrap safe SQL String by `Arel.sql`.'
@@ -26,7 +26,7 @@ module RuboCop
26
26
  # # good
27
27
  # validates :name, uniqueness: { allow_nil: true, scope: :user_id, case_sensitive: true }
28
28
  #
29
- class UniquenessValidatorExplicitCaseSensitivity < Base
29
+ class RailsUniquenessValidatorExplicitCaseSensitivity < Base
30
30
  extend AutoCorrector
31
31
 
32
32
  MSG = 'Specify :case_sensitivity option on use of UniquenessValidator.'
@@ -13,13 +13,13 @@ module RuboCop
13
13
  # # good
14
14
  # where.not(key1: value1).where.not(key2: value2)
15
15
  #
16
- class WhereNot < Base
16
+ class RailsWhereNot < Base
17
17
  extend AutoCorrector
18
18
 
19
19
  MSG = 'Use `where.not(key1: value1).where.not(key2: value2)` style.'
20
20
 
21
- # @!method where_not_with_multiple_elements_hash?(node)
22
- def_node_matcher :where_not_with_multiple_elements_hash?, <<~PATTERN
21
+ # @!method rails_where_not_with_multiple_elements_hash?(node)
22
+ def_node_matcher :rails_where_not_with_multiple_elements_hash?, <<~PATTERN
23
23
  (send
24
24
  (send _ :where) :not
25
25
  ({ hash | kwargs }
@@ -28,7 +28,7 @@ module RuboCop
28
28
  PATTERN
29
29
 
30
30
  def on_send(node)
31
- return unless where_not_with_multiple_elements_hash?(node)
31
+ return unless rails_where_not_with_multiple_elements_hash?(node)
32
32
 
33
33
  add_offense(node) do |corrector|
34
34
  pairs = node.children[2].children
@@ -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,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.14.0'
4
+ VERSION = '0.16.0'
5
5
  end
data/lib/sevencop.rb CHANGED
@@ -1,15 +1,17 @@
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
 
6
7
  require_relative 'rubocop/cop/sevencop/autoload_ordered'
7
- require_relative 'rubocop/cop/sevencop/belongs_to_optional'
8
8
  require_relative 'rubocop/cop/sevencop/hash_element_ordered'
9
- require_relative 'rubocop/cop/sevencop/inferred_spec_type'
10
9
  require_relative 'rubocop/cop/sevencop/method_definition_arguments_multiline'
11
- require_relative 'rubocop/cop/sevencop/method_definition_keyword_arguments_ordered'
10
+ require_relative 'rubocop/cop/sevencop/method_definition_keyword_argument_ordered'
12
11
  require_relative 'rubocop/cop/sevencop/method_definition_ordered'
13
- require_relative 'rubocop/cop/sevencop/order_field'
14
- require_relative 'rubocop/cop/sevencop/uniqueness_validator_explicit_case_sensitivity'
15
- require_relative 'rubocop/cop/sevencop/where_not'
12
+ require_relative 'rubocop/cop/sevencop/rails_belongs_to_optional'
13
+ require_relative 'rubocop/cop/sevencop/rails_inferred_spec_type'
14
+ require_relative 'rubocop/cop/sevencop/rails_order_field'
15
+ require_relative 'rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity'
16
+ require_relative 'rubocop/cop/sevencop/rails_where_not'
17
+ require_relative 'rubocop/cop/sevencop/require_ordered'
data/sevencop.gemspec CHANGED
@@ -8,14 +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"
18
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/releases"
19
19
  spec.metadata['rubygems_mfa_required'] = 'true'
20
20
 
21
21
  # Specify which files should be added to the gem when it is released.
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.14.0
4
+ version: 0.16.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-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -42,17 +42,20 @@ files:
42
42
  - Rakefile
43
43
  - config/default.yml
44
44
  - lib/rubocop/cop/sevencop/autoload_ordered.rb
45
- - lib/rubocop/cop/sevencop/belongs_to_optional.rb
46
45
  - lib/rubocop/cop/sevencop/hash_element_ordered.rb
47
- - lib/rubocop/cop/sevencop/inferred_spec_type.rb
48
46
  - lib/rubocop/cop/sevencop/method_definition_arguments_multiline.rb
49
- - lib/rubocop/cop/sevencop/method_definition_keyword_arguments_ordered.rb
47
+ - lib/rubocop/cop/sevencop/method_definition_keyword_argument_ordered.rb
50
48
  - lib/rubocop/cop/sevencop/method_definition_ordered.rb
51
- - lib/rubocop/cop/sevencop/order_field.rb
52
- - lib/rubocop/cop/sevencop/uniqueness_validator_explicit_case_sensitivity.rb
53
- - lib/rubocop/cop/sevencop/where_not.rb
49
+ - lib/rubocop/cop/sevencop/rails_belongs_to_optional.rb
50
+ - lib/rubocop/cop/sevencop/rails_inferred_spec_type.rb
51
+ - lib/rubocop/cop/sevencop/rails_order_field.rb
52
+ - lib/rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity.rb
53
+ - lib/rubocop/cop/sevencop/rails_where_not.rb
54
+ - lib/rubocop/cop/sevencop/require_ordered.rb
54
55
  - lib/sevencop.rb
55
56
  - lib/sevencop/config_loader.rb
57
+ - lib/sevencop/cop_concerns.rb
58
+ - lib/sevencop/cop_concerns/ordered.rb
56
59
  - lib/sevencop/rubocop_extension.rb
57
60
  - lib/sevencop/version.rb
58
61
  - sevencop.gemspec
@@ -62,7 +65,7 @@ licenses:
62
65
  metadata:
63
66
  homepage_uri: https://github.com/r7kamura/sevencop
64
67
  source_code_uri: https://github.com/r7kamura/sevencop
65
- changelog_uri: https://github.com/r7kamura/sevencop/blob/main/CHANGELOG.md
68
+ changelog_uri: https://github.com/r7kamura/sevencop/releases
66
69
  rubygems_mfa_required: 'true'
67
70
  post_install_message:
68
71
  rdoc_options: []
@@ -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: []