forked from moduloTech/kaze_client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.rubocop.yml
251 lines (205 loc) · 7.6 KB
/
.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
241
242
243
244
245
246
247
248
249
250
251
# The behavior of RuboCop can be controlled via the .rubocop.yml
# configuration file. It makes it possible to enable/disable
# certain cops (checks) and to alter their behavior if they accept
# any parameters. The file can be placed either in your home
# directory or in some project directory.
#
# RuboCop will start looking for the configuration file in the directory
# where the inspected file is and continue its way up to the root directory.
#
# See https://docs.rubocop.org/rubocop/configuration
inherit_mode:
merge:
- Exclude
- Include
AllCops:
# Enable new cops by default
NewCops: enable
# Align target ruby version with the required ruby version in gemspec
TargetRubyVersion: 2.6
# Excluding most directories with generated files and directories with configuration files.
Exclude:
- 'bin'
- '.github'
- '**/Gemfile'
- '**/Guardfile'
- '**/Rakefile'
- 'node_modules/**/*'
- 'spec/**/*'
- 'sig/**/*'
# Checks if String literals are using single quotes when no interpolation is required
Style/StringLiterals:
Enabled: true
EnforcedStyle: single_quotes
ConsistentQuotesInMultiline: false
# Checks if the quotes used for quoted symbols are single quotes when no interpolation is required
Style/QuotedSymbols:
Enabled: true
EnforcedStyle: same_as_string_literals
# This cop checks for uses of literal strings converted to a symbol where a literal symbol could be used instead.
Lint/SymbolConversion:
Enabled: true
EnforcedStyle: strict
# Useless cop. It checks for unnecessary safe navigations.
# Example:
# obj&.a && obj.b
# Triggers rubocop error: it requires to add safe navigation for "obj.b" call => "obj&.b".
# but it is not necessary. obj&.a will return nil if obj is nil, and it will stop
# execution of the operation because `&&` right part executes only when left part is truthy.
Lint/SafeNavigationConsistency:
Enabled: false
# Checks for places where keyword arguments can be used instead of boolean arguments when defining methods.
# Disabled because moving from default arguments to keywords is not that easy.
Style/OptionalBooleanParameter:
Enabled: false
# Checks for use of the lambda.(args) syntax.
# Disabled while the Ruby team has not voted on this.
Style/LambdaCall:
Enabled: false
EnforcedStyle: braces
# Checks for presence or absence of braces around hash literal as a last array item depending on configuration.
# Disabled because it would break a lot of permitted_params definitions
Style/HashAsLastArrayItem:
Enabled: false
# Checks for grouping of accessors in class and module bodies.
# Useless.
Style/AccessorGrouping:
Enabled: false
# Makes our lives happier: we don't need to disable it in each case/when method
# with more than 5 "when"s.
Metrics/CyclomaticComplexity:
Max: 10
# Commonly used screens these days easily fit more than 80 characters.
Layout/LineLength:
Max: 120
# 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: 25
# The guiding principle of classes is SRP, SRP can't be accurately measured by LoC
Metrics/ClassLength:
Max: 1500
# No space makes the method definition shorter and differentiates
# from a regular assignment.
Layout/SpaceAroundEqualsInParameterDefault:
EnforcedStyle: no_space
# We do not need to support Ruby 1.9, so this is good to use.
Style/SymbolArray:
Enabled: true
# Most readable form.
Layout/HashAlignment:
EnforcedHashRocketStyle: table
EnforcedColonStyle: table
# Mixing the styles looks just silly.
Style/HashSyntax:
EnforcedStyle: ruby19_no_mixed_keys
# has_key? and has_value? are far more readable than key? and value?
Style/PreferredHashMethods:
Enabled: false
# String#% is by far the least verbose and only object oriented variant.
Style/FormatString:
EnforcedStyle: percent
# Annotated or template are too verbose and rarely needed.
Style/FormatStringToken:
EnforcedStyle: unannotated
Style/CollectionMethods:
Enabled: true
PreferredMethods:
# inject seems more common in the community.
reduce: "inject"
# Either allow this style or don't. Marking it as safe with parenthesis
# is silly. Let's try to live without them for now.
Style/ParenthesesAroundCondition:
AllowSafeAssignment: false
Lint/AssignmentInCondition:
AllowSafeAssignment: false
# A specialized exception class will take one or more arguments and construct the message from it.
# So both variants make sense.
Style/RaiseArgs:
Enabled: false
# Indenting the chained dots beneath each other is not supported by this cop,
# see https://github.com/bbatsov/rubocop/issues/1633
Layout/MultilineOperationIndentation:
Enabled: false
# Fail is an alias of raise. Avoid aliases, it's more cognitive load for no gain.
# The argument that fail should be used to abort the program is wrong too,
# there's Kernel#abort for that.
Style/SignalException:
EnforcedStyle: only_raise
# Suppressing exceptions can be perfectly fine, and be it to avoid to
# explicitly type nil into the rescue since that's what you want to return,
# or suppressing LoadError for optional dependencies
Lint/SuppressedException:
Enabled: false
# { ... } for multi-line blocks is okay, follow Weirichs rule instead:
# https://web.archive.org/web/20140221124509/http://onestepback.org/index.cgi/Tech/Ruby/BraceVsDoEnd.rdoc
Style/BlockDelimiters:
Enabled: false
# do / end blocks should be used for side effects,
# methods that run a block for side effects and have
# a useful return value are rare, assign the return
# value to a local variable for those cases.
Style/MethodCalledOnDoEndBlock:
Enabled: true
# Enforcing the names of variables? To single letter ones? Just no.
Style/SingleLineBlockParams:
Enabled: false
# Shadowing outer local variables with block parameters is often useful
# to not reinvent a new name for the same thing, it highlights the relation
# between the outer variable and the parameter. The cases where it's actually
# confusing are rare, and usually bad for other reasons already, for example
# because the method is too long.
Lint/ShadowingOuterLocalVariable:
Enabled: false
# Check with yard instead.
Style/Documentation:
Enabled: false
# This is just silly. Calling the argument `other` in all cases makes no sense.
Naming/BinaryOperatorParameterName:
Enabled: false
# Disable frozen string
Style/FrozenStringLiteralComment:
Enabled: false
# Disable No ASCII char in comments
Style/AsciiComments:
Enabled: false
# Disable ordered Gems By ascii
Bundler/OrderedGems:
Enabled: false
# Change ABC max value
Metrics/AbcSize:
Max: 35
# Disable empty method in one line
Style/EmptyMethod:
EnforcedStyle: expanded
# Disable max height block
Metrics/BlockLength:
Enabled: true
Exclude:
- 'app/admin/**/*'
- 'lib/tasks/**/*'
# Checks if empty lines around the bodies of classes match the configuration.
Layout/EmptyLinesAroundClassBody:
EnforcedStyle: empty_lines
# Checks if empty lines around the bodies of modules match the configuration.
Layout/EmptyLinesAroundModuleBody:
EnforcedStyle: empty_lines
# Enforces the consistent usage of %-literal delimiters.
Style/PercentLiteralDelimiters:
PreferredDelimiters:
default: '()'
'%i': '[]'
'%I': '[]'
'%r': '{}'
'%w': '[]'
'%W': '[]'
# Unnecessary cop. In what universe "A || B && C" or "A && B || C && D" is ambiguous? looks
# like a cop for those who can't in boolean.
Lint/AmbiguousOperatorPrecedence:
Enabled: false
# Checks for simple usages of parallel assignment.
Style/ParallelAssignment:
Enabled: false
# Checks the style of children definitions at classes and modules.
Style/ClassAndModuleChildren:
Enabled: false