-
Notifications
You must be signed in to change notification settings - Fork 910
Expand file tree
/
Copy path.rubocop.yml
More file actions
225 lines (177 loc) · 6.72 KB
/
.rubocop.yml
File metadata and controls
225 lines (177 loc) · 6.72 KB
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
plugins:
- rubocop-packaging
- rubocop-performance
- rubocop-rails
- rubocop-rake
- rubocop-rspec
inherit_from: .rubocop_todo.yml
# Please:
#
# - Comment any deviations from the Ruby Style Guide
# - Alphabetize cops
# - Only include permanent config; temporary goes in .rubocop_todo.yml
AllCops:
# Generated files, like schema.rb, are out of our control.
Exclude:
- gemfiles/*
- spec/dummy_app/db/schema.rb
# Enable pending cops so we can adopt the code before they are switched on.
NewCops: enable
# See "Lowest supported ruby version" in CONTRIBUTING.md
TargetRubyVersion: 3.2
Gemspec/DevelopmentDependencies:
Enabled: false
Layout/ArgumentAlignment:
EnforcedStyle: with_fixed_indentation
# This cop has a bug in 1.22.2 (https://github.com/rubocop/rubocop/issues/10210)
# When the bug is fixed, we'll return to using `EnforcedStyle: trailing`.
Layout/DotPosition:
Enabled: false
# Avoid blank lines inside methods. They are a sign that the method is too big.
Layout/EmptyLineAfterGuardClause:
Enabled: false
Layout/HeredocIndentation:
Exclude:
- paper_trail.gemspec
# The Ruby Style Guide recommends to "Limit lines to 80 characters."
# (https://github.com/bbatsov/ruby-style-guide#80-character-limits)
# Please aim for 80, but up to 100 is OK.
Layout/LineLength:
Max: 100
Layout/MultilineMethodCallIndentation:
EnforcedStyle: indented
Layout/MultilineOperationIndentation:
EnforcedStyle: indented
Layout/ParameterAlignment:
EnforcedStyle: with_fixed_indentation
# Use exactly one space on each side of an operator. Do not align operators
# because it makes the code harder to edit, and makes lines unnecessarily long.
Layout/SpaceAroundOperators:
AllowForAlignment: false
# Migrations often contain long up/down methods, and extracting smaller methods
# from these is of questionable value.
Metrics/AbcSize:
Exclude:
- "spec/dummy_app/db/migrate/*"
# Not a useful metric compared to, e.g. `AbcSize`.
Metrics/BlockLength:
Enabled: false
# Not a useful metric compared to, e.g. `AbcSize`.
Metrics/ClassLength:
Enabled: false
# The number of lines in a method is not a useful metric compared to `AbcSize`.
# It's common to have very long methods (> 50 lines) which are quite simple. For
# example, a method that returns a long string with only a few interpolations.
Metrics/MethodLength:
Enabled: false
# Not a useful metric compared to, e.g. `AbcSize`.
Metrics/ModuleLength:
Enabled: false
Naming/FileName:
Exclude:
- Appraisals
# Heredocs are usually assigned to a variable or constant, which already has a
# name, so naming the delimiter doesn't add much value unless doing so improves
# syntax highlighting. For example, all heredocs containing SQL should be named
# SQL, to support editor syntax highlighting.
Naming/HeredocDelimiterNaming:
Enabled: false
Naming/PredicatePrefix:
AllowedMethods: has_paper_trail
# It is currently broken as of rubocop 1.77.0.
Naming/PredicateMethod:
Enabled: false
# Too subtle to lint.
# Two-letter param names are OK. Consider `send_email(to:, cc:)`.
# Even one-letter names are OK. Consider `draw_point(x, y)`.
Naming/MethodParameterName:
Enabled: false
# This cop has low value to begin with. Also, secondarily, it does not allow
# reasonable names like `rails_lt_6_0`.
Naming/VariableNumber:
Enabled: false
# A valuable optimization in production code, but not valuable in specs.
Performance/CollectionLiteralInLoop:
Exclude:
- spec/**/*
Rails/ApplicationRecord:
Enabled: false
Rails/Delegate:
Enabled: false
# This cop only applies to app dev, not gem dev.
Rails/RakeEnvironment:
Enabled: false
# Good advice for rails applications, but not applicable to libraries like PT.
Rails/SkipsModelValidations:
Enabled: false
RSpec/BeEq:
Enabled: false
# This cop does not seem to work in rubocop-rspec 1.28.0
RSpec/DescribeClass:
Enabled: false
# Yes, ideally examples would be short. Is it possible to pick a limit and say,
# "no example will ever be longer than this"? Hard to say. Sometimes they're
# quite long.
RSpec/ExampleLength:
Enabled: false
RSpec/IndexedLet:
Enabled: false
# In an ideal world, each example has a single expectation. In the real world,
# sometimes setup is a pain and you don't want to duplicate setup in multiple
# examples, or make the specs more confusing with many nested `context`s, and
# the practical thing is to have multiple expectations.
RSpec/MultipleExpectations:
Enabled: false
# It may be possible for us to use safe_load, but we'd have to pass the
# safelists, like `whitelist_classes` into our serializer, and the serializer
# interface is a public API, so that would be a breaking change.
Security/YAMLLoad:
Enabled: false
# Please use semantic style, e.g. `do` when there's a side-effect, else `{}`.
# The semantic style is too nuanced to lint, so the cop is disabled.
Style/BlockDelimiters:
Enabled: false
# Use double negation wherever it would otherwise be impractical to convert
# a value to an actual boolean.
Style/DoubleNegation:
Enabled: false
Style/FetchEnvVar:
Enabled: false
# Avoid annotated tokens except in desperately complicated format strings.
# In 99% of format strings they actually make it less readable.
Style/FormatStringToken:
Enabled: false
Style/FrozenStringLiteralComment:
Exclude:
- gemfiles/* # generated by Appraisal
# The decision of when to use a guard clause to improve readability is subtle,
# and it's not clear that it can be linted. Certainly, the default
# `MinBodyLength` of 1 can actually hurt readability.
Style/GuardClause:
Enabled: false
# `hash.keys.each` is totally fine.
Style/HashEachMethods:
Enabled: false
# Only use postfix (modifier) conditionals for utterly simple statements.
# As a rule of thumb, the entire statement should not exceed 60 chars.
# Rubocop used to support this level of configuration, but no longer does.
Style/IfUnlessModifier:
Enabled: false
# Using `module_function` instead of `extend self` would make the instance
# methods in these modules private. That would be a breaking change, so these
# modules are excluded. See discussion in:
# - https://github.com/paper-trail-gem/paper_trail/pull/756
# - https://github.com/bbatsov/ruby-style-guide/issues/556
Style/ModuleFunction:
Exclude:
- "lib/paper_trail/serializers/json.rb"
- "lib/paper_trail/serializers/yaml.rb"
# Too subtle to lint. Use `format` for multiple variables. For single variables,
# use either interpolation or concatenation, whichever is easier to read.
Style/StringConcatenation:
Enabled: false
# The Ruby Style Guide does not prescribe a particular quote character, only
# that a project should pick one and be consistent. The decision has no
# performance implications. Double quotes are slightly easier to read.
Style/StringLiterals:
EnforcedStyle: double_quotes