rubocop-github 0.17.0 → 0.18.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 +4 -4
- data/README.md +5 -22
- data/STYLEGUIDE.md +2 -1
- data/config/default.yml +334 -2
- data/config/rails.yml +127 -2
- data/lib/rubocop/cop/github/insecure_hash_algorithm.rb +1 -1
- data/lib/rubocop/cop/github/rails_application_record.rb +2 -2
- data/lib/rubocop/cop/github/rails_controller_render_action_symbol.rb +11 -5
- data/lib/rubocop/cop/github/rails_controller_render_literal.rb +7 -7
- data/lib/rubocop/cop/github/rails_controller_render_paths_exist.rb +4 -4
- data/lib/rubocop/cop/github/rails_controller_render_shorthand.rb +4 -11
- data/lib/rubocop/cop/github/rails_render_inline.rb +2 -2
- data/lib/rubocop/cop/github/rails_render_object_collection.rb +3 -3
- data/lib/rubocop/cop/github/rails_view_render_literal.rb +6 -6
- data/lib/rubocop/cop/github/rails_view_render_paths_exist.rb +3 -3
- data/lib/rubocop/cop/github/rails_view_render_shorthand.rb +3 -3
- metadata +9 -15
- data/config/_default_shared.yml +0 -329
- data/config/_rails_shared.yml +0 -120
- data/config/default_deprecated.yml +0 -4
- data/config/default_edge.yml +0 -4
- data/config/rails_deprecated.yml +0 -7
- data/config/rails_edge.yml +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5aac9faf8fd07df225b66910c710065d8d69fd889bd424778c3802374691d95
|
4
|
+
data.tar.gz: fc3548902e7759613503804188cd2e71e45ff0e4c6464c7544c6f3a62d9addd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5850a48c2665aff47ca0d0505b20869d0e573e4bb4018a79132a78e64c3b7fd3fe9c27c0c472966a1ce1e9bcaf9969a61d9241d919f899769a6b73f308fd48a
|
7
|
+
data.tar.gz: d451981724e1d7bc407f7bf0f5fb2078f97eb9779f83fa3168241e25b28beffebb06d55805bc8e7fee8eceb1621e8cc28ce0308f389e1ebe30edd4ef023108b5
|
data/README.md
CHANGED
@@ -4,28 +4,6 @@ This repository provides recommended RuboCop configuration and additional Cops f
|
|
4
4
|
|
5
5
|
## Usage
|
6
6
|
|
7
|
-
Rubocop 0.68 removed performance cops and 0.72 removed Rails cops. However, upgrading `rubocop-github` without modification will almost definitely create very many new offenses. The current version of this gem exposes the "legacy" configuration under `config/default.yml` and `config/rails.yml` which should be used *if and only if* the version of rubocop is locked to `< 0.68` in your project (which it should be unless you `bundle update rubocop`). It also exposes an "edge" configuration under `config/default_edge.yml` and `config/rails_edge.yml` so that the changes can be tested without introducing breaking changes.
|
8
|
-
|
9
|
-
### Legacy usage
|
10
|
-
|
11
|
-
**Gemfile**
|
12
|
-
|
13
|
-
``` ruby
|
14
|
-
gem "rubocop", "< 0.68"
|
15
|
-
gem "rubocop-github"
|
16
|
-
```
|
17
|
-
|
18
|
-
**.rubocop.yml**
|
19
|
-
|
20
|
-
``` yaml
|
21
|
-
inherit_gem:
|
22
|
-
rubocop-github:
|
23
|
-
- config/default.yml
|
24
|
-
- config/rails.yml
|
25
|
-
```
|
26
|
-
|
27
|
-
### Edge usage
|
28
|
-
|
29
7
|
**Gemfile**
|
30
8
|
|
31
9
|
``` ruby
|
@@ -43,6 +21,11 @@ inherit_gem:
|
|
43
21
|
- config/rails_edge.yml
|
44
22
|
```
|
45
23
|
|
24
|
+
### Legacy usage
|
25
|
+
|
26
|
+
If you are using a rubocop version < 1.0.0, you can use rubocop-github version
|
27
|
+
0.16.2 (see the README from that version for more details).
|
28
|
+
|
46
29
|
## Testing
|
47
30
|
|
48
31
|
`bundle install`
|
data/STYLEGUIDE.md
CHANGED
@@ -387,7 +387,8 @@ remove_member(user, skip_membership_check: true)
|
|
387
387
|
|
388
388
|
* The names of potentially "dangerous" methods (i.e. methods that modify `self` or the
|
389
389
|
arguments, `exit!`, etc.) should end with an exclamation mark. Bang methods
|
390
|
-
should only exist if a non-bang method
|
390
|
+
should only exist if a non-bang counterpart (method name which does NOT end with !)
|
391
|
+
also exists.
|
391
392
|
|
392
393
|
## Percent Literals
|
393
394
|
|
data/config/default.yml
CHANGED
@@ -1,2 +1,334 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require:
|
2
|
+
- rubocop/cop/github
|
3
|
+
- rubocop-performance
|
4
|
+
|
5
|
+
AllCops:
|
6
|
+
DisabledByDefault: true
|
7
|
+
|
8
|
+
Bundler/DuplicatedGem:
|
9
|
+
Enabled: true
|
10
|
+
|
11
|
+
Bundler/OrderedGems:
|
12
|
+
Enabled: true
|
13
|
+
|
14
|
+
GitHub/InsecureHashAlgorithm:
|
15
|
+
Enabled: true
|
16
|
+
|
17
|
+
Layout/BlockAlignment:
|
18
|
+
Enabled: true
|
19
|
+
|
20
|
+
Layout/BlockEndNewline:
|
21
|
+
Enabled: true
|
22
|
+
|
23
|
+
Layout/ConditionPosition:
|
24
|
+
Enabled: true
|
25
|
+
|
26
|
+
Layout/DefEndAlignment:
|
27
|
+
Enabled: true
|
28
|
+
|
29
|
+
Layout/EndAlignment:
|
30
|
+
Enabled: false
|
31
|
+
|
32
|
+
Layout/EndOfLine:
|
33
|
+
Enabled: true
|
34
|
+
|
35
|
+
Layout/IndentationStyle:
|
36
|
+
Enabled: true
|
37
|
+
EnforcedStyle: spaces
|
38
|
+
IndentationWidth: 2
|
39
|
+
|
40
|
+
Layout/IndentationWidth:
|
41
|
+
Enabled: true
|
42
|
+
Width: 2
|
43
|
+
|
44
|
+
Layout/InitialIndentation:
|
45
|
+
Enabled: true
|
46
|
+
|
47
|
+
Layout/LineLength:
|
48
|
+
Enabled: false
|
49
|
+
|
50
|
+
Layout/SpaceAfterColon:
|
51
|
+
Enabled: true
|
52
|
+
|
53
|
+
Layout/SpaceAfterComma:
|
54
|
+
Enabled: true
|
55
|
+
|
56
|
+
Layout/SpaceAfterMethodName:
|
57
|
+
Enabled: true
|
58
|
+
|
59
|
+
Layout/SpaceAfterNot:
|
60
|
+
Enabled: true
|
61
|
+
|
62
|
+
Layout/SpaceAfterSemicolon:
|
63
|
+
Enabled: true
|
64
|
+
|
65
|
+
Layout/SpaceAroundBlockParameters:
|
66
|
+
Enabled: true
|
67
|
+
|
68
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
69
|
+
Enabled: true
|
70
|
+
|
71
|
+
Layout/SpaceBeforeBlockBraces:
|
72
|
+
Enabled: true
|
73
|
+
|
74
|
+
Layout/SpaceInsideArrayLiteralBrackets:
|
75
|
+
Enabled: true
|
76
|
+
EnforcedStyle: no_space
|
77
|
+
|
78
|
+
Layout/SpaceInsideArrayPercentLiteral:
|
79
|
+
Enabled: true
|
80
|
+
|
81
|
+
Layout/SpaceInsideBlockBraces:
|
82
|
+
Enabled: true
|
83
|
+
|
84
|
+
Layout/SpaceInsideParens:
|
85
|
+
Enabled: true
|
86
|
+
|
87
|
+
Layout/SpaceInsideRangeLiteral:
|
88
|
+
Enabled: true
|
89
|
+
|
90
|
+
Layout/SpaceInsideReferenceBrackets:
|
91
|
+
Enabled: true
|
92
|
+
|
93
|
+
Layout/TrailingEmptyLines:
|
94
|
+
Enabled: true
|
95
|
+
|
96
|
+
Layout/TrailingWhitespace:
|
97
|
+
Enabled: true
|
98
|
+
|
99
|
+
Lint/CircularArgumentReference:
|
100
|
+
Enabled: true
|
101
|
+
|
102
|
+
Lint/Debugger:
|
103
|
+
Enabled: true
|
104
|
+
|
105
|
+
Lint/DeprecatedClassMethods:
|
106
|
+
Enabled: true
|
107
|
+
|
108
|
+
Lint/DuplicateMethods:
|
109
|
+
Enabled: true
|
110
|
+
|
111
|
+
Lint/DuplicateHashKey:
|
112
|
+
Enabled: true
|
113
|
+
|
114
|
+
Lint/EachWithObjectArgument:
|
115
|
+
Enabled: true
|
116
|
+
|
117
|
+
Lint/ElseLayout:
|
118
|
+
Enabled: true
|
119
|
+
|
120
|
+
Lint/EmptyEnsure:
|
121
|
+
Enabled: true
|
122
|
+
|
123
|
+
Lint/EmptyInterpolation:
|
124
|
+
Enabled: true
|
125
|
+
|
126
|
+
Lint/EnsureReturn:
|
127
|
+
Enabled: true
|
128
|
+
|
129
|
+
Lint/FlipFlop:
|
130
|
+
Enabled: true
|
131
|
+
|
132
|
+
Lint/FloatOutOfRange:
|
133
|
+
Enabled: true
|
134
|
+
|
135
|
+
Lint/FormatParameterMismatch:
|
136
|
+
Enabled: true
|
137
|
+
|
138
|
+
Lint/LiteralAsCondition:
|
139
|
+
Enabled: true
|
140
|
+
|
141
|
+
Lint/LiteralInInterpolation:
|
142
|
+
Enabled: true
|
143
|
+
|
144
|
+
Lint/Loop:
|
145
|
+
Enabled: true
|
146
|
+
|
147
|
+
Lint/NextWithoutAccumulator:
|
148
|
+
Enabled: true
|
149
|
+
|
150
|
+
Lint/RandOne:
|
151
|
+
Enabled: true
|
152
|
+
|
153
|
+
Lint/RequireParentheses:
|
154
|
+
Enabled: true
|
155
|
+
|
156
|
+
Lint/RescueException:
|
157
|
+
Enabled: true
|
158
|
+
|
159
|
+
Lint/RedundantStringCoercion:
|
160
|
+
Enabled: true
|
161
|
+
|
162
|
+
Lint/UnderscorePrefixedVariableName:
|
163
|
+
Enabled: true
|
164
|
+
|
165
|
+
Lint/RedundantCopDisableDirective:
|
166
|
+
Enabled: true
|
167
|
+
|
168
|
+
Lint/RedundantSplatExpansion:
|
169
|
+
Enabled: true
|
170
|
+
|
171
|
+
Lint/UnreachableCode:
|
172
|
+
Enabled: true
|
173
|
+
|
174
|
+
Lint/BinaryOperatorWithIdenticalOperands:
|
175
|
+
Enabled: true
|
176
|
+
|
177
|
+
Lint/UselessSetterCall:
|
178
|
+
Enabled: true
|
179
|
+
|
180
|
+
Lint/Void:
|
181
|
+
Enabled: true
|
182
|
+
|
183
|
+
Metrics/AbcSize:
|
184
|
+
Enabled: false
|
185
|
+
|
186
|
+
Metrics/BlockLength:
|
187
|
+
Enabled: false
|
188
|
+
|
189
|
+
Metrics/BlockNesting:
|
190
|
+
Enabled: false
|
191
|
+
|
192
|
+
Metrics/ClassLength:
|
193
|
+
Enabled: false
|
194
|
+
|
195
|
+
Metrics/CyclomaticComplexity:
|
196
|
+
Enabled: false
|
197
|
+
|
198
|
+
Metrics/MethodLength:
|
199
|
+
Enabled: false
|
200
|
+
|
201
|
+
Metrics/ModuleLength:
|
202
|
+
Enabled: false
|
203
|
+
|
204
|
+
Metrics/ParameterLists:
|
205
|
+
Enabled: false
|
206
|
+
|
207
|
+
Metrics/PerceivedComplexity:
|
208
|
+
Enabled: false
|
209
|
+
|
210
|
+
Naming/AsciiIdentifiers:
|
211
|
+
Enabled: true
|
212
|
+
|
213
|
+
Naming/ClassAndModuleCamelCase:
|
214
|
+
Enabled: true
|
215
|
+
|
216
|
+
Naming/FileName:
|
217
|
+
Enabled: true
|
218
|
+
|
219
|
+
Naming/MethodName:
|
220
|
+
Enabled: true
|
221
|
+
|
222
|
+
Performance/CaseWhenSplat:
|
223
|
+
Enabled: false
|
224
|
+
|
225
|
+
Performance/Count:
|
226
|
+
Enabled: true
|
227
|
+
|
228
|
+
Performance/Detect:
|
229
|
+
Enabled: true
|
230
|
+
|
231
|
+
Performance/DoubleStartEndWith:
|
232
|
+
Enabled: true
|
233
|
+
|
234
|
+
Performance/EndWith:
|
235
|
+
Enabled: true
|
236
|
+
|
237
|
+
Performance/FlatMap:
|
238
|
+
Enabled: true
|
239
|
+
|
240
|
+
Performance/RangeInclude:
|
241
|
+
Enabled: false
|
242
|
+
|
243
|
+
Performance/RedundantMatch:
|
244
|
+
Enabled: false
|
245
|
+
|
246
|
+
Performance/RedundantMerge:
|
247
|
+
Enabled: true
|
248
|
+
MaxKeyValuePairs: 1
|
249
|
+
|
250
|
+
Performance/ReverseEach:
|
251
|
+
Enabled: true
|
252
|
+
|
253
|
+
Performance/Size:
|
254
|
+
Enabled: true
|
255
|
+
|
256
|
+
Performance/StartWith:
|
257
|
+
Enabled: true
|
258
|
+
|
259
|
+
Security/Eval:
|
260
|
+
Enabled: true
|
261
|
+
|
262
|
+
Style/ArrayJoin:
|
263
|
+
Enabled: true
|
264
|
+
|
265
|
+
Style/BeginBlock:
|
266
|
+
Enabled: true
|
267
|
+
|
268
|
+
Style/BlockComments:
|
269
|
+
Enabled: true
|
270
|
+
|
271
|
+
Style/CaseEquality:
|
272
|
+
Enabled: true
|
273
|
+
|
274
|
+
Style/CharacterLiteral:
|
275
|
+
Enabled: true
|
276
|
+
|
277
|
+
Style/ClassMethods:
|
278
|
+
Enabled: true
|
279
|
+
|
280
|
+
Style/Copyright:
|
281
|
+
Enabled: false
|
282
|
+
|
283
|
+
Style/DefWithParentheses:
|
284
|
+
Enabled: true
|
285
|
+
|
286
|
+
Style/EndBlock:
|
287
|
+
Enabled: true
|
288
|
+
|
289
|
+
Style/For:
|
290
|
+
Enabled: true
|
291
|
+
|
292
|
+
Style/FrozenStringLiteralComment:
|
293
|
+
Enabled: true
|
294
|
+
|
295
|
+
Style/HashSyntax:
|
296
|
+
Enabled: true
|
297
|
+
EnforcedStyle: ruby19_no_mixed_keys
|
298
|
+
|
299
|
+
Style/LambdaCall:
|
300
|
+
Enabled: true
|
301
|
+
|
302
|
+
Style/MethodCallWithoutArgsParentheses:
|
303
|
+
Enabled: true
|
304
|
+
|
305
|
+
Style/MethodDefParentheses:
|
306
|
+
Enabled: true
|
307
|
+
|
308
|
+
Style/MultilineIfThen:
|
309
|
+
Enabled: true
|
310
|
+
|
311
|
+
Style/NilComparison:
|
312
|
+
Enabled: true
|
313
|
+
|
314
|
+
Style/Not:
|
315
|
+
Enabled: true
|
316
|
+
|
317
|
+
Style/OneLineConditional:
|
318
|
+
Enabled: true
|
319
|
+
|
320
|
+
Style/RedundantSortBy:
|
321
|
+
Enabled: true
|
322
|
+
|
323
|
+
Style/Sample:
|
324
|
+
Enabled: true
|
325
|
+
|
326
|
+
Style/StabbyLambdaParentheses:
|
327
|
+
Enabled: true
|
328
|
+
|
329
|
+
Style/Strip:
|
330
|
+
Enabled: true
|
331
|
+
|
332
|
+
Style/StringLiterals:
|
333
|
+
Enabled: true
|
334
|
+
EnforcedStyle: double_quotes
|
data/config/rails.yml
CHANGED
@@ -1,2 +1,127 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require:
|
2
|
+
- rubocop-rails
|
3
|
+
|
4
|
+
Rails/OutputSafety:
|
5
|
+
Enabled: true
|
6
|
+
|
7
|
+
Rails/PluralizationGrammar:
|
8
|
+
Enabled: true
|
9
|
+
|
10
|
+
Rails/RequestReferer:
|
11
|
+
Enabled: true
|
12
|
+
EnforcedStyle: referrer
|
13
|
+
|
14
|
+
Rails/ScopeArgs:
|
15
|
+
Enabled: true
|
16
|
+
|
17
|
+
Rails/UniqBeforePluck:
|
18
|
+
Enabled: true
|
19
|
+
|
20
|
+
GitHub/RailsApplicationRecord:
|
21
|
+
Enabled: true
|
22
|
+
|
23
|
+
GitHub/RailsControllerRenderActionSymbol:
|
24
|
+
Enabled: true
|
25
|
+
Include:
|
26
|
+
- 'app/controllers/**/*.rb'
|
27
|
+
|
28
|
+
GitHub/RailsControllerRenderLiteral:
|
29
|
+
Enabled: true
|
30
|
+
StyleGuide: https://github.com/github/rubocop-github/blob/master/guides/rails-render-literal.md
|
31
|
+
Include:
|
32
|
+
- 'app/controllers/**/*.rb'
|
33
|
+
|
34
|
+
GitHub/RailsControllerRenderPathsExist:
|
35
|
+
Enabled: true
|
36
|
+
ViewPath:
|
37
|
+
- 'app/views'
|
38
|
+
Include:
|
39
|
+
- 'app/controllers/**/*.rb'
|
40
|
+
|
41
|
+
GitHub/RailsControllerRenderShorthand:
|
42
|
+
Enabled: true
|
43
|
+
StyleGuide: https://github.com/github/rubocop-github/blob/master/guides/rails-controller-render-shorthand.md
|
44
|
+
Include:
|
45
|
+
- 'app/controllers/**/*.rb'
|
46
|
+
|
47
|
+
GitHub/RailsRenderInline:
|
48
|
+
Enabled: true
|
49
|
+
StyleGuide: https://github.com/github/rubocop-github/blob/master/guides/rails-controller-render-inline.md
|
50
|
+
Include:
|
51
|
+
- 'app/controllers/**/*.rb'
|
52
|
+
- 'app/helpers/**/*.rb'
|
53
|
+
- 'app/view_models/**/*.rb'
|
54
|
+
- 'app/views/**/*.erb'
|
55
|
+
|
56
|
+
GitHub/RailsRenderObjectCollection:
|
57
|
+
Enabled: false
|
58
|
+
|
59
|
+
GitHub/RailsViewRenderLiteral:
|
60
|
+
Enabled: true
|
61
|
+
StyleGuide: https://github.com/github/rubocop-github/blob/master/guides/rails-render-literal.md
|
62
|
+
Include:
|
63
|
+
- 'app/helpers/**/*.rb'
|
64
|
+
- 'app/view_models/**/*.rb'
|
65
|
+
- 'app/views/**/*.erb'
|
66
|
+
|
67
|
+
GitHub/RailsViewRenderPathsExist:
|
68
|
+
Enabled: true
|
69
|
+
ViewPath:
|
70
|
+
- 'app/views'
|
71
|
+
Include:
|
72
|
+
- 'app/helpers/**/*.rb'
|
73
|
+
- 'app/view_models/**/*.rb'
|
74
|
+
- 'app/views/**/*.erb'
|
75
|
+
|
76
|
+
GitHub/RailsViewRenderShorthand:
|
77
|
+
Enabled: true
|
78
|
+
Include:
|
79
|
+
- 'app/helpers/**/*.rb'
|
80
|
+
- 'app/view_models/**/*.rb'
|
81
|
+
- 'app/views/**/*.erb'
|
82
|
+
|
83
|
+
# Exclude Rails ERB files from incompatible cops
|
84
|
+
|
85
|
+
Layout/BlockAlignment:
|
86
|
+
Exclude:
|
87
|
+
- 'app/views/**/*.erb'
|
88
|
+
|
89
|
+
Style/For:
|
90
|
+
Exclude:
|
91
|
+
- 'app/views/**/*.erb'
|
92
|
+
|
93
|
+
Style/OneLineConditional:
|
94
|
+
Exclude:
|
95
|
+
- 'app/views/**/*.erb'
|
96
|
+
|
97
|
+
Style/Semicolon:
|
98
|
+
Exclude:
|
99
|
+
- 'app/views/**/*.erb'
|
100
|
+
|
101
|
+
Layout/SpaceInsideParens:
|
102
|
+
Exclude:
|
103
|
+
- 'app/views/**/*.erb'
|
104
|
+
|
105
|
+
Style/StringLiterals:
|
106
|
+
Exclude:
|
107
|
+
- 'app/views/**/*.erb'
|
108
|
+
|
109
|
+
Layout/TrailingEmptyLines:
|
110
|
+
Exclude:
|
111
|
+
- 'app/views/**/*.erb'
|
112
|
+
|
113
|
+
Layout/TrailingWhitespace:
|
114
|
+
Exclude:
|
115
|
+
- 'app/views/**/*.erb'
|
116
|
+
|
117
|
+
Layout/IndentationWidth:
|
118
|
+
Exclude:
|
119
|
+
- 'app/views/**/*.erb'
|
120
|
+
|
121
|
+
Layout/InitialIndentation:
|
122
|
+
Exclude:
|
123
|
+
- 'app/views/**/*.erb'
|
124
|
+
|
125
|
+
Lint/UselessAccessModifier:
|
126
|
+
ContextCreatingMethods:
|
127
|
+
- concerning
|
@@ -5,7 +5,7 @@ require "rubocop"
|
|
5
5
|
module RuboCop
|
6
6
|
module Cop
|
7
7
|
module GitHub
|
8
|
-
class InsecureHashAlgorithm <
|
8
|
+
class InsecureHashAlgorithm < Base
|
9
9
|
MSG = "This hash function is not allowed"
|
10
10
|
UUID_V3_MSG = "uuid_v3 uses MD5, which is not allowed"
|
11
11
|
UUID_V5_MSG = "uuid_v5 uses SHA1, which is not allowed"
|
@@ -5,7 +5,7 @@ require "rubocop"
|
|
5
5
|
module RuboCop
|
6
6
|
module Cop
|
7
7
|
module GitHub
|
8
|
-
class RailsApplicationRecord <
|
8
|
+
class RailsApplicationRecord < Base
|
9
9
|
MSG = "Models should subclass from ApplicationRecord"
|
10
10
|
|
11
11
|
def_node_matcher :active_record_base_const?, <<-PATTERN
|
@@ -20,7 +20,7 @@ module RuboCop
|
|
20
20
|
klass, superclass, _ = *node
|
21
21
|
|
22
22
|
if active_record_base_const?(superclass) && !(application_record_const?(klass))
|
23
|
-
add_offense(superclass
|
23
|
+
add_offense(superclass)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -5,7 +5,9 @@ require "rubocop"
|
|
5
5
|
module RuboCop
|
6
6
|
module Cop
|
7
7
|
module GitHub
|
8
|
-
class RailsControllerRenderActionSymbol <
|
8
|
+
class RailsControllerRenderActionSymbol < Base
|
9
|
+
extend AutoCorrector
|
10
|
+
|
9
11
|
MSG = "Prefer `render` with string instead of symbol"
|
10
12
|
|
11
13
|
def_node_matcher :render_sym?, <<-PATTERN
|
@@ -22,18 +24,22 @@ module RuboCop
|
|
22
24
|
|
23
25
|
def on_send(node)
|
24
26
|
if sym_node = render_sym?(node)
|
25
|
-
add_offense(sym_node
|
27
|
+
add_offense(sym_node) do |corrector|
|
28
|
+
register_offense(sym_node, node)
|
29
|
+
end
|
26
30
|
elsif option_pairs = render_with_options?(node)
|
27
31
|
option_pairs.each do |pair|
|
28
32
|
if sym_node = action_key?(pair)
|
29
|
-
|
33
|
+
register_offense(sym_node, node)
|
30
34
|
end
|
31
35
|
end
|
32
36
|
end
|
33
37
|
end
|
34
38
|
|
35
|
-
|
36
|
-
|
39
|
+
private
|
40
|
+
|
41
|
+
def register_offense(sym_node, node)
|
42
|
+
add_offense(sym_node) do |corrector|
|
37
43
|
corrector.replace(node.source_range, "\"#{node.children[0]}\"")
|
38
44
|
end
|
39
45
|
end
|
@@ -6,7 +6,7 @@ require "rubocop/cop/github/render_literal_helpers"
|
|
6
6
|
module RuboCop
|
7
7
|
module Cop
|
8
8
|
module GitHub
|
9
|
-
class RailsControllerRenderLiteral <
|
9
|
+
class RailsControllerRenderLiteral < Base
|
10
10
|
include RenderLiteralHelpers
|
11
11
|
|
12
12
|
MSG = "render must be used with a string literal or an instance of a Class"
|
@@ -66,29 +66,29 @@ module RuboCop
|
|
66
66
|
|
67
67
|
if template_node = option_pairs.map { |pair| template_key?(pair) }.compact.first
|
68
68
|
if !literal?(template_node)
|
69
|
-
add_offense(node
|
69
|
+
add_offense(node)
|
70
70
|
return
|
71
71
|
end
|
72
72
|
else
|
73
|
-
add_offense(node
|
73
|
+
add_offense(node)
|
74
74
|
return
|
75
75
|
end
|
76
76
|
|
77
77
|
if layout_node = option_pairs.map { |pair| layout_key?(pair) }.compact.first
|
78
78
|
if !literal?(layout_node)
|
79
|
-
add_offense(node
|
79
|
+
add_offense(node)
|
80
80
|
return
|
81
81
|
end
|
82
82
|
end
|
83
83
|
else
|
84
|
-
add_offense(node
|
84
|
+
add_offense(node)
|
85
85
|
return
|
86
86
|
end
|
87
87
|
|
88
88
|
if render_literal?(node)
|
89
89
|
option_hash = node.arguments[1]
|
90
90
|
if option_hash && !option_hash.hash_type?
|
91
|
-
add_offense(node
|
91
|
+
add_offense(node)
|
92
92
|
return
|
93
93
|
end
|
94
94
|
option_pairs = option_hash && option_hash.pairs
|
@@ -99,7 +99,7 @@ module RuboCop
|
|
99
99
|
if option_pairs
|
100
100
|
locals = option_pairs.map { |pair| locals_key?(pair) }.compact.first
|
101
101
|
if locals && (!locals.hash_type? || !hash_with_literal_keys?(locals))
|
102
|
-
add_offense(node
|
102
|
+
add_offense(node)
|
103
103
|
end
|
104
104
|
end
|
105
105
|
end
|
@@ -5,7 +5,7 @@ require "rubocop"
|
|
5
5
|
module RuboCop
|
6
6
|
module Cop
|
7
7
|
module GitHub
|
8
|
-
class RailsControllerRenderPathsExist <
|
8
|
+
class RailsControllerRenderPathsExist < Base
|
9
9
|
def_node_matcher :render?, <<-PATTERN
|
10
10
|
(send nil? {:render :render_to_string} $...)
|
11
11
|
PATTERN
|
@@ -28,7 +28,7 @@ module RuboCop
|
|
28
28
|
if args = render_str?(node)
|
29
29
|
node, path = args
|
30
30
|
unless resolve_template(path.to_s)
|
31
|
-
add_offense(node,
|
31
|
+
add_offense(node, message: "Template could not be found")
|
32
32
|
end
|
33
33
|
elsif pairs = render_options?(node)
|
34
34
|
if pair = pairs.detect { |p| render_key?(p) }
|
@@ -37,11 +37,11 @@ module RuboCop
|
|
37
37
|
case key
|
38
38
|
when :action, :template
|
39
39
|
unless resolve_template(path.to_s)
|
40
|
-
add_offense(node,
|
40
|
+
add_offense(node, message: "Template could not be found")
|
41
41
|
end
|
42
42
|
when :partial
|
43
43
|
unless resolve_partial(path.to_s)
|
44
|
-
add_offense(node,
|
44
|
+
add_offense(node, message: "Partial template could not be found")
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|