rubocop-govuk 3.10.0 → 3.11.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: 9e5ccad5d8a29404c085805725894f1e34fcddd9a8081fb6d49dc46fcb83c442
4
- data.tar.gz: bff295ee9cf144c60f5b2653f7c3744e886c34303032d443d735f022269cb94e
3
+ metadata.gz: c913a7eee4164badca90121c68221e58784c2a982b9d77edc95a2efb40307e1b
4
+ data.tar.gz: 970496645c0749dcae4fcf588f3579ded14a5819cb4d17e0e9fc303cae15b0bd
5
5
  SHA512:
6
- metadata.gz: 5dfb9ea5aca2f9158feb74e46141b32b0a48054ccfa90e82f5cf337a26bcd9ab12ffefc005f930828f0839afdee26fc9aaf22695421dfc6672678ec6e36ab440
7
- data.tar.gz: 34c1d26adf2d8d9118ffccca9128ba3f402328d6378865d949c50707fcd38d2b58c7dbcd91de33d3ea9937d5b9570c8aee670bc73ed284f405b53d86470503b0
6
+ metadata.gz: b98cb3980e29b44f0aaeddd15977ace72241019aae4b01ad7c037e1bab32b23cad77dafc7e4a39cd88a2bbc3eeb67c7739b899ca1413edbd962bb2383f5c4b56
7
+ data.tar.gz: 218ff2564b26902b9f12e472fbe780678cc93b41ea360fa71d913de9ac665651332df109ae5d5f519e2f32dbb653aa9247ad0dda4d29cd4f900745cd03a1f4d6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ # 3.11.0
2
+
3
+ - Add optional config for RSpec Cops (#75)
4
+ - Enable Style/Next (#74)
5
+ - Partially enable Rails/SkipsModelValidations (#74)
6
+ - Partially enable Rails/Output (#74)
7
+ - Enable Rails/HasAndBelongsToMany (#74)
8
+ - Enable Bundler/DuplicatedGem (#74)
9
+
1
10
  # 3.10.0
2
11
 
3
12
  * Enable Style/NegatedIf (#71)
@@ -0,0 +1,5 @@
1
+ # Within GOV.UK we use Capybara test method syntax of feature,
2
+ # scenario. We don't want this outside of feature specs though.
3
+ Capybara/FeatureMethods:
4
+ Exclude:
5
+ - 'spec/features/**/*.rb'
data/config/default.yml CHANGED
@@ -10,19 +10,15 @@ AllCops:
10
10
  - 'node_modules/**/*'
11
11
 
12
12
  DisplayCopNames:
13
- Description: 'Display cop names in offense messages'
14
13
  Enabled: true
15
14
 
16
15
  ExtraDetails:
17
- Description: 'Display extra details in offense messages.'
18
16
  Enabled: true
19
17
 
20
18
  DisplayStyleGuide:
21
- Description: 'Display style guide URLs in offense messages.'
22
19
  Enabled: true
23
20
 
24
21
  inherit_from:
25
- - bundler.yml
26
22
  - layout.yml
27
23
  - metrics.yml
28
24
  - naming.yml
data/config/layout.yml CHANGED
@@ -2,7 +2,6 @@
2
2
  # "Use empty lines between defs and to break up a method into logical paragraphs."
3
3
  # https://github.com/alphagov/styleguides/blob/6395a10d41c3938f4c147cda443fd83f854c3e7a/ruby.md#general
4
4
  Layout/EmptyLineBetweenDefs:
5
- Description: Use empty lines between defs.
6
5
  Enabled: true
7
6
  AllowAdjacentOneLineDefs: false
8
7
 
@@ -12,7 +11,6 @@ Layout/EmptyLineBetweenDefs:
12
11
  # names form the test descriptions. Keeping test descriptions under a
13
12
  # certain length can force them to become cryptic."
14
13
  Layout/LineLength:
15
- Description: Limit lines to 80 characters.
16
14
  Enabled: false
17
15
 
18
16
  # We have two styles of method call in our apps:
@@ -33,7 +31,6 @@ Layout/MultilineMethodCallIndentation:
33
31
  # "Outdent private etc"
34
32
  # https://github.com/alphagov/styleguides/blob/6395a10d41c3938f4c147cda443fd83f854c3e7a/ruby.md#classes
35
33
  Layout/AccessModifierIndentation:
36
- Description: Check indentation of private/protected visibility modifiers.
37
34
  Enabled: true
38
35
  EnforcedStyle: outdent
39
36
 
data/config/metrics.yml CHANGED
@@ -46,7 +46,6 @@ Metrics/PerceivedComplexity:
46
46
  # We should avoid cops that are based on heuristics, since
47
47
  # it's not clear what action to take to fix an issue.
48
48
  Metrics/BlockNesting:
49
- Description: 'Avoid excessive block nesting'
50
49
  Enabled: false
51
50
 
52
51
  # Analog of: 736b3d295f88b9ba6676fc168b823535582388c2
@@ -55,7 +54,6 @@ Metrics/BlockNesting:
55
54
  # We should avoid cops that are based on heuristics, since
56
55
  # it's not clear what action to take to fix an issue.
57
56
  Metrics/CyclomaticComplexity:
58
- Description: 'Avoid complex methods.'
59
57
  Enabled: false
60
58
 
61
59
  # Analog of: 736b3d295f88b9ba6676fc168b823535582388c2
@@ -64,7 +62,6 @@ Metrics/CyclomaticComplexity:
64
62
  # We should avoid cops that are based on heuristics, since
65
63
  # it's not clear what action to take to fix an issue.
66
64
  Metrics/MethodLength:
67
- Description: 'Avoid methods longer than 10 lines of code.'
68
65
  Enabled: false
69
66
 
70
67
  # Analog of: 736b3d295f88b9ba6676fc168b823535582388c2
@@ -73,5 +70,4 @@ Metrics/MethodLength:
73
70
  # We should avoid cops that are based on heuristics, since
74
71
  # it's not clear what action to take to fix an issue.
75
72
  Metrics/ParameterLists:
76
- Description: 'Avoid parameter lists longer than three or four parameters.'
77
73
  Enabled: false
data/config/naming.yml CHANGED
@@ -13,8 +13,9 @@
13
13
  Naming/AccessorMethodName:
14
14
  Enabled: false
15
15
 
16
- # Introduced in: c69a7eb3af955d6c4c0cf0c3cec8e9f330c74429
17
- # TODO: unclear why this is here!
16
+ # We should be free to decide on interfaces that make sense to us.
17
+ # At the time of writing, this Cop is not auto-correctable, and
18
+ # would generate a prohibitively high number of issues across our
19
+ # repos, which would require manual intervention.
18
20
  Naming/PredicateName:
19
- Description: 'Check the names of predicate methods.'
20
21
  Enabled: false
data/config/rails.yml CHANGED
@@ -13,20 +13,17 @@ AllCops:
13
13
  Rails:
14
14
  Enabled: true
15
15
 
16
- # Introduced in: c69a7eb3af955d6c4c0cf0c3cec8e9f330c74429
17
- # TODO: unclear why this is here!
18
- Rails/HasAndBelongsToMany:
19
- Description: 'Prefer has_many :through to has_and_belongs_to_many.'
20
- Enabled: false
21
-
22
- # Introduced in: c69a7eb3af955d6c4c0cf0c3cec8e9f330c74429
23
- # TODO: unclear why this is here!
16
+ # We commonly print output in Ruby code that has been
17
+ # extracted from a Rake task in 'lib/'.
24
18
  Rails/Output:
25
- Description: 'Checks for calls to puts, print, etc.'
26
- Enabled: false
19
+ Exclude:
20
+ - 'lib/**/*.rb'
27
21
 
28
- # Introduced in: 91d7bf4895db12727582ad7bf47bdcb20ab178f7
29
- # TODO: unclear (in any real detail) why this is here!
22
+ # It's unclear what remedial action to take for the total
23
+ # set of methods this Cop has issues with. For example, we
24
+ # use 'update_all' in many of our repos, for which there is
25
+ # no efficient alternative. Instead, we should only enable
26
+ # this Cop for methods that have a clear alternative.
30
27
  Rails/SkipsModelValidations:
31
- Description: 'Avoid methods that skip model validations.'
32
- Enabled: false
28
+ Blacklist:
29
+ - update_attribute
data/config/rspec.yml ADDED
@@ -0,0 +1,37 @@
1
+ require: rubocop-rspec
2
+
3
+ inherit_from:
4
+ - capybara.yml
5
+
6
+ # Analog of: 736b3d295f88b9ba6676fc168b823535582388c2
7
+ #
8
+ # We should avoid cops that are based on heuristics, since
9
+ # it's not clear what action to take to fix an issue.
10
+ RSpec/ExampleLength:
11
+ Enabled: false
12
+
13
+ # We have common cases, such as rake tasks, where we do not
14
+ # use a class to the describe the test.
15
+ RSpec/DescribeClass:
16
+ Enabled: false
17
+
18
+ # We accept multiple expectations (within reason), preferring
19
+ # them to running mulitple similar tests.
20
+ RSpec/MultipleExpectations:
21
+ Enabled: false
22
+
23
+ # Part of the GOV.UK feature style involves instance variables.
24
+ RSpec/InstanceVariable:
25
+ Exclude:
26
+ - 'spec/features/**/*.rb'
27
+
28
+ # In GOV.UK we quite often test that a class received a method.
29
+ RSpec/MessageSpies:
30
+ Enabled: false
31
+
32
+ # Analog of: 736b3d295f88b9ba6676fc168b823535582388c2
33
+ #
34
+ # We should avoid cops that are based on heuristics, since
35
+ # it's not clear what action to take to fix an issue.
36
+ RSpec/NestedGroups:
37
+ Enabled: false
data/config/style.yml CHANGED
@@ -5,21 +5,18 @@
5
5
  # line statements to re-written makes it a harder
6
6
  # to follow the branching logic."
7
7
  Style/IfUnlessModifier:
8
- Description: Favor modifier if/unless usage when you have a single-line body.
9
8
  Enabled: false
10
9
 
11
10
  # Part of the orignal GDS styleguide
12
11
  # "Never chain do...end"
13
12
  # https://github.com/alphagov/styleguides/blob/6395a10d41c3938f4c147cda443fd83f854c3e7a/ruby.md#syntax
14
13
  Style/MethodCalledOnDoEndBlock:
15
- Description: Avoid chaining a method call on a do...end block.
16
14
  Enabled: true
17
15
 
18
16
  # Part of the orignal GDS styleguide
19
17
  # "Omit the parentheses when the method doesn’t accept any arguments"
20
18
  # https://github.com/alphagov/styleguides/blob/6395a10d41c3938f4c147cda443fd83f854c3e7a/ruby.md#syntax
21
19
  Style/MethodCallWithoutArgsParentheses:
22
- Description: 'Do not use parentheses for method calls with no arguments.'
23
20
  Enabled: true
24
21
 
25
22
  # Part of the orignal GDS styleguide
@@ -116,10 +113,12 @@ Style/AsciiComments:
116
113
  Style/BlockDelimiters:
117
114
  EnforcedStyle: braces_for_chaining
118
115
 
119
- # Introduced in: c69a7eb3af955d6c4c0cf0c3cec8e9f330c74429
120
- # TODO: unclear why this is here!
116
+ # We have no concensus on this. Using the nested style is the
117
+ # default for generated Rails app (see 'config/application.rb').
118
+ # Using the compact style can help to reduce boilerplate within
119
+ # modules. At the time of writing, the auto-correct for this Cop
120
+ # is unsafe for moving to either style.
121
121
  Style/ClassAndModuleChildren:
122
- Description: 'Checks style of children classes and modules.'
123
122
  Enabled: false
124
123
 
125
124
  # Introduced in: c69a7eb3af955d6c4c0cf0c3cec8e9f330c74429
@@ -128,7 +127,6 @@ Style/ClassAndModuleChildren:
128
127
  # more documentation is the potential for confusion if that
129
128
  # documentation gets out-of-sync with the class/module.
130
129
  Style/Documentation:
131
- Description: 'Document classes and non-namespace modules.'
132
130
  Enabled: false
133
131
 
134
132
  # Introduced in: c69a7eb3af955d6c4c0cf0c3cec8e9f330c74429
@@ -138,13 +136,6 @@ Style/Documentation:
138
136
  # "There are occasions where following this rule forces you to make the
139
137
  # code less readable."
140
138
  Style/GuardClause:
141
- Description: 'Check for conditionals that can be replaced with guard clauses'
142
- Enabled: false
143
-
144
- # Introduced in: c69a7eb3af955d6c4c0cf0c3cec8e9f330c74429
145
- # TODO: unclear why this is here!
146
- Style/Next:
147
- Description: 'Use `next` to skip iteration instead of a condition at the end.'
148
139
  Enabled: false
149
140
 
150
141
  # Analog of: 736b3d295f88b9ba6676fc168b823535582388c2
@@ -153,21 +144,13 @@ Style/Next:
153
144
  # We should avoid cops that are based on heuristics, since
154
145
  # it's not clear what action to take to fix an issue.
155
146
  Style/RegexpLiteral:
156
- Description: >-
157
- Use %r for regular expressions matching more than
158
- `MaxSlashes` '/' characters.
159
- Use %r only for regular expressions matching more than
160
- `MaxSlashes` '/' character.
161
147
  Enabled: false
162
148
 
163
- # Introduced in: 7aaebf4dbdf2a8d677b4000d3cd3512d4fb91e99
164
- # "This is a relatively new Ruby feature and is not mentioned in the Style
165
- # guide, so this commit disables it by default."
166
- # TODO: unclear why this is here!
149
+ # Using safe navigation is less explicit than making a clear
150
+ # check for truthiness, as evidenced by its own safelist for
151
+ # certain methods. Safe navigation is also less visible and
152
+ # pollutes otherwise readable method calls.
167
153
  Style/SafeNavigation:
168
- Description: >-
169
- This cop transforms usages of a method call safeguarded by a check for the
170
- existance of the object to safe navigation (`&.`).
171
154
  Enabled: false
172
155
 
173
156
  # We should allow for single line empty methods, as this
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-govuk
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.10.0
4
+ version: 3.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Government Digital Service
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-13 00:00:00.000000000 Z
11
+ date: 2020-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -90,13 +90,14 @@ files:
90
90
  - CHANGELOG.md
91
91
  - LICENSE.md
92
92
  - README.md
93
- - config/bundler.yml
93
+ - config/capybara.yml
94
94
  - config/default.yml
95
95
  - config/layout.yml
96
96
  - config/metrics.yml
97
97
  - config/naming.yml
98
98
  - config/rails.yml
99
99
  - config/rake.yml
100
+ - config/rspec.yml
100
101
  - config/style.yml
101
102
  homepage: https://github.com/alphagov/rubocop-govuk
102
103
  licenses:
data/config/bundler.yml DELETED
@@ -1,12 +0,0 @@
1
- # Introduced in: 278fc6e903834acfb37565795a196b85282560b0
2
- # "A common pattern in our Gemfiles is to declare a gem
3
- # differently if we're in a dev mode or not. For example
4
- #
5
- # if ENV['API_DEV']
6
- # gem 'gds-api-adapters', path: '../gds-api-adapters'
7
- # else
8
- # gem 'gds-api-adapters', "~> 50.8.0"
9
- # end"
10
- # TODO: see if we can remove this (no longer valid??)
11
- Bundler/DuplicatedGem:
12
- Enabled: false