makandra-rubocop 6.2.0 → 8.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -1
- data/Gemfile.lock +24 -24
- data/README.md +39 -21
- data/Rakefile +1 -1
- data/config/default.yml +388 -55
- data/config/ext/rails.yml +110 -7
- data/config/ext/rspec.yml +15 -1
- data/lib/makandra_rubocop/version.rb +1 -1
- data/makandra-rubocop.gemspec +5 -4
- metadata +12 -11
data/config/ext/rails.yml
CHANGED
@@ -23,6 +23,27 @@ AllCops:
|
|
23
23
|
# as the default.
|
24
24
|
TargetRailsVersion: ~
|
25
25
|
|
26
|
+
Lint/NumberConversion:
|
27
|
+
# Add Rails' duration methods to the ignore list for `Lint/NumberConversion`
|
28
|
+
# so that calling `to_i` on one of these does not register an offense.
|
29
|
+
# See: https://github.com/rubocop/rubocop/issues/8950
|
30
|
+
IgnoredMethods:
|
31
|
+
- ago
|
32
|
+
- from_now
|
33
|
+
- second
|
34
|
+
- seconds
|
35
|
+
- minute
|
36
|
+
- minutes
|
37
|
+
- hour
|
38
|
+
- hours
|
39
|
+
- day
|
40
|
+
- days
|
41
|
+
- week
|
42
|
+
- weeks
|
43
|
+
- fortnight
|
44
|
+
- fortnights
|
45
|
+
- in_milliseconds
|
46
|
+
|
26
47
|
Rails/ActionFilter:
|
27
48
|
Description: 'Enforces consistent use of action filter methods.'
|
28
49
|
Enabled: true
|
@@ -68,6 +89,16 @@ Rails/ActiveSupportAliases:
|
|
68
89
|
Enabled: false
|
69
90
|
VersionAdded: '0.48'
|
70
91
|
|
92
|
+
Rails/AddColumnIndex:
|
93
|
+
Description: >-
|
94
|
+
Rails migrations don't make use of a given `index` key, but also
|
95
|
+
doesn't given an error when it's used, so it makes it seem like an
|
96
|
+
index might be used.
|
97
|
+
Enabled: true
|
98
|
+
VersionAdded: '2.11'
|
99
|
+
Include:
|
100
|
+
- db/migrate/*.rb
|
101
|
+
|
71
102
|
Rails/AfterCommitOverride:
|
72
103
|
Description: >-
|
73
104
|
This cop enforces that there is only one call to `after_commit`
|
@@ -134,8 +165,9 @@ Rails/BelongsTo:
|
|
134
165
|
Rails/Blank:
|
135
166
|
Description: 'Enforces use of `blank?`.'
|
136
167
|
Enabled: true
|
168
|
+
SafeAutoCorrect: false
|
137
169
|
VersionAdded: '0.48'
|
138
|
-
VersionChanged: '
|
170
|
+
VersionChanged: '2.10'
|
139
171
|
# Convert usages of `nil? || empty?` to `blank?`
|
140
172
|
NilOrEmpty: true
|
141
173
|
# Convert usages of `!present?` to `blank?`
|
@@ -159,7 +191,7 @@ Rails/ContentTag:
|
|
159
191
|
Reference:
|
160
192
|
- 'https://github.com/rails/rails/issues/25195'
|
161
193
|
- 'https://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-content_tag'
|
162
|
-
Enabled: false #
|
194
|
+
Enabled: false # We currently use content_tag in many applications. If content_tag should become deprecated in the future we'll have to change it anyway, but until then, we'll keep the content_tag syntax
|
163
195
|
VersionAdded: '2.6'
|
164
196
|
|
165
197
|
Rails/CreateTableWithTimestamps:
|
@@ -177,7 +209,7 @@ Rails/Date:
|
|
177
209
|
such as Date.today, Date.current etc.
|
178
210
|
Enabled: false # It's not that simple. Really.
|
179
211
|
VersionAdded: '0.30'
|
180
|
-
VersionChanged: '
|
212
|
+
VersionChanged: '2.11'
|
181
213
|
# The value `strict` disallows usage of `Date.today`, `Date.current`,
|
182
214
|
# `Date#to_time` etc.
|
183
215
|
# The value `flexible` allows usage of `Date.current`, `Date.yesterday`, etc
|
@@ -187,6 +219,8 @@ Rails/Date:
|
|
187
219
|
SupportedStyles:
|
188
220
|
- strict
|
189
221
|
- flexible
|
222
|
+
AllowToTime: false # datetime.to_time can handle timezones, but this depends on a setting, which one may not be
|
223
|
+
# aware of, see https://api.rubyonrails.org/classes/DateTime.html#method-i-to_time,
|
190
224
|
|
191
225
|
Rails/DefaultScope:
|
192
226
|
Description: 'Avoid use of `default_scope`.'
|
@@ -214,7 +248,7 @@ Rails/DynamicFindBy:
|
|
214
248
|
StyleGuide: 'https://rails.rubystyle.guide#find_by'
|
215
249
|
Enabled: false # We occasionally define custom find_by_* methods (e.g. `find_by_anything`) which don't work like ActiveRecord's methods.
|
216
250
|
VersionAdded: '0.44'
|
217
|
-
VersionChanged: '2.
|
251
|
+
VersionChanged: '2.10'
|
218
252
|
# The `Whitelist` has been deprecated, Please use `AllowedMethods` instead.
|
219
253
|
Whitelist:
|
220
254
|
- find_by_sql
|
@@ -223,6 +257,12 @@ Rails/DynamicFindBy:
|
|
223
257
|
AllowedReceivers:
|
224
258
|
- Gem::Specification
|
225
259
|
|
260
|
+
Rails/EagerEvaluationLogMessage:
|
261
|
+
Description: 'Checks that blocks are used for interpolated strings passed to `Rails.logger.debug`.'
|
262
|
+
Reference: 'https://guides.rubyonrails.org/debugging_rails_applications.html#impact-of-logs-on-performance'
|
263
|
+
Enabled: true
|
264
|
+
VersionAdded: '2.11'
|
265
|
+
|
226
266
|
Rails/EnumHash:
|
227
267
|
Description: 'Prefer hash syntax over array syntax when defining enums.'
|
228
268
|
StyleGuide: 'https://rails.rubystyle.guide#enums'
|
@@ -243,6 +283,19 @@ Rails/EnvironmentComparison:
|
|
243
283
|
Enabled: true
|
244
284
|
VersionAdded: '0.52'
|
245
285
|
|
286
|
+
Rails/EnvironmentVariableAccess:
|
287
|
+
Description: 'Do not access `ENV` directly after initialization.'
|
288
|
+
Enabled: false
|
289
|
+
VersionAdded: '2.10'
|
290
|
+
VersionChanged: '2.11'
|
291
|
+
Include:
|
292
|
+
- app/**/*.rb
|
293
|
+
- lib/**/*.rb
|
294
|
+
Exclude:
|
295
|
+
- lib/**/*.rake
|
296
|
+
AllowReads: false
|
297
|
+
AllowWrites: false
|
298
|
+
|
246
299
|
Rails/Exit:
|
247
300
|
Description: >-
|
248
301
|
Favor `fail`, `break`, `return`, etc. over `exit` in
|
@@ -257,6 +310,11 @@ Rails/Exit:
|
|
257
310
|
Exclude:
|
258
311
|
- lib/**/*.rake
|
259
312
|
|
313
|
+
Rails/ExpandedDateRange:
|
314
|
+
Description: 'Checks for expanded date range.'
|
315
|
+
Enabled: false # We think the range syntax is clearer than using #all_year for example
|
316
|
+
VersionAdded: '2.11'
|
317
|
+
|
260
318
|
Rails/FilePath:
|
261
319
|
Description: 'Use `Rails.root.join` for file path joining.'
|
262
320
|
Enabled: false
|
@@ -272,6 +330,8 @@ Rails/FindBy:
|
|
272
330
|
StyleGuide: 'https://rails.rubystyle.guide#find_by'
|
273
331
|
Enabled: false
|
274
332
|
VersionAdded: '0.30'
|
333
|
+
VersionChanged: '2.11'
|
334
|
+
IgnoreWhereFirst: true
|
275
335
|
Include:
|
276
336
|
- app/models/**/*.rb
|
277
337
|
|
@@ -333,11 +393,20 @@ Rails/HttpStatus:
|
|
333
393
|
Description: 'Enforces use of symbolic or numeric value to define HTTP status.'
|
334
394
|
Enabled: false
|
335
395
|
VersionAdded: '0.54'
|
396
|
+
VersionChanged: '2.11'
|
336
397
|
EnforcedStyle: symbolic
|
337
398
|
SupportedStyles:
|
338
399
|
- numeric
|
339
400
|
- symbolic
|
340
401
|
|
402
|
+
Rails/I18nLocaleAssignment:
|
403
|
+
Description: 'Prefer the usage of `I18n.with_locale` instead of manually updating `I18n.locale` value.'
|
404
|
+
Enabled: false
|
405
|
+
VersionAdded: '2.11'
|
406
|
+
Include:
|
407
|
+
- spec/**/*.rb
|
408
|
+
- test/**/*.rb
|
409
|
+
|
341
410
|
Rails/IgnoredSkipActionFilterOption:
|
342
411
|
Description: 'Checks that `if` and `only` (or `except`) are not used together as options of `skip_*` action filter.'
|
343
412
|
Reference: 'https://api.rubyonrails.org/classes/AbstractController/Callbacks/ClassMethods.html#method-i-_normalize_callback_options'
|
@@ -386,7 +455,7 @@ Rails/LinkToBlank:
|
|
386
455
|
- https://mathiasbynens.github.io/rel-noopener/
|
387
456
|
- https://html.spec.whatwg.org/multipage/links.html#link-type-noopener
|
388
457
|
- https://html.spec.whatwg.org/multipage/links.html#link-type-noreferrer
|
389
|
-
Enabled:
|
458
|
+
Enabled: false
|
390
459
|
VersionAdded: '0.62'
|
391
460
|
|
392
461
|
Rails/MailerName:
|
@@ -546,7 +615,9 @@ Rails/RedundantReceiverInWithOptions:
|
|
546
615
|
Rails/ReflectionClassName:
|
547
616
|
Description: 'Use a string for `class_name` option value in the definition of a reflection.'
|
548
617
|
Enabled: true
|
618
|
+
Safe: false
|
549
619
|
VersionAdded: '0.64'
|
620
|
+
VersionChanged: '2.10'
|
550
621
|
|
551
622
|
Rails/RefuteMethods:
|
552
623
|
Description: 'Use `assert_not` methods instead of `refute` methods.'
|
@@ -589,6 +660,12 @@ Rails/RequestReferer:
|
|
589
660
|
- referer
|
590
661
|
- referrer
|
591
662
|
|
663
|
+
Rails/RequireDependency:
|
664
|
+
Description: 'Do not use `require_dependency` when running in Zeitwerk mode. `require_dependency` is for autoloading in classic mode.'
|
665
|
+
Reference: 'https://guides.rubyonrails.org/autoloading_and_reloading_constants.html'
|
666
|
+
Enabled: false # We should enable this cop later, when all or most of our applications use zeitwerk
|
667
|
+
VersionAdded: '2.10'
|
668
|
+
|
592
669
|
Rails/ReversibleMigration:
|
593
670
|
Description: 'Checks whether the change method of the migration file is reversible.'
|
594
671
|
StyleGuide: 'https://rails.rubystyle.guide#reversible-migration'
|
@@ -598,6 +675,13 @@ Rails/ReversibleMigration:
|
|
598
675
|
Include:
|
599
676
|
- db/migrate/*.rb
|
600
677
|
|
678
|
+
Rails/ReversibleMigrationMethodDefinition:
|
679
|
+
Description: 'Checks whether the migration implements either a `change` method or both an `up` and a `down` method.'
|
680
|
+
Enabled: false # If the migration starts with a class definition, no change-, up-, or down-method is recognized, although they exist
|
681
|
+
VersionAdded: '2.10'
|
682
|
+
Include:
|
683
|
+
- db/migrate/*.rb
|
684
|
+
|
601
685
|
Rails/SafeNavigation:
|
602
686
|
Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`."
|
603
687
|
Enabled: false
|
@@ -693,13 +777,24 @@ Rails/TimeZone:
|
|
693
777
|
Enabled: false
|
694
778
|
Safe: false
|
695
779
|
VersionAdded: '0.30'
|
696
|
-
VersionChanged: '
|
780
|
+
VersionChanged: '2.10'
|
697
781
|
# The value `strict` means that `Time` should be used with `zone`.
|
698
782
|
# The value `flexible` allows usage of `in_time_zone` instead of `zone`.
|
699
783
|
EnforcedStyle: flexible
|
700
784
|
SupportedStyles:
|
701
785
|
- strict
|
702
786
|
- flexible
|
787
|
+
Exclude:
|
788
|
+
- '**/*.gemspec'
|
789
|
+
|
790
|
+
Rails/TimeZoneAssignment:
|
791
|
+
Description: 'Prefer the usage of `Time.use_zone` instead of manually updating `Time.zone` value.'
|
792
|
+
Reference: 'https://thoughtbot.com/blog/its-about-time-zones'
|
793
|
+
Enabled: false
|
794
|
+
VersionAdded: '2.10'
|
795
|
+
Include:
|
796
|
+
- spec/**/*.rb
|
797
|
+
- test/**/*.rb
|
703
798
|
|
704
799
|
Rails/UniqBeforePluck:
|
705
800
|
Description: 'Prefer the use of uniq or distinct before pluck.'
|
@@ -729,6 +824,13 @@ Rails/UnknownEnv:
|
|
729
824
|
- test
|
730
825
|
- production
|
731
826
|
|
827
|
+
Rails/UnusedIgnoredColumns:
|
828
|
+
Description: 'Remove a column that does not exist from `ignored_columns`.'
|
829
|
+
Enabled: true
|
830
|
+
VersionAdded: '2.11'
|
831
|
+
Include:
|
832
|
+
- app/models/**/*.rb
|
833
|
+
|
732
834
|
Rails/Validation:
|
733
835
|
Description: 'Use validates :attribute, hash of validations.'
|
734
836
|
Enabled: true
|
@@ -742,6 +844,7 @@ Rails/WhereEquals:
|
|
742
844
|
StyleGuide: 'https://rails.rubystyle.guide/#hash-conditions'
|
743
845
|
Enabled: true
|
744
846
|
VersionAdded: '2.9'
|
847
|
+
VersionChanged: '2.10'
|
745
848
|
|
746
849
|
Rails/WhereExists:
|
747
850
|
Description: 'Prefer `exists?(...)` over `where(...).exists?`.'
|
@@ -751,7 +854,7 @@ Rails/WhereExists:
|
|
751
854
|
- exists
|
752
855
|
- where
|
753
856
|
VersionAdded: '2.7'
|
754
|
-
VersionChanged: '2.
|
857
|
+
VersionChanged: '2.10'
|
755
858
|
|
756
859
|
Rails/WhereNot:
|
757
860
|
Description: 'Use `where.not(...)` instead of manually constructing negated SQL in `where`.'
|
data/config/ext/rspec.yml
CHANGED
@@ -259,7 +259,9 @@ RSpec/ExampleLength:
|
|
259
259
|
Description: Checks for long examples.
|
260
260
|
Enabled: false # We do not want to have such limitation
|
261
261
|
Max: 5
|
262
|
+
CountAsOne: []
|
262
263
|
VersionAdded: '1.5'
|
264
|
+
VersionChanged: '2.3'
|
263
265
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExampleLength
|
264
266
|
|
265
267
|
RSpec/ExampleWithoutDescription:
|
@@ -296,7 +298,7 @@ RSpec/ExpectActual:
|
|
296
298
|
|
297
299
|
RSpec/ExpectChange:
|
298
300
|
Description: Checks for consistent style of change matcher.
|
299
|
-
Enabled:
|
301
|
+
Enabled: false # We decided to disable this cop https://github.com/makandra/makandra-rubocop/issues/29
|
300
302
|
EnforcedStyle: method_call
|
301
303
|
SupportedStyles:
|
302
304
|
- method_call
|
@@ -355,6 +357,12 @@ RSpec/HooksBeforeExamples:
|
|
355
357
|
VersionAdded: '1.29'
|
356
358
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/HooksBeforeExamples
|
357
359
|
|
360
|
+
RSpec/IdenticalEqualityAssertion:
|
361
|
+
Description: Checks for equality assertions with identical expressions on both sides.
|
362
|
+
Enabled: true
|
363
|
+
VersionAdded: '2.4'
|
364
|
+
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/IdenticalEqualityAssertion
|
365
|
+
|
358
366
|
RSpec/ImplicitBlockExpectation:
|
359
367
|
Description: Check that implicit block expectation syntax is not used.
|
360
368
|
Enabled: true
|
@@ -757,6 +765,12 @@ RSpec/FactoryBot/FactoryClassName:
|
|
757
765
|
VersionChanged: '2.0'
|
758
766
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/FactoryClassName
|
759
767
|
|
768
|
+
RSpec/Rails/AvoidSetupHook:
|
769
|
+
Description: Checks that tests use RSpec `before` hook over Rails `setup` method.
|
770
|
+
Enabled: true
|
771
|
+
VersionAdded: '2.4'
|
772
|
+
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/AvoidSetupHook
|
773
|
+
|
760
774
|
RSpec/Rails/HttpStatus:
|
761
775
|
Description: Enforces use of symbolic or numeric value to describe HTTP status.
|
762
776
|
Enabled: false # This should not be enforced
|
data/makandra-rubocop.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'makandra_rubocop/version'
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'makandra-rubocop'
|
7
7
|
spec.version = MakandraRubocop::VERSION
|
8
|
-
spec.required_ruby_version = '>= 2.
|
8
|
+
spec.required_ruby_version = '>= 2.5.0'
|
9
9
|
spec.authors = ['Arne Hartherz', 'Emanuel Denzel']
|
10
10
|
spec.email = ['arne.hartherz@makandra.de', 'emanuel.denzel@makandra.de']
|
11
11
|
|
@@ -23,10 +23,11 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.executables = spec.files.grep(%r(^exe/)) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ['lib']
|
25
25
|
|
26
|
-
spec.add_dependency 'rubocop', '~> 1.
|
27
|
-
spec.add_dependency 'rubocop-rails', '~> 2.
|
28
|
-
spec.add_dependency 'rubocop-rspec', '~> 2.
|
26
|
+
spec.add_dependency 'rubocop', '~> 1.25.0'
|
27
|
+
spec.add_dependency 'rubocop-rails', '~> 2.11.3'
|
28
|
+
spec.add_dependency 'rubocop-rspec', '~> 2.4.0'
|
29
29
|
|
30
30
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
31
31
|
spec.add_development_dependency 'rake', '~> 12.3'
|
32
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
32
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: makandra-rubocop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 8.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arne Hartherz
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubocop
|
@@ -17,42 +17,42 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 1.
|
20
|
+
version: 1.25.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 1.
|
27
|
+
version: 1.25.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rubocop-rails
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 2.
|
34
|
+
version: 2.11.3
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 2.
|
41
|
+
version: 2.11.3
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rubocop-rspec
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 2.
|
48
|
+
version: 2.4.0
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 2.
|
55
|
+
version: 2.4.0
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: bundler
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,7 +110,8 @@ files:
|
|
110
110
|
homepage: https://github.com/makandra/makandra-rubocop
|
111
111
|
licenses:
|
112
112
|
- MIT
|
113
|
-
metadata:
|
113
|
+
metadata:
|
114
|
+
rubygems_mfa_required: 'true'
|
114
115
|
post_install_message:
|
115
116
|
rdoc_options: []
|
116
117
|
require_paths:
|
@@ -119,14 +120,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
120
|
requirements:
|
120
121
|
- - ">="
|
121
122
|
- !ruby/object:Gem::Version
|
122
|
-
version: 2.
|
123
|
+
version: 2.5.0
|
123
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
125
|
requirements:
|
125
126
|
- - ">="
|
126
127
|
- !ruby/object:Gem::Version
|
127
128
|
version: '0'
|
128
129
|
requirements: []
|
129
|
-
rubygems_version: 3.
|
130
|
+
rubygems_version: 3.0.3
|
130
131
|
signing_key:
|
131
132
|
specification_version: 4
|
132
133
|
summary: makandra's default Rubocop configuration
|