gitlab-styles 4.3.0 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00dda1d4ea5cfd931d74ccf3def7dd6ed3552359c2519e7b6a73464cb3612b92
4
- data.tar.gz: 8fd90715af2921b22e53d241f12e4a546f8d53923a688028132af3e5e28f0349
3
+ metadata.gz: f34644596ecbfd782a8a8d5781251743cbe2f0ef079467416c4e15c784769693
4
+ data.tar.gz: 531fb802e1a50564fbbfad34e96f66b8a2227e6c182999750a39456f2ae17c98
5
5
  SHA512:
6
- metadata.gz: 58e29fee8c087356c272e72e9d3a8b719581e5f185ceed85d554a9ccb664654288373b2a6d1e4c1ba9587bfce4c2225960797e4c89e321688da8fa52d4a12b81
7
- data.tar.gz: a2c2f9843238a87f1af60f28beac5ec8c1ae5f1d236ab1554e88d07f95824e6474dda3b96ff5ec26a3219015c5415ea21824d41cc98d3cd06990b5ff55104097
6
+ metadata.gz: 9a4036572db91754b18045e0e9ec40d9747a633773c49fb3edcdc53d0ac8b6ae2743f94ffe5fc2ce6cc8a60a51216eb7b85c89dfb039f747370cca4831c9cc41
7
+ data.tar.gz: 78eb2aaec9c221dad33fb99c719c3ad838a39f4978381b2f99ef011f87c8c8ee67a24d9b6e26af2eea4d1b3a03e03e80aab5c2718afaa998764a3cf68d8153e4
@@ -0,0 +1,18 @@
1
+ # top-most EditorConfig file
2
+ root = true
3
+
4
+ # Unix-style newlines with a newline ending every file
5
+ [*]
6
+ end_of_line = lf
7
+ trim_trailing_whitespace = true
8
+ insert_final_newline = true
9
+
10
+ [*.{rb,yml}]
11
+ indent_size = 2
12
+
13
+ [*.{rb,yml,md}]
14
+ indent_style = space
15
+ charset = utf-8
16
+
17
+ [*.{md,markdown}]
18
+ trim_trailing_whitespace = false
data/Gemfile CHANGED
@@ -7,7 +7,7 @@ gemspec
7
7
 
8
8
  group :test do
9
9
  # Pin these dependencies, otherwise a new rule could break the CI pipelines
10
- gem 'rubocop', '0.82.0'
11
- gem 'rubocop-rspec', '1.36.0'
10
+ gem 'rubocop', '0.89.1'
11
+ gem 'rubocop-rspec', '1.44.1'
12
12
  gem 'rspec-parameterized', '0.4.2', require: false
13
13
  end
@@ -5,6 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'gitlab/styles/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
+ spec.required_ruby_version = '>= 2.6'
8
9
  spec.name = 'gitlab-styles'
9
10
  spec.version = Gitlab::Styles::VERSION
10
11
  spec.authors = ['GitLab']
@@ -21,11 +22,11 @@ Gem::Specification.new do |spec|
21
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
23
  spec.require_paths = ['lib']
23
24
 
24
- spec.add_dependency 'rubocop', '~> 0.82.0'
25
+ spec.add_dependency 'rubocop', '~> 0.89.1'
25
26
  spec.add_dependency 'rubocop-gitlab-security', '~> 0.1.0'
26
- spec.add_dependency 'rubocop-performance', '~> 1.5.2'
27
- spec.add_dependency 'rubocop-rails', '~> 2.5'
28
- spec.add_dependency 'rubocop-rspec', '~> 1.36'
27
+ spec.add_dependency 'rubocop-performance', '~> 1.8.1'
28
+ spec.add_dependency 'rubocop-rails', '~> 2.8'
29
+ spec.add_dependency 'rubocop-rspec', '~> 1.44'
29
30
 
30
31
  spec.add_development_dependency 'bundler', '~> 1.16'
31
32
  spec.add_development_dependency 'rake', '~> 10.0'
@@ -8,6 +8,7 @@ require 'gitlab/styles/rubocop/cop/polymorphic_associations'
8
8
  require 'gitlab/styles/rubocop/cop/active_record_dependent'
9
9
  require 'gitlab/styles/rubocop/cop/in_batches'
10
10
  require 'gitlab/styles/rubocop/cop/line_break_after_guard_clauses'
11
+ require 'gitlab/styles/rubocop/cop/code_reuse/active_record'
11
12
  require 'gitlab/styles/rubocop/cop/migration/update_large_table'
12
13
  require 'gitlab/styles/rubocop/cop/without_reactive_cache'
13
14
  require 'gitlab/styles/rubocop/cop/rspec/single_line_hook'
@@ -0,0 +1,131 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gitlab
4
+ module Styles
5
+ module Rubocop
6
+ module Cop
7
+ module CodeReuse
8
+ # Cop that denies the use of ActiveRecord methods outside of models.
9
+ class ActiveRecord < RuboCop::Cop::Cop
10
+ MSG = 'This method can only be used inside an ActiveRecord model: ' \
11
+ 'https://gitlab.com/gitlab-org/gitlab-foss/issues/49653'
12
+
13
+ # Various methods from ActiveRecord::Querying that are denied. We
14
+ # exclude some generic ones such as `any?` and `first`, as these may
15
+ # lead to too many false positives, since `Array` also supports these
16
+ # methods.
17
+ #
18
+ # The keys of this Hash are the denied method names. The values are
19
+ # booleans that indicate if the method should only be denied if any
20
+ # arguments are provided.
21
+ NOT_ALLOWED = {
22
+ average: true,
23
+ calculate: true,
24
+ count_by_sql: true,
25
+ create_with: true,
26
+ distinct: false,
27
+ eager_load: true,
28
+ exists?: true,
29
+ find_by: true,
30
+ find_by!: true,
31
+ find_by_sql: true,
32
+ find_each: true,
33
+ find_in_batches: true,
34
+ find_or_create_by: true,
35
+ find_or_create_by!: true,
36
+ find_or_initialize_by: true,
37
+ first!: false,
38
+ first_or_create: true,
39
+ first_or_create!: true,
40
+ first_or_initialize: true,
41
+ from: true,
42
+ group: true,
43
+ having: true,
44
+ ids: false,
45
+ includes: true,
46
+ joins: true,
47
+ limit: true,
48
+ lock: false,
49
+ many?: false,
50
+ offset: true,
51
+ order: true,
52
+ pluck: true,
53
+ preload: true,
54
+ readonly: false,
55
+ references: true,
56
+ reorder: true,
57
+ rewhere: true,
58
+ take: false,
59
+ take!: false,
60
+ unscope: false,
61
+ where: false,
62
+ with: true
63
+ }.freeze
64
+
65
+ def on_send(node)
66
+ receiver = node.children[0]
67
+ send_name = node.children[1]
68
+ first_arg = node.children[2]
69
+
70
+ return unless receiver && NOT_ALLOWED.key?(send_name)
71
+
72
+ # If the rule requires an argument to be given, but none are
73
+ # provided, we won't register an offense. This prevents us from
74
+ # adding offenses for `project.group`, while still covering
75
+ # `Project.group(:name)`.
76
+ return if NOT_ALLOWED[send_name] && !first_arg
77
+
78
+ add_offense(node, location: :selector)
79
+ end
80
+
81
+ # We can not auto correct code like this, as it requires manual
82
+ # refactoring. Instead, we'll just allow the surrounding scope.
83
+ #
84
+ # Despite this method's presence, you should not use it. This method
85
+ # exists to make it possible to allow large chunks of offenses we
86
+ # can't fix in the short term. If you are writing new code, follow the
87
+ # code reuse guidelines, instead of allowing any new offenses.
88
+ def autocorrect(node)
89
+ scope = surrounding_scope_of(node)
90
+ indent = indentation_of(scope)
91
+
92
+ lambda do |corrector|
93
+ # This prevents us from inserting the same enable/disable comment
94
+ # for a method or block that has multiple offenses.
95
+ next if allowed_scopes.include?(scope)
96
+
97
+ corrector.insert_before(
98
+ scope.source_range,
99
+ "# rubocop: disable #{cop_name}\n#{indent}"
100
+ )
101
+
102
+ corrector.insert_after(
103
+ scope.source_range,
104
+ "\n#{indent}# rubocop: enable #{cop_name}"
105
+ )
106
+
107
+ allowed_scopes << scope
108
+ end
109
+ end
110
+
111
+ def indentation_of(node)
112
+ ' ' * node.loc.expression.source_line[/\A */].length
113
+ end
114
+
115
+ def surrounding_scope_of(node)
116
+ %i[def defs block begin].each do |type|
117
+ if (found = node.each_ancestor(type).first)
118
+ return found
119
+ end
120
+ end
121
+ end
122
+
123
+ def allowed_scopes
124
+ @allowed_scopes ||= Set.new
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rubocop-rspec'
4
+ require_relative '../../rspec/helpers'
5
+
6
+ module Gitlab
7
+ module Styles
8
+ module Rubocop
9
+ module Cop
10
+ module RSpec
11
+ class Base < RuboCop::Cop::RSpec::Base
12
+ include Rubocop::Rspec::Helpers
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rubocop-rspec'
4
+ require_relative 'base'
4
5
 
5
6
  module Gitlab
6
7
  module Styles
@@ -38,22 +39,21 @@ module Gitlab
38
39
  # let(:last_thing) { 'last thing' }
39
40
  # end
40
41
  #
41
- class EmptyLineAfterLetBlock < RuboCop::Cop::RSpec::Cop
42
- include RuboCop::RSpec::BlankLineSeparation
42
+ class EmptyLineAfterLetBlock < Base
43
+ extend RuboCop::Cop::AutoCorrector
44
+ include RuboCop::RSpec::EmptyLineSeparation
43
45
 
44
46
  MSG = 'Add an empty line after `%<let>s` block.'
45
47
 
46
- def_node_matcher :lets, Helpers::ALL.block_pattern
48
+ def_node_matcher :lets, LET.block_pattern
47
49
 
48
50
  def on_block(node)
49
51
  lets(node) do
50
52
  break if last_child?(node)
51
53
  next if node.single_line?
52
54
 
53
- missing_separating_line(node) do |location|
54
- add_offense(node,
55
- location: location,
56
- message: format(MSG, let: node.method_name))
55
+ missing_separating_line_offense(node) do |method|
56
+ format(MSG, let: method)
57
57
  end
58
58
  end
59
59
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rubocop-rspec'
4
+ require_relative 'base'
4
5
 
5
6
  module Gitlab
6
7
  module Styles
@@ -38,8 +39,9 @@ module Gitlab
38
39
  # it_behaves_like 'does this'
39
40
  # end
40
41
  #
41
- class EmptyLineAfterSharedExample < RuboCop::Cop::RSpec::Cop
42
- include RuboCop::RSpec::BlankLineSeparation
42
+ class EmptyLineAfterSharedExample < Base
43
+ extend RuboCop::Cop::AutoCorrector
44
+ include RuboCop::RSpec::EmptyLineSeparation
43
45
 
44
46
  MSG = 'Add an empty line after `%<example>s` block.'
45
47
 
@@ -50,10 +52,8 @@ module Gitlab
50
52
  shared_examples(node) do
51
53
  break if last_child?(node)
52
54
 
53
- missing_separating_line(node) do |location|
54
- add_offense(node,
55
- location: location,
56
- message: format(MSG, example: node.method_name))
55
+ missing_separating_line_offense(node) do |method|
56
+ format(MSG, example: method)
57
57
  end
58
58
  end
59
59
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rubocop-rspec'
4
+ require_relative 'base'
4
5
 
5
6
  module Gitlab
6
7
  module Styles
@@ -17,7 +18,9 @@ module Gitlab
17
18
  # # good
18
19
  # expect(page).to have_link('Link', href: 'https://example.com')
19
20
  # expect(page).to have_link('Example')
20
- class HaveLinkParameters < RuboCop::Cop::RSpec::Cop
21
+ class HaveLinkParameters < Base
22
+ extend RuboCop::Cop::AutoCorrector
23
+
21
24
  MESSAGE = "The second argument to `have_link` should be a Hash."
22
25
 
23
26
  def_node_matcher :unused_parameters?, <<~PATTERN
@@ -29,11 +32,13 @@ module Gitlab
29
32
  def on_send(node)
30
33
  return unless unused_parameters?(node)
31
34
 
32
- location = node.arguments[1..-1]
33
- .map(&:source_range)
34
- .reduce(:join)
35
+ location = node.arguments[1..]
36
+ .map(&:source_range)
37
+ .reduce(:join)
35
38
 
36
- add_offense(node, location: location, message: MESSAGE)
39
+ add_offense(location, message: MESSAGE) do |corrector|
40
+ corrector.insert_after(location.end, "\n")
41
+ end
37
42
  end
38
43
  end
39
44
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rubocop-rspec'
4
+ require_relative 'base'
4
5
 
5
6
  module Gitlab
6
7
  module Styles
@@ -23,7 +24,7 @@ module Gitlab
23
24
  # after(:each) do
24
25
  # undo_something
25
26
  # end
26
- class SingleLineHook < RuboCop::Cop::RSpec::Cop
27
+ class SingleLineHook < Base
27
28
  MESSAGE = "Don't use single-line hook blocks."
28
29
 
29
30
  def_node_search :rspec_hook?, <<~PATTERN
@@ -34,7 +35,7 @@ module Gitlab
34
35
  return unless node.single_line?
35
36
  return unless rspec_hook?(node)
36
37
 
37
- add_offense(node, location: :expression, message: MESSAGE)
38
+ add_offense(node, message: MESSAGE)
38
39
  end
39
40
  end
40
41
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rubocop-rspec'
4
+ require_relative 'base'
4
5
 
5
6
  module Gitlab
6
7
  module Styles
@@ -17,7 +18,9 @@ module Gitlab
17
18
  # # good
18
19
  # describe MyClass, :js do
19
20
  # end
20
- class VerboseIncludeMetadata < RuboCop::Cop::RSpec::Cop
21
+ class VerboseIncludeMetadata < Base
22
+ extend RuboCop::Cop::AutoCorrector
23
+
21
24
  MSG = 'Use `%s` instead of `%s`.'
22
25
 
23
26
  SELECTORS = %i[describe context feature example_group it specify example scenario its].freeze
@@ -37,25 +40,19 @@ module Gitlab
37
40
 
38
41
  def on_send(node)
39
42
  invalid_metadata_matches(node) do |match|
40
- add_offense(node, location: :expression, message: format(MSG, good(match), bad(match)))
41
- end
42
- end
43
-
44
- def autocorrect(node)
45
- lambda do |corrector|
46
- invalid_metadata_matches(node) do |match|
47
- corrector.replace(match.loc.expression, good(match))
43
+ add_offense(node, message: format(MSG, good(match), bad(match))) do |corrector|
44
+ invalid_metadata_matches(node) do |match|
45
+ corrector.replace(match.loc.expression, good(match))
46
+ end
48
47
  end
49
48
  end
50
49
  end
51
50
 
52
51
  private
53
52
 
54
- def invalid_metadata_matches(node)
53
+ def invalid_metadata_matches(node, &block)
55
54
  include_metadata(node) do |matches|
56
- matches.select(&method(:invalid_metadata?)).each do |match|
57
- yield match
58
- end
55
+ matches.select(&method(:invalid_metadata?)).each(&block)
59
56
  end
60
57
  end
61
58
 
@@ -7,7 +7,7 @@ module Gitlab
7
7
  # Returns true if the given node originated from the models directory.
8
8
  def in_model?(node)
9
9
  path = node.location.expression.source_buffer.name
10
- pwd = RuboCop::PathUtil.pwd
10
+ pwd = Dir.pwd
11
11
  models_path = File.join(pwd, 'app', 'models')
12
12
  ee_models_path = File.join(pwd, 'ee', 'app', 'models')
13
13
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rubocop-rspec'
4
+
5
+ module Gitlab
6
+ module Styles
7
+ module Rubocop
8
+ module Rspec
9
+ module Helpers
10
+ include RuboCop::RSpec::Language
11
+
12
+ LET = SelectorSet.new(%i[let_it_be]) + Helpers::ALL
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module Styles
5
- VERSION = '4.3.0'
5
+ VERSION = '5.0.0'
6
6
  end
7
7
  end
@@ -1,3 +1,4 @@
1
+ ---
1
2
  AllCops:
2
3
  TargetRubyVersion: 2.6
3
4
  # Cop names are not displayed in offense messages by default. Change behavior
@@ -1,3 +1,4 @@
1
+ ---
1
2
  # Gems in consecutive lines should be alphabetically sorted
2
3
  Bundler/OrderedGems:
3
4
  Enabled: false
@@ -0,0 +1,24 @@
1
+ # Denies the use of ActiveRecord methods outside of configured
2
+ # excluded directories
3
+ # Directories that allow the use of the denied methods.
4
+ # To start we provide a default configuration that matches
5
+ # a standard Rails app and enable.
6
+ # The default configuration can be overridden by
7
+ # providing your own Exclusion list as follows:
8
+ # CodeReuse/ActiveRecord:
9
+ # Enabled: true
10
+ # Exclude:
11
+ # - app/models/**/*.rb
12
+ # - config/**/*.rb
13
+ # - db/**/*.rb
14
+ # - lib/tasks/**/*.rb
15
+ # - spec/**/*.rb
16
+ # - lib/gitlab/**/*.rb
17
+ CodeReuse/ActiveRecord:
18
+ Enabled: true
19
+ Exclude:
20
+ - app/models/**/*.rb
21
+ - config/**/*.rb
22
+ - db/**/*.rb
23
+ - lib/tasks/**/*.rb
24
+ - spec/**/*.rb
@@ -1,3 +1,4 @@
1
+ ---
1
2
  require:
2
3
  - rubocop-gitlab-security
3
4
  - rubocop-performance
@@ -1,3 +1,4 @@
1
+ ---
1
2
  # Dependencies in the gemspec should be alphabetically sorted
2
3
  # Configuration parameters: Include, TreatCommentsAsGroupSeparators.
3
4
  Gemspec/OrderedDependencies:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  # Check indentation of private/protected visibility modifiers.
2
3
  Layout/AccessModifierIndentation:
3
4
  Enabled: true
@@ -60,6 +61,11 @@ Layout/EmptyLines:
60
61
  Layout/EmptyLinesAroundAccessModifier:
61
62
  Enabled: true
62
63
 
64
+ # Checks for a newline after an attribute accessor or a group of them
65
+ # https://docs.rubocop.org/rubocop/0.89/cops_layout.html#layoutemptylinesaroundattributeaccessor
66
+ Layout/EmptyLinesAroundAttributeAccessor:
67
+ Enabled: true
68
+
63
69
  # Keeps track of empty lines around block bodies.
64
70
  Layout/EmptyLinesAroundBlockBody:
65
71
  Enabled: true
@@ -1,3 +1,4 @@
1
+ ---
1
2
  # Checks for ambiguous block association with method when param passed without
2
3
  # parentheses.
3
4
  Lint/AmbiguousBlockAssociation:
@@ -18,6 +19,10 @@ Lint/AmbiguousRegexpLiteral:
18
19
  Lint/AssignmentInCondition:
19
20
  Enabled: false
20
21
 
22
+ # Checks for places where binary operator has identical operands
23
+ Lint/BinaryOperatorWithIdenticalOperands:
24
+ Enabled: true
25
+
21
26
  # Default values in optional keyword arguments and optional ordinal arguments
22
27
  # should not refer back to the name of the argument.
23
28
  Lint/CircularArgumentReference:
@@ -31,6 +36,22 @@ Lint/Debugger:
31
36
  Lint/DeprecatedClassMethods:
32
37
  Enabled: true
33
38
 
39
+ # Algorithmic constants for OpenSSL::Cipher and OpenSSL::Digest deprecated since OpenSSL version 2.2.0.
40
+ # Prefer passing a string instead.
41
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintdeprecatedopensslconstant
42
+ Lint/DeprecatedOpenSSLConstant:
43
+ Enabled: true
44
+
45
+ # Checks that there are no repeated conditions used in if 'elsif'.
46
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintduplicateelsifcondition
47
+ Lint/DuplicateElsifCondition:
48
+ Enabled: true
49
+
50
+ # Checks that there are no repeated exceptions used in 'rescue' expressions.
51
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintduplicaterescueexception
52
+ Lint/DuplicateRescueException:
53
+ Enabled: true
54
+
34
55
  # Check for immutable argument given to each_with_object.
35
56
  Lint/EachWithObjectArgument:
36
57
  Enabled: true
@@ -39,6 +60,11 @@ Lint/EachWithObjectArgument:
39
60
  Lint/ElseLayout:
40
61
  Enabled: true
41
62
 
63
+ # Checks for the presence of if, elsif and unless branches without a body.
64
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintemptyconditionalbody
65
+ Lint/EmptyConditionalBody:
66
+ Enabled: true
67
+
42
68
  # Checks for empty ensure block.
43
69
  Lint/EmptyEnsure:
44
70
  Enabled: true
@@ -55,6 +81,11 @@ Lint/EnsureReturn:
55
81
  Lint/FlipFlop:
56
82
  Enabled: true
57
83
 
84
+ # Checks for the presence of precise comparison of floating point numbers.
85
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintfloatcomparison
86
+ Lint/FloatComparison:
87
+ Enabled: true
88
+
58
89
  # Catches floating-point literals too large or small for Ruby to represent.
59
90
  Lint/FloatOutOfRange:
60
91
  Enabled: true
@@ -81,10 +112,21 @@ Lint/LiteralAsCondition:
81
112
  Lint/LiteralInInterpolation:
82
113
  Enabled: true
83
114
 
84
- # This cop checks for uses of *begin...end while/until something*.
115
+ # Checks for uses of *begin...end while/until something*.
85
116
  Lint/Loop:
86
117
  Enabled: false
87
118
 
119
+ # Checks for the presence of constructors and lifecycle callbacks without calls to super.
120
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintmissingsuper
121
+ Lint/MissingSuper:
122
+ Enabled: false
123
+
124
+ # Do not mix named captures and numbered captures in a Regexp literal
125
+ # because numbered capture is ignored if they’re mixed.
126
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintmixedregexpcapturetypes
127
+ Lint/MixedRegexpCaptureTypes:
128
+ Enabled: true
129
+
88
130
  # Do not use nested method definitions.
89
131
  Lint/NestedMethodDefinition:
90
132
  Enabled: true
@@ -93,6 +135,11 @@ Lint/NestedMethodDefinition:
93
135
  Lint/NextWithoutAccumulator:
94
136
  Enabled: true
95
137
 
138
+ # Looks for references of Regexp captures that are out of range and thus always returns nil.
139
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintoutofrangeregexpref
140
+ Lint/OutOfRangeRegexpRef:
141
+ Enabled: true
142
+
96
143
  # Checks for method calls with a space before the opening parenthesis.
97
144
  Lint/ParenthesesAsGroupedExpression:
98
145
  Enabled: true
@@ -126,6 +173,11 @@ Lint/RescueException:
126
173
  Lint/SafeNavigationWithEmpty:
127
174
  Enabled: true
128
175
 
176
+ # Checks for self-assignments.
177
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintselfassignment
178
+ Lint/SelfAssignment:
179
+ Enabled: true
180
+
129
181
  # Checks for the order which exceptions are rescued to avoid rescueing a less specific exception before a more specific exception.
130
182
  Lint/ShadowedException:
131
183
  Enabled: false
@@ -143,6 +195,11 @@ Lint/StructNewOverride:
143
195
  Lint/SuppressedException:
144
196
  Enabled: false
145
197
 
198
+ # Checks for top level return with arguments.
199
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#linttoplevelreturnwithargument
200
+ Lint/TopLevelReturnWithArgument:
201
+ Enabled: true
202
+
146
203
  # Do not use prefix `_` for a variable that is used.
147
204
  Lint/UnderscorePrefixedVariableName:
148
205
  Enabled: true
@@ -155,6 +212,11 @@ Lint/UnifiedInteger:
155
212
  Lint/UnreachableCode:
156
213
  Enabled: true
157
214
 
215
+ # Checks for loops that will have at most one iteration.
216
+ # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintunreachableloop
217
+ Lint/UnreachableLoop:
218
+ Enabled: true
219
+
158
220
  # This cop checks for unused block arguments.
159
221
  Lint/UnusedBlockArgument:
160
222
  Enabled: false
@@ -172,10 +234,6 @@ Lint/UselessAccessModifier:
172
234
  Lint/UselessAssignment:
173
235
  Enabled: true
174
236
 
175
- # Checks for comparison of something with itself.
176
- Lint/UselessComparison:
177
- Enabled: true
178
-
179
237
  # Checks for useless `else` in `begin..end` without `rescue`.
180
238
  Lint/UselessElseWithoutRescue:
181
239
  Enabled: true
@@ -1,3 +1,4 @@
1
+ ---
1
2
  # A calculated magnitude based on number of assignments,
2
3
  # branches, and conditions.
3
4
  Metrics/AbcSize:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  # Checks for methods that may lead to batch type issues on a table that's been
2
3
  # explicitly denied because of its size.
3
4
  #
@@ -1,3 +1,4 @@
1
+ ---
1
2
  # Check the naming of accessor methods for get_/set_.
2
3
  Naming/AccessorMethodName:
3
4
  Enabled: false
@@ -1,3 +1,15 @@
1
+ ---
2
+ # Used to identify usages of ancestors.include? and change them to use ⇐ instead.
3
+ # https://docs.rubocop.org/rubocop-performance/1.8/cops_performance.html#performanceancestorsinclude
4
+ Performance/AncestorsInclude:
5
+ Enabled: true
6
+
7
+ # Identifies places where numeric argument to BigDecimal should be converted to string.
8
+ # Initializing from String is faster than from Numeric for BigDecimal.
9
+ # https://docs.rubocop.org/rubocop-performance/1.8/cops_performance.html#performancebigdecimalwithnumericargument
10
+ Performance/BigDecimalWithNumericArgument:
11
+ Enabled: true
12
+
1
13
  # Use `caller(n..n)` instead of `caller`.
2
14
  Performance/Caller:
3
15
  Enabled: false
@@ -31,17 +43,53 @@ Performance/RedundantMerge:
31
43
  Enabled: true
32
44
  MaxKeyValuePairs: 1
33
45
 
46
+ # Identifies places where sort { |a, b| a <=> b } can be replaced with sort.
47
+ # https://docs.rubocop.org/rubocop-performance/1.7/cops_performance.html#performanceredundantsortblock
48
+ Performance/RedundantSortBlock:
49
+ Enabled: true
50
+
51
+ # Checks for redundant String#chars.
52
+ # https://docs.rubocop.org/rubocop-performance/1.8/cops_performance.html#performanceredundantstringchars
53
+ Performance/RedundantStringChars:
54
+ Enabled: true
55
+
56
+ # Identifies places where reverse.first(n) and reverse.first can be replaced by last(n).reverse and last.
57
+ # https://docs.rubocop.org/rubocop-performance/1.8/cops_performance.html#performancereversefirst
58
+ Performance/ReverseFirst:
59
+ Enabled: true
60
+
61
+ # Identifies places where sort { |a, b| b <=> a } can be replaced by a faster sort.reverse.
62
+ # https://docs.rubocop.org/rubocop-performance/1.8/cops_performance.html#performancesortreverse
63
+ Performance/SortReverse:
64
+ Enabled: true
65
+
66
+ # Identifies places where gsub(/a+/, 'a') and gsub!(/a+/, 'a') can be replaced by squeeze('a') and squeeze!('a').
67
+ # https://docs.rubocop.org/rubocop-performance/1.8/cops_performance.html#performancesqueeze
68
+ Performance/Squeeze:
69
+ Enabled: true
70
+
34
71
  # Use `start_with?` instead of a regex match anchored to the beginning of a
35
72
  # string.
36
73
  Performance/StartWith:
37
74
  Enabled: true
38
75
 
76
+ # Identifies unnecessary use of a regex where String#include? would suffice.
77
+ # https://docs.rubocop.org/rubocop-performance/1.8/cops_performance.html#performancestringinclude
78
+ Performance/StringInclude:
79
+ Enabled: true
80
+
39
81
  # Use `tr` instead of `gsub` when you are replacing the same number of
40
82
  # characters. Use `delete` instead of `gsub` when you are deleting
41
83
  # characters.
42
84
  Performance/StringReplacement:
43
85
  Enabled: true
44
86
 
87
+ # Identifies places where custom code finding the sum of elements in some
88
+ # Enumerable object can be replaced by Enumerable#sum method.
89
+ # https://docs.rubocop.org/rubocop-performance/1.8/cops_performance.html#performancesum
90
+ Performance/Sum:
91
+ Enabled: true
92
+
45
93
  # Checks for `.times.map` calls.
46
94
  Performance/TimesMap:
47
95
  Enabled: true
@@ -1,3 +1,4 @@
1
+ ---
1
2
  # Enables Rails cops.
2
3
  Rails:
3
4
  Enabled: true
@@ -7,6 +8,18 @@ Rails/ActionFilter:
7
8
  Enabled: true
8
9
  EnforcedStyle: action
9
10
 
11
+ # Checks that Active Record callbacks are declared in the order in which they will be executed.
12
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railsactiverecordcallbacksorder
13
+ Rails/ActiveRecordCallbacksOrder:
14
+ Enabled: true
15
+
16
+ # Enforces that there is only one call to after_commit
17
+ # (and its aliases - after_create_commit, after_update_commit, and after_destroy_commit)
18
+ # with the same callback name per model.
19
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railsaftercommitoverride
20
+ Rails/AfterCommitOverride:
21
+ Enabled: true
22
+
10
23
  # Check that models subclass ApplicationRecord.
11
24
  Rails/ApplicationRecord:
12
25
  Enabled: false
@@ -43,6 +56,12 @@ Rails/FindBy:
43
56
  - 'app/**/*.rb'
44
57
  - 'lib/**/*.rb'
45
58
 
59
+ # Enforces that ActiveRecord#find is used instead of where.take!, find_by!, and find_by_id!
60
+ # to retrieve a single record by primary key when you expect it to be found.
61
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railsfindbyid
62
+ Rails/FindById:
63
+ Enabled: true
64
+
46
65
  # Prefer `all.find_each` over `all.find`.
47
66
  Rails/FindEach:
48
67
  Enabled: true
@@ -57,6 +76,26 @@ Rails/HasAndBelongsToMany:
57
76
  Rails/HttpPositionalArguments:
58
77
  Enabled: true
59
78
 
79
+ # Checks that Active Support’s inquiry method is not used.
80
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railsinquiry
81
+ Rails/Inquiry:
82
+ Enabled: true
83
+
84
+ # Enforces that mailer names end with Mailer suffix.
85
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railsmailername
86
+ Rails/MailerName:
87
+ Enabled: true
88
+
89
+ # Identifies places where defining routes with match can be replaced with a specific HTTP method.
90
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railsmatchroute
91
+ Rails/MatchRoute:
92
+ Enabled: true
93
+
94
+ # Enforces the use of collection.exclude?(obj) over !collection.include?(obj).
95
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railsnegateinclude
96
+ Rails/NegateInclude:
97
+ Enabled: true
98
+
60
99
  # Checks for calls to puts, print, etc.
61
100
  Rails/Output:
62
101
  Enabled: true
@@ -71,6 +110,16 @@ Rails/Output:
71
110
  Rails/OutputSafety:
72
111
  Enabled: false
73
112
 
113
+ # Enforces the use of pluck over map.
114
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railspluck
115
+ Rails/Pluck:
116
+ Enabled: true
117
+
118
+ # Identifies places where pluck is used in where query methods and can be replaced with select.
119
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railspluckinwhere
120
+ Rails/PluckInWhere:
121
+ Enabled: true
122
+
74
123
  # Checks for incorrect grammar when using methods like `3.day.ago`.
75
124
  Rails/PluralizationGrammar:
76
125
  Enabled: true
@@ -87,10 +136,30 @@ Rails/ReadWriteAttribute:
87
136
  Rails/RelativeDateConstant:
88
137
  Enabled: false
89
138
 
139
+ # Looks for inline rendering within controller actions.
140
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railsrenderinline
141
+ Rails/RenderInline:
142
+ Enabled: true
143
+
144
+ # Identifies places where render text: can be replaced with render plain:.
145
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railsrenderplaintext
146
+ Rails/RenderPlainText:
147
+ Enabled: true
148
+
90
149
  # Checks the arguments of ActiveRecord scopes.
91
150
  Rails/ScopeArgs:
92
151
  Enabled: true
93
152
 
153
+ # Enforces that short forms of I18n methods are used: t instead of translate and l instead of localize.
154
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railsshorti18n
155
+ Rails/ShortI18n:
156
+ Enabled: true
157
+
158
+ # Checks SQL heredocs to use .squish.
159
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railssquishedsqlheredocs
160
+ Rails/SquishedSQLHeredocs:
161
+ Enabled: true
162
+
94
163
  # This cop checks for the use of Time methods without zone.
95
164
  Rails/TimeZone:
96
165
  Enabled: false
@@ -98,3 +167,13 @@ Rails/TimeZone:
98
167
  # This cop checks for the use of old-style attribute validation macros.
99
168
  Rails/Validation:
100
169
  Enabled: true
170
+
171
+ # Enforces consistent style when using exists?.
172
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railswhereexists
173
+ Rails/WhereExists:
174
+ Enabled: true
175
+
176
+ # Identifies places where manually constructed SQL in where can be replaced with where.not(...).
177
+ # https://docs.rubocop.org/rubocop-rails/2.8/cops_rails.html#railswherenot
178
+ Rails/WhereNot:
179
+ Enabled: true
@@ -1,3 +1,4 @@
1
+ ---
1
2
  # Check that instances are not being stubbed globally.
2
3
  RSpec/AnyInstance:
3
4
  Enabled: false
@@ -142,6 +143,11 @@ RSpec/SingleLineHook:
142
143
  - 'spec/factories/*'
143
144
  - 'spec/requests/api/v3/*'
144
145
 
146
+ # Checks that message expectations do not have a configured response.
147
+ # https://docs.rubocop.org/rubocop-rspec/1.44/cops_rspec.html#rspecstubbedmock
148
+ RSpec/StubbedMock:
149
+ Enabled: false
150
+
145
151
  # Checks for stubbed test subjects.
146
152
  RSpec/SubjectStub:
147
153
  Enabled: false
@@ -1,3 +1,4 @@
1
+ ---
1
2
  # This cop checks for the use of JSON class methods which have potential
2
3
  # security issues.
3
4
  Security/JSONLoad:
@@ -1,3 +1,9 @@
1
+ ---
2
+ # Checks for grouping of accessors in class and module bodies.
3
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#styleaccessorgrouping
4
+ Style/AccessorGrouping:
5
+ Enabled: true
6
+
1
7
  # Use alias_method instead of alias.
2
8
  Style/Alias:
3
9
  EnforcedStyle: prefer_alias_method
@@ -8,6 +14,11 @@ Style/Alias:
8
14
  Style/AndOr:
9
15
  Enabled: true
10
16
 
17
+ # Enforces the use of Array() instead of explicit Array check or [*var]
18
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#stylearraycoercion
19
+ Style/ArrayCoercion:
20
+ Enabled: true
21
+
11
22
  # Use `Array#join` instead of `Array#*`.
12
23
  Style/ArrayJoin:
13
24
  Enabled: true
@@ -24,6 +35,11 @@ Style/Attr:
24
35
  Style/BeginBlock:
25
36
  Enabled: true
26
37
 
38
+ # Checks for places where attr_reader and attr_writer for the same method can be combined into single attr_accessor.
39
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#stylebisectedattraccessor
40
+ Style/BisectedAttrAccessor:
41
+ Enabled: true
42
+
27
43
  # Do not use block comments.
28
44
  Style/BlockComments:
29
45
  Enabled: true
@@ -33,10 +49,15 @@ Style/BlockComments:
33
49
  Style/BlockDelimiters:
34
50
  Enabled: true
35
51
 
36
- # This cop checks for uses of the case equality operator(===).
52
+ # Checks for uses of the case equality operator(===).
37
53
  Style/CaseEquality:
38
54
  Enabled: false
39
55
 
56
+ # Identifies places where if-elsif constructions can be replaced with case-when.
57
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#stylecaselikeif
58
+ Style/CaseLikeIf:
59
+ Enabled: true
60
+
40
61
  # Checks for uses of character literals.
41
62
  Style/CharacterLiteral:
42
63
  Enabled: true
@@ -95,6 +116,12 @@ Style/EndBlock:
95
116
  Style/EvenOdd:
96
117
  Enabled: true
97
118
 
119
+ # Enforces the use of explicit block argument to avoid writing block literal that
120
+ # just passes its arguments to another block.
121
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#styleexplicitblockargument
122
+ Style/ExplicitBlockArgument:
123
+ Enabled: true
124
+
98
125
  # Enforces consistency when using exponential notation for numbers in the code
99
126
  Style/ExponentialNotation:
100
127
  Enabled: true
@@ -111,6 +138,13 @@ Style/FormatStringToken:
111
138
  Style/FrozenStringLiteralComment:
112
139
  Enabled: true
113
140
 
141
+ # Enforces the use of $stdout/$stderr/$stdin instead of STDOUT/STDERR/STDIN. STDOUT/STDERR/STDIN are constants,
142
+ # and while you can actually reassign (possibly to redirect some stream) constants in Ruby,
143
+ # you’ll get an interpreter warning if you do so.
144
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#styleglobalstdstream
145
+ Style/GlobalStdStream:
146
+ Enabled: true
147
+
114
148
  # Do not introduce global variables.
115
149
  Style/GlobalVars:
116
150
  Enabled: true
@@ -118,10 +152,20 @@ Style/GlobalVars:
118
152
  - 'lib/backup/**/*'
119
153
  - 'lib/tasks/**/*'
120
154
 
155
+ # Checks for presence or absence of braces around hash literal as a last array item depending on configuration.
156
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#stylehashaslastarrayitem
157
+ Style/HashAsLastArrayItem:
158
+ Enabled: true
159
+
121
160
  # Checks for uses of each_key and each_value Hash methods.
122
161
  Style/HashEachMethods:
123
162
  Enabled: true
124
163
 
164
+ # Checks for places where case-when represents a simple 1:1 mapping and can be replaced with a hash lookup.
165
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#stylehashlikecase
166
+ Style/HashLikeCase:
167
+ Enabled: false
168
+
125
169
  # Prefer Ruby 1.9 hash syntax `{ a: 1, b: 2 }`
126
170
  # over 1.8 syntax `{ :a => 1, :b => 2 }`.
127
171
  Style/HashSyntax:
@@ -161,6 +205,11 @@ Style/InverseMethods:
161
205
  Style/LambdaCall:
162
206
  Enabled: true
163
207
 
208
+ # Checks for places where keyword arguments can be used instead of boolean arguments when defining methods.
209
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#styleoptionalbooleanparameter
210
+ Style/OptionalBooleanParameter:
211
+ Enabled: false
212
+
164
213
  # Use `strip` instead of `lstrip.rstrip`.
165
214
  Style/Strip:
166
215
  Enabled: true
@@ -248,10 +297,25 @@ Style/PreferredHashMethods:
248
297
  Style/RedundantCapitalW:
249
298
  Enabled: true
250
299
 
300
+ # Checks for redundant assignment before returning.
301
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#styleredundantassignment
302
+ Style/RedundantAssignment:
303
+ Enabled: true
304
+
251
305
  # Checks for an obsolete RuntimeException argument in raise/fail.
252
306
  Style/RedundantException:
253
307
  Enabled: true
254
308
 
309
+ # Identifies places where fetch(key) { value } can be replaced by fetch(key, value).
310
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#styleredundantfetchblock
311
+ Style/RedundantFetchBlock:
312
+ Enabled: true
313
+
314
+ # Checks for the presence of superfluous .rb extension in the filename provided to require and require_relative.
315
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#styleredundantfileextensioninrequire
316
+ Style/RedundantFileExtensionInRequire:
317
+ Enabled: true
318
+
255
319
  # Checks for parentheses that seem not to serve any purpose.
256
320
  Style/RedundantParentheses:
257
321
  Enabled: true
@@ -260,6 +324,16 @@ Style/RedundantParentheses:
260
324
  Style/RedundantPercentQ:
261
325
  Enabled: false
262
326
 
327
+ # Checks for unnecessary single-element Regexp character classes.
328
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#styleredundantregexpcharacterclass
329
+ Style/RedundantRegexpCharacterClass:
330
+ Enabled: true
331
+
332
+ # Checks for redundant escapes inside Regexp literals.
333
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#styleredundantregexpescape
334
+ Style/RedundantRegexpEscape:
335
+ Enabled: true
336
+
263
337
  # Use `sort` instead of `sort_by { |x| x }`.
264
338
  Style/RedundantSortBy:
265
339
  Enabled: true
@@ -268,16 +342,31 @@ Style/RedundantSortBy:
268
342
  Style/Semicolon:
269
343
  Enabled: true
270
344
 
345
+ # Sometimes using dig method ends up with just a single argument. In such cases, dig should be replaced with [].
346
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#stylesingleargumentdig
347
+ Style/SingleArgumentDig:
348
+ Enabled: true
349
+
271
350
  # Checks for proper usage of fail and raise.
272
351
  Style/SignalException:
273
352
  EnforcedStyle: only_raise
274
353
  Enabled: true
275
354
 
355
+ # Checks that arrays are sliced with endless ranges instead of ary[start..-1] on Ruby 2.6+.
356
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#styleslicingwithrange
357
+ Style/SlicingWithRange:
358
+ Enabled: true
359
+
276
360
  # Check for the usage of parentheses around stabby lambda arguments.
277
361
  Style/StabbyLambdaParentheses:
278
362
  EnforcedStyle: require_parentheses
279
363
  Enabled: true
280
364
 
365
+ # Checks for places where string concatenation can be replaced with string interpolation.
366
+ # https://docs.rubocop.org/rubocop/0.89/cops_style.html#stylestringconcatenation
367
+ Style/StringConcatenation:
368
+ Enabled: true
369
+
281
370
  # Checks if uses of quotes match the configured preference.
282
371
  Style/StringLiterals:
283
372
  Enabled: false
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-styles
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-07 00:00:00.000000000 Z
11
+ date: 2020-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.82.0
19
+ version: 0.89.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.82.0
26
+ version: 0.89.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop-gitlab-security
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,42 +44,42 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.5.2
47
+ version: 1.8.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.5.2
54
+ version: 1.8.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop-rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.5'
61
+ version: '2.8'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.5'
68
+ version: '2.8'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop-rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.36'
75
+ version: '1.44'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.36'
82
+ version: '1.44'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -129,6 +129,7 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
+ - ".editorconfig"
132
133
  - ".gitignore"
133
134
  - ".gitlab-ci.yml"
134
135
  - ".gitlab/merge_request_templates/Release.md"
@@ -148,6 +149,7 @@ files:
148
149
  - lib/gitlab/styles/rubocop.rb
149
150
  - lib/gitlab/styles/rubocop/cop/active_record_dependent.rb
150
151
  - lib/gitlab/styles/rubocop/cop/active_record_serialize.rb
152
+ - lib/gitlab/styles/rubocop/cop/code_reuse/active_record.rb
151
153
  - lib/gitlab/styles/rubocop/cop/custom_error_class.rb
152
154
  - lib/gitlab/styles/rubocop/cop/gem_fetcher.rb
153
155
  - lib/gitlab/styles/rubocop/cop/in_batches.rb
@@ -155,6 +157,7 @@ files:
155
157
  - lib/gitlab/styles/rubocop/cop/migration/update_large_table.rb
156
158
  - lib/gitlab/styles/rubocop/cop/polymorphic_associations.rb
157
159
  - lib/gitlab/styles/rubocop/cop/redirect_with_status.rb
160
+ - lib/gitlab/styles/rubocop/cop/rspec/base.rb
158
161
  - lib/gitlab/styles/rubocop/cop/rspec/empty_line_after_let_block.rb
159
162
  - lib/gitlab/styles/rubocop/cop/rspec/empty_line_after_shared_example.rb
160
163
  - lib/gitlab/styles/rubocop/cop/rspec/have_link_parameters.rb
@@ -163,9 +166,11 @@ files:
163
166
  - lib/gitlab/styles/rubocop/cop/without_reactive_cache.rb
164
167
  - lib/gitlab/styles/rubocop/migration_helpers.rb
165
168
  - lib/gitlab/styles/rubocop/model_helpers.rb
169
+ - lib/gitlab/styles/rubocop/rspec/helpers.rb
166
170
  - lib/gitlab/styles/version.rb
167
171
  - rubocop-all.yml
168
172
  - rubocop-bundler.yml
173
+ - rubocop-code_reuse.yml
169
174
  - rubocop-default.yml
170
175
  - rubocop-gemspec.yml
171
176
  - rubocop-layout.yml
@@ -190,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
190
195
  requirements:
191
196
  - - ">="
192
197
  - !ruby/object:Gem::Version
193
- version: '0'
198
+ version: '2.6'
194
199
  required_rubygems_version: !ruby/object:Gem::Requirement
195
200
  requirements:
196
201
  - - ">="