sevencop 0.34.0 → 0.35.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: 33aea941e4f044a45b702d9c9e700c1d9a42aa5f4f44819e506e83b9b939849b
4
- data.tar.gz: 83f1c6d8f55256f5a6f89a9cbc632efe084b6acd70cdbc2aaef4f6c7a339fbdd
3
+ metadata.gz: 2931983d77f0150cab0d7dc492a651fb89ddf689138898445b92b8d355d58d09
4
+ data.tar.gz: f2b9309bb927cae02589660e9fa9d1d25713bd91b34937e721b80d505c0a819c
5
5
  SHA512:
6
- metadata.gz: dc6b9622262cee943fe8d5274155ea7a3d5c46948d3f5b22c3f6b651e37b032eeaa6f3c63757de06e347c4d3fbcab22723ca612c4acb28445662671ca5f5dae9
7
- data.tar.gz: 3e4400c2c7c2b63c7f0733888e05793f5c752d59771aae2308d5a19164d177843296a31bfecfef4b2d789cc998a172df4973412c4a8eb04d658e6366ba669cbe
6
+ metadata.gz: 7fd6884d56779944c0caf4c2fee1f860494629b5f34eb344bac567de7a02e268ca8e8cf13064df2c42288698a8c2b8f296540c6e3a9d4b8fdab2def647c410d9
7
+ data.tar.gz: 1dd9b63de192c1291ceafc4b72e12fae92274c4de86076d5756fda6046f3816811cd245c7a1f5fdce555b707c5fb63bb307a9d74e3e2f9fc37bcf2aafdd8271e
data/.rubocop.yml CHANGED
@@ -58,11 +58,11 @@ Sevencop/MethodDefinitionKeywordArgumentOrdered:
58
58
  Sevencop/MethodDefinitionOrdered:
59
59
  Enabled: true
60
60
 
61
- Sevencop/RequireOrdered:
62
- Enabled: true
63
-
64
61
  Style/Documentation:
65
62
  Enabled: false
66
63
 
67
64
  Style/MultilineBlockChain:
68
65
  Enabled: false
66
+
67
+ Style/RequireOrder:
68
+ Enabled: true
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sevencop (0.34.0)
4
+ sevencop (0.35.0)
5
5
  activesupport
6
6
  rubocop
7
7
 
@@ -20,49 +20,52 @@ GEM
20
20
  concurrent-ruby (~> 1.0)
21
21
  json (2.6.3)
22
22
  minitest (5.18.0)
23
- parallel (1.22.1)
24
- parser (3.2.0.0)
23
+ parallel (1.23.0)
24
+ parser (3.2.2.1)
25
25
  ast (~> 2.4.1)
26
26
  rainbow (3.1.1)
27
27
  rake (13.0.6)
28
- regexp_parser (2.7.0)
28
+ regexp_parser (2.8.0)
29
29
  rexml (3.2.5)
30
30
  rspec (3.12.0)
31
31
  rspec-core (~> 3.12.0)
32
32
  rspec-expectations (~> 3.12.0)
33
33
  rspec-mocks (~> 3.12.0)
34
- rspec-core (3.12.1)
34
+ rspec-core (3.12.2)
35
35
  rspec-support (~> 3.12.0)
36
- rspec-expectations (3.12.2)
36
+ rspec-expectations (3.12.3)
37
37
  diff-lcs (>= 1.2.0, < 2.0)
38
38
  rspec-support (~> 3.12.0)
39
- rspec-mocks (3.12.3)
39
+ rspec-mocks (3.12.5)
40
40
  diff-lcs (>= 1.2.0, < 2.0)
41
41
  rspec-support (~> 3.12.0)
42
42
  rspec-support (3.12.0)
43
- rubocop (1.45.1)
43
+ rubocop (1.50.2)
44
44
  json (~> 2.3)
45
45
  parallel (~> 1.10)
46
46
  parser (>= 3.2.0.0)
47
47
  rainbow (>= 2.2.2, < 4.0)
48
48
  regexp_parser (>= 1.8, < 3.0)
49
49
  rexml (>= 3.2.5, < 4.0)
50
- rubocop-ast (>= 1.24.1, < 2.0)
50
+ rubocop-ast (>= 1.28.0, < 2.0)
51
51
  ruby-progressbar (~> 1.7)
52
52
  unicode-display_width (>= 2.4.0, < 3.0)
53
- rubocop-ast (1.24.1)
54
- parser (>= 3.1.1.0)
55
- rubocop-capybara (2.17.0)
53
+ rubocop-ast (1.28.1)
54
+ parser (>= 3.2.1.0)
55
+ rubocop-capybara (2.18.0)
56
56
  rubocop (~> 1.41)
57
- rubocop-performance (1.16.0)
57
+ rubocop-factory_bot (2.22.0)
58
+ rubocop (~> 1.33)
59
+ rubocop-performance (1.17.1)
58
60
  rubocop (>= 1.7.0, < 2.0)
59
61
  rubocop-ast (>= 0.4.0)
60
62
  rubocop-rake (0.6.0)
61
63
  rubocop (~> 1.0)
62
- rubocop-rspec (2.18.1)
64
+ rubocop-rspec (2.22.0)
63
65
  rubocop (~> 1.33)
64
66
  rubocop-capybara (~> 2.17)
65
- ruby-progressbar (1.11.0)
67
+ rubocop-factory_bot (~> 2.22)
68
+ ruby-progressbar (1.13.0)
66
69
  tzinfo (2.0.6)
67
70
  concurrent-ruby (~> 1.0)
68
71
  unicode-display_width (2.4.2)
data/README.md CHANGED
@@ -29,7 +29,6 @@ Note that all cops are `Enabled: false` by default.
29
29
  ## Cops
30
30
 
31
31
  - [Sevencop/AutoloadOrdered](lib/rubocop/cop/sevencop/autoload_ordered.rb)
32
- - [Sevencop/ConstantBase](lib/rubocop/cop/sevencop/constant_base.rb)
33
32
  - [Sevencop/FactoryBotAssociationOption](lib/rubocop/cop/sevencop/factory_bot_association_option.rb)
34
33
  - [Sevencop/FactoryBotAssociationStyle](lib/rubocop/cop/sevencop/factory_bot_association_style.rb)
35
34
  - [Sevencop/HashElementOrdered](lib/rubocop/cop/sevencop/hash_element_ordered.rb)
@@ -44,7 +43,6 @@ Note that all cops are `Enabled: false` by default.
44
43
  - [Sevencop/RailsSpecificActionName](lib/rubocop/cop/sevencop/rails_specific_action_name.rb)
45
44
  - [Sevencop/RailsUniquenessValidatorExplicitCaseSensitivity](lib/rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity.rb)
46
45
  - [Sevencop/RailsWhereNot](lib/rubocop/cop/sevencop/rails_where_not.rb)
47
- - [Sevencop/RequireOrdered](lib/rubocop/cop/sevencop/require_ordered.rb)
48
46
  - [Sevencop/RSpecDescribeHttpEndpoint](lib/rubocop/cop/sevencop/rspec_describe_http_endpoint.rb)
49
47
  - [Sevencop/RSpecEmptyLineAfterLet](lib/rubocop/cop/sevencop/rspec_empty_line_after_let.rb)
50
48
  - [Sevencop/RSpecExamplesInSameGroup](lib/rubocop/cop/sevencop/rspec_examples_in_same_group.rb)
data/config/default.yml CHANGED
@@ -4,11 +4,6 @@ Sevencop/AutoloadOrdered:
4
4
  Enabled: false
5
5
  Safe: false
6
6
 
7
- Sevencop/ConstantBase:
8
- Description: |
9
- Avoid unnecessary `::` prefix on constant.
10
- Enabled: false
11
-
12
7
  Sevencop/FactoryBotAssociationOption:
13
8
  Description: |
14
9
  Avoid redundant options on FactoryBot associations.
@@ -116,12 +111,6 @@ Sevencop/RailsWhereNot:
116
111
  Enabled: false
117
112
  Safe: false
118
113
 
119
- Sevencop/RequireOrdered:
120
- Description: |
121
- Sort `require` and `require_relative` in alphabetical order.
122
- Enabled: false
123
- Safe: false
124
-
125
114
  Sevencop/RSpecDescribeHttpEndpoint:
126
115
  Description: |
127
116
  Pass HTTP endpoint identifier (e.g. `GET /users`) to top-level `describe` on request-specs.
@@ -69,8 +69,8 @@ module RuboCop
69
69
  node1,
70
70
  node2
71
71
  )
72
- !node1.location.expression.with(
73
- end_pos: node2.location.expression.end_pos
72
+ !node1.source_range.with(
73
+ end_pos: node2.source_range.end_pos
74
74
  ).source.include?("\n\n")
75
75
  end
76
76
 
@@ -76,7 +76,7 @@ module RuboCop
76
76
  corrector.remove(
77
77
  range_with_surrounding_comma(
78
78
  range_with_surrounding_space(
79
- node.location.expression,
79
+ node.source_range,
80
80
  side: :left
81
81
  ),
82
82
  :left
@@ -95,7 +95,7 @@ module RuboCop
95
95
  def whitespace_between(node)
96
96
  if node.pairs.length >= 2
97
97
  processed_source.raw_source[
98
- node.pairs[0].location.expression.end_pos + 1...node.pairs[1].location.expression.begin_pos
98
+ node.pairs[0].source_range.end_pos + 1...node.pairs[1].source_range.begin_pos
99
99
  ]
100
100
  else
101
101
  ' '
@@ -108,7 +108,7 @@ module RuboCop
108
108
  # ^^^^
109
109
  def whitespace_leading(node)
110
110
  processed_source.raw_source[
111
- node.location.expression.begin.end_pos + offset_for(node)...node.pairs[0].location.expression.begin_pos
111
+ node.source_range.begin.end_pos + offset_for(node)...node.pairs[0].source_range.begin_pos
112
112
  ]
113
113
  end
114
114
 
@@ -118,7 +118,7 @@ module RuboCop
118
118
  # ^^
119
119
  def whitespace_trailing(node)
120
120
  processed_source.raw_source[
121
- node.pairs[-1].location.expression.end_pos...node.location.expression.end.begin_pos - offset_for(node)
121
+ node.pairs[-1].source_range.end_pos...node.source_range.end.begin_pos - offset_for(node)
122
122
  ]
123
123
  end
124
124
  end
@@ -44,10 +44,10 @@ module RuboCop
44
44
  corrector,
45
45
  node
46
46
  )
47
- indent = ' ' * node.parent.location.expression.column
47
+ indent = ' ' * node.parent.source_range.column
48
48
 
49
49
  corrector.replace(
50
- node.location.expression.with(
50
+ node.source_range.with(
51
51
  begin_pos: node.parent.location.name.end_pos
52
52
  ),
53
53
  [
@@ -67,7 +67,7 @@ module RuboCop
67
67
  # @return [Boolean]
68
68
  def multilined?(node)
69
69
  node.children.map do |child|
70
- child.location.expression.line
70
+ child.source_range.line
71
71
  end.uniq.length == node.children.length
72
72
  end
73
73
  end
@@ -87,9 +87,7 @@ module RuboCop
87
87
  ranges = [
88
88
  node,
89
89
  *processed_source.ast_with_comments[node]
90
- ].map do |element|
91
- element.location.expression
92
- end
90
+ ].map(&:source_range)
93
91
  ranges.reduce do |result, range|
94
92
  add_range(result, range)
95
93
  end
@@ -33,8 +33,8 @@ module RuboCop
33
33
  "#{node.source}, "
34
34
  )
35
35
  corrector.remove(
36
- node.location.expression.with(
37
- begin_pos: node.left_sibling.location.expression.end_pos
36
+ node.source_range.with(
37
+ begin_pos: node.left_sibling.source_range.end_pos
38
38
  )
39
39
  )
40
40
  end
@@ -767,7 +767,7 @@ module RuboCop
767
767
  with:
768
768
  )
769
769
  corrector.replace(
770
- node.location.expression.with(
770
+ node.source_range.with(
771
771
  begin_pos: node.each_descendant(:const).first.location.name.begin_pos
772
772
  ),
773
773
  with
@@ -177,7 +177,7 @@ module RuboCop
177
177
  # @param node [RuboCop::AST::SendNode]
178
178
  # @return [Parser::Source::Range]
179
179
  def convert_to_autocorrected_range(node)
180
- node.location.expression.with(
180
+ node.source_range.with(
181
181
  begin_pos: node.location.selector.begin_pos
182
182
  )
183
183
  end
@@ -78,12 +78,12 @@ module RuboCop
78
78
  add_offense(uniqueness_value) do |corrector|
79
79
  if uniqueness_value.true_type?
80
80
  corrector.replace(
81
- uniqueness_value.source_range,
81
+ uniqueness_value,
82
82
  '{ case_sensitive: true }'
83
83
  )
84
84
  else
85
85
  corrector.insert_after(
86
- uniqueness_value.pairs.last.source_range,
86
+ uniqueness_value.pairs.last,
87
87
  ', case_sensitive: true'
88
88
  )
89
89
  end
@@ -32,11 +32,11 @@ module RuboCop
32
32
 
33
33
  add_offense(node) do |corrector|
34
34
  pairs = node.children[2].children
35
- last_end_pos = pairs[0].location.expression.end_pos
35
+ last_end_pos = pairs[0].source_range.end_pos
36
36
  pairs[1..].each do |pair|
37
- corrector.remove(pair.location.expression.with(begin_pos: last_end_pos))
38
- last_end_pos = pair.location.expression.end_pos
39
- corrector.insert_after(node.location.expression, ".where.not(#{pair.source})")
37
+ corrector.remove(pair.source_range.with(begin_pos: last_end_pos))
38
+ last_end_pos = pair.source_range.end_pos
39
+ corrector.insert_after(node, ".where.not(#{pair.source})")
40
40
  end
41
41
  end
42
42
  end
@@ -24,9 +24,7 @@ module Sevencop
24
24
  ranges = [
25
25
  node,
26
26
  *processed_source.ast_with_comments[node]
27
- ].map do |element|
28
- element.location.expression
29
- end
27
+ ].map(&:source_range)
30
28
  ranges.reduce do |result, range|
31
29
  add_range(result, range)
32
30
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sevencop
4
- VERSION = '0.34.0'
4
+ VERSION = '0.35.0'
5
5
  end
data/lib/sevencop.rb CHANGED
@@ -5,7 +5,6 @@ require_relative 'sevencop/rubocop_extension'
5
5
  require_relative 'sevencop/version'
6
6
 
7
7
  require_relative 'rubocop/cop/sevencop/autoload_ordered'
8
- require_relative 'rubocop/cop/sevencop/constant_base'
9
8
  require_relative 'rubocop/cop/sevencop/factory_bot_association_option'
10
9
  require_relative 'rubocop/cop/sevencop/factory_bot_association_style'
11
10
  require_relative 'rubocop/cop/sevencop/hash_element_ordered'
@@ -20,7 +19,6 @@ require_relative 'rubocop/cop/sevencop/rails_order_field_in_order_of'
20
19
  require_relative 'rubocop/cop/sevencop/rails_specific_action_name'
21
20
  require_relative 'rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity'
22
21
  require_relative 'rubocop/cop/sevencop/rails_where_not'
23
- require_relative 'rubocop/cop/sevencop/require_ordered'
24
22
  require_relative 'rubocop/cop/sevencop/rspec_describe_http_endpoint'
25
23
  require_relative 'rubocop/cop/sevencop/rspec_empty_line_after_let'
26
24
  require_relative 'rubocop/cop/sevencop/rspec_examples_in_same_group'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sevencop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.34.0
4
+ version: 0.35.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
@@ -57,7 +57,6 @@ files:
57
57
  - config/default.yml
58
58
  - data/reserved_words_mysql.txt
59
59
  - lib/rubocop/cop/sevencop/autoload_ordered.rb
60
- - lib/rubocop/cop/sevencop/constant_base.rb
61
60
  - lib/rubocop/cop/sevencop/factory_bot_association_option.rb
62
61
  - lib/rubocop/cop/sevencop/factory_bot_association_style.rb
63
62
  - lib/rubocop/cop/sevencop/hash_element_ordered.rb
@@ -72,7 +71,6 @@ files:
72
71
  - lib/rubocop/cop/sevencop/rails_specific_action_name.rb
73
72
  - lib/rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity.rb
74
73
  - lib/rubocop/cop/sevencop/rails_where_not.rb
75
- - lib/rubocop/cop/sevencop/require_ordered.rb
76
74
  - lib/rubocop/cop/sevencop/rspec_describe_http_endpoint.rb
77
75
  - lib/rubocop/cop/sevencop/rspec_empty_line_after_let.rb
78
76
  - lib/rubocop/cop/sevencop/rspec_examples_in_same_group.rb
@@ -1,79 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module Sevencop
6
- # Avoid unnecessary `::` prefix on constant.
7
- #
8
- # @example
9
- # # bad
10
- # ::Const
11
- #
12
- # # good
13
- # Const
14
- #
15
- # # bad
16
- # class << self
17
- # ::Const
18
- # end
19
- #
20
- # # good
21
- # class << self
22
- # Const
23
- # end
24
- #
25
- # # good
26
- # class A
27
- # ::Const
28
- # end
29
- #
30
- # # good
31
- # class A
32
- # ::Const
33
- # end
34
- class ConstantBase < Base
35
- extend AutoCorrector
36
-
37
- MSG = 'Avoid unnecessary `::` prefix on constant.'
38
-
39
- # @param node [RuboCop::AST::CbaseNode]
40
- # @return [void]
41
- def on_cbase(node)
42
- return unless bad?(node)
43
-
44
- add_offense(node) do |corrector|
45
- corrector.remove(node)
46
- end
47
- end
48
-
49
- private
50
-
51
- # @param node [RuboCop::AST::CbaseNode]
52
- # @return [Boolean]
53
- def bad?(node)
54
- module_nesting_ancestors_of(node).none?
55
- end
56
-
57
- # @param node [RuboCop::AST::Node]
58
- # @return [Enumerable<RuboCop::AST::Node>]
59
- def module_nesting_ancestors_of(node)
60
- node.each_ancestor(:class, :module).reject do |ancestor|
61
- ancestor.class_type? && used_in_super_class_part?(node, class_node: ancestor)
62
- end
63
- end
64
-
65
- # @param class_node [RuboCop::AST::Node]
66
- # @param node [RuboCop::AST::CbaseNode]
67
- # @return [Boolean]
68
- def used_in_super_class_part?(
69
- node,
70
- class_node:
71
- )
72
- class_node.parent_class&.each_descendant(:cbase)&.any? do |descendant|
73
- descendant.equal?(node)
74
- end
75
- end
76
- end
77
- end
78
- end
79
- end
@@ -1,94 +0,0 @@
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
- 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