rubocop-github 0.27.0 → 0.29.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/STYLEGUIDE.md +49 -22
- data/config/default.yml +319 -3
- data/config/default_cops.yml +4 -0
- data/config/default_pending.yml +1 -116
- data/config/rails.yml +72 -0
- data/config/rails_pending.yml +1 -102
- data/lib/rubocop/cop/github/rails_view_render_literal.rb +1 -0
- data/lib/rubocop/cop/github/unreliable_subclasses.rb +48 -0
- data/lib/rubocop-github.rb +1 -0
- data/lib/version.rb +1 -1
- metadata +10 -9
data/config/default_cops.yml
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
GitHub/InsecureHashAlgorithm:
|
|
2
2
|
Description: 'Encourage usage of secure hash algorithms'
|
|
3
3
|
Enabled: pending
|
|
4
|
+
|
|
5
|
+
GitHub/UnreliableSubclasses:
|
|
6
|
+
Description: "Avoid `Class#subclasses` and `Class#descendants`; they miss not-yet-autoloaded classes and depend on GC timing."
|
|
7
|
+
Enabled: pending
|
data/config/default_pending.yml
CHANGED
|
@@ -1,116 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Enabled: false
|
|
3
|
-
Style/OperatorMethodCall: # new in 1.37
|
|
4
|
-
Enabled: false
|
|
5
|
-
Style/RedundantStringEscape: # new in 1.37
|
|
6
|
-
Enabled: false
|
|
7
|
-
Gemspec/DevelopmentDependencies: # new in 1.44
|
|
8
|
-
Enabled: false
|
|
9
|
-
Lint/DuplicateMatchPattern: # new in 1.50
|
|
10
|
-
Enabled: false
|
|
11
|
-
Lint/ItWithoutArgumentsInBlock: # new in 1.59
|
|
12
|
-
Enabled: false
|
|
13
|
-
Lint/LiteralAssignmentInCondition: # new in 1.58
|
|
14
|
-
Enabled: false
|
|
15
|
-
Lint/MixedCaseRange: # new in 1.53
|
|
16
|
-
Enabled: false
|
|
17
|
-
Lint/RedundantRegexpQuantifiers: # new in 1.53
|
|
18
|
-
Enabled: false
|
|
19
|
-
Lint/UselessRescue: # new in 1.43
|
|
20
|
-
Enabled: false
|
|
21
|
-
Metrics/CollectionLiteralLength: # new in 1.47
|
|
22
|
-
Enabled: false
|
|
23
|
-
Style/ArrayIntersect: # new in 1.40
|
|
24
|
-
Enabled: false
|
|
25
|
-
Style/ComparableClamp: # new in 1.44
|
|
26
|
-
Enabled: false
|
|
27
|
-
Style/ConcatArrayLiterals: # new in 1.41
|
|
28
|
-
Enabled: false
|
|
29
|
-
Style/DataInheritance: # new in 1.49
|
|
30
|
-
Enabled: false
|
|
31
|
-
Style/DirEmpty: # new in 1.48
|
|
32
|
-
Enabled: false
|
|
33
|
-
Style/ExactRegexpMatch: # new in 1.51
|
|
34
|
-
Enabled: false
|
|
35
|
-
Style/FileEmpty: # new in 1.48
|
|
36
|
-
Enabled: false
|
|
37
|
-
Style/MapIntoArray: # new in 1.63
|
|
38
|
-
Enabled: false
|
|
39
|
-
Style/MapToSet: # new in 1.42
|
|
40
|
-
Enabled: false
|
|
41
|
-
Style/MinMaxComparison: # new in 1.42
|
|
42
|
-
Enabled: false
|
|
43
|
-
Style/RedundantArrayConstructor: # new in 1.52
|
|
44
|
-
Enabled: false
|
|
45
|
-
Style/RedundantConstantBase: # new in 1.40
|
|
46
|
-
Enabled: false
|
|
47
|
-
Style/RedundantCurrentDirectoryInPath: # new in 1.53
|
|
48
|
-
Enabled: false
|
|
49
|
-
Style/RedundantDoubleSplatHashBraces: # new in 1.41
|
|
50
|
-
Enabled: false
|
|
51
|
-
Style/RedundantEach: # new in 1.38
|
|
52
|
-
Enabled: false
|
|
53
|
-
Style/RedundantFilterChain: # new in 1.52
|
|
54
|
-
Enabled: false
|
|
55
|
-
Style/RedundantHeredocDelimiterQuotes: # new in 1.45
|
|
56
|
-
Enabled: false
|
|
57
|
-
Style/RedundantLineContinuation: # new in 1.49
|
|
58
|
-
Enabled: false
|
|
59
|
-
Style/RedundantRegexpArgument: # new in 1.53
|
|
60
|
-
Enabled: false
|
|
61
|
-
Style/RedundantRegexpConstructor: # new in 1.52
|
|
62
|
-
Enabled: false
|
|
63
|
-
Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
|
|
64
|
-
Enabled: false
|
|
65
|
-
Style/SingleLineDoEndBlock: # new in 1.57
|
|
66
|
-
Enabled: false
|
|
67
|
-
Style/SuperWithArgsParentheses: # new in 1.58
|
|
68
|
-
Enabled: false
|
|
69
|
-
Style/YAMLFileRead: # new in 1.53
|
|
70
|
-
Enabled: false
|
|
71
|
-
Performance/MapMethodChain: # new in 1.19
|
|
72
|
-
Enabled: false
|
|
73
|
-
Gemspec/AddRuntimeDependency: # new in 1.65
|
|
74
|
-
Enabled: false
|
|
75
|
-
Lint/ConstantReassignment: # new in 1.70
|
|
76
|
-
Enabled: false
|
|
77
|
-
Lint/DuplicateSetElement: # new in 1.67
|
|
78
|
-
Enabled: false
|
|
79
|
-
Lint/HashNewWithKeywordArgumentsAsDefault: # new in 1.69
|
|
80
|
-
Enabled: false
|
|
81
|
-
Lint/NumericOperationWithConstantResult: # new in 1.69
|
|
82
|
-
Enabled: false
|
|
83
|
-
Lint/SharedMutableDefault: # new in 1.70
|
|
84
|
-
Enabled: false
|
|
85
|
-
Lint/UnescapedBracketInRegexp: # new in 1.68
|
|
86
|
-
Enabled: false
|
|
87
|
-
Lint/UselessDefined: # new in 1.69
|
|
88
|
-
Enabled: false
|
|
89
|
-
Lint/UselessNumericOperation: # new in 1.66
|
|
90
|
-
Enabled: false
|
|
91
|
-
Style/AmbiguousEndlessMethodDefinition: # new in 1.68
|
|
92
|
-
Enabled: false
|
|
93
|
-
Style/BitwisePredicate: # new in 1.68
|
|
94
|
-
Enabled: false
|
|
95
|
-
Style/CombinableDefined: # new in 1.68
|
|
96
|
-
Enabled: false
|
|
97
|
-
Style/DigChain: # new in 1.69
|
|
98
|
-
Enabled: false
|
|
99
|
-
Style/FileNull: # new in 1.69
|
|
100
|
-
Enabled: false
|
|
101
|
-
Style/FileTouch: # new in 1.69
|
|
102
|
-
Enabled: false
|
|
103
|
-
Style/ItAssignment: # new in 1.70
|
|
104
|
-
Enabled: false
|
|
105
|
-
Style/KeywordArgumentsMerging: # new in 1.68
|
|
106
|
-
Enabled: false
|
|
107
|
-
Style/RedundantInterpolationUnfreeze: # new in 1.66
|
|
108
|
-
Enabled: false
|
|
109
|
-
Style/SafeNavigationChainLength: # new in 1.68
|
|
110
|
-
Enabled: false
|
|
111
|
-
Style/SendWithLiteralMethodName: # new in 1.64
|
|
112
|
-
Enabled: false
|
|
113
|
-
Style/SuperArguments: # new in 1.64
|
|
114
|
-
Enabled: false
|
|
115
|
-
Performance/StringBytesize: # new in 1.23
|
|
116
|
-
Enabled: false
|
|
1
|
+
# Newly introduced cops awaiting an explicit enabled or disabled decision.
|
data/config/rails.yml
CHANGED
|
@@ -60,12 +60,18 @@ Lint/UselessAccessModifier:
|
|
|
60
60
|
ContextCreatingMethods:
|
|
61
61
|
- concerning
|
|
62
62
|
|
|
63
|
+
Rails/ActionControllerFlashBeforeRender:
|
|
64
|
+
Enabled: true
|
|
65
|
+
|
|
63
66
|
Rails/ActionControllerTestCase:
|
|
64
67
|
Enabled: false
|
|
65
68
|
|
|
66
69
|
Rails/ActionFilter:
|
|
67
70
|
Enabled: false
|
|
68
71
|
|
|
72
|
+
Rails/ActionOrder:
|
|
73
|
+
Enabled: false
|
|
74
|
+
|
|
69
75
|
Rails/ActiveRecordAliases:
|
|
70
76
|
Enabled: false
|
|
71
77
|
|
|
@@ -78,6 +84,9 @@ Rails/ActiveRecordOverride:
|
|
|
78
84
|
Rails/ActiveSupportAliases:
|
|
79
85
|
Enabled: false
|
|
80
86
|
|
|
87
|
+
Rails/ActiveSupportOnLoad:
|
|
88
|
+
Enabled: true
|
|
89
|
+
|
|
81
90
|
Rails/AddColumnIndex:
|
|
82
91
|
Enabled: false
|
|
83
92
|
|
|
@@ -123,6 +132,9 @@ Rails/ContentTag:
|
|
|
123
132
|
Rails/CreateTableWithTimestamps:
|
|
124
133
|
Enabled: false
|
|
125
134
|
|
|
135
|
+
Rails/DangerousColumnNames:
|
|
136
|
+
Enabled: true
|
|
137
|
+
|
|
126
138
|
Rails/Date:
|
|
127
139
|
Enabled: false
|
|
128
140
|
|
|
@@ -159,6 +171,9 @@ Rails/EagerEvaluationLogMessage:
|
|
|
159
171
|
Rails/EnumHash:
|
|
160
172
|
Enabled: false
|
|
161
173
|
|
|
174
|
+
Rails/EnumSyntax:
|
|
175
|
+
Enabled: true
|
|
176
|
+
|
|
162
177
|
Rails/EnumUniqueness:
|
|
163
178
|
Enabled: false
|
|
164
179
|
|
|
@@ -168,6 +183,9 @@ Rails/EnvironmentComparison:
|
|
|
168
183
|
Rails/EnvironmentVariableAccess:
|
|
169
184
|
Enabled: false
|
|
170
185
|
|
|
186
|
+
Rails/EnvLocal:
|
|
187
|
+
Enabled: true
|
|
188
|
+
|
|
171
189
|
Rails/Exit:
|
|
172
190
|
Enabled: false
|
|
173
191
|
|
|
@@ -183,9 +201,15 @@ Rails/FindBy:
|
|
|
183
201
|
Rails/FindById:
|
|
184
202
|
Enabled: false
|
|
185
203
|
|
|
204
|
+
Rails/FindByOrAssignmentMemoization:
|
|
205
|
+
Enabled: true
|
|
206
|
+
|
|
186
207
|
Rails/FindEach:
|
|
187
208
|
Enabled: false
|
|
188
209
|
|
|
210
|
+
Rails/FreezeTime:
|
|
211
|
+
Enabled: true
|
|
212
|
+
|
|
189
213
|
Rails/HasAndBelongsToMany:
|
|
190
214
|
Enabled: false
|
|
191
215
|
|
|
@@ -201,6 +225,9 @@ Rails/HttpPositionalArguments:
|
|
|
201
225
|
Rails/HttpStatus:
|
|
202
226
|
Enabled: false
|
|
203
227
|
|
|
228
|
+
Rails/HttpStatusNameConsistency:
|
|
229
|
+
Enabled: false
|
|
230
|
+
|
|
204
231
|
Rails/I18nLazyLookup:
|
|
205
232
|
Enabled: false
|
|
206
233
|
|
|
@@ -210,6 +237,9 @@ Rails/I18nLocaleAssignment:
|
|
|
210
237
|
Rails/I18nLocaleTexts:
|
|
211
238
|
Enabled: false
|
|
212
239
|
|
|
240
|
+
Rails/IgnoredColumnsAssignment:
|
|
241
|
+
Enabled: true
|
|
242
|
+
|
|
213
243
|
Rails/IgnoredSkipActionFilterOption:
|
|
214
244
|
Enabled: false
|
|
215
245
|
|
|
@@ -240,12 +270,18 @@ Rails/MatchRoute:
|
|
|
240
270
|
Rails/MigrationClassName:
|
|
241
271
|
Enabled: false
|
|
242
272
|
|
|
273
|
+
Rails/MultipleRoutePaths:
|
|
274
|
+
Enabled: true
|
|
275
|
+
|
|
243
276
|
Rails/NegateInclude:
|
|
244
277
|
Enabled: false
|
|
245
278
|
|
|
246
279
|
Rails/NotNullColumn:
|
|
247
280
|
Enabled: false
|
|
248
281
|
|
|
282
|
+
Rails/OrderArguments:
|
|
283
|
+
Enabled: false
|
|
284
|
+
|
|
249
285
|
Rails/OrderById:
|
|
250
286
|
Enabled: false
|
|
251
287
|
|
|
@@ -282,6 +318,12 @@ Rails/RakeEnvironment:
|
|
|
282
318
|
Rails/ReadWriteAttribute:
|
|
283
319
|
Enabled: false
|
|
284
320
|
|
|
321
|
+
Rails/RedirectBackOrTo:
|
|
322
|
+
Enabled: true
|
|
323
|
+
|
|
324
|
+
Rails/RedundantActiveRecordAllMethod:
|
|
325
|
+
Enabled: false
|
|
326
|
+
|
|
285
327
|
Rails/RedundantAllowNil:
|
|
286
328
|
Enabled: false
|
|
287
329
|
|
|
@@ -325,9 +367,15 @@ Rails/ReversibleMigration:
|
|
|
325
367
|
Rails/ReversibleMigrationMethodDefinition:
|
|
326
368
|
Enabled: false
|
|
327
369
|
|
|
370
|
+
Rails/ResponseParsedBody:
|
|
371
|
+
Enabled: false
|
|
372
|
+
|
|
328
373
|
Rails/RootJoinChain:
|
|
329
374
|
Enabled: false
|
|
330
375
|
|
|
376
|
+
Rails/RootPathnameMethods:
|
|
377
|
+
Enabled: false
|
|
378
|
+
|
|
331
379
|
Rails/RootPublicPath:
|
|
332
380
|
Enabled: false
|
|
333
381
|
|
|
@@ -358,9 +406,15 @@ Rails/SquishedSQLHeredocs:
|
|
|
358
406
|
Rails/StripHeredoc:
|
|
359
407
|
Enabled: false
|
|
360
408
|
|
|
409
|
+
Rails/StrongParametersExpect:
|
|
410
|
+
Enabled: true
|
|
411
|
+
|
|
361
412
|
Rails/TableNameAssignment:
|
|
362
413
|
Enabled: false
|
|
363
414
|
|
|
415
|
+
Rails/ThreeStateBooleanColumn:
|
|
416
|
+
Enabled: true
|
|
417
|
+
|
|
364
418
|
Rails/TimeZone:
|
|
365
419
|
Enabled: false
|
|
366
420
|
|
|
@@ -370,6 +424,12 @@ Rails/TimeZoneAssignment:
|
|
|
370
424
|
Rails/ToFormattedS:
|
|
371
425
|
Enabled: false
|
|
372
426
|
|
|
427
|
+
Rails/TopLevelHashWithIndifferentAccess:
|
|
428
|
+
Enabled: true
|
|
429
|
+
|
|
430
|
+
Rails/ToSWithArgument:
|
|
431
|
+
Enabled: true
|
|
432
|
+
|
|
373
433
|
Rails/TransactionExitStatement:
|
|
374
434
|
Enabled: false
|
|
375
435
|
|
|
@@ -385,6 +445,9 @@ Rails/UnknownEnv:
|
|
|
385
445
|
Rails/UnusedIgnoredColumns:
|
|
386
446
|
Enabled: false
|
|
387
447
|
|
|
448
|
+
Rails/UnusedRenderContent:
|
|
449
|
+
Enabled: true
|
|
450
|
+
|
|
388
451
|
Rails/Validation:
|
|
389
452
|
Enabled: false
|
|
390
453
|
|
|
@@ -394,9 +457,18 @@ Rails/WhereEquals:
|
|
|
394
457
|
Rails/WhereExists:
|
|
395
458
|
Enabled: false
|
|
396
459
|
|
|
460
|
+
Rails/WhereMissing:
|
|
461
|
+
Enabled: true
|
|
462
|
+
|
|
397
463
|
Rails/WhereNot:
|
|
398
464
|
Enabled: false
|
|
399
465
|
|
|
466
|
+
Rails/WhereNotWithMultipleConditions:
|
|
467
|
+
Enabled: true
|
|
468
|
+
|
|
469
|
+
Rails/WhereRange:
|
|
470
|
+
Enabled: true
|
|
471
|
+
|
|
400
472
|
Style/For:
|
|
401
473
|
Exclude:
|
|
402
474
|
- "**/*.erb"
|
data/config/rails_pending.yml
CHANGED
|
@@ -1,102 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Enabled: false
|
|
3
|
-
Rails/ActionOrder: # new in 2.17
|
|
4
|
-
Enabled: false
|
|
5
|
-
Rails/ActiveSupportOnLoad: # new in 2.16
|
|
6
|
-
Enabled: false
|
|
7
|
-
Rails/FreezeTime: # new in 2.16
|
|
8
|
-
Enabled: false
|
|
9
|
-
Rails/IgnoredColumnsAssignment: # new in 2.17
|
|
10
|
-
Enabled: false
|
|
11
|
-
Rails/RootPathnameMethods: # new in 2.16
|
|
12
|
-
Enabled: false
|
|
13
|
-
Rails/ToSWithArgument: # new in 2.16
|
|
14
|
-
Enabled: false
|
|
15
|
-
Rails/TopLevelHashWithIndifferentAccess: # new in 2.16
|
|
16
|
-
Enabled: false
|
|
17
|
-
Rails/WhereMissing: # new in 2.16
|
|
18
|
-
Enabled: false
|
|
19
|
-
Rails/WhereNotWithMultipleConditions: # new in 2.17
|
|
20
|
-
Enabled: false
|
|
21
|
-
Gemspec/DevelopmentDependencies: # new in 1.44
|
|
22
|
-
Enabled: false
|
|
23
|
-
Lint/DuplicateMatchPattern: # new in 1.50
|
|
24
|
-
Enabled: false
|
|
25
|
-
Lint/ItWithoutArgumentsInBlock: # new in 1.59
|
|
26
|
-
Enabled: false
|
|
27
|
-
Lint/LiteralAssignmentInCondition: # new in 1.58
|
|
28
|
-
Enabled: false
|
|
29
|
-
Lint/MixedCaseRange: # new in 1.53
|
|
30
|
-
Enabled: false
|
|
31
|
-
Lint/RedundantRegexpQuantifiers: # new in 1.53
|
|
32
|
-
Enabled: false
|
|
33
|
-
Lint/UselessRescue: # new in 1.43
|
|
34
|
-
Enabled: false
|
|
35
|
-
Metrics/CollectionLiteralLength: # new in 1.47
|
|
36
|
-
Enabled: false
|
|
37
|
-
Style/ArrayIntersect: # new in 1.40
|
|
38
|
-
Enabled: false
|
|
39
|
-
Style/ComparableClamp: # new in 1.44
|
|
40
|
-
Enabled: false
|
|
41
|
-
Style/ConcatArrayLiterals: # new in 1.41
|
|
42
|
-
Enabled: false
|
|
43
|
-
Style/DataInheritance: # new in 1.49
|
|
44
|
-
Enabled: false
|
|
45
|
-
Style/DirEmpty: # new in 1.48
|
|
46
|
-
Enabled: false
|
|
47
|
-
Style/ExactRegexpMatch: # new in 1.51
|
|
48
|
-
Enabled: false
|
|
49
|
-
Style/FileEmpty: # new in 1.48
|
|
50
|
-
Enabled: false
|
|
51
|
-
Style/MapIntoArray: # new in 1.63
|
|
52
|
-
Enabled: false
|
|
53
|
-
Style/MapToSet: # new in 1.42
|
|
54
|
-
Enabled: false
|
|
55
|
-
Style/MinMaxComparison: # new in 1.42
|
|
56
|
-
Enabled: false
|
|
57
|
-
Style/RedundantArrayConstructor: # new in 1.52
|
|
58
|
-
Enabled: false
|
|
59
|
-
Style/RedundantConstantBase: # new in 1.40
|
|
60
|
-
Enabled: false
|
|
61
|
-
Style/RedundantCurrentDirectoryInPath: # new in 1.53
|
|
62
|
-
Enabled: false
|
|
63
|
-
Style/RedundantDoubleSplatHashBraces: # new in 1.41
|
|
64
|
-
Enabled: false
|
|
65
|
-
Style/RedundantEach: # new in 1.38
|
|
66
|
-
Enabled: false
|
|
67
|
-
Style/RedundantFilterChain: # new in 1.52
|
|
68
|
-
Enabled: false
|
|
69
|
-
Style/RedundantHeredocDelimiterQuotes: # new in 1.45
|
|
70
|
-
Enabled: false
|
|
71
|
-
Style/RedundantLineContinuation: # new in 1.49
|
|
72
|
-
Enabled: false
|
|
73
|
-
Style/RedundantRegexpArgument: # new in 1.53
|
|
74
|
-
Enabled: false
|
|
75
|
-
Style/RedundantRegexpConstructor: # new in 1.52
|
|
76
|
-
Enabled: false
|
|
77
|
-
Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
|
|
78
|
-
Enabled: false
|
|
79
|
-
Style/SingleLineDoEndBlock: # new in 1.57
|
|
80
|
-
Enabled: false
|
|
81
|
-
Style/SuperWithArgsParentheses: # new in 1.58
|
|
82
|
-
Enabled: false
|
|
83
|
-
Style/YAMLFileRead: # new in 1.53
|
|
84
|
-
Enabled: false
|
|
85
|
-
Performance/MapMethodChain: # new in 1.19
|
|
86
|
-
Enabled: false
|
|
87
|
-
Rails/DangerousColumnNames: # new in 2.21
|
|
88
|
-
Enabled: false
|
|
89
|
-
Rails/EnvLocal: # new in 2.22
|
|
90
|
-
Enabled: false
|
|
91
|
-
Rails/RedundantActiveRecordAllMethod: # new in 2.21
|
|
92
|
-
Enabled: false
|
|
93
|
-
Rails/ResponseParsedBody: # new in 2.18
|
|
94
|
-
Enabled: false
|
|
95
|
-
Rails/ThreeStateBooleanColumn: # new in 2.19
|
|
96
|
-
Enabled: false
|
|
97
|
-
Rails/UnusedRenderContent: # new in 2.21
|
|
98
|
-
Enabled: false
|
|
99
|
-
Rails/EnumSyntax: # new in 2.26
|
|
100
|
-
Enabled: false
|
|
101
|
-
Rails/WhereRange: # new in 2.25
|
|
102
|
-
Enabled: false
|
|
1
|
+
# Newly introduced cops awaiting an explicit enabled or disabled decision.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rubocop"
|
|
4
|
+
|
|
5
|
+
module RuboCop
|
|
6
|
+
module Cop
|
|
7
|
+
module GitHub
|
|
8
|
+
# Inform people when they reach for Class#subclasses (Ruby) or
|
|
9
|
+
# Class#descendants (ActiveSupport).
|
|
10
|
+
#
|
|
11
|
+
# two reasons these can be unreliable:
|
|
12
|
+
# 1. autoload hasn't run yet, so half the tree is invisible
|
|
13
|
+
# 2. GC may have eaten dynamically-defined classes (i.e. in test suites)
|
|
14
|
+
#
|
|
15
|
+
# If you really need it, add a rubocop:disable on the line with a note
|
|
16
|
+
# explaining why future-you won't be sad.
|
|
17
|
+
class UnreliableSubclasses < Base
|
|
18
|
+
MSG = "Avoid `%<method>s` here. It may miss not-yet-autoloaded classes and depends on GC timing. " \
|
|
19
|
+
"Prefer an explicit registry or eager loading."
|
|
20
|
+
|
|
21
|
+
RESTRICT_ON_SEND = %i[descendants subclasses].freeze
|
|
22
|
+
|
|
23
|
+
# matches Foo.descendants, Foo::Bar.subclasses, self.descendants
|
|
24
|
+
# receiver has to be a constant or `self`
|
|
25
|
+
def_node_matcher :unreliable_call?, <<~PATTERN
|
|
26
|
+
(send {const self} {:descendants :subclasses})
|
|
27
|
+
PATTERN
|
|
28
|
+
|
|
29
|
+
# the same thing but with safe navigation operator
|
|
30
|
+
def_node_matcher :unreliable_csend?, <<~PATTERN
|
|
31
|
+
(csend {const self} {:descendants :subclasses})
|
|
32
|
+
PATTERN
|
|
33
|
+
|
|
34
|
+
def on_send(node)
|
|
35
|
+
return unless unreliable_call?(node)
|
|
36
|
+
|
|
37
|
+
add_offense(node, message: format(MSG, method: node.method_name))
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def on_csend(node)
|
|
41
|
+
return unless unreliable_csend?(node)
|
|
42
|
+
|
|
43
|
+
add_offense(node, message: format(MSG, method: node.method_name))
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
data/lib/rubocop-github.rb
CHANGED
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rubocop-github
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.29.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- GitHub
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-
|
|
10
|
+
date: 2026-10-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: rubocop
|
|
@@ -15,14 +15,14 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: '1.
|
|
18
|
+
version: '1.91'
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: '1.
|
|
25
|
+
version: '1.91'
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: rubocop-performance
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -43,28 +43,28 @@ dependencies:
|
|
|
43
43
|
requirements:
|
|
44
44
|
- - ">="
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '2.
|
|
46
|
+
version: '2.34'
|
|
47
47
|
type: :runtime
|
|
48
48
|
prerelease: false
|
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
51
|
- - ">="
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '2.
|
|
53
|
+
version: '2.34'
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
55
|
name: actionview
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - "~>"
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version:
|
|
60
|
+
version: 8.1.3
|
|
61
61
|
type: :development
|
|
62
62
|
prerelease: false
|
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
65
|
- - "~>"
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version:
|
|
67
|
+
version: 8.1.3
|
|
68
68
|
- !ruby/object:Gem::Dependency
|
|
69
69
|
name: minitest
|
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -124,6 +124,7 @@ files:
|
|
|
124
124
|
- lib/rubocop/cop/github/rails_view_render_paths_exist.rb
|
|
125
125
|
- lib/rubocop/cop/github/rails_view_render_shorthand.rb
|
|
126
126
|
- lib/rubocop/cop/github/render_literal_helpers.rb
|
|
127
|
+
- lib/rubocop/cop/github/unreliable_subclasses.rb
|
|
127
128
|
- lib/rubocop/github.rb
|
|
128
129
|
- lib/rubocop/github/inject.rb
|
|
129
130
|
- lib/version.rb
|
|
@@ -141,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
141
142
|
requirements:
|
|
142
143
|
- - ">="
|
|
143
144
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: 3.
|
|
145
|
+
version: 3.4.2
|
|
145
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
147
|
requirements:
|
|
147
148
|
- - ">="
|