rubocop-airbnb 3.0.2 → 5.0.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.
Files changed (51) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +19 -1
  3. data/config/default.yml +18 -8
  4. data/config/rubocop-layout.yml +18 -13
  5. data/config/rubocop-lint.yml +8 -9
  6. data/config/rubocop-metrics.yml +0 -4
  7. data/config/rubocop-naming.yml +3 -3
  8. data/config/rubocop-performance.yml +3 -0
  9. data/config/rubocop-rails.yml +7 -0
  10. data/config/rubocop-rspec.yml +4 -9
  11. data/config/rubocop-style.yml +17 -14
  12. data/lib/rubocop/airbnb/version.rb +1 -1
  13. data/lib/rubocop/cop/airbnb/class_or_module_declared_in_wrong_file.rb +1 -1
  14. data/lib/rubocop/cop/airbnb/const_assigned_in_wrong_file.rb +1 -1
  15. data/lib/rubocop/cop/airbnb/continuation_slash.rb +2 -2
  16. data/lib/rubocop/cop/airbnb/default_scope.rb +1 -1
  17. data/lib/rubocop/cop/airbnb/factory_attr_references_class.rb +1 -1
  18. data/lib/rubocop/cop/airbnb/factory_class_use_string.rb +1 -1
  19. data/lib/rubocop/cop/airbnb/mass_assignment_accessible_modifier.rb +1 -1
  20. data/lib/rubocop/cop/airbnb/module_method_in_wrong_file.rb +1 -1
  21. data/lib/rubocop/cop/airbnb/no_timeout.rb +1 -1
  22. data/lib/rubocop/cop/airbnb/opt_arg_parameters.rb +1 -1
  23. data/lib/rubocop/cop/airbnb/phrase_bundle_keys.rb +1 -1
  24. data/lib/rubocop/cop/airbnb/risky_activerecord_invocation.rb +1 -1
  25. data/lib/rubocop/cop/airbnb/rspec_describe_or_context_under_namespace.rb +1 -1
  26. data/lib/rubocop/cop/airbnb/rspec_environment_modification.rb +1 -1
  27. data/lib/rubocop/cop/airbnb/simple_modifier_conditional.rb +1 -1
  28. data/lib/rubocop/cop/airbnb/simple_unless.rb +1 -1
  29. data/lib/rubocop/cop/airbnb/spec_constant_assignment.rb +3 -4
  30. data/lib/rubocop/cop/airbnb/unsafe_yaml_marshal.rb +1 -1
  31. data/rubocop-airbnb.gemspec +5 -5
  32. data/spec/rubocop/cop/airbnb/class_or_module_declared_in_wrong_file_spec.rb +69 -102
  33. data/spec/rubocop/cop/airbnb/const_assigned_in_wrong_file_spec.rb +58 -101
  34. data/spec/rubocop/cop/airbnb/continuation_slash_spec.rb +77 -112
  35. data/spec/rubocop/cop/airbnb/default_scope_spec.rb +24 -31
  36. data/spec/rubocop/cop/airbnb/factory_attr_references_class_spec.rb +81 -121
  37. data/spec/rubocop/cop/airbnb/factory_class_use_string_spec.rb +12 -20
  38. data/spec/rubocop/cop/airbnb/mass_assignment_accessible_modifier_spec.rb +17 -22
  39. data/spec/rubocop/cop/airbnb/module_method_in_wrong_file_spec.rb +75 -114
  40. data/spec/rubocop/cop/airbnb/no_timeout_spec.rb +16 -22
  41. data/spec/rubocop/cop/airbnb/opt_arg_parameter_spec.rb +46 -73
  42. data/spec/rubocop/cop/airbnb/phrase_bundle_keys_spec.rb +5 -20
  43. data/spec/rubocop/cop/airbnb/risky_activerecord_invocation_spec.rb +19 -33
  44. data/spec/rubocop/cop/airbnb/rspec_describe_or_context_under_namespace_spec.rb +109 -187
  45. data/spec/rubocop/cop/airbnb/rspec_environment_modification_spec.rb +31 -41
  46. data/spec/rubocop/cop/airbnb/simple_modifier_conditional_spec.rb +64 -88
  47. data/spec/rubocop/cop/airbnb/simple_unless_spec.rb +17 -27
  48. data/spec/rubocop/cop/airbnb/spec_constant_assignment_spec.rb +42 -60
  49. data/spec/rubocop/cop/airbnb/unsafe_yaml_marshal_spec.rb +24 -36
  50. data/spec/spec_helper.rb +2 -0
  51. metadata +12 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 141798fe044dbd21e96c3495a051ada08333669e
4
- data.tar.gz: 11dcbb417edd30319f34390ee51d8b8e3c879449
2
+ SHA256:
3
+ metadata.gz: 02cd198bf2e20a941f06c78615775bbbcf525f428a41adbd07d1ef4a7e716509
4
+ data.tar.gz: 1073b91470656809fb195a4eba990e9303e7389a94af1dba88728bba14ec5c4e
5
5
  SHA512:
6
- metadata.gz: 308b022b2a0dd0f32e729e9ff86df78fe404e1c1365f73a4277506d78b46666e2cd25421e1c4193f7c45754034d110e5898d73f3eef2dd201bad1a330cbaea2b
7
- data.tar.gz: 45b22abbe58c34ca5473ac3332cef3769b9b86168c98047c441afde95c42654f3ffd914614abfee8c0a8de3d61d64430d6f14bc9f05c92af019bbf66c795767c
6
+ metadata.gz: db877cf8c1eb61e805eb3a700cd489bbc2b3b61cf7b307ed2ae66e3930aa57f85e41bd14740e7117e1ff1d0c7cc0701de542b05e9bfebcb4a180dae976bd2cb1
7
+ data.tar.gz: 5392e711442b997a3fdccd3cc17eaec5b9d153df6803a4227221c82b20acb24a841e8643e99311c77a2be36b8283bb7afa99e00629b2c4d8a6baa73ae49c697c
data/CHANGELOG.md CHANGED
@@ -1,4 +1,22 @@
1
- # 3.02
1
+ # 5.0.0
2
+ * Add support for Ruby 3.1
3
+ * Drop support for Ruby 2.4
4
+ * Update rubocop to 1.22.0
5
+ * Update rubocop-rspec to 2.0.0
6
+ * Remove deprecated cops InvalidPredicateMatcher and CustomIncludeMethods
7
+
8
+ # 4.0.0
9
+ * Add support for Ruby 3.0
10
+ * Run CI against Ruby 2.7
11
+ * Drop support for Ruby 2.3
12
+ * Update rubocop to 0.93.1
13
+ * Update rubocop-performance to 1.10.2
14
+ * Update rubocop-rails to 2.9.1
15
+ * Update rubocop-rspec to 1.44.1
16
+ * Disable Style/BracesAroundHashParameters
17
+ * Set `DisabledByDefault: true` to disable any new rubocop cops that have not yet been evaluated for this style guide
18
+
19
+ # 3.0.2
2
20
  * Moves `require`s for `rubocop-performance` and `rubocop-rails` to library code for better transitivity.
3
21
 
4
22
  # 3.0.1
data/config/default.yml CHANGED
@@ -15,14 +15,24 @@ AllCops:
15
15
  - 'vendor/**/*'
16
16
  - Vagrantfile
17
17
  - Guardfile
18
- RSpec:
19
- Patterns:
20
- - _spec.rb
21
- - "(?:^|/)spec/"
22
- RSpec/FactoryBot:
23
- Patterns:
24
- - spec/factories/**/*.rb
25
- - features/support/factories/**/*.rb
18
+
19
+ # While Rubocop has released a bunch of new cops, not all of these cops have been evaluated as
20
+ # part of this styleguide. To prevent new, unevaluated cops from imposing on this styleguide, we
21
+ # are marking these new cops as disabled. Note that as a consumer of this styleguide, you can
22
+ # always override any choices here by setting `Enabled: true` on any cops that you would like to
23
+ # have be enabled, even if we have explicitly disabled them (or if they are new and we have yet
24
+ # to evaluate them). For more on this configuration parameter, see
25
+ # https://github.com/rubocop/rubocop/blob/1e55b1aa5e4c5eaeccad5d61f08b7930ed6bc341/config/default.yml#L89-L101
26
+ DisabledByDefault: true
27
+
28
+ RSpec:
29
+ Include:
30
+ - _spec.rb
31
+ - "(?:^|/)spec/"
32
+ RSpec/FactoryBot:
33
+ Include:
34
+ - spec/factories/**/*.rb
35
+ - features/support/factories/**/*.rb
26
36
 
27
37
  inherit_from:
28
38
  - './rubocop-airbnb.yml'
@@ -11,13 +11,13 @@ Layout/AccessModifierIndentation:
11
11
  - indent
12
12
 
13
13
  # Supports --auto-correct
14
- Layout/AlignArray:
14
+ Layout/ArrayAlignment:
15
15
  Description: Align the elements of an array literal if they span more than one line.
16
16
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#align-multiline-arrays
17
17
  Enabled: true
18
18
 
19
19
  # Supports --auto-correct
20
- Layout/AlignHash:
20
+ Layout/HashAlignment:
21
21
  Description: Align the elements of a hash literal if they span more than one line.
22
22
  Enabled: true
23
23
  EnforcedHashRocketStyle: key
@@ -30,7 +30,7 @@ Layout/AlignHash:
30
30
  - ignore_explicit
31
31
 
32
32
  # Supports --auto-correct
33
- Layout/AlignParameters:
33
+ Layout/ParameterAlignment:
34
34
  Description: Align the parameters of a method call if they span more than one line.
35
35
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-double-indent
36
36
  Enabled: true
@@ -227,7 +227,7 @@ Layout/FirstMethodParameterLineBreak:
227
227
  Enabled: false
228
228
 
229
229
  # Supports --auto-correct
230
- Layout/IndentFirstArgument:
230
+ Layout/FirstArgumentIndentation:
231
231
  Description: Checks the indentation of the first parameter in a method call.
232
232
  Enabled: true
233
233
  EnforcedStyle: consistent
@@ -238,19 +238,19 @@ Layout/IndentFirstArgument:
238
238
  - special_for_inner_method_call_in_parentheses
239
239
 
240
240
  # Supports --auto-correct
241
- Layout/IndentFirstArrayElement:
241
+ Layout/FirstArrayElementIndentation:
242
242
  Description: Checks the indentation of the first element in an array literal.
243
243
  Enabled: true
244
244
  EnforcedStyle: consistent
245
245
 
246
246
  # Supports --auto-correct
247
- Layout/IndentAssignment:
247
+ Layout/AssignmentIndentation:
248
248
  Description: Checks the indentation of the first line of the right-hand-side of a
249
249
  multi-line assignment.
250
250
  Enabled: true
251
251
 
252
252
  # Supports --auto-correct
253
- Layout/IndentFirstHashElement:
253
+ Layout/FirstHashElementIndentation:
254
254
  Description: Checks the indentation of the first key in a hash literal.
255
255
  Enabled: true
256
256
  EnforcedStyle: consistent
@@ -258,7 +258,7 @@ Layout/IndentFirstHashElement:
258
258
  - special_inside_parentheses
259
259
  - consistent
260
260
 
261
- Layout/IndentHeredoc:
261
+ Layout/HeredocIndentation:
262
262
  Enabled: false
263
263
 
264
264
  # Supports --auto-correct
@@ -268,7 +268,7 @@ Layout/IndentationConsistency:
268
268
  EnforcedStyle: normal
269
269
  SupportedStyles:
270
270
  - normal
271
- - rails
271
+ - indented_internal_methods
272
272
 
273
273
  # Supports --auto-correct
274
274
  Layout/IndentationWidth:
@@ -282,7 +282,7 @@ Layout/InitialIndentation:
282
282
  Description: Checks the indentation of the first non-blank non-comment line in a file.
283
283
  Enabled: true
284
284
 
285
- Layout/LeadingBlankLines:
285
+ Layout/LeadingEmptyLines:
286
286
  Enabled: true
287
287
 
288
288
  # Supports --auto-correct
@@ -531,13 +531,13 @@ Layout/SpaceInsideStringInterpolation:
531
531
  - no_space
532
532
 
533
533
  # Supports --auto-correct
534
- Layout/Tab:
534
+ Layout/IndentationStyle:
535
535
  Description: No hard tabs.
536
536
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#spaces-indentation
537
537
  Enabled: true
538
538
 
539
539
  # Supports --auto-correct
540
- Layout/TrailingBlankLines:
540
+ Layout/TrailingEmptyLines:
541
541
  Description: Checks trailing blank lines and final newline.
542
542
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#newline-eof
543
543
  Enabled: true
@@ -552,5 +552,10 @@ Layout/TrailingWhitespace:
552
552
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-trailing-whitespace
553
553
  Enabled: true
554
554
 
555
- Layout/IndentFirstParameter:
555
+ Layout/FirstParameterIndentation:
556
556
  Enabled: true
557
+
558
+ # Supports --auto-correct
559
+ Layout/LineLength:
560
+ Max: 100
561
+ AllowURI: true
@@ -45,7 +45,7 @@ Lint/DuplicateMethods:
45
45
  Description: Check for duplicate methods calls.
46
46
  Enabled: true
47
47
 
48
- Lint/DuplicatedKey:
48
+ Lint/DuplicateHashKey:
49
49
  Description: Check for duplicate keys in hash literals.
50
50
  Enabled: true
51
51
 
@@ -68,10 +68,6 @@ Lint/EmptyInterpolation:
68
68
  Lint/EmptyWhen:
69
69
  Enabled: false
70
70
 
71
- Lint/EndInMethod:
72
- Description: END blocks should not be placed inside method definitions.
73
- Enabled: false
74
-
75
71
  Lint/EnsureReturn:
76
72
  Description: Do not use return in an ensure block.
77
73
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-return-ensure
@@ -93,7 +89,7 @@ Lint/FormatParameterMismatch:
93
89
  Description: The number of parameters to format/sprint must match the fields.
94
90
  Enabled: true
95
91
 
96
- Lint/HandleExceptions:
92
+ Lint/SuppressedException:
97
93
  Description: Don't suppress exception.
98
94
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#dont-hide-exceptions
99
95
  Enabled: false
@@ -144,7 +140,10 @@ Lint/MissingCopEnableDirective:
144
140
  Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`'
145
141
  Enabled: true
146
142
 
147
- Lint/MultipleCompare:
143
+ Lint/MissingSuper:
144
+ Enabled: false
145
+
146
+ Lint/MultipleComparison:
148
147
  Enabled: false
149
148
 
150
149
  Lint/NestedMethodDefinition:
@@ -230,7 +229,7 @@ Lint/ShadowingOuterLocalVariable:
230
229
  Enabled: true
231
230
 
232
231
  # Supports --auto-correct
233
- Lint/StringConversionInInterpolation:
232
+ Lint/RedundantStringCoercion:
234
233
  Description: Checks for Object#to_s usage in string interpolation.
235
234
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-to-s
236
235
  Enabled: true
@@ -289,7 +288,7 @@ Lint/UselessAssignment:
289
288
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#underscore-unused-vars
290
289
  Enabled: true
291
290
 
292
- Lint/UselessComparison:
291
+ Lint/BinaryOperatorWithIdenticalOperands:
293
292
  Description: Checks for comparison of something with itself.
294
293
  Enabled: true
295
294
 
@@ -21,10 +21,6 @@ Metrics/CyclomaticComplexity:
21
21
  Enabled: false
22
22
  Max: 6
23
23
 
24
- Metrics/LineLength:
25
- Max: 100
26
- AllowURI: true
27
-
28
24
  Metrics/MethodLength:
29
25
  Enabled: false
30
26
 
@@ -55,18 +55,18 @@ Naming/PredicateName:
55
55
  - is_
56
56
  - has_
57
57
  - have_
58
- NamePrefixBlacklist:
58
+ ForbiddenPrefixes:
59
59
  - is_
60
60
  - has_
61
61
  - have_
62
62
 
63
- Naming/UncommunicativeBlockParamName:
63
+ Naming/BlockParameterName:
64
64
  Description: >-
65
65
  Checks for block parameter names that contain capital letters,
66
66
  end in numbers, or do not meet a minimal length.
67
67
  Enabled: false
68
68
 
69
- Naming/UncommunicativeMethodParamName:
69
+ Naming/MethodParameterName:
70
70
  Description: >-
71
71
  Checks for method parameter names that contain capital letters,
72
72
  end in numbers, or do not meet a minimal length.
@@ -1,3 +1,6 @@
1
+ require:
2
+ - rubocop-performance
3
+
1
4
  Performance/Caller:
2
5
  Enabled: false
3
6
 
@@ -1,3 +1,6 @@
1
+ require:
2
+ - rubocop-rails
3
+
1
4
  # before_action doesn't seem to exist, so this doesn't make sense.
2
5
  Rails/ActionFilter:
3
6
  Enabled: false
@@ -212,3 +215,7 @@ Rails/IgnoredSkipActionFilterOption:
212
215
 
213
216
  Rails/ReflectionClassName:
214
217
  Enabled: true
218
+
219
+ Rails/RakeEnvironment:
220
+ Description: Ensures that rake tasks depend on :environment
221
+ Enabled: false
@@ -56,7 +56,6 @@ RSpec/DescribedClass:
56
56
  RSpec/EmptyExampleGroup:
57
57
  Description: Checks if an example group does not include any tests.
58
58
  Enabled: true
59
- CustomIncludeMethods: []
60
59
 
61
60
  RSpec/EmptyLineAfterExampleGroup:
62
61
  Description: Checks if there is an empty line after example group blocks.
@@ -155,10 +154,6 @@ RSpec/InstanceVariable:
155
154
  Description: 'Checks for the usage of instance variables.'
156
155
  Enabled: false
157
156
 
158
- RSpec/InvalidPredicateMatcher:
159
- Description: Checks invalid usage for predicate matcher.
160
- Enabled: false
161
-
162
157
  RSpec/ItBehavesLike:
163
158
  Description: Checks that only one `it_behaves_like` style is used.
164
159
  Enabled: false
@@ -314,18 +309,18 @@ RSpec/VoidExpect:
314
309
  Description: This cop checks void `expect()`.
315
310
  Enabled: false
316
311
 
317
- Capybara/CurrentPathExpectation:
312
+ RSpec/Capybara/CurrentPathExpectation:
318
313
  Description: Checks that no expectations are set on Capybara's `current_path`.
319
314
  Enabled: false
320
315
 
321
- Capybara/FeatureMethods:
316
+ RSpec/Capybara/FeatureMethods:
322
317
  Description: Checks for consistent method usage in feature specs.
323
318
  Enabled: false
324
319
 
325
- FactoryBot/AttributeDefinedStatically:
320
+ RSpec/FactoryBot/AttributeDefinedStatically:
326
321
  Description: Always declare attribute values as blocks.
327
322
  Enabled: false
328
323
 
329
- FactoryBot/CreateList:
324
+ RSpec/FactoryBot/CreateList:
330
325
  Description: Checks for create_list usage.
331
326
  Enabled: true
@@ -134,16 +134,6 @@ Style/BlockDelimiters:
134
134
  - proc
135
135
  - it
136
136
 
137
- # Supports --auto-correct
138
- Style/BracesAroundHashParameters:
139
- Description: Enforce braces style around hash parameters.
140
- Enabled: false
141
- EnforcedStyle: no_braces
142
- SupportedStyles:
143
- - braces
144
- - no_braces
145
- - context_dependent
146
-
147
137
  Style/CaseEquality:
148
138
  Description: Avoid explicit use of the case equality operator(===).
149
139
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-case-equality
@@ -357,8 +347,9 @@ Style/FrozenStringLiteralComment:
357
347
  Enabled: false
358
348
  SupportedStyles:
359
349
  - always
350
+ - always_true
360
351
  - never
361
- EnforcedStyle: always
352
+ EnforcedStyle: always_true
362
353
 
363
354
  Style/GlobalVars:
364
355
  Description: Do not introduce global variables.
@@ -458,9 +449,6 @@ Style/MethodDefParentheses:
458
449
  - require_parentheses
459
450
  - require_no_parentheses
460
451
 
461
- Style/MethodMissingSuper:
462
- Enabled: false
463
-
464
452
  Style/MissingRespondToMissing:
465
453
  Enabled: false
466
454
 
@@ -824,6 +812,21 @@ Style/SpecialGlobalVars:
824
812
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-cryptic-perlisms
825
813
  Enabled: true
826
814
 
815
+ Style/HashEachMethods:
816
+ Description: Enforce use of each_key and each_value Hash methods.
817
+ StyleGuide: https://docs.rubocop.org/en/latest/cops_style/#stylehasheachmethods
818
+ Enabled: false
819
+
820
+ Style/HashTransformKeys:
821
+ Description: Enforce use of transform_keys Hash methods. Not suggested for use below ruby 2.5
822
+ StyleGuide: https://docs.rubocop.org/en/latest/cops_style/#stylehashtransformkeys
823
+ Enabled: false
824
+
825
+ Style/HashTransformValues:
826
+ Description: Enforce use of transform_values Hash methods. Not suggested for use below ruby 2.5
827
+ StyleGuide: https://docs.rubocop.org/en/latest/cops_style/#stylehashtransformvalues
828
+ Enabled: false
829
+
827
830
  Style/StabbyLambdaParentheses:
828
831
  Description: Check for the usage of parentheses around stabby lambda arguments.
829
832
  StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#stabby-lambda-with-args
@@ -3,6 +3,6 @@
3
3
  module RuboCop
4
4
  module Airbnb
5
5
  # Version information for the the Airbnb RuboCop plugin.
6
- VERSION = '3.0.2'
6
+ VERSION = '5.0.0'
7
7
  end
8
8
  end
@@ -56,7 +56,7 @@ module RuboCop
56
56
  # class Bar # nested class
57
57
  # end
58
58
  # end
59
- class ClassOrModuleDeclaredInWrongFile < Cop
59
+ class ClassOrModuleDeclaredInWrongFile < Base
60
60
  include Inflections
61
61
  include RailsAutoloading
62
62
 
@@ -22,7 +22,7 @@ module RuboCop
22
22
  # module Foo
23
23
  # BAZ = 42
24
24
  # end
25
- class ConstAssignedInWrongFile < Cop
25
+ class ConstAssignedInWrongFile < Base
26
26
  include Inflections
27
27
  include RailsAutoloading
28
28
 
@@ -1,7 +1,7 @@
1
1
  module RuboCop
2
2
  module Cop
3
3
  module Airbnb
4
- class ContinuationSlash < Cop
4
+ class ContinuationSlash < Base
5
5
  MSG = 'Slash continuation should be reserved for closed string continuation. ' \
6
6
  'Many times it is used to get around other existing rules.'.freeze
7
7
 
@@ -14,7 +14,7 @@ module RuboCop
14
14
  alias on_send enforce_violation
15
15
  alias on_if enforce_violation
16
16
 
17
- RuboCop::AST::Node::ASSIGNMENTS.each do |type|
17
+ ::RuboCop::AST::Node::ASSIGNMENTS.each do |type|
18
18
  define_method("on_#{type}") do |node|
19
19
  enforce_violation(node)
20
20
  end
@@ -3,7 +3,7 @@ module RuboCop
3
3
  module Airbnb
4
4
  # Cop to help prevent the scorge of Default Scopes from ActiveRecord.
5
5
  # Once in place they are almost impossible to remove.
6
- class DefaultScope < Cop
6
+ class DefaultScope < Base
7
7
  MSG = 'Avoid `default_scope`. Default scopes make it difficult to '\
8
8
  'refactor data access patterns since the scope becomes part '\
9
9
  'of every query unless explicitly excluded, even when it is '\
@@ -4,7 +4,7 @@ module RuboCop
4
4
  # Cop to enforce "attr { CONST }" instead of "attr CONST" in factories,
5
5
  # because the latter forces autoload, which slows down spec startup time and
6
6
  # Zeus reload time after touching a model.
7
- class FactoryAttrReferencesClass < Cop
7
+ class FactoryAttrReferencesClass < Base
8
8
  MSG = "Instead of attr_name MyClass::MY_CONST, use attr_name { MyClass::MY_CONST }. " \
9
9
  "This enables faster spec startup time and Zeus reload time.".freeze
10
10
 
@@ -3,7 +3,7 @@ module RuboCop
3
3
  module Airbnb
4
4
  # Cop to tell developers to use :class => "MyClass" instead of :class => MyClass,
5
5
  # because the latter slows down reloading zeus.
6
- class FactoryClassUseString < Cop
6
+ class FactoryClassUseString < Base
7
7
  MSG = 'Instead of :class => MyClass, use :class => "MyClass". ' \
8
8
  "This enables faster spec startup time and faster Zeus reload time.".freeze
9
9
 
@@ -3,7 +3,7 @@ module RuboCop
3
3
  module Airbnb
4
4
  # Modifying Mass assignment restrictions eliminates the entire point of disabling
5
5
  # mass assignment. It's a lazy, potentially dangerous approach that should be discouraged.
6
- class MassAssignmentAccessibleModifier < Cop
6
+ class MassAssignmentAccessibleModifier < Base
7
7
  MSG = 'Do no override and objects mass assignment restrictions.'.freeze
8
8
 
9
9
  def on_send(node)
@@ -59,7 +59,7 @@ module RuboCop
59
59
  # end
60
60
  # end
61
61
  # end
62
- class ModuleMethodInWrongFile < Cop
62
+ class ModuleMethodInWrongFile < Base
63
63
  include Inflections
64
64
  include RailsAutoloading
65
65
 
@@ -1,7 +1,7 @@
1
1
  module RuboCop
2
2
  module Cop
3
3
  module Airbnb
4
- class NoTimeout < Cop
4
+ class NoTimeout < Base
5
5
  MSG =
6
6
  'Do not use Timeout.timeout. In combination with Rails autoloading, ' \
7
7
  'timeout can cause Segmentation Faults in version of Ruby we use. ' \
@@ -3,7 +3,7 @@ module RuboCop
3
3
  module Airbnb
4
4
  # Cop to enforce use of options hash over default arguments
5
5
  # https://github.com/airbnb/ruby#no-default-args
6
- class OptArgParameters < Cop
6
+ class OptArgParameters < Base
7
7
  MSG =
8
8
  'Do not use default positional arguments. '\
9
9
  'Use keyword arguments or an options hash instead.'.freeze
@@ -24,7 +24,7 @@ module RuboCop
24
24
  # ),
25
25
  # }
26
26
  # end
27
- class PhraseBundleKeys < Cop
27
+ class PhraseBundleKeys < Base
28
28
  MESSAGE =
29
29
  'Phrase bundle keys should match their translation keys.'.freeze
30
30
 
@@ -2,7 +2,7 @@ module RuboCop
2
2
  module Cop
3
3
  module Airbnb
4
4
  # Disallow ActiveRecord calls that pass interpolated or added strings as an argument.
5
- class RiskyActiverecordInvocation < Cop
5
+ class RiskyActiverecordInvocation < Base
6
6
  VULNERABLE_AR_METHODS = [
7
7
  :delete_all,
8
8
  :destroy_all,
@@ -20,7 +20,7 @@ module RuboCop
20
20
  #
21
21
  # describe Foo::Bar
22
22
  # end
23
- class RspecDescribeOrContextUnderNamespace < Cop
23
+ class RspecDescribeOrContextUnderNamespace < Base
24
24
  DESCRIBE_OR_CONTEXT_UNDER_NAMESPACE_MSG =
25
25
  'Declaring a `module` in a spec can break autoloading because subsequent references ' \
26
26
  'to it will not cause it to be loaded from the app. This could cause flaky tests.'.freeze
@@ -28,7 +28,7 @@ module RuboCop
28
28
  # before(:each) do
29
29
  # stub_env(:production)
30
30
  # end
31
- class RspecEnvironmentModification < Cop
31
+ class RspecEnvironmentModification < Base
32
32
  def_node_matcher :allow_or_expect_rails_env, <<-PATTERN
33
33
  (send (send nil? {:expect :allow} (send (const nil? :Rails) :env)) :to ...)
34
34
  PATTERN
@@ -3,7 +3,7 @@ module RuboCop
3
3
  module Airbnb
4
4
  # Cop to tackle prevent more complicated modifier if/unless statements
5
5
  # https://github.com/airbnb/ruby#only-simple-if-unless
6
- class SimpleModifierConditional < Cop
6
+ class SimpleModifierConditional < Base
7
7
  MSG = 'Modifier if/unless usage is okay when the body is simple, ' \
8
8
  'the condition is simple, and the whole thing fits on one line. ' \
9
9
  'Otherwise, avoid modifier if/unless.'.freeze
@@ -3,7 +3,7 @@ module RuboCop
3
3
  module Airbnb
4
4
  # Cop to tackle prevent unless statements with multiple conditions
5
5
  # https://github.com/airbnb/ruby#unless-with-multiple-conditions
6
- class SimpleUnless < Cop
6
+ class SimpleUnless < Base
7
7
  MSG = 'Unless usage is okay when there is only one conditional'.freeze
8
8
 
9
9
  def_node_matcher :multiple_conditionals?, '(if ({and or :^} ...) ...)'
@@ -25,16 +25,15 @@ module RuboCop
25
25
  # describe Something do
26
26
  # before { stub_const('MyClass::PAYLOAD', [1, 2, 3])
27
27
  # end
28
- class SpecConstantAssignment < Cop
29
- include RuboCop::RSpec::TopLevelDescribe
28
+ class SpecConstantAssignment < Base
30
29
  MESSAGE = "Defining constants inside of specs can cause spurious behavior. " \
31
- "It is almost always preferable to use `let` statements, "\
30
+ "It is almost always preferable to use `let` statements, " \
32
31
  "anonymous class/module definitions, or stub_const".freeze
33
32
 
34
33
  def on_casgn(node)
35
34
  return unless in_spec_file?(node)
36
35
  parent_module_name = node.parent_module_name
37
- if node.parent_module_name && parent_module_name != 'Object'
36
+ if parent_module_name && parent_module_name != "Object"
38
37
  return
39
38
  end
40
39
  add_offense(node, message: MESSAGE)
@@ -2,7 +2,7 @@ module RuboCop
2
2
  module Cop
3
3
  module Airbnb
4
4
  # Disallow use of YAML/Marshal methods that can trigger RCE on untrusted input
5
- class UnsafeYamlMarshal < Cop
5
+ class UnsafeYamlMarshal < Base
6
6
  MSG = 'Using unsafe YAML parsing methods on untrusted input can lead ' \
7
7
  'to remote code execution. Use `safe_load`, `parse`, `parse_file`, or ' \
8
8
  '`parse_stream` instead'.freeze
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.license = 'MIT'
16
16
  spec.version = RuboCop::Airbnb::VERSION
17
17
  spec.platform = Gem::Platform::RUBY
18
- spec.required_ruby_version = '>= 2.3'
18
+ spec.required_ruby_version = '>= 2.5'
19
19
 
20
20
  spec.require_paths = ['lib']
21
21
  spec.files = Dir[
@@ -25,9 +25,9 @@ Gem::Specification.new do |spec|
25
25
  'Gemfile',
26
26
  ]
27
27
 
28
- spec.add_dependency('rubocop', '~> 0.76.0')
29
- spec.add_dependency('rubocop-performance', '~> 1.5.0')
30
- spec.add_dependency('rubocop-rails', '~> 2.3.2')
31
- spec.add_dependency('rubocop-rspec', '~> 1.30.0')
28
+ spec.add_dependency('rubocop', '~> 1.22.0')
29
+ spec.add_dependency('rubocop-performance', '~> 1.10.2')
30
+ spec.add_dependency('rubocop-rails', '~> 2.9.1')
31
+ spec.add_dependency('rubocop-rspec', '~> 2.0.0')
32
32
  spec.add_development_dependency('rspec', '~> 3.5')
33
33
  end