sevencop 0.21.0 → 0.23.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -0
- data/Gemfile.lock +13 -1
- data/README.md +2 -5
- data/config/default.yml +0 -9
- data/lib/rubocop/cop/sevencop/factory_bot_association_option.rb +1 -1
- data/lib/rubocop/cop/sevencop/factory_bot_association_style.rb +31 -31
- data/lib/rubocop/cop/sevencop/rails_inferred_spec_type.rb +1 -1
- data/lib/sevencop/config_loader.rb +11 -10
- data/lib/sevencop/rubocop_extension.rb +6 -1
- data/lib/sevencop/version.rb +1 -1
- data/lib/sevencop.rb +0 -1
- data/sevencop.gemspec +1 -0
- metadata +16 -3
- data/lib/rubocop/cop/sevencop/rails_migration_reserved_word_mysql.rb +0 -249
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f1682050c56b200417e16dfd5e9f90898838834b29609ef01548b40ab4d4700
|
4
|
+
data.tar.gz: f44e1c9e38ee48b6719e7df278d7858d9f6dc846c3469a96d11975b5a0d572b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c3fe3df83f0a4aef3503cfe39d8d82262c1dfd3bdd5b8745922a2649991d56c208d9a6ccc8a6b2f87757e7cdb1423e33f97869a39f4172984c15b4941797df9
|
7
|
+
data.tar.gz: e9dc4ceaac5717391ba294a3995572e9cce89f3316104d2e2139af30fc994d60a9e13c0ee2eb864566b27b2e6d04ff634f0b714d1d93c0ce1f4d969294bf2da9
|
data/.rubocop.yml
CHANGED
@@ -13,6 +13,9 @@ AllCops:
|
|
13
13
|
Gemspec/RequireMFA:
|
14
14
|
Enabled: false
|
15
15
|
|
16
|
+
Layout/LineLength:
|
17
|
+
Enabled: false
|
18
|
+
|
16
19
|
Metrics:
|
17
20
|
Enabled: false
|
18
21
|
|
@@ -49,6 +52,9 @@ Sevencop/MethodDefinitionKeywordArgumentOrdered:
|
|
49
52
|
Sevencop/MethodDefinitionOrdered:
|
50
53
|
Enabled: true
|
51
54
|
|
55
|
+
Sevencop/RequireOrdered:
|
56
|
+
Enabled: true
|
57
|
+
|
52
58
|
Style/Documentation:
|
53
59
|
Enabled: false
|
54
60
|
|
data/Gemfile.lock
CHANGED
@@ -1,15 +1,25 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sevencop (0.
|
4
|
+
sevencop (0.23.0)
|
5
|
+
activesupport
|
5
6
|
rubocop
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
9
10
|
specs:
|
11
|
+
activesupport (7.0.4)
|
12
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
13
|
+
i18n (>= 1.6, < 2)
|
14
|
+
minitest (>= 5.1)
|
15
|
+
tzinfo (~> 2.0)
|
10
16
|
ast (2.4.2)
|
17
|
+
concurrent-ruby (1.1.10)
|
11
18
|
diff-lcs (1.5.0)
|
19
|
+
i18n (1.12.0)
|
20
|
+
concurrent-ruby (~> 1.0)
|
12
21
|
json (2.6.2)
|
22
|
+
minitest (5.16.3)
|
13
23
|
parallel (1.22.1)
|
14
24
|
parser (3.1.2.1)
|
15
25
|
ast (~> 2.4.1)
|
@@ -50,6 +60,8 @@ GEM
|
|
50
60
|
rubocop-rspec (2.13.1)
|
51
61
|
rubocop (~> 1.33)
|
52
62
|
ruby-progressbar (1.11.0)
|
63
|
+
tzinfo (2.0.5)
|
64
|
+
concurrent-ruby (~> 1.0)
|
53
65
|
unicode-display_width (2.3.0)
|
54
66
|
|
55
67
|
PLATFORMS
|
data/README.md
CHANGED
@@ -24,9 +24,9 @@ Sevencop/MethodDefinitionOrdered:
|
|
24
24
|
Enabled: true
|
25
25
|
```
|
26
26
|
|
27
|
-
|
27
|
+
Note that all cops are `Enabled: false` by default.
|
28
28
|
|
29
|
-
|
29
|
+
## Cops
|
30
30
|
|
31
31
|
- [Sevencop/AutoloadOrdered](lib/rubocop/cop/sevencop/autoload_ordered.rb)
|
32
32
|
- [Sevencop/FactoryBotAssociationOption](lib/rubocop/cop/sevencop/factory_bot_association_option.rb)
|
@@ -38,12 +38,9 @@ Choose the cops you want to use and enable them on your .rubocop.yml.
|
|
38
38
|
- [Sevencop/MethodDefinitionOrdered](lib/rubocop/cop/sevencop/method_definition_ordered.rb)
|
39
39
|
- [Sevencop/RailsBelongsToOptional](lib/rubocop/cop/sevencop/rails_belongs_to_optional.rb)
|
40
40
|
- [Sevencop/RailsInferredSpecType](lib/rubocop/cop/sevencop/rails_inferred_spec_type.rb)
|
41
|
-
- [Sevencop/RailsMigrationReservedWordMysql](lib/rubocop/cop/sevencop/rails_migration_reserved_word_mysql.rb)
|
42
41
|
- [Sevencop/RailsOrderField](lib/rubocop/cop/sevencop/rails_order_field.rb)
|
43
42
|
- [Sevencop/RailsUniquenessValidatorExplicitCaseSensitivity](lib/rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity.rb)
|
44
43
|
- [Sevencop/RailsWhereNot](lib/rubocop/cop/sevencop/rails_where_not.rb)
|
45
44
|
- [Sevencop/RequireOrdered](lib/rubocop/cop/sevencop/require_ordered.rb)
|
46
45
|
- [Sevencop/RSpecDescribeHttpEndpoint](lib/rubocop/cop/sevencop/rspec_describe_http_endpoint.rb)
|
47
46
|
- [Sevencop/RSpecExamplesInSameGroup](lib/rubocop/cop/sevencop/rspec_examples_in_same_group.rb)
|
48
|
-
|
49
|
-
Note that all cops are `Enabled: false` by default.
|
data/config/default.yml
CHANGED
@@ -82,15 +82,6 @@ Sevencop/RailsInferredSpecType:
|
|
82
82
|
Safe: false
|
83
83
|
VersionAdded: '0.9'
|
84
84
|
|
85
|
-
Sevencop/RailsMigrationReservedWordMysql:
|
86
|
-
Description: |
|
87
|
-
Avoid using MySQL reserved words as identifiers.
|
88
|
-
Enabled: false
|
89
|
-
Safe: false
|
90
|
-
VersionAdded: '0.20'
|
91
|
-
Include:
|
92
|
-
- db/migrate/**/*.rb
|
93
|
-
|
94
85
|
Sevencop/RailsOrderField:
|
95
86
|
Description: |
|
96
87
|
Wrap safe SQL String by `Arel.sql`.
|
@@ -41,7 +41,7 @@ module RuboCop
|
|
41
41
|
# @param node [RuboCop::AST::SendNode]
|
42
42
|
# @return [void]
|
43
43
|
def on_send(node)
|
44
|
-
|
44
|
+
bad_associations_in(node).each do |association|
|
45
45
|
add_offense(association) do |corrector|
|
46
46
|
autocorrect(corrector, association)
|
47
47
|
end
|
@@ -51,7 +51,7 @@ module RuboCop
|
|
51
51
|
private
|
52
52
|
|
53
53
|
# @!method explicit_association?(node)
|
54
|
-
# @param node [RuboCop::AST::
|
54
|
+
# @param node [RuboCop::AST::SendNode]
|
55
55
|
# @return [Boolean]
|
56
56
|
def_node_matcher :explicit_association?, <<~PATTERN
|
57
57
|
(send
|
@@ -62,7 +62,7 @@ module RuboCop
|
|
62
62
|
PATTERN
|
63
63
|
|
64
64
|
# @!method implicit_association?(node)
|
65
|
-
# @param node [RuboCop::AST::
|
65
|
+
# @param node [RuboCop::AST::SendNode]
|
66
66
|
# @return [Boolean]
|
67
67
|
def_node_matcher :implicit_association?, <<~PATTERN
|
68
68
|
(send
|
@@ -111,56 +111,56 @@ module RuboCop
|
|
111
111
|
node.arguments.one?
|
112
112
|
end
|
113
113
|
|
114
|
-
# @param node [RuboCop::AST::SendNode]
|
115
|
-
# @return [Array<RuboCop::AST::Node>]
|
116
|
-
def children_of_factory_block(node)
|
117
|
-
block = node.parent
|
118
|
-
return [] unless block
|
119
|
-
return [] unless block.block_type?
|
120
|
-
|
121
|
-
if block.body.begin_type?
|
122
|
-
block.body.children
|
123
|
-
else
|
124
|
-
[block.body]
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
# @param method_name [Symbol]
|
129
|
-
# @return [Boolean]
|
130
|
-
def non_implicit_association_method_name?(method_name)
|
131
|
-
cop_config['NonImplicitAssociationMethodNames'].include?(method_name.to_s)
|
132
|
-
end
|
133
|
-
|
134
114
|
# @param node [RuboCop::AST::SendNode]
|
135
115
|
# @return [Boolean]
|
136
|
-
def
|
116
|
+
def bad?(node)
|
137
117
|
case style
|
138
118
|
when :explicit
|
139
|
-
|
119
|
+
bad_to_explicit_style?(node)
|
140
120
|
when :implicit
|
141
|
-
|
121
|
+
bad_to_implicit_style?(node)
|
142
122
|
end
|
143
123
|
end
|
144
124
|
|
145
125
|
# @param node [RuboCop::AST::SendNode]
|
146
126
|
# @return [Array<RuboCop::AST::SendNode>]
|
147
|
-
def
|
127
|
+
def bad_associations_in(node)
|
148
128
|
children_of_factory_block(node).select do |child|
|
149
|
-
|
129
|
+
bad?(child)
|
150
130
|
end
|
151
131
|
end
|
152
132
|
|
153
|
-
# @param node [RuboCop::AST::
|
133
|
+
# @param node [RuboCop::AST::SendNode]
|
154
134
|
# @return [Boolean]
|
155
|
-
def
|
135
|
+
def bad_to_explicit_style?(node)
|
156
136
|
implicit_association?(node)
|
157
137
|
end
|
158
138
|
|
159
139
|
# @param node [RuboCop::AST::SendNode]
|
160
140
|
# @return [Boolean]
|
161
|
-
def
|
141
|
+
def bad_to_implicit_style?(node)
|
162
142
|
explicit_association?(node) && autocorrectable_to_implicit_style?(node)
|
163
143
|
end
|
144
|
+
|
145
|
+
# @param node [RuboCop::AST::SendNode]
|
146
|
+
# @return [Array<RuboCop::AST::Node>]
|
147
|
+
def children_of_factory_block(node)
|
148
|
+
block = node.parent
|
149
|
+
return [] unless block
|
150
|
+
return [] unless block.block_type?
|
151
|
+
|
152
|
+
if block.body.begin_type?
|
153
|
+
block.body.children
|
154
|
+
else
|
155
|
+
[block.body]
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
# @param method_name [Symbol]
|
160
|
+
# @return [Boolean]
|
161
|
+
def non_implicit_association_method_name?(method_name)
|
162
|
+
cop_config['NonImplicitAssociationMethodNames'].include?(method_name.to_s)
|
163
|
+
end
|
164
164
|
end
|
165
165
|
end
|
166
166
|
end
|
@@ -5,23 +5,24 @@ require 'rubocop'
|
|
5
5
|
module Sevencop
|
6
6
|
# Merge default RuboCop config with plugin config.
|
7
7
|
class ConfigLoader
|
8
|
-
PLUGIN_CONFIG_PATH = ::File.expand_path(
|
9
|
-
'../../config/default.yml',
|
10
|
-
__dir__
|
11
|
-
)
|
12
|
-
|
13
8
|
class << self
|
9
|
+
# @param path [String]
|
14
10
|
# @return [RuboCop::Config]
|
15
|
-
def call
|
16
|
-
new.call
|
11
|
+
def call(path:)
|
12
|
+
new(path: path).call
|
17
13
|
end
|
18
14
|
end
|
19
15
|
|
16
|
+
# @param path [String]
|
17
|
+
def initialize(path:)
|
18
|
+
@path = path
|
19
|
+
end
|
20
|
+
|
20
21
|
# @return [RuboCop::Config]
|
21
22
|
def call
|
22
23
|
::RuboCop::ConfigLoader.merge_with_default(
|
23
24
|
plugin_config,
|
24
|
-
|
25
|
+
@path
|
25
26
|
)
|
26
27
|
end
|
27
28
|
|
@@ -31,7 +32,7 @@ module Sevencop
|
|
31
32
|
def plugin_config
|
32
33
|
config = ::RuboCop::Config.new(
|
33
34
|
plugin_config_hash,
|
34
|
-
|
35
|
+
@path
|
35
36
|
)
|
36
37
|
config.make_excludes_absolute
|
37
38
|
config
|
@@ -41,7 +42,7 @@ module Sevencop
|
|
41
42
|
def plugin_config_hash
|
42
43
|
::RuboCop::ConfigLoader.send(
|
43
44
|
:load_yaml_configuration,
|
44
|
-
|
45
|
+
@path
|
45
46
|
)
|
46
47
|
end
|
47
48
|
end
|
data/lib/sevencop/version.rb
CHANGED
data/lib/sevencop.rb
CHANGED
@@ -14,7 +14,6 @@ require_relative 'rubocop/cop/sevencop/method_definition_keyword_argument_ordere
|
|
14
14
|
require_relative 'rubocop/cop/sevencop/method_definition_ordered'
|
15
15
|
require_relative 'rubocop/cop/sevencop/rails_belongs_to_optional'
|
16
16
|
require_relative 'rubocop/cop/sevencop/rails_inferred_spec_type'
|
17
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_reserved_word_mysql'
|
18
17
|
require_relative 'rubocop/cop/sevencop/rails_order_field'
|
19
18
|
require_relative 'rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity'
|
20
19
|
require_relative 'rubocop/cop/sevencop/rails_where_not'
|
data/sevencop.gemspec
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sevencop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.23.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-10-
|
11
|
+
date: 2022-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rubocop
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,7 +66,6 @@ files:
|
|
52
66
|
- lib/rubocop/cop/sevencop/method_definition_ordered.rb
|
53
67
|
- lib/rubocop/cop/sevencop/rails_belongs_to_optional.rb
|
54
68
|
- lib/rubocop/cop/sevencop/rails_inferred_spec_type.rb
|
55
|
-
- lib/rubocop/cop/sevencop/rails_migration_reserved_word_mysql.rb
|
56
69
|
- lib/rubocop/cop/sevencop/rails_order_field.rb
|
57
70
|
- lib/rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity.rb
|
58
71
|
- lib/rubocop/cop/sevencop/rails_where_not.rb
|
@@ -1,249 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'set'
|
4
|
-
|
5
|
-
module RuboCop
|
6
|
-
module Cop
|
7
|
-
module Sevencop
|
8
|
-
# Avoid using MySQL reserved words as identifiers.
|
9
|
-
#
|
10
|
-
# @example
|
11
|
-
# # bad
|
12
|
-
# # NOTE: `role` is a reserved word in MySQL.
|
13
|
-
# add_column :users, :role, :string
|
14
|
-
#
|
15
|
-
# # good
|
16
|
-
# add_column :users, :some_other_good_name, :string
|
17
|
-
class RailsMigrationReservedWordMysql < RuboCop::Cop::Base
|
18
|
-
COLUMN_TYPE_METHOD_NAMES = ::Set.new(
|
19
|
-
%i[
|
20
|
-
bigint
|
21
|
-
binary
|
22
|
-
blob
|
23
|
-
boolean
|
24
|
-
date
|
25
|
-
datetime
|
26
|
-
decimal
|
27
|
-
float
|
28
|
-
integer
|
29
|
-
numeric
|
30
|
-
primary_key
|
31
|
-
string
|
32
|
-
text
|
33
|
-
time
|
34
|
-
]
|
35
|
-
).freeze
|
36
|
-
|
37
|
-
MSG = 'Avoid using MySQL reserved words as identifiers.'
|
38
|
-
|
39
|
-
# Obtained from https://dev.mysql.com/doc/refman/8.0/en/keywords.html.
|
40
|
-
PATH_TO_RESERVED_WORDS_FILE = File.expand_path(
|
41
|
-
'../../../../data/reserved_words_mysql.txt',
|
42
|
-
__dir__
|
43
|
-
).freeze
|
44
|
-
|
45
|
-
RESTRICT_ON_SEND = [
|
46
|
-
:add_column,
|
47
|
-
:add_index,
|
48
|
-
:add_reference,
|
49
|
-
:create_join_table,
|
50
|
-
:create_table,
|
51
|
-
:rename,
|
52
|
-
:rename_column,
|
53
|
-
:rename_index,
|
54
|
-
:rename_table,
|
55
|
-
*COLUMN_TYPE_METHOD_NAMES
|
56
|
-
].freeze
|
57
|
-
|
58
|
-
class << self
|
59
|
-
# @return [Array<String>]
|
60
|
-
def reserved_words
|
61
|
-
@reserved_words ||= ::Set.new(
|
62
|
-
::File.read(PATH_TO_RESERVED_WORDS_FILE).split("\n")
|
63
|
-
).freeze
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
# @param node [RuboCop::AST::DefNode]
|
68
|
-
# @return [void]
|
69
|
-
def on_send(node)
|
70
|
-
offended_identifier_nodes_from(node).each do |identifier_node|
|
71
|
-
add_offense(identifier_node)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
private
|
76
|
-
|
77
|
-
# @!method index_name_option_from_add_index(node)
|
78
|
-
# @param node [RuboCop::AST::SendNode]
|
79
|
-
# @return [RuboCop::AST::Node, nil]
|
80
|
-
def_node_matcher :index_name_option_from_add_index, <<~PATTERN
|
81
|
-
(send
|
82
|
-
nil?
|
83
|
-
:add_index
|
84
|
-
_
|
85
|
-
_
|
86
|
-
(hash
|
87
|
-
<
|
88
|
-
(pair
|
89
|
-
(sym :name)
|
90
|
-
$_
|
91
|
-
)
|
92
|
-
>
|
93
|
-
...
|
94
|
-
)
|
95
|
-
)
|
96
|
-
PATTERN
|
97
|
-
|
98
|
-
# @!method index_name_option_from_add_reference(node)
|
99
|
-
# @param node [RuboCop::AST::SendNode]
|
100
|
-
# @return [RuboCop::AST::Node, nil]
|
101
|
-
def_node_matcher :index_name_option_from_add_reference, <<~PATTERN
|
102
|
-
(send
|
103
|
-
nil?
|
104
|
-
:add_reference
|
105
|
-
_
|
106
|
-
_
|
107
|
-
(hash
|
108
|
-
<
|
109
|
-
(pair
|
110
|
-
(sym :index)
|
111
|
-
(hash
|
112
|
-
<
|
113
|
-
(pair
|
114
|
-
(sym :name)
|
115
|
-
$_
|
116
|
-
)
|
117
|
-
>
|
118
|
-
...
|
119
|
-
)
|
120
|
-
)
|
121
|
-
>
|
122
|
-
...
|
123
|
-
)
|
124
|
-
)
|
125
|
-
PATTERN
|
126
|
-
|
127
|
-
# @!method index_name_option_from_column_type(node)
|
128
|
-
# @param node [RuboCop::AST::SendNode]
|
129
|
-
# @return [RuboCop::AST::Node, nil]
|
130
|
-
def_node_matcher :index_name_option_from_column_type, <<~PATTERN
|
131
|
-
(send
|
132
|
-
(lvar _)
|
133
|
-
COLUMN_TYPE_METHOD_NAMES
|
134
|
-
_
|
135
|
-
(hash
|
136
|
-
<
|
137
|
-
(pair
|
138
|
-
(sym :index)
|
139
|
-
(hash
|
140
|
-
<
|
141
|
-
(pair
|
142
|
-
(sym :name)
|
143
|
-
$_
|
144
|
-
)
|
145
|
-
...
|
146
|
-
>
|
147
|
-
)
|
148
|
-
)
|
149
|
-
...
|
150
|
-
>
|
151
|
-
)
|
152
|
-
)
|
153
|
-
PATTERN
|
154
|
-
|
155
|
-
# @!method table_name_option_from(node)
|
156
|
-
# @param node [RuboCop::AST::SendNode]
|
157
|
-
# @return [RuboCop::AST::Node, nil]
|
158
|
-
def_node_matcher :table_name_option_from, <<~PATTERN
|
159
|
-
(send
|
160
|
-
nil?
|
161
|
-
:create_join_table
|
162
|
-
_
|
163
|
-
_
|
164
|
-
(hash
|
165
|
-
<
|
166
|
-
(pair
|
167
|
-
(sym :table_name)
|
168
|
-
$_
|
169
|
-
)
|
170
|
-
...
|
171
|
-
>
|
172
|
-
)
|
173
|
-
)
|
174
|
-
PATTERN
|
175
|
-
|
176
|
-
# @param node [RuboCop::AST::SendNode]
|
177
|
-
# @return [Array<RuboCop::AST::Node>]
|
178
|
-
def identifier_column_name_nodes_from(node)
|
179
|
-
case node.method_name
|
180
|
-
when :add_column, :rename
|
181
|
-
[node.arguments[1]]
|
182
|
-
when :rename_column
|
183
|
-
[node.arguments[2]]
|
184
|
-
when *COLUMN_TYPE_METHOD_NAMES
|
185
|
-
[node.arguments[0]]
|
186
|
-
else
|
187
|
-
[]
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
# @param node [RuboCop::AST::SendNode]
|
192
|
-
# @return [Array<RuboCop::AST::Node>]
|
193
|
-
def identifier_index_name_nodes_from(node)
|
194
|
-
case node.method_name
|
195
|
-
when :add_index
|
196
|
-
[index_name_option_from_add_index(node)].compact
|
197
|
-
when :add_reference
|
198
|
-
[index_name_option_from_add_reference(node)].compact
|
199
|
-
when :rename_index
|
200
|
-
[node.arguments[2]]
|
201
|
-
when *COLUMN_TYPE_METHOD_NAMES
|
202
|
-
[index_name_option_from_column_type(node)].compact
|
203
|
-
else
|
204
|
-
[]
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
# @param node [RuboCop::AST::SendNode]
|
209
|
-
# @return [Array<RuboCop::AST::Node>]
|
210
|
-
def identifier_nodes_from(node)
|
211
|
-
identifier_table_name_nodes_from(node) +
|
212
|
-
identifier_column_name_nodes_from(node) +
|
213
|
-
identifier_index_name_nodes_from(node)
|
214
|
-
end
|
215
|
-
|
216
|
-
# @param node [RuboCop::AST::SendNode]
|
217
|
-
# @return [Array<RuboCop::AST::Node>]
|
218
|
-
def identifier_table_name_nodes_from(node)
|
219
|
-
case node.method_name
|
220
|
-
when :create_join_table
|
221
|
-
[table_name_option_from(node)].compact
|
222
|
-
when :create_table
|
223
|
-
[node.arguments[0]]
|
224
|
-
when :rename_table
|
225
|
-
[node.arguments[1]]
|
226
|
-
else
|
227
|
-
[]
|
228
|
-
end
|
229
|
-
end
|
230
|
-
|
231
|
-
# @param node [RuboCop::AST::Node]
|
232
|
-
# @return [Array<RuboCop::AST::Node>]
|
233
|
-
def offended_identifier_nodes_from(node)
|
234
|
-
identifier_nodes_from(node).select do |identifier_node|
|
235
|
-
reserved_word_identifier_node?(identifier_node)
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
# @param node [RuboCop::AST::Node]
|
240
|
-
# @return [Boolean]
|
241
|
-
def reserved_word_identifier_node?(node)
|
242
|
-
return false unless node.respond_to?(:value)
|
243
|
-
|
244
|
-
self.class.reserved_words.include?(node.value.to_s)
|
245
|
-
end
|
246
|
-
end
|
247
|
-
end
|
248
|
-
end
|
249
|
-
end
|