-
Notifications
You must be signed in to change notification settings - Fork 1
/
.rubocop.yml
202 lines (188 loc) · 5.65 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
# ----------------
# - INSTRUCTIONS -
# ----------------
# The DMPRoadmap codebase tries to follow the latest Ruby/Rails style guidelines as defined
# by the community via the Rubocop gem.
#
# Before submitting a PR, please run `bin/rubocop` from the project root.
# Note that you can specify individual files or folders e.g.: `bin/rubocop app/mailers`
# Note you can let Rubocop auto-correct many issues with the `-a` flag
#
# New versions of Rubocop typically include new Cops (Cops are inidivual Rubocop rules).
# If you see a message like the following when you run `bin/rubocop`:
#
# "The following cops were added to RuboCop, but are not configured. Please set Enabled
# to either `true` or `false` in your `.rubocop.yml` file."
#
# You should copy and paste the specified Cops into this file. You can review what the
# Cop will do by Googling the name of the rule e.g.: "rubocop Layout/SpaceBeforeBrackets"
#
# After you review the rule, you can either Enable it or Disable it in this file. The
# Rubocop documentation for the Cop may also give you additional options that can be
# configured.
#
# Try to place any new Cops under their relevant section and in alphabetical order
require:
# - rubocop-rails
# - rubocop-rspec
- rubocop-performance
AllCops:
# Show the name of the cops being voilated in the feedback
DisplayCopNames: true
DisplayStyleGuide: true
# Rubocop will skip checking the following directories
Exclude:
- 'bin/**/*'
- 'db/**/*'
- 'vendor/**/*'
- 'node_modules/**/*'
- 'scripts/**/*'
# Automatically add any new Cops to this file and enable them
NewCops: enable
# Cache the results for faster processing
UseCache: true
# -----------
# - GEMSPEC -
# -----------
Gemspec/DeprecatedAttributeAssignment:
Enabled: true
# ----------
# - LAYOUT -
# ----------
Layout/LineEndStringConcatenationIndentation: # new in 1.18
Enabled: true
Layout/SpaceBeforeBrackets: # new in 1.7
Enabled: true
# --------
# - LINT -
# --------
Lint/AmbiguousAssignment: # new in 1.7
Enabled: true
Lint/AmbiguousBlockAssociation:
Exclude:
- 'spec/**/*'
Lint/AmbiguousOperatorPrecedence: # new in 1.21
Enabled: true
Lint/AmbiguousRange: # new in 1.19
Enabled: true
Lint/DeprecatedConstants: # new in 1.8
Enabled: true
Lint/DuplicateBranch: # new in 1.3
Enabled: true
Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
Enabled: true
Lint/EmptyBlock: # new in 1.1
Enabled: true
Lint/EmptyClass: # new in 1.3
Enabled: true
Lint/EmptyInPattern: # new in 1.16
Enabled: true
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
Enabled: true
Lint/LambdaWithoutLiteralBlock: # new in 1.8
Enabled: true
Lint/NoReturnInBeginEndBlocks: # new in 1.2
Enabled: true
Lint/NumberedParameterAssignment: # new in 1.9
Enabled: true
Lint/OrAssignmentToConstant: # new in 1.9
Enabled: true
Lint/RedundantDirGlobSort: # new in 1.8
Enabled: true
Lint/RequireRelativeSelfPath: # new in 1.22
Enabled: true
Lint/SymbolConversion: # new in 1.9
Enabled: true
Lint/ToEnumArguments: # new in 1.1
Enabled: true
Lint/TripleQuotes: # new in 1.9
Enabled: true
Lint/UnexpectedBlockArity: # new in 1.5
Enabled: true
Lint/UnmodifiedReduceAccumulator: # new in 1.1
Enabled: true
Lint/Debugger: # new in 1.45.0
Description: 'Check for debugger calls.'
Enabled: true
Exclude:
- 'lib/tasks/**/*'
# -----------
# - METRICS -
# -----------
# briley Oct. 4th 2021
# Default is 100 lines. Most of our controllers, models, etc. violate this
# Cop, so setting it to 300 since we do not have time to refactor everything
Metrics/ClassLength:
Max: 300
# briley Oct. 4th 2021
# Default is 10 lines which feels very restrictive but would also require us to do
# too much refactoring at this point.
Metrics/MethodLength:
Max: 20
# mnicholson Oct. 6th 2021
# Default lenght for block is 25 lines, which it would be very restrictive for
# the Rspec views methods. So I'll just exclude some files.
Metrics/BlockLength:
Exclude:
- 'lib/tasks/*.rake'
- 'lib/tasks/utils/*.rake'
- 'spec/**/*'
AllowedMethods: ['describe', 'context', 'task', 'namespace']
# ------------
# - SECURITY -
# ------------
Security/IoMethods: # new in 1.22
Enabled: true
# ---------
# - STYLE -
# ---------
Style/ArgumentsForwarding: # new in 1.1
Enabled: true
Style/CollectionCompact: # new in 1.2
Enabled: true
Style/DocumentDynamicEvalDefinition: # new in 1.1
Enabled: true
Style/EndlessMethod: # new in 1.8
Enabled: true
Style/FormatStringToken:
# Force use of the `%{variable}` style of tokens instead of `%<variable>s` because
# Translation.io has trouble with auto-translating it. It converts `%<variable>s` to
# `%<variable> s` (note the added space)
EnforcedStyle: template
Style/HashConversion: # new in 1.10
Enabled: true
Style/HashExcept: # new in 1.7
Enabled: true
Style/IfWithBooleanLiteralBranches: # new in 1.9
Enabled: true
Style/InPatternThen: # new in 1.16
Enabled: true
Style/MultilineInPatternThen: # new in 1.16
Enabled: true
Style/NegatedIfElseCondition: # new in 1.2
Enabled: true
Style/NilLambda: # new in 1.3
Enabled: true
Style/NumberedParameters: # new in 1.22
Enabled: true
Style/NumberedParametersLimit: # new in 1.22
Enabled: true
Style/OpenStructUse:
Enabled: false # used heavily in API so needs a lot of work to refactor
Style/QuotedSymbols: # new in 1.16
Enabled: true
Style/RedundantArgument: # new in 1.4
Enabled: true
Style/RedundantSelfAssignmentBranch: # new in 1.19
Enabled: true
Style/SelectByRegexp: # new in 1.22
Enabled: true
Style/StringChars: # new in 1.12
Enabled: true
Style/StringLiterals:
Enabled: true
Exclude:
- 'app/views/**/*'
- 'config/**/*'
Style/SwapValues: # new in 1.1
Enabled: true