sevencop 0.22.0 → 0.24.2
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 +4 -4
- data/.rubocop.yml +1 -1
- data/Gemfile.lock +1 -1
- data/README.md +5 -16
- data/config/default.yml +16 -143
- data/lib/rubocop/cop/sevencop/rails_action_name.rb +61 -0
- data/lib/rubocop/cop/sevencop/rspec_describe_http_endpoint.rb +23 -10
- data/lib/sevencop/cop_concerns.rb +0 -3
- data/lib/sevencop/version.rb +1 -1
- data/lib/sevencop.rb +1 -16
- metadata +3 -21
- data/lib/rubocop/cop/sevencop/rails_migration_add_check_constraint.rb +0 -111
- data/lib/rubocop/cop/sevencop/rails_migration_add_column_with_default_value.rb +0 -229
- data/lib/rubocop/cop/sevencop/rails_migration_add_foreign_key.rb +0 -166
- data/lib/rubocop/cop/sevencop/rails_migration_add_index_concurrently.rb +0 -164
- data/lib/rubocop/cop/sevencop/rails_migration_batch_in_batches.rb +0 -95
- data/lib/rubocop/cop/sevencop/rails_migration_batch_in_transaction.rb +0 -83
- data/lib/rubocop/cop/sevencop/rails_migration_batch_with_throttling.rb +0 -108
- data/lib/rubocop/cop/sevencop/rails_migration_change_column.rb +0 -113
- data/lib/rubocop/cop/sevencop/rails_migration_change_column_null.rb +0 -128
- data/lib/rubocop/cop/sevencop/rails_migration_create_table_force.rb +0 -89
- data/lib/rubocop/cop/sevencop/rails_migration_jsonb.rb +0 -131
- data/lib/rubocop/cop/sevencop/rails_migration_remove_column.rb +0 -258
- data/lib/rubocop/cop/sevencop/rails_migration_rename_column.rb +0 -81
- data/lib/rubocop/cop/sevencop/rails_migration_rename_table.rb +0 -79
- data/lib/rubocop/cop/sevencop/rails_migration_reserved_word_mysql.rb +0 -232
- data/lib/rubocop/cop/sevencop/rails_migration_unique_index_columns_count.rb +0 -92
- data/lib/sevencop/cop_concerns/batch_processing.rb +0 -32
- data/lib/sevencop/cop_concerns/column_type_method.rb +0 -26
- data/lib/sevencop/cop_concerns/disable_ddl_transaction.rb +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47139f7d9fb3b1e73416958e9f2f87ccafa4145864e046a1539ffd33018bd603
|
4
|
+
data.tar.gz: f9c759a3adbbf7e25b327755c8d5fc0a00d5f6438f79b4df3e33d138ca296fb7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e43613b26de17bca55c264a4892a3c20684fcc5c6e285c2407249c6369218d82650bdfb0e8963fd43c19c25a5fe24d885c4074894c8bc28fc105a0ba2dbfbb6e
|
7
|
+
data.tar.gz: 4697e89105ef1bcd388a72af2505d3b1d19ea5fa0f1c3867d3fca0313d0c470d38b92eb89fa477e6782fbd83dff3e32300cfd812b67dd06b472fd6747480b10a
|
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -36,27 +36,16 @@ Note that all cops are `Enabled: false` by default.
|
|
36
36
|
- [Sevencop/MethodDefinitionInIncluded](lib/rubocop/cop/sevencop/method_definition_in_included.rb)
|
37
37
|
- [Sevencop/MethodDefinitionKeywordArgumentOrdered](lib/rubocop/cop/sevencop/method_definition_keyword_argument_ordered.rb)
|
38
38
|
- [Sevencop/MethodDefinitionOrdered](lib/rubocop/cop/sevencop/method_definition_ordered.rb)
|
39
|
+
- [Sevencop/RailsActionName](lib/rubocop/cop/sevencop/rails_action_name.rb)
|
39
40
|
- [Sevencop/RailsBelongsToOptional](lib/rubocop/cop/sevencop/rails_belongs_to_optional.rb)
|
40
41
|
- [Sevencop/RailsInferredSpecType](lib/rubocop/cop/sevencop/rails_inferred_spec_type.rb)
|
41
|
-
- [Sevencop/RailsMigrationAddCheckConstraint](lib/rubocop/cop/sevencop/rails_migration_add_check_constraint.rb)
|
42
|
-
- [Sevencop/RailsMigrationAddColumnWithDefaultValue](lib/rubocop/cop/sevencop/rails_migration_add_column_with_default_value.rb)
|
43
|
-
- [Sevencop/RailsMigrationAddForeignKey](lib/rubocop/cop/sevencop/rails_migration_add_foreign_key.rb)
|
44
|
-
- [Sevencop/RailsMigrationAddIndexConcurrently](lib/rubocop/cop/sevencop/rails_migration_add_index_concurrently.rb)
|
45
|
-
- [Sevencop/RailsMigrationBatchInBatches](lib/rubocop/cop/sevencop/rails_migration_batch_in_batches.rb)
|
46
|
-
- [Sevencop/RailsMigrationBatchInTransaction](lib/rubocop/cop/sevencop/rails_migration_batch_in_transaction.rb)
|
47
|
-
- [Sevencop/RailsMigrationBatchWithThrottling](lib/rubocop/cop/sevencop/rails_migration_batch_with_throttling.rb)
|
48
|
-
- [Sevencop/RailsMigrationChangeColumn](lib/rubocop/cop/sevencop/rails_migration_change_column.rb)
|
49
|
-
- [Sevencop/RailsMigrationChangeColumnNull](lib/rubocop/cop/sevencop/rails_migration_change_column_null.rb)
|
50
|
-
- [Sevencop/RailsMigrationCreateTableForce](lib/rubocop/cop/sevencop/rails_migration_create_table_force.rb)
|
51
|
-
- [Sevencop/RailsMigrationJsonb](lib/rubocop/cop/sevencop/rails_migration_jsonb.rb)
|
52
|
-
- [Sevencop/RailsMigrationRemoveColumn](lib/rubocop/cop/sevencop/rails_migration_remove_column.rb)
|
53
|
-
- [Sevencop/RailsMigrationRenameColumn](lib/rubocop/cop/sevencop/rails_migration_rename_column.rb)
|
54
|
-
- [Sevencop/RailsMigrationRenameTable](lib/rubocop/cop/sevencop/rails_migration_rename_table.rb)
|
55
|
-
- [Sevencop/RailsMigrationReservedWordMysql](lib/rubocop/cop/sevencop/rails_migration_reserved_word_mysql.rb)
|
56
|
-
- [Sevencop/RailsMigrationUniqueIndexColumnsCount](lib/rubocop/cop/sevencop/rails_migration_unique_index_columns_count.rb)
|
57
42
|
- [Sevencop/RailsOrderField](lib/rubocop/cop/sevencop/rails_order_field.rb)
|
58
43
|
- [Sevencop/RailsUniquenessValidatorExplicitCaseSensitivity](lib/rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity.rb)
|
59
44
|
- [Sevencop/RailsWhereNot](lib/rubocop/cop/sevencop/rails_where_not.rb)
|
60
45
|
- [Sevencop/RequireOrdered](lib/rubocop/cop/sevencop/require_ordered.rb)
|
61
46
|
- [Sevencop/RSpecDescribeHttpEndpoint](lib/rubocop/cop/sevencop/rspec_describe_http_endpoint.rb)
|
62
47
|
- [Sevencop/RSpecExamplesInSameGroup](lib/rubocop/cop/sevencop/rspec_examples_in_same_group.rb)
|
48
|
+
|
49
|
+
## Notes
|
50
|
+
|
51
|
+
All migration related cops are moved to [r7kamura/rubocop-migration](https://github.com/r7kamura/rubocop-migration).
|
data/config/default.yml
CHANGED
@@ -68,6 +68,22 @@ Sevencop/MethodDefinitionKeywordArgumentOrdered:
|
|
68
68
|
Safe: false
|
69
69
|
VersionAdded: '0.13'
|
70
70
|
|
71
|
+
Sevencop/RailsActionName:
|
72
|
+
Description: |
|
73
|
+
Use only specific action names.
|
74
|
+
Enabled: false
|
75
|
+
VersionAdded: '0.24'
|
76
|
+
ActionNames:
|
77
|
+
- create
|
78
|
+
- destroy
|
79
|
+
- edit
|
80
|
+
- index
|
81
|
+
- new
|
82
|
+
- show
|
83
|
+
- update
|
84
|
+
Include:
|
85
|
+
- app/controllers/**/*.rb
|
86
|
+
|
71
87
|
Sevencop/RailsBelongsToOptional:
|
72
88
|
Description: |
|
73
89
|
Force `belongs_to` with `optional: true` option.
|
@@ -82,149 +98,6 @@ Sevencop/RailsInferredSpecType:
|
|
82
98
|
Safe: false
|
83
99
|
VersionAdded: '0.9'
|
84
100
|
|
85
|
-
Sevencop/RailsMigrationAddCheckConstraint:
|
86
|
-
Description: |
|
87
|
-
Activate a check constraint in a separate migration in PostgreSQL.
|
88
|
-
Enabled: false
|
89
|
-
Safe: false
|
90
|
-
VersionAdded: '0.22'
|
91
|
-
Include:
|
92
|
-
- db/migrate/**/*.rb
|
93
|
-
|
94
|
-
Sevencop/RailsMigrationAddColumnWithDefaultValue:
|
95
|
-
Description: |
|
96
|
-
Add the column without a default value then change the default.
|
97
|
-
Enabled: false
|
98
|
-
Safe: false
|
99
|
-
VersionAdded: '0.22'
|
100
|
-
Include:
|
101
|
-
- db/migrate/**/*.rb
|
102
|
-
|
103
|
-
Sevencop/RailsMigrationAddForeignKey:
|
104
|
-
Description: |
|
105
|
-
Activate a foreign key validation in a separate migration in PostgreSQL.
|
106
|
-
Enabled: false
|
107
|
-
Safe: false
|
108
|
-
VersionAdded: '0.22'
|
109
|
-
Include:
|
110
|
-
- db/migrate/**/*.rb
|
111
|
-
|
112
|
-
Sevencop/RailsMigrationAddIndexConcurrently:
|
113
|
-
Description: |
|
114
|
-
Use `algorithm: :concurrently` on adding indexes to existing tables in PostgreSQL.
|
115
|
-
Enabled: false
|
116
|
-
Safe: false
|
117
|
-
VersionAdded: '0.22'
|
118
|
-
Include:
|
119
|
-
- db/migrate/**/*.rb
|
120
|
-
|
121
|
-
Sevencop/RailsMigrationBatchInBatches:
|
122
|
-
Description: |
|
123
|
-
Use `in_batches` in batch processing.
|
124
|
-
Enabled: false
|
125
|
-
Safe: false
|
126
|
-
VersionAdded: '0.22'
|
127
|
-
Include:
|
128
|
-
- db/migrate/**/*.rb
|
129
|
-
|
130
|
-
Sevencop/RailsMigrationBatchInTransaction:
|
131
|
-
Description: |
|
132
|
-
Disable transaction in batch processing.
|
133
|
-
Enabled: false
|
134
|
-
Safe: false
|
135
|
-
VersionAdded: '0.22'
|
136
|
-
Include:
|
137
|
-
- db/migrate/**/*.rb
|
138
|
-
|
139
|
-
Sevencop/RailsMigrationBatchWithThrottling:
|
140
|
-
Description: |
|
141
|
-
Use throttling in batch processing.
|
142
|
-
Enabled: false
|
143
|
-
Safe: false
|
144
|
-
VersionAdded: '0.22'
|
145
|
-
Include:
|
146
|
-
- db/migrate/**/*.rb
|
147
|
-
|
148
|
-
Sevencop/RailsMigrationCreateTableForce:
|
149
|
-
Description: |
|
150
|
-
Create tables without `force: true` option.
|
151
|
-
Enabled: false
|
152
|
-
VersionAdded: '0.22'
|
153
|
-
Include:
|
154
|
-
- db/migrate/**/*.rb
|
155
|
-
|
156
|
-
Sevencop/RailsMigrationJsonb:
|
157
|
-
Description: |
|
158
|
-
Prefer `jsonb` to `json`.
|
159
|
-
Enabled: false
|
160
|
-
Safe: false
|
161
|
-
VersionAdded: '0.22'
|
162
|
-
Include:
|
163
|
-
- db/migrate/**/*.rb
|
164
|
-
|
165
|
-
Sevencop/RailsMigrationChangeColumn:
|
166
|
-
Description: |
|
167
|
-
Avoid changing column type that is in use.
|
168
|
-
Enabled: false
|
169
|
-
Safe: false
|
170
|
-
VersionAdded: '0.22'
|
171
|
-
Include:
|
172
|
-
- db/migrate/**/*.rb
|
173
|
-
|
174
|
-
Sevencop/RailsMigrationChangeColumnNull:
|
175
|
-
Description: |
|
176
|
-
Avoid simply setting `NOT NULL` constraint on an existing column in PostgreSQL.
|
177
|
-
Enabled: false
|
178
|
-
Safe: false
|
179
|
-
VersionAdded: '0.22'
|
180
|
-
Include:
|
181
|
-
- db/migrate/**/*.rb
|
182
|
-
|
183
|
-
Sevencop/RailsMigrationRemoveColumn:
|
184
|
-
Description: |
|
185
|
-
Add to `ignored_columns` and then remove the column.
|
186
|
-
Enabled: false
|
187
|
-
Safe: false
|
188
|
-
VersionAdded: '0.22'
|
189
|
-
Include:
|
190
|
-
- db/migrate/**/*.rb
|
191
|
-
|
192
|
-
Sevencop/RailsMigrationRenameColumn:
|
193
|
-
Description: |
|
194
|
-
Avoid renaming columns that are in use.
|
195
|
-
Enabled: false
|
196
|
-
Safe: false
|
197
|
-
VersionAdded: '0.22'
|
198
|
-
Include:
|
199
|
-
- db/migrate/**/*.rb
|
200
|
-
|
201
|
-
Sevencop/RailsMigrationRenameTable:
|
202
|
-
Description: |
|
203
|
-
Avoid removing tables that are in use.
|
204
|
-
Enabled: false
|
205
|
-
Safe: false
|
206
|
-
VersionAdded: '0.22'
|
207
|
-
Include:
|
208
|
-
- db/migrate/**/*.rb
|
209
|
-
|
210
|
-
Sevencop/RailsMigrationReservedWordMysql:
|
211
|
-
Description: |
|
212
|
-
Avoid using MySQL reserved words as identifiers.
|
213
|
-
Enabled: false
|
214
|
-
Safe: false
|
215
|
-
VersionAdded: '0.20'
|
216
|
-
Include:
|
217
|
-
- db/migrate/**/*.rb
|
218
|
-
|
219
|
-
Sevencop/RailsMigrationUniqueIndexColumnsCount:
|
220
|
-
Description: |
|
221
|
-
Keep unique index columns count less than a specified number.
|
222
|
-
Enabled: false
|
223
|
-
VersionAdded: '0.22'
|
224
|
-
MaxColumnsCount: 3
|
225
|
-
Include:
|
226
|
-
- db/migrate/**/*.rb
|
227
|
-
|
228
101
|
Sevencop/RailsOrderField:
|
229
102
|
Description: |
|
230
103
|
Wrap safe SQL String by `Arel.sql`.
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Sevencop
|
6
|
+
# Use only specific action names.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# class UsersController < ApplicationController
|
11
|
+
# def articles
|
12
|
+
# end
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# # good
|
16
|
+
# class UserArticlesController < ApplicationController
|
17
|
+
# def index
|
18
|
+
# end
|
19
|
+
# end
|
20
|
+
class RailsActionName < Base
|
21
|
+
include VisibilityHelp
|
22
|
+
|
23
|
+
MSG = 'Use only specific action names.'
|
24
|
+
|
25
|
+
# @param node [RuboCop::AST::DefNode]
|
26
|
+
# @return [void]
|
27
|
+
def on_def(node)
|
28
|
+
return unless bad?(node)
|
29
|
+
|
30
|
+
add_offense(node.location.name)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
# @param node [RuboCop::AST::DefNode]
|
36
|
+
# @return [Boolean]
|
37
|
+
def action?(node)
|
38
|
+
node_visibility(node) == :public
|
39
|
+
end
|
40
|
+
|
41
|
+
# @param node [RuboCop::AST::DefNode]
|
42
|
+
# @return [Boolean]
|
43
|
+
def bad?(node)
|
44
|
+
action?(node) &&
|
45
|
+
!configured_action_name?(node)
|
46
|
+
end
|
47
|
+
|
48
|
+
# @param node [RuboCop::AST::DefNode]
|
49
|
+
# @return [Boolean]
|
50
|
+
def configured_action_name?(node)
|
51
|
+
configured_action_names.include?(node.method_name.to_s)
|
52
|
+
end
|
53
|
+
|
54
|
+
# @return [Array<String>]
|
55
|
+
def configured_action_names
|
56
|
+
cop_config['ActionNames']
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -33,30 +33,43 @@ module RuboCop
|
|
33
33
|
# @param node [RuboCop::AST::SendNode]
|
34
34
|
# @return [void]
|
35
35
|
def on_send(node)
|
36
|
-
return unless
|
37
|
-
return unless node.first_argument
|
38
|
-
return if http_endpoint_identifier?(node.first_argument)
|
36
|
+
return unless bad?(node)
|
39
37
|
|
40
38
|
add_offense(node.first_argument)
|
41
39
|
end
|
42
40
|
|
43
41
|
private
|
44
42
|
|
45
|
-
# @!method
|
43
|
+
# @!method describing_http_endpoint_identifier?(node)
|
46
44
|
# @param node [RuboCop::AST::SendNode]
|
47
45
|
# @return [Boolean]
|
48
|
-
def_node_matcher :
|
46
|
+
def_node_matcher :describing_http_endpoint_identifier?, <<~PATTERN
|
49
47
|
(send
|
50
|
-
|
48
|
+
_
|
51
49
|
:describe
|
50
|
+
(str DESCRIPTION_PATTERN)
|
52
51
|
...
|
53
52
|
)
|
54
53
|
PATTERN
|
55
54
|
|
56
|
-
#
|
57
|
-
#
|
58
|
-
|
59
|
-
|
55
|
+
# @!method describing_at_top_level?(node)
|
56
|
+
# @param node [RuboCop::AST::SendNode]
|
57
|
+
# @return [Boolean]
|
58
|
+
def_node_matcher :describing_at_top_level?, <<~PATTERN
|
59
|
+
(send
|
60
|
+
(const
|
61
|
+
{nil? cbase}
|
62
|
+
:RSpec
|
63
|
+
)
|
64
|
+
:describe
|
65
|
+
...
|
66
|
+
)
|
67
|
+
PATTERN
|
68
|
+
|
69
|
+
# @param node [RuboCop::AST::SendNode]
|
70
|
+
def bad?(node)
|
71
|
+
describing_at_top_level?(node) &&
|
72
|
+
!describing_http_endpoint_identifier?(node)
|
60
73
|
end
|
61
74
|
end
|
62
75
|
end
|
@@ -2,9 +2,6 @@
|
|
2
2
|
|
3
3
|
module Sevencop
|
4
4
|
module CopConcerns
|
5
|
-
autoload :BatchProcessing, 'sevencop/cop_concerns/batch_processing'
|
6
|
-
autoload :ColumnTypeMethod, 'sevencop/cop_concerns/column_type_method'
|
7
|
-
autoload :DisableDdlTransaction, 'sevencop/cop_concerns/disable_ddl_transaction'
|
8
5
|
autoload :Ordered, 'sevencop/cop_concerns/ordered'
|
9
6
|
end
|
10
7
|
end
|
data/lib/sevencop/version.rb
CHANGED
data/lib/sevencop.rb
CHANGED
@@ -12,24 +12,9 @@ require_relative 'rubocop/cop/sevencop/method_definition_arguments_multiline'
|
|
12
12
|
require_relative 'rubocop/cop/sevencop/method_definition_in_included'
|
13
13
|
require_relative 'rubocop/cop/sevencop/method_definition_keyword_argument_ordered'
|
14
14
|
require_relative 'rubocop/cop/sevencop/method_definition_ordered'
|
15
|
+
require_relative 'rubocop/cop/sevencop/rails_action_name'
|
15
16
|
require_relative 'rubocop/cop/sevencop/rails_belongs_to_optional'
|
16
17
|
require_relative 'rubocop/cop/sevencop/rails_inferred_spec_type'
|
17
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_add_check_constraint'
|
18
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_add_column_with_default_value'
|
19
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_add_foreign_key'
|
20
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_add_index_concurrently'
|
21
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_batch_in_batches'
|
22
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_batch_in_transaction'
|
23
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_batch_with_throttling'
|
24
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_change_column'
|
25
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_change_column_null'
|
26
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_create_table_force'
|
27
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_jsonb'
|
28
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_remove_column'
|
29
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_rename_column'
|
30
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_rename_table'
|
31
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_reserved_word_mysql'
|
32
|
-
require_relative 'rubocop/cop/sevencop/rails_migration_unique_index_columns_count'
|
33
18
|
require_relative 'rubocop/cop/sevencop/rails_order_field'
|
34
19
|
require_relative 'rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity'
|
35
20
|
require_relative 'rubocop/cop/sevencop/rails_where_not'
|
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.
|
4
|
+
version: 0.24.2
|
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-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -64,24 +64,9 @@ files:
|
|
64
64
|
- lib/rubocop/cop/sevencop/method_definition_in_included.rb
|
65
65
|
- lib/rubocop/cop/sevencop/method_definition_keyword_argument_ordered.rb
|
66
66
|
- lib/rubocop/cop/sevencop/method_definition_ordered.rb
|
67
|
+
- lib/rubocop/cop/sevencop/rails_action_name.rb
|
67
68
|
- lib/rubocop/cop/sevencop/rails_belongs_to_optional.rb
|
68
69
|
- lib/rubocop/cop/sevencop/rails_inferred_spec_type.rb
|
69
|
-
- lib/rubocop/cop/sevencop/rails_migration_add_check_constraint.rb
|
70
|
-
- lib/rubocop/cop/sevencop/rails_migration_add_column_with_default_value.rb
|
71
|
-
- lib/rubocop/cop/sevencop/rails_migration_add_foreign_key.rb
|
72
|
-
- lib/rubocop/cop/sevencop/rails_migration_add_index_concurrently.rb
|
73
|
-
- lib/rubocop/cop/sevencop/rails_migration_batch_in_batches.rb
|
74
|
-
- lib/rubocop/cop/sevencop/rails_migration_batch_in_transaction.rb
|
75
|
-
- lib/rubocop/cop/sevencop/rails_migration_batch_with_throttling.rb
|
76
|
-
- lib/rubocop/cop/sevencop/rails_migration_change_column.rb
|
77
|
-
- lib/rubocop/cop/sevencop/rails_migration_change_column_null.rb
|
78
|
-
- lib/rubocop/cop/sevencop/rails_migration_create_table_force.rb
|
79
|
-
- lib/rubocop/cop/sevencop/rails_migration_jsonb.rb
|
80
|
-
- lib/rubocop/cop/sevencop/rails_migration_remove_column.rb
|
81
|
-
- lib/rubocop/cop/sevencop/rails_migration_rename_column.rb
|
82
|
-
- lib/rubocop/cop/sevencop/rails_migration_rename_table.rb
|
83
|
-
- lib/rubocop/cop/sevencop/rails_migration_reserved_word_mysql.rb
|
84
|
-
- lib/rubocop/cop/sevencop/rails_migration_unique_index_columns_count.rb
|
85
70
|
- lib/rubocop/cop/sevencop/rails_order_field.rb
|
86
71
|
- lib/rubocop/cop/sevencop/rails_uniqueness_validator_explicit_case_sensitivity.rb
|
87
72
|
- lib/rubocop/cop/sevencop/rails_where_not.rb
|
@@ -91,9 +76,6 @@ files:
|
|
91
76
|
- lib/sevencop.rb
|
92
77
|
- lib/sevencop/config_loader.rb
|
93
78
|
- lib/sevencop/cop_concerns.rb
|
94
|
-
- lib/sevencop/cop_concerns/batch_processing.rb
|
95
|
-
- lib/sevencop/cop_concerns/column_type_method.rb
|
96
|
-
- lib/sevencop/cop_concerns/disable_ddl_transaction.rb
|
97
79
|
- lib/sevencop/cop_concerns/ordered.rb
|
98
80
|
- lib/sevencop/rubocop_extension.rb
|
99
81
|
- lib/sevencop/version.rb
|
@@ -1,111 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module Sevencop
|
6
|
-
# Activate a check constraint in a separate migration in PostgreSQL.
|
7
|
-
#
|
8
|
-
# Adding a check constraint without `NOT VALID` blocks reads and writes in Postgres and
|
9
|
-
# blocks writes in MySQL and MariaDB while every row is checked.
|
10
|
-
#
|
11
|
-
# @safety
|
12
|
-
# Only meaningful in PostgreSQL.
|
13
|
-
#
|
14
|
-
# @example
|
15
|
-
# # bad
|
16
|
-
# class AddCheckConstraintToOrdersPrice < ActiveRecord::Migration[7.0]
|
17
|
-
# def change
|
18
|
-
# add_check_constraint :orders, 'price > 0', name: 'orders_price_positive'
|
19
|
-
# end
|
20
|
-
# end
|
21
|
-
#
|
22
|
-
# # good
|
23
|
-
# class AddCheckConstraintToOrdersPriceWithoutValidation < ActiveRecord::Migration[7.0]
|
24
|
-
# def change
|
25
|
-
# add_check_constraint :orders, 'price > 0', name: 'orders_price_positive', validate: false
|
26
|
-
# end
|
27
|
-
# end
|
28
|
-
#
|
29
|
-
# class ActivateCheckConstraintOnOrdersPrice < ActiveRecord::Migration[7.0]
|
30
|
-
# def change
|
31
|
-
# validate_check_constraint :orders, name: 'orders_price_positive'
|
32
|
-
# end
|
33
|
-
# end
|
34
|
-
class RailsMigrationAddCheckConstraint < RuboCop::Cop::Base
|
35
|
-
extend AutoCorrector
|
36
|
-
|
37
|
-
MSG = 'Activate a check constraint in a separate migration in PostgreSQL.'
|
38
|
-
|
39
|
-
RESTRICT_ON_SEND = %i[
|
40
|
-
add_check_constraint
|
41
|
-
].freeze
|
42
|
-
|
43
|
-
# @param node [RuboCop::AST::SendNode]
|
44
|
-
# @return [void]
|
45
|
-
def on_send(node)
|
46
|
-
return unless bad?(node)
|
47
|
-
|
48
|
-
add_offense(node) do |corrector|
|
49
|
-
autocorrect(corrector, node)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
# @!method add_check_constraint?(node)
|
56
|
-
# @param node [RuboCop::AST::SendNode]
|
57
|
-
# @return [Boolean]
|
58
|
-
def_node_matcher :add_check_constraint?, <<~PATTERN
|
59
|
-
(send
|
60
|
-
nil?
|
61
|
-
:add_check_constraint
|
62
|
-
...
|
63
|
-
)
|
64
|
-
PATTERN
|
65
|
-
|
66
|
-
# @!method add_check_constraint_with_validate_false?(node)
|
67
|
-
# @param node [RuboCop::AST::SendNode]
|
68
|
-
# @return [Boolean]
|
69
|
-
def_node_matcher :add_check_constraint_with_validate_false?, <<~PATTERN
|
70
|
-
(send
|
71
|
-
nil?
|
72
|
-
:add_check_constraint
|
73
|
-
_
|
74
|
-
_
|
75
|
-
(hash
|
76
|
-
<
|
77
|
-
(pair
|
78
|
-
(sym :validate)
|
79
|
-
false
|
80
|
-
)
|
81
|
-
...
|
82
|
-
>
|
83
|
-
)
|
84
|
-
)
|
85
|
-
PATTERN
|
86
|
-
|
87
|
-
# @param corrector [RuboCop::Cop::Corrector]
|
88
|
-
# @param node [RuboCop::AST::SendNode]
|
89
|
-
# @return [void]
|
90
|
-
def autocorrect(
|
91
|
-
corrector,
|
92
|
-
node
|
93
|
-
)
|
94
|
-
target = node.last_argument
|
95
|
-
target = target.pairs.last if target.hash_type?
|
96
|
-
corrector.insert_after(
|
97
|
-
target,
|
98
|
-
', validate: false'
|
99
|
-
)
|
100
|
-
end
|
101
|
-
|
102
|
-
# @param node [RuboCop::AST::SendNode]
|
103
|
-
# @return [Boolean]
|
104
|
-
def bad?(node)
|
105
|
-
add_check_constraint?(node) &&
|
106
|
-
!add_check_constraint_with_validate_false?(node)
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|