Skip to content

Commit 3d1ad77

Browse files
Merge pull request #87 from koic/use_cop_base_api
Use `Cop::Base` API
2 parents e5fea79 + 863e7ba commit 3d1ad77

22 files changed

+320
-320
lines changed

Gemfile.lock

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ GEM
7171
unicode-display_width (2.2.0)
7272

7373
PLATFORMS
74+
x86_64-darwin-19
7475
x86_64-darwin-20
7576

7677
DEPENDENCIES

lib/rubocop/cop/github/insecure_hash_algorithm.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
module RuboCop
66
module Cop
77
module GitHub
8-
class InsecureHashAlgorithm < Cop
8+
class InsecureHashAlgorithm < Base
99
MSG = "This hash function is not allowed"
1010
UUID_V3_MSG = "uuid_v3 uses MD5, which is not allowed"
1111
UUID_V5_MSG = "uuid_v5 uses SHA1, which is not allowed"

lib/rubocop/cop/github/rails_application_record.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
module RuboCop
66
module Cop
77
module GitHub
8-
class RailsApplicationRecord < Cop
8+
class RailsApplicationRecord < Base
99
MSG = "Models should subclass from ApplicationRecord"
1010

1111
def_node_matcher :active_record_base_const?, <<-PATTERN
@@ -20,7 +20,7 @@ def on_class(node)
2020
klass, superclass, _ = *node
2121

2222
if active_record_base_const?(superclass) && !(application_record_const?(klass))
23-
add_offense(superclass, location: :expression)
23+
add_offense(superclass)
2424
end
2525
end
2626
end

lib/rubocop/cop/github/rails_controller_render_action_symbol.rb

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
module RuboCop
66
module Cop
77
module GitHub
8-
class RailsControllerRenderActionSymbol < Cop
8+
class RailsControllerRenderActionSymbol < Base
9+
extend AutoCorrector
10+
911
MSG = "Prefer `render` with string instead of symbol"
1012

1113
def_node_matcher :render_sym?, <<-PATTERN
@@ -22,18 +24,22 @@ class RailsControllerRenderActionSymbol < Cop
2224

2325
def on_send(node)
2426
if sym_node = render_sym?(node)
25-
add_offense(sym_node, location: :expression)
27+
add_offense(sym_node) do |corrector|
28+
register_offense(sym_node, node)
29+
end
2630
elsif option_pairs = render_with_options?(node)
2731
option_pairs.each do |pair|
2832
if sym_node = action_key?(pair)
29-
add_offense(sym_node, location: :expression)
33+
register_offense(sym_node, node)
3034
end
3135
end
3236
end
3337
end
3438

35-
def autocorrect(node)
36-
lambda do |corrector|
39+
private
40+
41+
def register_offense(sym_node, node)
42+
add_offense(sym_node) do |corrector|
3743
corrector.replace(node.source_range, "\"#{node.children[0]}\"")
3844
end
3945
end

lib/rubocop/cop/github/rails_controller_render_literal.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
module RuboCop
77
module Cop
88
module GitHub
9-
class RailsControllerRenderLiteral < Cop
9+
class RailsControllerRenderLiteral < Base
1010
include RenderLiteralHelpers
1111

1212
MSG = "render must be used with a string literal or an instance of a Class"
@@ -66,29 +66,29 @@ def on_send(node)
6666

6767
if template_node = option_pairs.map { |pair| template_key?(pair) }.compact.first
6868
if !literal?(template_node)
69-
add_offense(node, location: :expression)
69+
add_offense(node)
7070
return
7171
end
7272
else
73-
add_offense(node, location: :expression)
73+
add_offense(node)
7474
return
7575
end
7676

7777
if layout_node = option_pairs.map { |pair| layout_key?(pair) }.compact.first
7878
if !literal?(layout_node)
79-
add_offense(node, location: :expression)
79+
add_offense(node)
8080
return
8181
end
8282
end
8383
else
84-
add_offense(node, location: :expression)
84+
add_offense(node)
8585
return
8686
end
8787

8888
if render_literal?(node)
8989
option_hash = node.arguments[1]
9090
if option_hash && !option_hash.hash_type?
91-
add_offense(node, location: :expression)
91+
add_offense(node)
9292
return
9393
end
9494
option_pairs = option_hash && option_hash.pairs
@@ -99,7 +99,7 @@ def on_send(node)
9999
if option_pairs
100100
locals = option_pairs.map { |pair| locals_key?(pair) }.compact.first
101101
if locals && (!locals.hash_type? || !hash_with_literal_keys?(locals))
102-
add_offense(node, location: :expression)
102+
add_offense(node)
103103
end
104104
end
105105
end

lib/rubocop/cop/github/rails_controller_render_paths_exist.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
module RuboCop
66
module Cop
77
module GitHub
8-
class RailsControllerRenderPathsExist < Cop
8+
class RailsControllerRenderPathsExist < Base
99
def_node_matcher :render?, <<-PATTERN
1010
(send nil? {:render :render_to_string} $...)
1111
PATTERN
@@ -28,7 +28,7 @@ def on_send(node)
2828
if args = render_str?(node)
2929
node, path = args
3030
unless resolve_template(path.to_s)
31-
add_offense(node, location: :expression, message: "Template could not be found")
31+
add_offense(node, message: "Template could not be found")
3232
end
3333
elsif pairs = render_options?(node)
3434
if pair = pairs.detect { |p| render_key?(p) }
@@ -37,11 +37,11 @@ def on_send(node)
3737
case key
3838
when :action, :template
3939
unless resolve_template(path.to_s)
40-
add_offense(node, location: :expression, message: "Template could not be found")
40+
add_offense(node, message: "Template could not be found")
4141
end
4242
when :partial
4343
unless resolve_partial(path.to_s)
44-
add_offense(node, location: :expression, message: "Partial template could not be found")
44+
add_offense(node, message: "Partial template could not be found")
4545
end
4646
end
4747
end

lib/rubocop/cop/github/rails_controller_render_shorthand.rb

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
module RuboCop
66
module Cop
77
module GitHub
8-
class RailsControllerRenderShorthand < Cop
8+
class RailsControllerRenderShorthand < Base
9+
extend AutoCorrector
10+
911
MSG = "Prefer `render` template shorthand"
1012

1113
def_node_matcher :render_with_options?, <<-PATTERN
@@ -20,14 +22,6 @@ class RailsControllerRenderShorthand < Cop
2022
({str sym} $_)
2123
PATTERN
2224

23-
def investigate(*)
24-
@autocorrect = {}
25-
end
26-
27-
def autocorrect(node)
28-
@autocorrect[node]
29-
end
30-
3125
def on_send(node)
3226
if option_pairs = render_with_options?(node)
3327
option_pairs.each do |pair|
@@ -37,10 +31,9 @@ def on_send(node)
3731
.sub(/#{pair.source}(,\s*)?/, "")
3832
.sub("render ", "render \"#{str(value_node)}\"#{comma}")
3933

40-
@autocorrect[node] = lambda do |corrector|
34+
add_offense(node, message: "Use `#{corrected_source}` instead") do |corrector|
4135
corrector.replace(node.source_range, corrected_source)
4236
end
43-
add_offense(node, location: :expression, message: "Use `#{corrected_source}` instead")
4437
end
4538
end
4639
end

lib/rubocop/cop/github/rails_render_inline.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
module RuboCop
66
module Cop
77
module GitHub
8-
class RailsRenderInline < Cop
8+
class RailsRenderInline < Base
99
MSG = "Avoid `render inline:`"
1010

1111
def_node_matcher :render_with_options?, <<-PATTERN
@@ -19,7 +19,7 @@ class RailsRenderInline < Cop
1919
def on_send(node)
2020
if option_pairs = render_with_options?(node)
2121
if option_pairs.detect { |pair| inline_key?(pair) }
22-
add_offense(node, location: :expression)
22+
add_offense(node)
2323
end
2424
end
2525
end

lib/rubocop/cop/github/rails_render_object_collection.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
module RuboCop
66
module Cop
77
module GitHub
8-
class RailsRenderObjectCollection < Cop
8+
class RailsRenderObjectCollection < Base
99
MSG = "Avoid `render object:`"
1010

1111
def_node_matcher :render_with_options?, <<-PATTERN
@@ -34,9 +34,9 @@ def on_send(node)
3434
if partial_name.children[0].is_a?(String)
3535
suggestion = ", instead `render partial: #{partial_name.source}, locals: { #{File.basename(partial_name.children[0], '.html.erb')}: #{object_node.source} }`"
3636
end
37-
add_offense(node, location: :expression, message: "Avoid `render object:`#{suggestion}")
37+
add_offense(node, message: "Avoid `render object:`#{suggestion}")
3838
when :collection, :spacer_template
39-
add_offense(node, location: :expression, message: "Avoid `render collection:`")
39+
add_offense(node, message: "Avoid `render collection:`")
4040
end
4141
end
4242
end

lib/rubocop/cop/github/rails_view_render_literal.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
module RuboCop
77
module Cop
88
module GitHub
9-
class RailsViewRenderLiteral < Cop
9+
class RailsViewRenderLiteral < Base
1010
include RenderLiteralHelpers
1111

1212
MSG = "render must be used with a literal template and use literals for locals keys"
@@ -40,15 +40,15 @@ def on_send(node)
4040

4141
if partial_node = option_pairs.map { |pair| partial_key?(pair) }.compact.first
4242
if !literal?(partial_node)
43-
add_offense(node, location: :expression)
43+
add_offense(node)
4444
return
4545
end
4646
else
47-
add_offense(node, location: :expression)
47+
add_offense(node)
4848
return
4949
end
5050
else
51-
add_offense(node, location: :expression)
51+
add_offense(node)
5252
return
5353
end
5454

@@ -61,10 +61,10 @@ def on_send(node)
6161
if locals
6262
if locals.hash_type?
6363
if !hash_with_literal_keys?(locals)
64-
add_offense(node, location: :expression)
64+
add_offense(node)
6565
end
6666
else
67-
add_offense(node, location: :expression)
67+
add_offense(node)
6868
end
6969
end
7070
end

0 commit comments

Comments
 (0)