gitlab-styles 9.0.0 → 9.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +7 -1
- data/Gemfile +6 -2
- data/README.md +29 -8
- data/bin/console +1 -0
- data/gitlab-styles.gemspec +3 -3
- data/lefthook.yml +16 -0
- data/lib/gitlab/styles/version.rb +1 -1
- data/lib/rubocop/cop/gem_fetcher.rb +18 -20
- data/lib/rubocop/cop/line_break_around_conditional_block.rb +5 -0
- data/lib/rubocop/cop/rspec/empty_line_after_shared_example.rb +1 -1
- data/rubocop-bundler.yml +10 -0
- data/rubocop-layout.yml +46 -2
- data/rubocop-lint.yml +1 -1
- data/rubocop-performance.yml +32 -0
- data/rubocop-rspec.yml +21 -6
- data/rubocop-security.yml +4 -0
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e3e06ef1557da413f41116af9b5b01733a309e35bcd2717e8d8ec2473470589
|
4
|
+
data.tar.gz: 704feb3fc08d96cde2a0cdadc8dbe5bbdde1bcb3b18a010f6b964462ec0f33aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dcbe74347c735155eed09bfd24923dff24013454269d8edc7d5e62c4b35ebf7413958bd3b4cff55192bdc51f01dbdfdf438f853dfab322e20b96f6ed283142c
|
7
|
+
data.tar.gz: 74ce09358878dd2deca30b2af8698eb46f3417b9f041794c00ee5e97bda90719548fb86250ef8718a7969c23361d256e7acf5669abaaaf6d60ed23eb5608e516
|
data/.gitlab-ci.yml
CHANGED
@@ -3,7 +3,7 @@ stages:
|
|
3
3
|
- deploy
|
4
4
|
|
5
5
|
default:
|
6
|
-
image: ruby
|
6
|
+
image: "ruby:${RUBY_VERSION}"
|
7
7
|
tags:
|
8
8
|
- gitlab-org
|
9
9
|
before_script:
|
@@ -23,11 +23,17 @@ styles:
|
|
23
23
|
stage: test
|
24
24
|
script:
|
25
25
|
- bundle exec rubocop --debug --parallel
|
26
|
+
parallel:
|
27
|
+
matrix:
|
28
|
+
- RUBY_VERSION: ['2.7', '3.0']
|
26
29
|
|
27
30
|
specs:
|
28
31
|
stage: test
|
29
32
|
script:
|
30
33
|
- bundle exec rspec
|
34
|
+
parallel:
|
35
|
+
matrix:
|
36
|
+
- RUBY_VERSION: ['2.7', '3.0']
|
31
37
|
|
32
38
|
include:
|
33
39
|
- project: 'gitlab-org/quality/pipeline-common'
|
data/Gemfile
CHANGED
@@ -5,9 +5,13 @@ source 'https://rubygems.org'
|
|
5
5
|
# Specify your gem's dependencies in gitlab-rubocop.gemspec
|
6
6
|
gemspec
|
7
7
|
|
8
|
+
group :development do
|
9
|
+
gem "lefthook", require: false
|
10
|
+
end
|
11
|
+
|
8
12
|
group :test do
|
9
13
|
# Pin these dependencies, otherwise a new rule could break the CI pipelines
|
10
|
-
gem 'rubocop', '1.
|
11
|
-
gem 'rubocop-rspec', '2.
|
14
|
+
gem 'rubocop', '1.38.0'
|
15
|
+
gem 'rubocop-rspec', '2.15.0'
|
12
16
|
gem 'rspec-parameterized', '0.5.2', require: false
|
13
17
|
end
|
data/README.md
CHANGED
@@ -66,10 +66,35 @@ After checking out the repo, run `bin/setup` to install dependencies.
|
|
66
66
|
Then, run `rake spec` to run the tests. You can also run `bin/console` for an
|
67
67
|
interactive prompt that will allow you to experiment.
|
68
68
|
|
69
|
-
To
|
70
|
-
|
71
|
-
|
72
|
-
|
69
|
+
To test some rules locally, there is a test application [in the playground folder](./playground/). It is a vanilla Rails 6 application with your local `gitlab-styles` included, and it is used to test RuboCop rules. You can add code in it (preferably RuboCop offenses) and run the following command to test the RuboCop policy we setup:
|
70
|
+
|
71
|
+
```shell
|
72
|
+
cd playground
|
73
|
+
bundle install
|
74
|
+
bundle exec rubocop -c .rubocop.yml
|
75
|
+
```
|
76
|
+
|
77
|
+
### Activate lefthook locally
|
78
|
+
|
79
|
+
```shell
|
80
|
+
lefthook install
|
81
|
+
```
|
82
|
+
|
83
|
+
## Release Process
|
84
|
+
|
85
|
+
We release `gitlab-styles` on an ad-hoc basis. There is no regularity to when
|
86
|
+
we release, we just release when we make a change - no matter the size of the
|
87
|
+
change.
|
88
|
+
|
89
|
+
To release a new version:
|
90
|
+
|
91
|
+
1. Create a Merge Request.
|
92
|
+
1. Use Merge Request template [Release.md](https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/blob/master/.gitlab/merge_request_templates/Release.md).
|
93
|
+
1. Follow the instructions.
|
94
|
+
1. (Optional, but appreciated) Create an MR on `gitlab-org/gitlab` project [with the `New Version of gitlab-styles.md` template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/merge_request_templates/New%20Version%20of%20gitlab-styles.md) to test the new version of `gitlab-styles`, and follow the MR instructions.
|
95
|
+
1. After the Merge Request has been merged, a new gem version is [published automatically](https://gitlab.com/gitlab-org/quality/pipeline-common/-/blob/master/ci/gem-release.yml)
|
96
|
+
|
97
|
+
See [!123](https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/merge_requests/123) as an example.
|
73
98
|
|
74
99
|
## Contributing
|
75
100
|
|
@@ -78,10 +103,6 @@ https://gitlab.com/gitlab-org/gitlab-styles. This project is intended to be a
|
|
78
103
|
safe, welcoming space for collaboration, and contributors are expected to adhere
|
79
104
|
to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
80
105
|
|
81
|
-
## Release Process
|
82
|
-
|
83
|
-
Please refer to the [Release Process](docs/release_process.md).
|
84
|
-
|
85
106
|
## License
|
86
107
|
|
87
108
|
The gem is available as open source under the terms of the
|
data/bin/console
CHANGED
data/gitlab-styles.gemspec
CHANGED
@@ -16,18 +16,18 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.license = 'MIT'
|
17
17
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
|
-
f.match(%r{^(docs|test|spec|features)/})
|
19
|
+
f.match(%r{^(docs|test|spec|features|playground)/})
|
20
20
|
end
|
21
21
|
spec.bindir = 'exe'
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ['lib']
|
24
24
|
|
25
|
-
spec.add_dependency 'rubocop', '~> 1.
|
25
|
+
spec.add_dependency 'rubocop', '~> 1.38.0'
|
26
26
|
spec.add_dependency 'rubocop-gitlab-security', '~> 0.1.1'
|
27
27
|
spec.add_dependency 'rubocop-graphql', '~> 0.14'
|
28
28
|
spec.add_dependency 'rubocop-performance', '~> 1.14'
|
29
29
|
spec.add_dependency 'rubocop-rails', '~> 2.15'
|
30
|
-
spec.add_dependency 'rubocop-rspec', '~> 2.
|
30
|
+
spec.add_dependency 'rubocop-rspec', '~> 2.15'
|
31
31
|
|
32
32
|
spec.add_development_dependency 'bundler', '~> 2.1'
|
33
33
|
spec.add_development_dependency 'gitlab-dangerfiles', '~> 2.11.0'
|
data/lefthook.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Lefthook configuration. For more information, see:
|
2
|
+
# https://github.com/Arkweid/lefthook/blob/master/docs/full_guide.md
|
3
|
+
|
4
|
+
pre-push:
|
5
|
+
parallel: true
|
6
|
+
commands:
|
7
|
+
# Run ruby linting
|
8
|
+
rubocop:
|
9
|
+
files: git diff --name-only --diff-filter=d $(git merge-base origin/master HEAD)..HEAD
|
10
|
+
glob: '*.{rb,rake}'
|
11
|
+
run: bundle exec rubocop --parallel --force-exclusion {files}
|
12
|
+
|
13
|
+
# Run all tests (warn if there are any missing tools required for tests).
|
14
|
+
rspec:
|
15
|
+
run: bundle exec rspec -f progress
|
16
|
+
glob: '*.rb'
|
@@ -6,31 +6,29 @@ module Rubocop
|
|
6
6
|
# `Gemfile` in order to avoid additional points of failure beyond
|
7
7
|
# rubygems.org.
|
8
8
|
class GemFetcher < RuboCop::Cop::Base
|
9
|
-
MSG = 'Do not use gems from git repositories, only use gems from RubyGems.'
|
9
|
+
MSG = 'Do not use gems from git repositories, only use gems from RubyGems or vendored gems. ' \
|
10
|
+
'See https://docs.gitlab.com/ee/development/gemfile.html#no-gems-fetched-from-git-repositories'
|
10
11
|
|
11
|
-
|
12
|
+
# See https://bundler.io/guides/git.html#custom-git-sources
|
13
|
+
GIT_SOURCES = %i[git github gist bitbucket].freeze
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
# @!method gem_option(node)
|
16
|
+
def_node_matcher :gem_option, <<~PATTERN
|
17
|
+
(send nil? :gem _
|
18
|
+
(hash
|
19
|
+
<$(pair (sym {#{GIT_SOURCES.map(&:inspect).join(' ')}}) _)
|
20
|
+
...>
|
21
|
+
)
|
22
|
+
)
|
23
|
+
PATTERN
|
18
24
|
|
19
|
-
|
20
|
-
key_name = pair.children[0].children[0].to_sym
|
21
|
-
add_offense(pair.source_range) if GIT_KEYS.include?(key_name)
|
22
|
-
end
|
23
|
-
end
|
25
|
+
RESTRICT_ON_SEND = %i[gem].freeze
|
24
26
|
|
25
|
-
|
27
|
+
def on_send(node)
|
28
|
+
pair_node = gem_option(node)
|
29
|
+
return unless pair_node
|
26
30
|
|
27
|
-
|
28
|
-
node
|
29
|
-
.location
|
30
|
-
.expression
|
31
|
-
.source_buffer
|
32
|
-
.name
|
33
|
-
.end_with?("Gemfile")
|
31
|
+
add_offense(pair_node)
|
34
32
|
end
|
35
33
|
end
|
36
34
|
end
|
@@ -70,6 +70,7 @@ module Rubocop
|
|
70
70
|
def previous_line_valid?(node)
|
71
71
|
previous_line(node).empty? ||
|
72
72
|
start_clause_line?(previous_line(node)) ||
|
73
|
+
method_def_end?(node.parent, previous_line(node)) ||
|
73
74
|
block_start?(previous_line(node)) ||
|
74
75
|
begin_line?(previous_line(node)) ||
|
75
76
|
assignment_line?(previous_line(node)) ||
|
@@ -94,6 +95,10 @@ module Rubocop
|
|
94
95
|
line =~ /^\s*(def|=end|#|module|class|if|unless|else|elsif|ensure|when)/
|
95
96
|
end
|
96
97
|
|
98
|
+
def method_def_end?(node, line)
|
99
|
+
node.def_type? && /\)\s*(#.*)?$/.match?(line)
|
100
|
+
end
|
101
|
+
|
97
102
|
def end_clause_line?(line)
|
98
103
|
line =~ /^\s*(#|rescue|else|elsif|when)/
|
99
104
|
end
|
data/rubocop-bundler.yml
CHANGED
@@ -1,4 +1,14 @@
|
|
1
1
|
---
|
2
|
+
require:
|
3
|
+
- ./lib/rubocop/cop/gem_fetcher
|
4
|
+
|
2
5
|
# Gems in consecutive lines should be alphabetically sorted
|
3
6
|
Bundler/OrderedGems:
|
4
7
|
Enabled: false
|
8
|
+
|
9
|
+
Cop/GemFetcher:
|
10
|
+
Enabled: true
|
11
|
+
Include:
|
12
|
+
- '**/*.gemfile'
|
13
|
+
- '**/Gemfile'
|
14
|
+
- '**/gems.rb'
|
data/rubocop-layout.yml
CHANGED
@@ -3,9 +3,15 @@
|
|
3
3
|
Layout/AccessModifierIndentation:
|
4
4
|
Enabled: true
|
5
5
|
|
6
|
+
# Check if the arguments on a multi-line method definition are aligned.
|
7
|
+
Layout/ArgumentAlignment:
|
8
|
+
# See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
|
9
|
+
EnforcedStyle: with_fixed_indentation
|
10
|
+
|
6
11
|
# Align the elements of an array literal if they span more than one line.
|
7
12
|
Layout/ArrayAlignment:
|
8
|
-
|
13
|
+
# See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
|
14
|
+
EnforcedStyle: with_fixed_indentation
|
9
15
|
|
10
16
|
# Checks the indentation of the first line of the right-hand-side of a
|
11
17
|
# multi-line assignment.
|
@@ -102,6 +108,23 @@ Layout/EndOfLine:
|
|
102
108
|
Layout/ExtraSpacing:
|
103
109
|
Enabled: true
|
104
110
|
|
111
|
+
# Checks the indentation of the first argument in a method call.
|
112
|
+
Layout/FirstArgumentIndentation:
|
113
|
+
# See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
|
114
|
+
EnforcedStyle: consistent
|
115
|
+
|
116
|
+
# Checks the indentation of the first element in an array literal where the
|
117
|
+
# opening bracket and the first element are on separate lines.
|
118
|
+
Layout/FirstArrayElementIndentation:
|
119
|
+
# See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
|
120
|
+
EnforcedStyle: consistent
|
121
|
+
|
122
|
+
# Checks the indentation of the first key in a hash literal where the opening
|
123
|
+
# brace and the first key are on separate lines.
|
124
|
+
Layout/FirstHashElementIndentation:
|
125
|
+
# See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
|
126
|
+
EnforcedStyle: consistent
|
127
|
+
|
105
128
|
# Checks for a line break before the first parameter in a multi-line method
|
106
129
|
# parameter definition.
|
107
130
|
Layout/FirstMethodParameterLineBreak:
|
@@ -137,6 +160,17 @@ Layout/LineLength:
|
|
137
160
|
Max: 120
|
138
161
|
AllowedPatterns: ['\s#\srubocop']
|
139
162
|
|
163
|
+
# Checks that strings broken over multiple lines (by a backslash) contain
|
164
|
+
# trailing spaces instead of leading spaces (default) or leading spaces instead
|
165
|
+
# of trailing spaces.
|
166
|
+
Layout/LineContinuationLeadingSpace:
|
167
|
+
Enabled: true
|
168
|
+
|
169
|
+
# Checks that the backslash of a line continuation is separated from preceding
|
170
|
+
# text by exactly one space (default) or zero spaces.
|
171
|
+
Layout/LineContinuationSpacing:
|
172
|
+
Enabled: true
|
173
|
+
|
140
174
|
# Checks that the closing brace in an array literal is either on the same line
|
141
175
|
# as the last array element, or a new line.
|
142
176
|
Layout/MultilineArrayBraceLayout:
|
@@ -147,6 +181,11 @@ Layout/MultilineArrayBraceLayout:
|
|
147
181
|
Layout/MultilineBlockLayout:
|
148
182
|
Enabled: true
|
149
183
|
|
184
|
+
# Checks the indentation of the next line after a line that ends with a string
|
185
|
+
# literal and a backslash.
|
186
|
+
Layout/LineEndStringConcatenationIndentation:
|
187
|
+
Enabled: true
|
188
|
+
|
150
189
|
# Checks that the closing brace in a hash literal is either on the same line as
|
151
190
|
# the last hash element, or a new line.
|
152
191
|
Layout/MultilineHashBraceLayout:
|
@@ -177,7 +216,8 @@ Layout/MultilineOperationIndentation:
|
|
177
216
|
# Here we check if the parameters on a multi-line method call or
|
178
217
|
# definition are aligned.
|
179
218
|
Layout/ParameterAlignment:
|
180
|
-
|
219
|
+
# See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/issues/42
|
220
|
+
EnforcedStyle: with_fixed_indentation
|
181
221
|
|
182
222
|
# Use spaces after colons.
|
183
223
|
Layout/SpaceAfterColon:
|
@@ -223,6 +263,10 @@ Layout/SpaceAroundOperators:
|
|
223
263
|
Layout/SpaceBeforeBlockBraces:
|
224
264
|
Enabled: true
|
225
265
|
|
266
|
+
# Checks for space between the name of a receiver and a left brackets.
|
267
|
+
Layout/SpaceBeforeBrackets:
|
268
|
+
Enabled: true
|
269
|
+
|
226
270
|
# No spaces before commas.
|
227
271
|
Layout/SpaceBeforeComma:
|
228
272
|
Enabled: true
|
data/rubocop-lint.yml
CHANGED
@@ -12,7 +12,7 @@ Lint/AmbiguousOperator:
|
|
12
12
|
# This cop checks for ambiguous regexp literals in the first argument of
|
13
13
|
# a method invocation without parentheses.
|
14
14
|
Lint/AmbiguousRegexpLiteral:
|
15
|
-
Enabled:
|
15
|
+
Enabled: true
|
16
16
|
|
17
17
|
# This cop checks for assignments in the conditions of
|
18
18
|
# if/while/until.
|
data/rubocop-performance.yml
CHANGED
@@ -28,6 +28,11 @@ Performance/Casecmp:
|
|
28
28
|
Performance/CollectionLiteralInLoop: # (new in 1.8)
|
29
29
|
Enabled: true
|
30
30
|
|
31
|
+
# Identifies places where Concurrent.monotonic_time can be replaced by
|
32
|
+
# Process.clock_gettime(Process::CLOCK_MONOTONIC).
|
33
|
+
Performance/ConcurrentMonotonicTime:
|
34
|
+
Enabled: true
|
35
|
+
|
31
36
|
Performance/ConstantRegexp: # (new in 1.9)
|
32
37
|
Enabled: true
|
33
38
|
|
@@ -36,6 +41,17 @@ Performance/ConstantRegexp: # (new in 1.9)
|
|
36
41
|
Performance/DoubleStartEndWith:
|
37
42
|
Enabled: true
|
38
43
|
|
44
|
+
# Identifies usages of map { ... }.flatten and change them to use
|
45
|
+
# flat_map { ... } instead.
|
46
|
+
Performance/FlatMap:
|
47
|
+
Enabled: true
|
48
|
+
EnabledForFlattenWithoutParams: true
|
49
|
+
|
50
|
+
# This cop identifies places where map { … }.compact can be replaced by
|
51
|
+
# filter_map.
|
52
|
+
Performance/MapCompact:
|
53
|
+
Enabled: true
|
54
|
+
|
39
55
|
Performance/MethodObjectAsBlock: # (new in 1.9)
|
40
56
|
Enabled: true
|
41
57
|
|
@@ -52,6 +68,11 @@ Performance/RangeInclude:
|
|
52
68
|
Performance/RedundantBlockCall:
|
53
69
|
Enabled: true
|
54
70
|
|
71
|
+
# Checks for uses Enumerable#all?, Enumerable#any?, Enumerable#one?, and
|
72
|
+
# Enumerable#none? are compared with === or similar methods in block.
|
73
|
+
Performance/RedundantEqualityComparisonBlock:
|
74
|
+
Enabled: true
|
75
|
+
|
55
76
|
# This cop identifies use of `Regexp#match` or `String#match in a context
|
56
77
|
# where the integral return value of `=~` would do just as well.
|
57
78
|
Performance/RedundantMatch:
|
@@ -73,6 +94,11 @@ Performance/RedundantSortBlock:
|
|
73
94
|
Performance/RedundantStringChars:
|
74
95
|
Enabled: true
|
75
96
|
|
97
|
+
# Identifies places where split argument can be replaced from a deterministic
|
98
|
+
# regexp to a string.
|
99
|
+
Performance/RedundantSplitRegexpArgument:
|
100
|
+
Enabled: true
|
101
|
+
|
76
102
|
# Identifies places where reverse.first(n) and reverse.first can be replaced by last(n).reverse and last.
|
77
103
|
# https://docs.rubocop.org/rubocop-performance/1.8/cops_performance.html#performancereversefirst
|
78
104
|
Performance/ReverseFirst:
|
@@ -98,6 +124,12 @@ Performance/StartWith:
|
|
98
124
|
Performance/StringInclude:
|
99
125
|
Enabled: true
|
100
126
|
|
127
|
+
# Identifies places where string identifier argument can be replaced by symbol
|
128
|
+
# identifier argument. It prevents the redundancy of the internal
|
129
|
+
# string-to-symbol conversion.
|
130
|
+
Performance/StringIdentifierArgument:
|
131
|
+
Enabled: true
|
132
|
+
|
101
133
|
# Use `tr` instead of `gsub` when you are replacing the same number of
|
102
134
|
# characters. Use `delete` instead of `gsub` when you are deleting
|
103
135
|
# characters.
|
data/rubocop-rspec.yml
CHANGED
@@ -14,6 +14,16 @@ RSpec/BeEql:
|
|
14
14
|
RSpec/BeforeAfterAll:
|
15
15
|
Enabled: false
|
16
16
|
|
17
|
+
# Checks if there is a more specific finder offered by Capybara.
|
18
|
+
# https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/merge_requests/131#note_1141024624
|
19
|
+
RSpec/Capybara/SpecificFinders:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
# Enforces consistent use of be_a or be_kind_of.
|
23
|
+
# https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/merge_requests/131#note_1141022718
|
24
|
+
RSpec/ClassCheck:
|
25
|
+
Enabled: false
|
26
|
+
|
17
27
|
# Check that the first argument to the top level describe is the tested class or
|
18
28
|
# module.
|
19
29
|
RSpec/DescribeClass:
|
@@ -30,6 +40,7 @@ RSpec/DescribeSymbol:
|
|
30
40
|
# Checks that tests use `described_class`.
|
31
41
|
RSpec/DescribedClass:
|
32
42
|
Enabled: true
|
43
|
+
SkipBlocks: true
|
33
44
|
|
34
45
|
# Checks if an example group does not include any tests.
|
35
46
|
RSpec/EmptyExampleGroup:
|
@@ -61,6 +72,12 @@ RSpec/ExampleWording:
|
|
61
72
|
RSpec/ExpectActual:
|
62
73
|
Enabled: true
|
63
74
|
|
75
|
+
# Checks for `expect {...}.to change {...}` using a block.
|
76
|
+
# See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/merge_requests/122#note_1089192391
|
77
|
+
RSpec/ExpectChange:
|
78
|
+
Enabled: true
|
79
|
+
EnforcedStyle: block
|
80
|
+
|
64
81
|
# Checks for opportunities to use `expect { … }.to output`.
|
65
82
|
RSpec/ExpectOutput:
|
66
83
|
Enabled: true
|
@@ -131,6 +148,10 @@ RSpec/NotToNot:
|
|
131
148
|
EnforcedStyle: not_to
|
132
149
|
Enabled: true
|
133
150
|
|
151
|
+
# See https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/merge_requests/122#note_1089202045
|
152
|
+
RSpec/PredicateMatcher:
|
153
|
+
Enabled: false
|
154
|
+
|
134
155
|
# Check for repeated description strings in example groups.
|
135
156
|
RSpec/RepeatedDescription:
|
136
157
|
Enabled: false
|
@@ -161,9 +182,3 @@ RSpec:
|
|
161
182
|
- let_it_be
|
162
183
|
- let_it_be_with_refind
|
163
184
|
- let_it_be_with_reload
|
164
|
-
Includes:
|
165
|
-
Examples:
|
166
|
-
- run_permission_checks
|
167
|
-
- run_group_permission_checks
|
168
|
-
- it_should_email!
|
169
|
-
- it_should_not_email!
|
data/rubocop-security.yml
CHANGED
@@ -11,6 +11,10 @@ Security/JSONLoad:
|
|
11
11
|
Security/Eval:
|
12
12
|
Enabled: true
|
13
13
|
|
14
|
+
# Checks for the first argument to IO.read, IO.binread, IO.write, IO.binwrite, IO.foreach, and IO.readlines
|
15
|
+
Security/IoMethods:
|
16
|
+
Enabled: true
|
17
|
+
|
14
18
|
GitlabSecurity/DeepMunge:
|
15
19
|
Enabled: true
|
16
20
|
Exclude:
|
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: 9.
|
4
|
+
version: 9.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitLab
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-21 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: 1.
|
19
|
+
version: 1.38.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: 1.
|
26
|
+
version: 1.38.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rubocop-gitlab-security
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '2.
|
89
|
+
version: '2.15'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '2.
|
96
|
+
version: '2.15'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: bundler
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -175,6 +175,7 @@ files:
|
|
175
175
|
- bin/console
|
176
176
|
- bin/setup
|
177
177
|
- gitlab-styles.gemspec
|
178
|
+
- lefthook.yml
|
178
179
|
- lib/gitlab/styles.rb
|
179
180
|
- lib/gitlab/styles/common/banned_constants.rb
|
180
181
|
- lib/gitlab/styles/rubocop.rb
|