gitlab-styles 3.3.0 → 4.3.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/.gitignore +3 -1
- data/.gitlab-ci.yml +36 -4
- data/.gitlab/merge_request_templates/Release.md +35 -0
- data/Gemfile +4 -1
- data/README.md +5 -0
- data/Rakefile +2 -0
- data/gitlab-styles.gemspec +6 -4
- data/lib/gitlab/styles.rb +2 -0
- data/lib/gitlab/styles/rubocop.rb +5 -0
- data/lib/gitlab/styles/rubocop/cop/active_record_dependent.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/active_record_serialize.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/custom_error_class.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/gem_fetcher.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/in_batches.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/line_break_after_guard_clauses.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/migration/update_large_table.rb +64 -0
- data/lib/gitlab/styles/rubocop/cop/polymorphic_associations.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/redirect_with_status.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/rspec/empty_line_after_let_block.rb +65 -0
- data/lib/gitlab/styles/rubocop/cop/rspec/empty_line_after_shared_example.rb +65 -0
- data/lib/gitlab/styles/rubocop/cop/rspec/have_link_parameters.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/rspec/single_line_hook.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/rspec/verbose_include_metadata.rb +3 -1
- data/lib/gitlab/styles/rubocop/cop/without_reactive_cache.rb +3 -1
- data/lib/gitlab/styles/rubocop/migration_helpers.rb +2 -0
- data/lib/gitlab/styles/rubocop/model_helpers.rb +2 -0
- data/lib/gitlab/styles/version.rb +3 -1
- data/rubocop-all.yml +1 -1
- data/rubocop-default.yml +1 -0
- data/rubocop-layout.yml +32 -22
- data/rubocop-lint.yml +18 -14
- data/rubocop-metrics.yml +0 -6
- data/rubocop-migrations.yml +21 -0
- data/rubocop-naming.yml +8 -8
- data/rubocop-rspec.yml +8 -0
- data/rubocop-style.yml +29 -14
- metadata +14 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 00dda1d4ea5cfd931d74ccf3def7dd6ed3552359c2519e7b6a73464cb3612b92
|
|
4
|
+
data.tar.gz: 8fd90715af2921b22e53d241f12e4a546f8d53923a688028132af3e5e28f0349
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 58e29fee8c087356c272e72e9d3a8b719581e5f185ceed85d554a9ccb664654288373b2a6d1e4c1ba9587bfce4c2225960797e4c89e321688da8fa52d4a12b81
|
|
7
|
+
data.tar.gz: a2c2f9843238a87f1af60f28beac5ec8c1ae5f1d236ab1554e88d07f95824e6474dda3b96ff5ec26a3219015c5415ea21824d41cc98d3cd06990b5ff55104097
|
data/.gitignore
CHANGED
data/.gitlab-ci.yml
CHANGED
|
@@ -1,13 +1,45 @@
|
|
|
1
|
-
|
|
1
|
+
stages:
|
|
2
|
+
- release
|
|
3
|
+
- test
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
default:
|
|
6
|
+
image: ruby:2.6
|
|
7
|
+
tags:
|
|
8
|
+
- gitlab-org
|
|
9
|
+
before_script:
|
|
10
|
+
- bundle --version
|
|
11
|
+
- bundle install
|
|
12
|
+
|
|
13
|
+
workflow:
|
|
14
|
+
rules:
|
|
15
|
+
# For merge requests, create a pipeline.
|
|
16
|
+
- if: '$CI_MERGE_REQUEST_IID'
|
|
17
|
+
# For `master` branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
|
|
18
|
+
- if: '$CI_COMMIT_BRANCH == "master"'
|
|
19
|
+
# For tags, create a pipeline.
|
|
20
|
+
- if: '$CI_COMMIT_TAG'
|
|
6
21
|
|
|
7
22
|
styles:
|
|
23
|
+
stage: test
|
|
8
24
|
script:
|
|
9
25
|
- bundle exec rubocop --debug --parallel
|
|
10
26
|
|
|
11
27
|
specs:
|
|
28
|
+
stage: test
|
|
12
29
|
script:
|
|
13
30
|
- bundle exec rspec
|
|
31
|
+
|
|
32
|
+
release:
|
|
33
|
+
stage: release
|
|
34
|
+
rules:
|
|
35
|
+
- if: '$CI_COMMIT_TAG'
|
|
36
|
+
script:
|
|
37
|
+
- gem update --system
|
|
38
|
+
- ruby --version
|
|
39
|
+
- gem env version
|
|
40
|
+
- gem build gitlab-styles.gemspec
|
|
41
|
+
- gem push gitlab-styles*.gem
|
|
42
|
+
artifacts:
|
|
43
|
+
paths:
|
|
44
|
+
- gitlab-styles*.gem
|
|
45
|
+
expire_in: 30 days
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- Replace `v4.5.0` with the previous release here, and `e18d76b309e42888759c1effe96767f13e34ae55`
|
|
2
|
+
with the latest commit from https://gitlab.com/gitlab-org/gitlab-styles/commits/master that will be included in the release. -->
|
|
3
|
+
- Diff: https://gitlab.com/gitlab-org/gitlab-styles/compare/v4.5.0...e18d76b309e42888759c1effe96767f13e34ae55
|
|
4
|
+
|
|
5
|
+
- Release notes:
|
|
6
|
+
|
|
7
|
+
<!-- Keep the sections order but remove the empty sections -->
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
### New scenarios and scenario updates
|
|
11
|
+
|
|
12
|
+
- !aaa <Title of the aaa MR>.
|
|
13
|
+
|
|
14
|
+
### Fixes
|
|
15
|
+
|
|
16
|
+
- !bbb <Title of the bbb MR>.
|
|
17
|
+
|
|
18
|
+
### Doc changes
|
|
19
|
+
|
|
20
|
+
- !ccc <Title of the ccc MR>.
|
|
21
|
+
|
|
22
|
+
### Other changes (CI, backstage)
|
|
23
|
+
|
|
24
|
+
- !ddd <Title of the ddd MR>.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- Checklist before merging:
|
|
28
|
+
- [ ] Diff link is up-to-date.
|
|
29
|
+
- [ ] Based on the diff, `lib/gitlab/styles/version.rb` is updated, according to [SemVer](https://semver.org).
|
|
30
|
+
- [ ] Release notes are accurate.
|
|
31
|
+
|
|
32
|
+
- Checklist after merging:
|
|
33
|
+
- [ ] [Create a tag for the new release version](docs/release_process.md#how-to).
|
|
34
|
+
|
|
35
|
+
/label ~"Engineering Productivity" ~"tooling::workflow"
|
data/Gemfile
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
source 'https://rubygems.org'
|
|
2
4
|
|
|
3
5
|
# Specify your gem's dependencies in gitlab-rubocop.gemspec
|
|
@@ -5,6 +7,7 @@ gemspec
|
|
|
5
7
|
|
|
6
8
|
group :test do
|
|
7
9
|
# Pin these dependencies, otherwise a new rule could break the CI pipelines
|
|
8
|
-
gem 'rubocop', '0.
|
|
10
|
+
gem 'rubocop', '0.82.0'
|
|
9
11
|
gem 'rubocop-rspec', '1.36.0'
|
|
12
|
+
gem 'rspec-parameterized', '0.4.2', require: false
|
|
10
13
|
end
|
data/README.md
CHANGED
|
@@ -42,6 +42,7 @@ rules:
|
|
|
42
42
|
- `rubocop-gemspec.yml`
|
|
43
43
|
- `rubocop-layout.yml`
|
|
44
44
|
- `rubocop-lint.yml`
|
|
45
|
+
- `rubocop-migrations.yml`
|
|
45
46
|
- `rubocop-metrics.yml`
|
|
46
47
|
- `rubocop-naming.yml`
|
|
47
48
|
- `rubocop-performance.yml`
|
|
@@ -77,6 +78,10 @@ https://gitlab.com/gitlab-org/gitlab-styles. This project is intended to be a
|
|
|
77
78
|
safe, welcoming space for collaboration, and contributors are expected to adhere
|
|
78
79
|
to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
|
79
80
|
|
|
81
|
+
## Release Process
|
|
82
|
+
|
|
83
|
+
Please refer to the [Release Process](docs/release_process.md).
|
|
84
|
+
|
|
80
85
|
## License
|
|
81
86
|
|
|
82
87
|
The gem is available as open source under the terms of the
|
data/Rakefile
CHANGED
data/gitlab-styles.gemspec
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
lib = File.expand_path('lib', __dir__)
|
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
5
|
require 'gitlab/styles/version'
|
|
@@ -13,16 +15,16 @@ Gem::Specification.new do |spec|
|
|
|
13
15
|
spec.license = 'MIT'
|
|
14
16
|
|
|
15
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
16
|
-
f.match(%r{^(test|spec|features)/})
|
|
18
|
+
f.match(%r{^(docs|test|spec|features)/})
|
|
17
19
|
end
|
|
18
20
|
spec.bindir = 'exe'
|
|
19
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
20
22
|
spec.require_paths = ['lib']
|
|
21
23
|
|
|
22
|
-
spec.add_dependency 'rubocop', '~> 0.
|
|
24
|
+
spec.add_dependency 'rubocop', '~> 0.82.0'
|
|
23
25
|
spec.add_dependency 'rubocop-gitlab-security', '~> 0.1.0'
|
|
24
|
-
spec.add_dependency 'rubocop-performance', '~> 1.
|
|
25
|
-
spec.add_dependency 'rubocop-rails', '~> 2.
|
|
26
|
+
spec.add_dependency 'rubocop-performance', '~> 1.5.2'
|
|
27
|
+
spec.add_dependency 'rubocop-rails', '~> 2.5'
|
|
26
28
|
spec.add_dependency 'rubocop-rspec', '~> 1.36'
|
|
27
29
|
|
|
28
30
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
data/lib/gitlab/styles.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'gitlab/styles/rubocop/cop/custom_error_class'
|
|
2
4
|
require 'gitlab/styles/rubocop/cop/gem_fetcher'
|
|
3
5
|
require 'gitlab/styles/rubocop/cop/active_record_serialize'
|
|
@@ -6,10 +8,13 @@ require 'gitlab/styles/rubocop/cop/polymorphic_associations'
|
|
|
6
8
|
require 'gitlab/styles/rubocop/cop/active_record_dependent'
|
|
7
9
|
require 'gitlab/styles/rubocop/cop/in_batches'
|
|
8
10
|
require 'gitlab/styles/rubocop/cop/line_break_after_guard_clauses'
|
|
11
|
+
require 'gitlab/styles/rubocop/cop/migration/update_large_table'
|
|
9
12
|
require 'gitlab/styles/rubocop/cop/without_reactive_cache'
|
|
10
13
|
require 'gitlab/styles/rubocop/cop/rspec/single_line_hook'
|
|
11
14
|
require 'gitlab/styles/rubocop/cop/rspec/have_link_parameters'
|
|
12
15
|
require 'gitlab/styles/rubocop/cop/rspec/verbose_include_metadata'
|
|
16
|
+
require 'gitlab/styles/rubocop/cop/rspec/empty_line_after_shared_example'
|
|
17
|
+
require 'gitlab/styles/rubocop/cop/rspec/empty_line_after_let_block'
|
|
13
18
|
|
|
14
19
|
module Gitlab
|
|
15
20
|
module Styles
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require_relative '../model_helpers'
|
|
2
4
|
|
|
3
5
|
module Gitlab
|
|
@@ -9,7 +11,7 @@ module Gitlab
|
|
|
9
11
|
include ModelHelpers
|
|
10
12
|
|
|
11
13
|
MSG = 'Do not use `dependent: to remove associated data, ' \
|
|
12
|
-
'use foreign keys with cascading deletes instead'
|
|
14
|
+
'use foreign keys with cascading deletes instead'
|
|
13
15
|
|
|
14
16
|
METHOD_NAMES = [:has_many, :has_one, :belongs_to].freeze
|
|
15
17
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require_relative '../model_helpers'
|
|
2
4
|
|
|
3
5
|
module Gitlab
|
|
@@ -8,7 +10,7 @@ module Gitlab
|
|
|
8
10
|
class ActiveRecordSerialize < RuboCop::Cop::Cop
|
|
9
11
|
include ModelHelpers
|
|
10
12
|
|
|
11
|
-
MSG = 'Do not store serialized data in the database, use separate columns and/or tables instead'
|
|
13
|
+
MSG = 'Do not store serialized data in the database, use separate columns and/or tables instead'
|
|
12
14
|
|
|
13
15
|
def on_send(node)
|
|
14
16
|
return unless in_model?(node)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Gitlab
|
|
2
4
|
module Styles
|
|
3
5
|
module Rubocop
|
|
@@ -16,7 +18,7 @@ module Gitlab
|
|
|
16
18
|
# # good
|
|
17
19
|
# FooError = Class.new(StandardError)
|
|
18
20
|
class CustomErrorClass < RuboCop::Cop::Cop
|
|
19
|
-
MSG = 'Use `Class.new(SuperClass)` to define an empty custom error class.'
|
|
21
|
+
MSG = 'Use `Class.new(SuperClass)` to define an empty custom error class.'
|
|
20
22
|
|
|
21
23
|
def on_class(node)
|
|
22
24
|
_klass, parent, body = node.children
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Gitlab
|
|
2
4
|
module Styles
|
|
3
5
|
module Rubocop
|
|
@@ -6,7 +8,7 @@ module Gitlab
|
|
|
6
8
|
# `Gemfile` in order to avoid additional points of failure beyond
|
|
7
9
|
# rubygems.org.
|
|
8
10
|
class GemFetcher < RuboCop::Cop::Cop
|
|
9
|
-
MSG = 'Do not use gems from git repositories, only use gems from RubyGems.'
|
|
11
|
+
MSG = 'Do not use gems from git repositories, only use gems from RubyGems.'
|
|
10
12
|
|
|
11
13
|
GIT_KEYS = [:git, :github].freeze
|
|
12
14
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require_relative '../model_helpers'
|
|
2
4
|
|
|
3
5
|
module Gitlab
|
|
@@ -6,7 +8,7 @@ module Gitlab
|
|
|
6
8
|
module Cop
|
|
7
9
|
# Cop that prevents the use of `in_batches`
|
|
8
10
|
class InBatches < RuboCop::Cop::Cop
|
|
9
|
-
MSG = 'Do not use `in_batches`, use `each_batch` from the EachBatch module instead'
|
|
11
|
+
MSG = 'Do not use `in_batches`, use `each_batch` from the EachBatch module instead'
|
|
10
12
|
|
|
11
13
|
def on_send(node)
|
|
12
14
|
return unless node.children[1] == :in_batches
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Gitlab
|
|
2
4
|
module Styles
|
|
3
5
|
module Rubocop
|
|
@@ -56,7 +58,7 @@ module Gitlab
|
|
|
56
58
|
#
|
|
57
59
|
# do_something_more
|
|
58
60
|
class LineBreakAfterGuardClauses < RuboCop::Cop::Cop
|
|
59
|
-
MSG = 'Add a line break after guard clauses'
|
|
61
|
+
MSG = 'Add a line break after guard clauses'
|
|
60
62
|
|
|
61
63
|
def_node_matcher :guard_clause_node?, <<-PATTERN
|
|
62
64
|
[{(send nil? {:raise :fail :throw} ...) return break next} single_line?]
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require_relative '../../migration_helpers'
|
|
3
|
+
|
|
4
|
+
module Gitlab
|
|
5
|
+
module Styles
|
|
6
|
+
module Rubocop
|
|
7
|
+
module Cop
|
|
8
|
+
module Migration
|
|
9
|
+
# This cop checks for methods that may lead to batch type issues on a table that's been
|
|
10
|
+
# explicitly denied because of its size.
|
|
11
|
+
#
|
|
12
|
+
# Even though though these methods perform functions to avoid
|
|
13
|
+
# downtime, using it with tables with millions of rows still causes a
|
|
14
|
+
# significant delay in the deploy process and is best avoided.
|
|
15
|
+
#
|
|
16
|
+
# See https://gitlab.com/gitlab-com/infrastructure/issues/1602 for more
|
|
17
|
+
# information.
|
|
18
|
+
class UpdateLargeTable < RuboCop::Cop::Cop
|
|
19
|
+
include MigrationHelpers
|
|
20
|
+
|
|
21
|
+
MSG = 'Using `%s` on the `%s` table will take a long time to ' \
|
|
22
|
+
'complete, and should be avoided unless absolutely ' \
|
|
23
|
+
'necessary'
|
|
24
|
+
|
|
25
|
+
def_node_matcher :batch_update?, <<~PATTERN
|
|
26
|
+
(send nil? ${#denied_method?}
|
|
27
|
+
(sym $...)
|
|
28
|
+
...)
|
|
29
|
+
PATTERN
|
|
30
|
+
|
|
31
|
+
def on_send(node)
|
|
32
|
+
return if denied_tables.empty? || denied_methods.empty?
|
|
33
|
+
return unless in_migration?(node)
|
|
34
|
+
|
|
35
|
+
matches = batch_update?(node)
|
|
36
|
+
return unless matches
|
|
37
|
+
|
|
38
|
+
update_method = matches.first
|
|
39
|
+
table = matches.last.to_a.first
|
|
40
|
+
|
|
41
|
+
return unless denied_tables.include?(table)
|
|
42
|
+
|
|
43
|
+
add_offense(node, location: :expression, message: format(MSG, update_method, table))
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def denied_tables
|
|
49
|
+
cop_config['DeniedTables'] || []
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def denied_method?(method_name)
|
|
53
|
+
denied_methods.include?(method_name)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def denied_methods
|
|
57
|
+
cop_config['DeniedMethods'] || []
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require_relative '../model_helpers'
|
|
2
4
|
|
|
3
5
|
module Gitlab
|
|
@@ -8,7 +10,7 @@ module Gitlab
|
|
|
8
10
|
class PolymorphicAssociations < RuboCop::Cop::Cop
|
|
9
11
|
include ModelHelpers
|
|
10
12
|
|
|
11
|
-
MSG = 'Do not use polymorphic associations, use separate tables instead'
|
|
13
|
+
MSG = 'Do not use polymorphic associations, use separate tables instead'
|
|
12
14
|
|
|
13
15
|
def on_send(node)
|
|
14
16
|
return unless in_model?(node)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Gitlab
|
|
2
4
|
module Styles
|
|
3
5
|
module Rubocop
|
|
@@ -5,7 +7,7 @@ module Gitlab
|
|
|
5
7
|
# This cop prevents usage of 'redirect_to' in actions 'destroy' without specifying 'status'.
|
|
6
8
|
# See https://gitlab.com/gitlab-org/gitlab-ce/issues/31840
|
|
7
9
|
class RedirectWithStatus < RuboCop::Cop::Cop
|
|
8
|
-
MSG = 'Do not use "redirect_to" without "status" in "destroy" action'
|
|
10
|
+
MSG = 'Do not use "redirect_to" without "status" in "destroy" action'
|
|
9
11
|
|
|
10
12
|
def on_def(node)
|
|
11
13
|
return unless in_controller?(node)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rubocop-rspec'
|
|
4
|
+
|
|
5
|
+
module Gitlab
|
|
6
|
+
module Styles
|
|
7
|
+
module Rubocop
|
|
8
|
+
module Cop
|
|
9
|
+
module RSpec
|
|
10
|
+
# Checks if there is an empty line after let blocks.
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# # bad
|
|
14
|
+
# RSpec.describe Foo do
|
|
15
|
+
# let(:something) { 'something' }
|
|
16
|
+
# let(:another_thing) do
|
|
17
|
+
# end
|
|
18
|
+
# let(:something_else) do
|
|
19
|
+
# end
|
|
20
|
+
# let(:last_thing) { 'last thing' }
|
|
21
|
+
# end
|
|
22
|
+
#
|
|
23
|
+
# # good
|
|
24
|
+
# RSpec.describe Foo do
|
|
25
|
+
# let(:something) { 'something' }
|
|
26
|
+
# let(:another_thing) do
|
|
27
|
+
# end
|
|
28
|
+
#
|
|
29
|
+
# let(:something_else) do
|
|
30
|
+
# end
|
|
31
|
+
#
|
|
32
|
+
# let(:last_thing) { 'last thing' }
|
|
33
|
+
# end
|
|
34
|
+
#
|
|
35
|
+
# # good - it's ok to have non-separated without do/end blocks
|
|
36
|
+
# RSpec.describe Foo do
|
|
37
|
+
# let(:something) { 'something' }
|
|
38
|
+
# let(:last_thing) { 'last thing' }
|
|
39
|
+
# end
|
|
40
|
+
#
|
|
41
|
+
class EmptyLineAfterLetBlock < RuboCop::Cop::RSpec::Cop
|
|
42
|
+
include RuboCop::RSpec::BlankLineSeparation
|
|
43
|
+
|
|
44
|
+
MSG = 'Add an empty line after `%<let>s` block.'
|
|
45
|
+
|
|
46
|
+
def_node_matcher :lets, Helpers::ALL.block_pattern
|
|
47
|
+
|
|
48
|
+
def on_block(node)
|
|
49
|
+
lets(node) do
|
|
50
|
+
break if last_child?(node)
|
|
51
|
+
next if node.single_line?
|
|
52
|
+
|
|
53
|
+
missing_separating_line(node) do |location|
|
|
54
|
+
add_offense(node,
|
|
55
|
+
location: location,
|
|
56
|
+
message: format(MSG, let: node.method_name))
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rubocop-rspec'
|
|
4
|
+
|
|
5
|
+
module Gitlab
|
|
6
|
+
module Styles
|
|
7
|
+
module Rubocop
|
|
8
|
+
module Cop
|
|
9
|
+
module RSpec
|
|
10
|
+
# Checks if there is an empty line after shared example blocks.
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# # bad
|
|
14
|
+
# RSpec.describe Foo do
|
|
15
|
+
# it_behaves_like 'do this first'
|
|
16
|
+
# it_behaves_like 'does this' do
|
|
17
|
+
# end
|
|
18
|
+
# it_behaves_like 'does that' do
|
|
19
|
+
# end
|
|
20
|
+
# it_behaves_like 'do some more'
|
|
21
|
+
# end
|
|
22
|
+
#
|
|
23
|
+
# # good
|
|
24
|
+
# RSpec.describe Foo do
|
|
25
|
+
# it_behaves_like 'do this first'
|
|
26
|
+
# it_behaves_like 'does this' do
|
|
27
|
+
# end
|
|
28
|
+
#
|
|
29
|
+
# it_behaves_like 'does that' do
|
|
30
|
+
# end
|
|
31
|
+
#
|
|
32
|
+
# it_behaves_like 'do some more'
|
|
33
|
+
# end
|
|
34
|
+
#
|
|
35
|
+
# # fair - it's ok to have non-separated without blocks
|
|
36
|
+
# RSpec.describe Foo do
|
|
37
|
+
# it_behaves_like 'do this first'
|
|
38
|
+
# it_behaves_like 'does this'
|
|
39
|
+
# end
|
|
40
|
+
#
|
|
41
|
+
class EmptyLineAfterSharedExample < RuboCop::Cop::RSpec::Cop
|
|
42
|
+
include RuboCop::RSpec::BlankLineSeparation
|
|
43
|
+
|
|
44
|
+
MSG = 'Add an empty line after `%<example>s` block.'
|
|
45
|
+
|
|
46
|
+
def_node_matcher :shared_examples,
|
|
47
|
+
(SharedGroups::ALL + Includes::ALL).block_pattern
|
|
48
|
+
|
|
49
|
+
def on_block(node)
|
|
50
|
+
shared_examples(node) do
|
|
51
|
+
break if last_child?(node)
|
|
52
|
+
|
|
53
|
+
missing_separating_line(node) do |location|
|
|
54
|
+
add_offense(node,
|
|
55
|
+
location: location,
|
|
56
|
+
message: format(MSG, example: node.method_name))
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rubocop-rspec'
|
|
2
4
|
|
|
3
5
|
module Gitlab
|
|
@@ -16,7 +18,7 @@ module Gitlab
|
|
|
16
18
|
# expect(page).to have_link('Link', href: 'https://example.com')
|
|
17
19
|
# expect(page).to have_link('Example')
|
|
18
20
|
class HaveLinkParameters < RuboCop::Cop::RSpec::Cop
|
|
19
|
-
MESSAGE = "The second argument to `have_link` should be a Hash."
|
|
21
|
+
MESSAGE = "The second argument to `have_link` should be a Hash."
|
|
20
22
|
|
|
21
23
|
def_node_matcher :unused_parameters?, <<~PATTERN
|
|
22
24
|
(send nil? :have_link
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rubocop-rspec'
|
|
2
4
|
|
|
3
5
|
module Gitlab
|
|
@@ -22,7 +24,7 @@ module Gitlab
|
|
|
22
24
|
# undo_something
|
|
23
25
|
# end
|
|
24
26
|
class SingleLineHook < RuboCop::Cop::RSpec::Cop
|
|
25
|
-
MESSAGE = "Don't use single-line hook blocks."
|
|
27
|
+
MESSAGE = "Don't use single-line hook blocks."
|
|
26
28
|
|
|
27
29
|
def_node_search :rspec_hook?, <<~PATTERN
|
|
28
30
|
(send nil? {:after :around :before} ...)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rubocop-rspec'
|
|
2
4
|
|
|
3
5
|
module Gitlab
|
|
@@ -16,7 +18,7 @@ module Gitlab
|
|
|
16
18
|
# describe MyClass, :js do
|
|
17
19
|
# end
|
|
18
20
|
class VerboseIncludeMetadata < RuboCop::Cop::RSpec::Cop
|
|
19
|
-
MSG = 'Use `%s` instead of `%s`.'
|
|
21
|
+
MSG = 'Use `%s` instead of `%s`.'
|
|
20
22
|
|
|
21
23
|
SELECTORS = %i[describe context feature example_group it specify example scenario its].freeze
|
|
22
24
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Gitlab
|
|
2
4
|
module Styles
|
|
3
5
|
module Rubocop
|
|
4
6
|
module Cop
|
|
5
7
|
# Cop that prevents the use of `without_reactive_cache`
|
|
6
8
|
class WithoutReactiveCache < RuboCop::Cop::Cop
|
|
7
|
-
MSG = 'without_reactive_cache is for debugging purposes only. Please use with_reactive_cache.'
|
|
9
|
+
MSG = 'without_reactive_cache is for debugging purposes only. Please use with_reactive_cache.'
|
|
8
10
|
|
|
9
11
|
def on_send(node)
|
|
10
12
|
return unless node.children[1] == :without_reactive_cache
|
data/rubocop-all.yml
CHANGED
data/rubocop-default.yml
CHANGED
data/rubocop-layout.yml
CHANGED
|
@@ -3,18 +3,14 @@ Layout/AccessModifierIndentation:
|
|
|
3
3
|
Enabled: true
|
|
4
4
|
|
|
5
5
|
# Align the elements of an array literal if they span more than one line.
|
|
6
|
-
Layout/
|
|
6
|
+
Layout/ArrayAlignment:
|
|
7
7
|
Enabled: true
|
|
8
8
|
|
|
9
|
-
#
|
|
10
|
-
|
|
9
|
+
# Checks the indentation of the first line of the right-hand-side of a
|
|
10
|
+
# multi-line assignment.
|
|
11
|
+
Layout/AssignmentIndentation:
|
|
11
12
|
Enabled: true
|
|
12
13
|
|
|
13
|
-
# Here we check if the parameters on a multi-line method call or
|
|
14
|
-
# definition are aligned.
|
|
15
|
-
Layout/AlignParameters:
|
|
16
|
-
Enabled: false
|
|
17
|
-
|
|
18
14
|
# Align block ends correctly.
|
|
19
15
|
Layout/BlockAlignment:
|
|
20
16
|
Enabled: true
|
|
@@ -102,27 +98,36 @@ Layout/ExtraSpacing:
|
|
|
102
98
|
Layout/FirstMethodParameterLineBreak:
|
|
103
99
|
Enabled: true
|
|
104
100
|
|
|
101
|
+
# Align the elements of a hash literal if they span more than one line.
|
|
102
|
+
Layout/HashAlignment:
|
|
103
|
+
Enabled: true
|
|
104
|
+
|
|
105
|
+
# This cops checks the indentation of the here document bodies.
|
|
106
|
+
Layout/HeredocIndentation:
|
|
107
|
+
Enabled: false
|
|
108
|
+
|
|
105
109
|
# Keep indentation straight.
|
|
106
110
|
Layout/IndentationConsistency:
|
|
107
111
|
Enabled: true
|
|
108
112
|
|
|
109
|
-
#
|
|
110
|
-
Layout/
|
|
113
|
+
# No hard tabs.
|
|
114
|
+
Layout/IndentationStyle:
|
|
111
115
|
Enabled: true
|
|
112
116
|
|
|
113
|
-
#
|
|
114
|
-
|
|
115
|
-
Layout/IndentAssignment:
|
|
117
|
+
# Use 2 spaces for indentation.
|
|
118
|
+
Layout/IndentationWidth:
|
|
116
119
|
Enabled: true
|
|
117
120
|
|
|
118
|
-
# This cops checks the indentation of the here document bodies.
|
|
119
|
-
Layout/IndentHeredoc:
|
|
120
|
-
Enabled: false
|
|
121
|
-
|
|
122
121
|
# Comments should start with a space.
|
|
123
122
|
Layout/LeadingCommentSpace:
|
|
124
123
|
Enabled: true
|
|
125
124
|
|
|
125
|
+
# Limit lines to 120 characters.
|
|
126
|
+
Layout/LineLength:
|
|
127
|
+
Enabled: true
|
|
128
|
+
Max: 120
|
|
129
|
+
IgnoredPatterns: ['\s#\srubocop']
|
|
130
|
+
|
|
126
131
|
# Checks that the closing brace in an array literal is either on the same line
|
|
127
132
|
# as the last array element, or a new line.
|
|
128
133
|
Layout/MultilineArrayBraceLayout:
|
|
@@ -160,6 +165,11 @@ Layout/MultilineOperationIndentation:
|
|
|
160
165
|
Enabled: true
|
|
161
166
|
EnforcedStyle: indented
|
|
162
167
|
|
|
168
|
+
# Here we check if the parameters on a multi-line method call or
|
|
169
|
+
# definition are aligned.
|
|
170
|
+
Layout/ParameterAlignment:
|
|
171
|
+
Enabled: false
|
|
172
|
+
|
|
163
173
|
# Use spaces after colons.
|
|
164
174
|
Layout/SpaceAfterColon:
|
|
165
175
|
Enabled: true
|
|
@@ -189,6 +199,10 @@ Layout/SpaceAroundEqualsInParameterDefault:
|
|
|
189
199
|
Layout/SpaceAroundKeyword:
|
|
190
200
|
Enabled: true
|
|
191
201
|
|
|
202
|
+
# Checks method call operators to not have spaces around them.
|
|
203
|
+
Layout/SpaceAroundMethodCallOperator:
|
|
204
|
+
Enabled: true
|
|
205
|
+
|
|
192
206
|
# Use a single space around operators.
|
|
193
207
|
Layout/SpaceAroundOperators:
|
|
194
208
|
Enabled: true
|
|
@@ -235,12 +249,8 @@ Layout/SpaceInsideStringInterpolation:
|
|
|
235
249
|
EnforcedStyle: no_space
|
|
236
250
|
Enabled: true
|
|
237
251
|
|
|
238
|
-
# No hard tabs.
|
|
239
|
-
Layout/Tab:
|
|
240
|
-
Enabled: true
|
|
241
|
-
|
|
242
252
|
# Checks trailing blank lines and final newline.
|
|
243
|
-
Layout/
|
|
253
|
+
Layout/TrailingEmptyLines:
|
|
244
254
|
Enabled: true
|
|
245
255
|
|
|
246
256
|
# Avoid trailing whitespace.
|
data/rubocop-lint.yml
CHANGED
|
@@ -47,10 +47,6 @@ Lint/EmptyEnsure:
|
|
|
47
47
|
Lint/EmptyWhen:
|
|
48
48
|
Enabled: true
|
|
49
49
|
|
|
50
|
-
# END blocks should not be placed inside method definitions.
|
|
51
|
-
Lint/EndInMethod:
|
|
52
|
-
Enabled: true
|
|
53
|
-
|
|
54
50
|
# Do not use return in an ensure block.
|
|
55
51
|
Lint/EnsureReturn:
|
|
56
52
|
Enabled: true
|
|
@@ -67,10 +63,6 @@ Lint/FloatOutOfRange:
|
|
|
67
63
|
Lint/FormatParameterMismatch:
|
|
68
64
|
Enabled: true
|
|
69
65
|
|
|
70
|
-
# This cop checks for *rescue* blocks with no body.
|
|
71
|
-
Lint/HandleExceptions:
|
|
72
|
-
Enabled: false
|
|
73
|
-
|
|
74
66
|
# Checks for adjacent string literals on the same line, which could better be
|
|
75
67
|
# represented as a single string literal.
|
|
76
68
|
Lint/ImplicitStringConcatenation:
|
|
@@ -105,11 +97,23 @@ Lint/NextWithoutAccumulator:
|
|
|
105
97
|
Lint/ParenthesesAsGroupedExpression:
|
|
106
98
|
Enabled: true
|
|
107
99
|
|
|
100
|
+
# Checks for raise or fail statements which are raising Exception class.
|
|
101
|
+
Lint/RaiseException:
|
|
102
|
+
Enabled: true
|
|
103
|
+
|
|
108
104
|
# Checks for `rand(1)` calls. Such calls always return `0` and most likely
|
|
109
105
|
# a mistake.
|
|
110
106
|
Lint/RandOne:
|
|
111
107
|
Enabled: true
|
|
112
108
|
|
|
109
|
+
# This cop checks for unneeded usages of splat expansion
|
|
110
|
+
Lint/RedundantSplatExpansion:
|
|
111
|
+
Enabled: false
|
|
112
|
+
|
|
113
|
+
# Checks for Object#to_s usage in string interpolation.
|
|
114
|
+
Lint/RedundantStringCoercion:
|
|
115
|
+
Enabled: true
|
|
116
|
+
|
|
113
117
|
# Use parentheses in the method call to avoid confusion about precedence.
|
|
114
118
|
Lint/RequireParentheses:
|
|
115
119
|
Enabled: true
|
|
@@ -131,10 +135,14 @@ Lint/ShadowedException:
|
|
|
131
135
|
Lint/ShadowingOuterLocalVariable:
|
|
132
136
|
Enabled: false
|
|
133
137
|
|
|
134
|
-
# Checks
|
|
135
|
-
Lint/
|
|
138
|
+
# Checks unexpected overrides of the Struct built-in methods via Struct.new.
|
|
139
|
+
Lint/StructNewOverride:
|
|
136
140
|
Enabled: true
|
|
137
141
|
|
|
142
|
+
# This cop checks for *rescue* blocks with no body.
|
|
143
|
+
Lint/SuppressedException:
|
|
144
|
+
Enabled: false
|
|
145
|
+
|
|
138
146
|
# Do not use prefix `_` for a variable that is used.
|
|
139
147
|
Lint/UnderscorePrefixedVariableName:
|
|
140
148
|
Enabled: true
|
|
@@ -143,10 +151,6 @@ Lint/UnderscorePrefixedVariableName:
|
|
|
143
151
|
Lint/UnifiedInteger:
|
|
144
152
|
Enabled: true
|
|
145
153
|
|
|
146
|
-
# This cop checks for unneeded usages of splat expansion
|
|
147
|
-
Lint/UnneededSplatExpansion:
|
|
148
|
-
Enabled: false
|
|
149
|
-
|
|
150
154
|
# Unreachable code.
|
|
151
155
|
Lint/UnreachableCode:
|
|
152
156
|
Enabled: true
|
data/rubocop-metrics.yml
CHANGED
|
@@ -23,12 +23,6 @@ Metrics/CyclomaticComplexity:
|
|
|
23
23
|
Enabled: true
|
|
24
24
|
Max: 13
|
|
25
25
|
|
|
26
|
-
# Limit lines to 120 characters.
|
|
27
|
-
Metrics/LineLength:
|
|
28
|
-
Enabled: true
|
|
29
|
-
Max: 120
|
|
30
|
-
IgnoredPatterns: ['\s#\srubocop']
|
|
31
|
-
|
|
32
26
|
# Avoid methods longer than 10 lines of code.
|
|
33
27
|
Metrics/MethodLength:
|
|
34
28
|
Enabled: false
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Checks for methods that may lead to batch type issues on a table that's been
|
|
2
|
+
# explicitly denied because of its size.
|
|
3
|
+
#
|
|
4
|
+
# Even though these methods perform functions to avoid
|
|
5
|
+
# downtime, using it with tables with millions of rows still causes a
|
|
6
|
+
# significant delay in the deploy process and is best avoided.
|
|
7
|
+
#
|
|
8
|
+
# See https://gitlab.com/gitlab-com/infrastructure/issues/1602 for more
|
|
9
|
+
# information.
|
|
10
|
+
# The default can be changed as follows:
|
|
11
|
+
# Migration/UpdateLargeTable:
|
|
12
|
+
# DeniedTables:
|
|
13
|
+
# - :usage_data
|
|
14
|
+
# - :version_checks
|
|
15
|
+
# DeniedMethods:
|
|
16
|
+
# - :add_column_with_default
|
|
17
|
+
# - :change_column_type_concurrently
|
|
18
|
+
# - :rename_column_concurrently
|
|
19
|
+
# - :update_column_in_batches
|
|
20
|
+
Migration/UpdateLargeTable:
|
|
21
|
+
Enabled: false
|
data/rubocop-naming.yml
CHANGED
|
@@ -30,6 +30,13 @@ Naming/MemoizedInstanceVariableName:
|
|
|
30
30
|
Naming/MethodName:
|
|
31
31
|
Enabled: true
|
|
32
32
|
|
|
33
|
+
# Method parameter names for how descriptive they are.
|
|
34
|
+
Naming/MethodParameterName:
|
|
35
|
+
Enabled: true
|
|
36
|
+
MinNameLength: 2
|
|
37
|
+
AllowedNames:
|
|
38
|
+
- _
|
|
39
|
+
|
|
33
40
|
# Use `spam?` instead of `is_spam?`
|
|
34
41
|
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
|
|
35
42
|
# NamePrefix: is_, has_, have_
|
|
@@ -37,18 +44,11 @@ Naming/MethodName:
|
|
|
37
44
|
# NameWhitelist: is_a?
|
|
38
45
|
Naming/PredicateName:
|
|
39
46
|
Enabled: true
|
|
40
|
-
|
|
47
|
+
ForbiddenPrefixes: is_
|
|
41
48
|
Exclude:
|
|
42
49
|
- 'spec/**/*'
|
|
43
50
|
- 'features/**/*'
|
|
44
51
|
|
|
45
|
-
# Method parameter names for how descriptive they are.
|
|
46
|
-
Naming/UncommunicativeMethodParamName:
|
|
47
|
-
Enabled: true
|
|
48
|
-
MinNameLength: 2
|
|
49
|
-
AllowedNames:
|
|
50
|
-
- _
|
|
51
|
-
|
|
52
52
|
# Use the configured style when naming variables.
|
|
53
53
|
Naming/VariableName:
|
|
54
54
|
EnforcedStyle: snake_case
|
data/rubocop-rspec.yml
CHANGED
|
@@ -36,6 +36,14 @@ RSpec/EmptyExampleGroup:
|
|
|
36
36
|
- it_should_email!
|
|
37
37
|
- it_should_not_email!
|
|
38
38
|
|
|
39
|
+
# Checks if there is an empty line after let blocks.
|
|
40
|
+
RSpec/EmptyLineAfterLetBlock:
|
|
41
|
+
Enabled: true
|
|
42
|
+
|
|
43
|
+
# Checks if there is an empty line after shared example blocks.
|
|
44
|
+
RSpec/EmptyLineAfterSharedExample:
|
|
45
|
+
Enabled: true
|
|
46
|
+
|
|
39
47
|
# Checks for long example.
|
|
40
48
|
RSpec/ExampleLength:
|
|
41
49
|
Enabled: false
|
data/rubocop-style.yml
CHANGED
|
@@ -33,11 +33,6 @@ Style/BlockComments:
|
|
|
33
33
|
Style/BlockDelimiters:
|
|
34
34
|
Enabled: true
|
|
35
35
|
|
|
36
|
-
# This cop checks for braces around the last parameter in a method call
|
|
37
|
-
# if the last parameter is a hash.
|
|
38
|
-
Style/BracesAroundHashParameters:
|
|
39
|
-
Enabled: false
|
|
40
|
-
|
|
41
36
|
# This cop checks for uses of the case equality operator(===).
|
|
42
37
|
Style/CaseEquality:
|
|
43
38
|
Enabled: false
|
|
@@ -100,6 +95,10 @@ Style/EndBlock:
|
|
|
100
95
|
Style/EvenOdd:
|
|
101
96
|
Enabled: true
|
|
102
97
|
|
|
98
|
+
# Enforces consistency when using exponential notation for numbers in the code
|
|
99
|
+
Style/ExponentialNotation:
|
|
100
|
+
Enabled: true
|
|
101
|
+
|
|
103
102
|
# Checks use of for or each in multiline loops.
|
|
104
103
|
Style/For:
|
|
105
104
|
Enabled: true
|
|
@@ -110,7 +109,7 @@ Style/FormatStringToken:
|
|
|
110
109
|
|
|
111
110
|
# Checks if there is a magic comment to enforce string literals
|
|
112
111
|
Style/FrozenStringLiteralComment:
|
|
113
|
-
Enabled:
|
|
112
|
+
Enabled: true
|
|
114
113
|
|
|
115
114
|
# Do not introduce global variables.
|
|
116
115
|
Style/GlobalVars:
|
|
@@ -119,11 +118,27 @@ Style/GlobalVars:
|
|
|
119
118
|
- 'lib/backup/**/*'
|
|
120
119
|
- 'lib/tasks/**/*'
|
|
121
120
|
|
|
121
|
+
# Checks for uses of each_key and each_value Hash methods.
|
|
122
|
+
Style/HashEachMethods:
|
|
123
|
+
Enabled: true
|
|
124
|
+
|
|
122
125
|
# Prefer Ruby 1.9 hash syntax `{ a: 1, b: 2 }`
|
|
123
126
|
# over 1.8 syntax `{ :a => 1, :b => 2 }`.
|
|
124
127
|
Style/HashSyntax:
|
|
125
128
|
Enabled: true
|
|
126
129
|
|
|
130
|
+
# looks for uses of _.each_with_object({}) {...}, _.map {...}.to_h, and Hash[_.map {...}]
|
|
131
|
+
# that are actually just transforming the keys of a hash, and tries to use a simpler & faster
|
|
132
|
+
# call to transform_keys instead.
|
|
133
|
+
Style/HashTransformKeys:
|
|
134
|
+
Enabled: true
|
|
135
|
+
|
|
136
|
+
# looks for uses of _.each_with_object({}) {...}, _.map {...}.to_h, and Hash[_.map {...}]
|
|
137
|
+
# that are actually just transforming the values of a hash, and tries to use a simpler & faster
|
|
138
|
+
# call to transform_values instead.
|
|
139
|
+
Style/HashTransformValues:
|
|
140
|
+
Enabled: true
|
|
141
|
+
|
|
127
142
|
# Checks that conditional statements do not have an identical line at the
|
|
128
143
|
# end of each branch, which can validly be moved out of the conditional.
|
|
129
144
|
Style/IdenticalConditionalBranches:
|
|
@@ -229,6 +244,10 @@ Style/ParenthesesAroundCondition:
|
|
|
229
244
|
Style/PreferredHashMethods:
|
|
230
245
|
Enabled: false
|
|
231
246
|
|
|
247
|
+
# Checks for %W when interpolation is not needed.
|
|
248
|
+
Style/RedundantCapitalW:
|
|
249
|
+
Enabled: true
|
|
250
|
+
|
|
232
251
|
# Checks for an obsolete RuntimeException argument in raise/fail.
|
|
233
252
|
Style/RedundantException:
|
|
234
253
|
Enabled: true
|
|
@@ -237,6 +256,10 @@ Style/RedundantException:
|
|
|
237
256
|
Style/RedundantParentheses:
|
|
238
257
|
Enabled: true
|
|
239
258
|
|
|
259
|
+
# Checks for %q/%Q when single quotes or double quotes would do.
|
|
260
|
+
Style/RedundantPercentQ:
|
|
261
|
+
Enabled: false
|
|
262
|
+
|
|
240
263
|
# Use `sort` instead of `sort_by { |x| x }`.
|
|
241
264
|
Style/RedundantSortBy:
|
|
242
265
|
Enabled: true
|
|
@@ -284,14 +307,6 @@ Style/TrailingCommaInArguments:
|
|
|
284
307
|
Enabled: true
|
|
285
308
|
EnforcedStyleForMultiline: no_comma
|
|
286
309
|
|
|
287
|
-
# Checks for %W when interpolation is not needed.
|
|
288
|
-
Style/UnneededCapitalW:
|
|
289
|
-
Enabled: true
|
|
290
|
-
|
|
291
|
-
# Checks for %q/%Q when single quotes or double quotes would do.
|
|
292
|
-
Style/UnneededPercentQ:
|
|
293
|
-
Enabled: false
|
|
294
|
-
|
|
295
310
|
# Don't interpolate global, instance and class variables directly in strings.
|
|
296
311
|
Style/VariableInterpolation:
|
|
297
312
|
Enabled: true
|
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
|
+
version: 4.3.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-
|
|
11
|
+
date: 2020-07-07 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.
|
|
19
|
+
version: 0.82.0
|
|
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.
|
|
26
|
+
version: 0.82.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rubocop-gitlab-security
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -44,28 +44,28 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 1.
|
|
47
|
+
version: 1.5.2
|
|
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.
|
|
54
|
+
version: 1.5.2
|
|
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.
|
|
61
|
+
version: '2.5'
|
|
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.
|
|
68
|
+
version: '2.5'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: rubocop-rspec
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -131,6 +131,7 @@ extra_rdoc_files: []
|
|
|
131
131
|
files:
|
|
132
132
|
- ".gitignore"
|
|
133
133
|
- ".gitlab-ci.yml"
|
|
134
|
+
- ".gitlab/merge_request_templates/Release.md"
|
|
134
135
|
- ".rspec"
|
|
135
136
|
- ".rubocop.yml"
|
|
136
137
|
- ".rubocop_todo.yml"
|
|
@@ -151,8 +152,11 @@ files:
|
|
|
151
152
|
- lib/gitlab/styles/rubocop/cop/gem_fetcher.rb
|
|
152
153
|
- lib/gitlab/styles/rubocop/cop/in_batches.rb
|
|
153
154
|
- lib/gitlab/styles/rubocop/cop/line_break_after_guard_clauses.rb
|
|
155
|
+
- lib/gitlab/styles/rubocop/cop/migration/update_large_table.rb
|
|
154
156
|
- lib/gitlab/styles/rubocop/cop/polymorphic_associations.rb
|
|
155
157
|
- lib/gitlab/styles/rubocop/cop/redirect_with_status.rb
|
|
158
|
+
- lib/gitlab/styles/rubocop/cop/rspec/empty_line_after_let_block.rb
|
|
159
|
+
- lib/gitlab/styles/rubocop/cop/rspec/empty_line_after_shared_example.rb
|
|
156
160
|
- lib/gitlab/styles/rubocop/cop/rspec/have_link_parameters.rb
|
|
157
161
|
- lib/gitlab/styles/rubocop/cop/rspec/single_line_hook.rb
|
|
158
162
|
- lib/gitlab/styles/rubocop/cop/rspec/verbose_include_metadata.rb
|
|
@@ -167,6 +171,7 @@ files:
|
|
|
167
171
|
- rubocop-layout.yml
|
|
168
172
|
- rubocop-lint.yml
|
|
169
173
|
- rubocop-metrics.yml
|
|
174
|
+
- rubocop-migrations.yml
|
|
170
175
|
- rubocop-naming.yml
|
|
171
176
|
- rubocop-performance.yml
|
|
172
177
|
- rubocop-rails.yml
|
|
@@ -192,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
192
197
|
- !ruby/object:Gem::Version
|
|
193
198
|
version: '0'
|
|
194
199
|
requirements: []
|
|
195
|
-
rubygems_version: 3.
|
|
200
|
+
rubygems_version: 3.1.4
|
|
196
201
|
signing_key:
|
|
197
202
|
specification_version: 4
|
|
198
203
|
summary: GitLab style guides and shared style configs.
|