-
Notifications
You must be signed in to change notification settings - Fork 6
/
.shared_rubocop.yml
240 lines (190 loc) · 5.86 KB
/
.shared_rubocop.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
require:
- rubocop-rails
- rubocop-rspec
- rubocop-capybara
- rubocop-factory_bot
- rubocop-rspec_rails
AllCops:
NewCops: enable
TargetRubyVersion: 3.3.1
TargetRailsVersion: 6.0.3.4
Exclude:
- 'db/schema.rb'
- 'db/migrate/*'
- 'lib/templates/**/*'
- 'node_modules/**/*'
- 'bin/**/*'
- 'config/puma.rb'
- 'config/initializers/simple_form.rb'
- 'config/initializers/simple_form_bootstrap.rb'
- 'config/initializers/simple_form_components.rb'
- 'config/initializers/new_framework_defaults*'
- 'spec/spec_helper.rb'
- 'config.ru'
# Want to use even indentation for the various methods within a class, and
# also want to be able to indent private methods without errors
Layout/IndentationConsistency:
EnforcedStyle: indented_internal_methods
# Commonly used screens these days easily fit more than 80 characters
Layout/LineLength:
Max: 120
Layout/SpaceInsideArrayLiteralBrackets:
Exclude:
- 'config/environments/production.rb'
- 'config/environments/staging.rb'
# Must use a comparator for conditionals instead of an equals sign
Lint/AssignmentInCondition:
AllowSafeAssignment: false
# Finds any cases of binding.pry or byebug left in the code
Lint/Debugger:
Enabled: true
Lint/RaiseException:
Enabled: true
Lint/StructNewOverride:
Enabled: true
# Calculated by number of assignments, branches, and conditions within a method
# using this formula: http://c2.com/cgi/wiki?AbcMetric
Metrics/AbcSize:
Max: 30
Exclude:
- 'spec/support/spec_support.rb'
Metrics/CyclomaticComplexity:
Max: 8
Metrics/PerceivedComplexity:
Max: 10
Metrics/ModuleLength:
Max: 1500
# Checks to see if the length of a block exceeds 25 lines
Metrics/BlockLength:
Exclude:
- 'spec/**/*_spec.rb'
- 'config/routes.rb'
- 'config/environments/**/*.rb'
- 'spec/factories/**/*.rb'
- 'spec/rails_helper.rb'
- 'lib/tasks/temp.rake'
# The guiding principle of classes is SRP, SRP can't be accurately measured by LoC
Metrics/ClassLength:
Max: 1500
Exclude:
- 'spec/**/*_spec.rb'
# Too short methods lead to extraction of single-use methods, which can make
# the code easier to read (by naming things), but can also clutter the class
Metrics/MethodLength:
Max: 30
Metrics/ParameterLists:
Max: 6
# This is unnecessary. Calling the argument `other` in all cases makes no sense
Naming/BinaryOperatorParameterName:
Enabled: false
Naming/VariableNumber:
EnforcedStyle: snake_case
Exclude:
- 'lib/tasks/temp.rake'
AllowedPatterns: ['html5']
# Gives access to all the default 'enabled' rails-specific cops
Rails:
Enabled: true
Rails/UnknownEnv:
Environments:
- production
- staging
- development
- test
Rails/Output:
Enabled: true
Rails/Exit:
Enabled: true
# This cop checks for the use of methods which skip validations which are listed in guides.rubyonrails.org/active_record_validations.html#skipping-validations
Rails/SkipsModelValidations:
Enabled: true
Exclude:
- 'spec/**/*_spec.rb'
- 'app/services/seeder.rb'
- 'lib/tasks/temp.rake'
Rails/I18nLocaleTexts:
Enabled: false
Rails/FilePath:
Exclude:
- 'config/environments/development.rb'
Rails/FindEach:
Enabled: false
# Check for uses of braces around single-line blocks, and also for multi-line blocks with an
# attached method like: {...}.where
# It will still preferentially choose do/end for multi-line blocks
Style/BlockDelimiters:
Enabled: true
EnforcedStyle: braces_for_chaining
Style/HashSyntax:
EnforcedShorthandSyntax: either
# has_key? and has_value? are far more readable than key? and value? so this allows both
# of those formats to be used
Style/PreferredHashMethods:
Enabled: false
# This requires the use of top-level documentation for all classes and modules when enabled
Style/Documentation:
Enabled: false
# This cop is designed to help upgrade to Ruby 3.0. It is enabled by default, and adds the
# comment: # frozen_string_literal: true to the top of files to enable frozen string literals
Style/FrozenStringLiteralComment:
Enabled: false
Style/StringLiterals:
Enabled: true
Exclude:
- 'config/boot.rb'
- 'config/environment.rb'
- 'config/application.rb'
- 'config/initializers/backtrace_silencers.rb'
- 'config/initializers/assets.rb'
- 'config/environments/development.rb'
- 'config/environments/staging.rb'
- 'config/environments/production.rb'
- 'config/environments/test.rb'
Style/SymbolArray:
Enabled: true
Exclude:
- 'config/initializers/filter_parameter_logging.rb'
# https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/HashEachMethods
Style/HashEachMethods:
Enabled: true
# https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/HashTransformKeys
Style/HashTransformKeys:
Enabled: true
# https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/HashTransformValues
Style/HashTransformValues:
Enabled: true
# Don't use parentheses around the condition of a control expression. And if there's an expression
# wrapped in parentheses, this will recommend that it be moved to another method
Style/ParenthesesAroundCondition:
AllowSafeAssignment: false
# Fail is an alias of raise. Avoid aliases, it's more cognitive load for no gain.
Style/SignalException:
EnforcedStyle: only_raise
Style/GlobalStdStream:
Exclude:
- 'config/environments/production.rb'
- 'config/environments/staging.rb'
RSpec/ExampleLength:
Enabled: false
FactoryBot/ConsistentParenthesesStyle:
EnforcedStyle: omit_parentheses
RSpec/MultipleExpectations:
Enabled: false
RSpec/MultipleMemoizedHelpers:
Enabled: false
RSpec/NestedGroups:
Max: 5
RSpec/ExpectInHook:
Enabled: false
RSpec/AnyInstance:
Enabled: false
RSpec/MessageSpies:
Enabled: false
RSpec/VerifiedDoubles:
Enabled: false
RSpec/IndexedLet:
Enabled: false
Rails/HttpPositionalArguments:
Exclude:
# this just doesn't seem right for things like 'on: :member'
- 'config/routes.rb'