forked from westonganger/paper_trail-association_tracking
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.rubocop.yml
224 lines (177 loc) · 6.05 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
require:
- rubocop-rspec
# 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:
#
# - Comment any deviations from the Ruby Style Guide
# - Alphabetize cops
# - Only include permanent config; temporary goes in .rubocop_todo.yml
AllCops:
Exclude:
- gemfiles/vendor/bundle/**/* # This dir only shows up on travis ¯\_(ツ)_/¯
- spec/dummy_app/db/schema.rb # Generated, out of our control
# Set to lowest supported version
TargetRubyVersion: 2.3
Documentation:
Enabled: false
Layout/AlignParameters:
Enabled: false
EnforcedStyle: with_first_parameter
Layout/DotPosition:
EnforcedStyle: leading
Enabled: false
Layout/IndentHeredoc:
Exclude:
- paper_trail.gemspec
Layout/MultilineMethodCallIndentation:
Enabled: false
Layout/MultilineOperationIndentation:
Enabled: false
Layout/SpaceBeforeComment:
Enabled: false
Layout/SpaceBeforeBlockBraces:
Enabled: false
Layout/SpaceAroundBlockParameters:
Enabled: false
LeadingCommentSpace:
Enabled: false
# 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 Ruby Style Guide recommends to "Limit lines to 80 characters."
# (https://github.com/bbatsov/ruby-style-guide#80-character-limits)
# but 100 is also reasonable.
Metrics/LineLength:
Max: 120
Severity: warning
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
# It is a decades-old convention to use EOS as a heredoc delimiter. There is
# not enough value in changinge this convention. SQL should still be used as
# a delimiter when appropriate.
Naming/HeredocDelimiterNaming:
Enabled: false
Naming/PredicateName:
NameWhitelist: has_paper_trail
# In 0.50.0, this cop has a bug https://github.com/bbatsov/rubocop/issues/4732
Performance/HashEachMethods:
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:
Max: 99
Enabled: true
# 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
# 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/EmptyMethod:
EnforcedStyle: expanded
RSpec/FilePath:
Exclude:
- spec/paper_trail/association_reify_error_behaviour/error.rb
- spec/paper_trail/association_reify_error_behaviour/warn.rb
- spec/paper_trail/association_reify_error_behaviour/ignore.rb
# 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
Style/FileName:
Exclude:
- lib/paper_trail-association_tracking.rb
# Use postfix (modifier) conditionals for one-liners, unless doing so would
# exceed 60 characters.
Style/IfUnlessModifier:
Enabled: false
# The Ruby Style Guide says:
#
# > Use \ instead of + or << to concatenate two string literals at line end.
#
# but in my experience the `\` style is rarely used and less readable. Please
# concatenate multiline strings with `+` or use a HEREDOC.
Style/LineEndConcatenation:
Enabled: false
Style/RaiseArgs:
EnforcedStyle: compact
Enabled: false
Style/RedundantReturn:
Enabled: false
Style/Proc:
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:
Enabled: false
EnforcedStyle: single_quotes
Style/WordArray:
Enabled: false
### TEMPORARY
Style/TrailingCommaInLiteral:
Enabled: false
#Style/TrailingCommaInArrayLiteral:
# Enabled: false
#Style/TrailingCommaInHashLiteral:
# Enabled: false
### EXCLUSIONS / EXCEPTIONS TO REMOVE ###
Metrics/AbcSize:
Max: 22 # Goal: 15
Exclude:
- spec/dummy_app/db/migrate/20110208155312_set_up_test_tables.rb
Metrics/CyclomaticComplexity:
Max: 8 # Goal: 6
Metrics/PerceivedComplexity:
Max: 9 # Goal: 7
RSpec/EmptyExampleGroup:
Enabled: false
RSpec/InstanceVariable:
Exclude:
- spec/paper_trail/associations/belongs_to_spec.rb
- spec/paper_trail/associations/habtm_spec.rb
- spec/paper_trail/associations/has_many_through_spec.rb
- spec/paper_trail/model_spec.rb
RSpec/NestedGroups:
Exclude:
- spec/paper_trail/associations/belongs_to_spec.rb
- spec/paper_trail/associations/habtm_spec.rb
- spec/paper_trail/associations/has_many_through_spec.rb
- spec/paper_trail/model_spec.rb
### END TO REMOVE SECTION