-
Notifications
You must be signed in to change notification settings - Fork 1
/
detekt.yml
220 lines (211 loc) · 4.95 KB
/
detekt.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
build:
maxIssues: 0
excludeCorrectable: false
excludes: &ExcludePatterns
- './third-party/**'
# https://detekt.dev/docs/rules/comments
comments:
excludes: *ExcludePatterns
OutdatedDocumentation:
active: true
allowParamOnConstructorProperties: true
# https://detekt.dev/docs/rules/complexity
complexity:
excludes: *ExcludePatterns
ComplexCondition:
threshold: 8
LongMethod:
threshold: 200
LongParameterList:
active: false
# We prefer named arguments when calling functions with long parameter lists
NamedArguments:
active: true
CyclomaticComplexMethod:
active: false
NestedScopeFunctions:
active: true
StringLiteralDuplication:
active: false
TooManyFunctions:
active: false
# https://detekt.dev/docs/rules/coroutines
coroutines:
excludes: *ExcludePatterns
GlobalCoroutineUsage:
active: true
SuspendFunSwallowedCancellation:
active: true
SuspendFunWithCoroutineScopeReceiver:
active: true
# https://detekt.dev/docs/rules/exceptions
exceptions:
excludes: *ExcludePatterns
NotImplementedDeclaration:
active: true
ObjectExtendsThrowable:
active: true
TooGenericExceptionCaught:
active: false
# https://detekt.dev/docs/rules/naming
naming:
excludes: *ExcludePatterns
BooleanPropertyNaming:
active: true
InvalidPackageDeclaration:
active: false
NonBooleanPropertyPrefixedWithIs:
active: true
TopLevelPropertyNaming:
active: true
constantPattern: '[A-Za-z][_A-Za-z0-9]*'
MatchingDeclarationName:
active: false
# https://detekt.dev/docs/rules/performance
performance:
excludes: *ExcludePatterns
CouldBeSequence:
active: true
# https://detekt.dev/docs/rules/potential-bugs
potential-bugs:
excludes: *ExcludePatterns
CastToNullableType:
active: true
MissingPackageDeclaration:
active: true
excludes:
- './gradle/build-logic/src/main/kotlin/plugins.kt'
- '**/*.gradle.kts'
NullCheckOnMutableProperty:
active: true
NullableToStringCall:
active: true
PropertyUsedBeforeDeclaration:
active: true
UnnecessaryNotNullCheck:
active: true
# https://detekt.dev/docs/rules/style
style:
excludes: *ExcludePatterns
MaxLineLength:
# The best max line length is 100, but we can relax it a bit
# to avoid some unexpected situations.
maxLineLength: 110
excludeCommentStatements: true
WildcardImport:
# We never want to use wildcard imports in our code
excludeImports: [ ]
BracesOnIfStatements:
active: true
# For single line if statements, we don't want to add braces
singleLine: 'never'
# For multiline, we want to keep the existing style
multiLine: 'consistent'
BracesOnWhenStatements:
active: true
multiLine: 'necessary'
CanBeNonNullable:
active: true
ClassOrdering:
active: true
CollapsibleIfStatements:
active: true
DestructuringDeclarationWithTooManyEntries:
maxDestructuringEntries: 4
DoubleNegativeLambda:
active: true
EqualsOnSignatureLine:
active: true
ExplicitCollectionElementAccessMethod:
active: true
ExpressionBodySyntax:
active: true
includeLineWrapping: true
ForbiddenComment:
active: false
ReturnCount:
active: false
MagicNumber:
active: false
MultilineRawStringIndentation:
active: true
indentSize: 2
NoTabs:
active: true
NullableBooleanCheck:
active: true
RedundantExplicitType:
active: true
RedundantVisibilityModifierRule:
active: true
SpacingBetweenPackageAndImports:
active: true
StringShouldBeRawString:
active: true
maxEscapedCharacterCount: 5
ThrowsCount:
active: false
TrailingWhitespace:
active: true
UnnecessaryAnnotationUseSiteTarget:
active: true
UnnecessaryBackticks:
active: true
UnnecessaryBracesAroundTrailingLambda:
active: true
UnnecessaryInnerClass:
active: true
UnnecessaryLet:
active: true
UnnecessaryParentheses:
active: true
UntilInsteadOfRangeTo:
active: true
UnusedImports:
active: true
UseDataClass:
active: true
allowVars: true
UseEmptyCounterpart:
active: true
UseIfEmptyOrIfBlank:
active: true
UseLet:
active: true
UseSumOfInsteadOfFlatMapSize:
active: true
# https://detekt.dev/docs/rules/formatting
formatting:
excludes: *ExcludePatterns
Indentation:
active: true
indentSize: 2
NoEmptyFirstLineInClassBody:
active: true
ArgumentListWrapping:
active: false
Wrapping:
active: false
TrailingCommaOnDeclarationSite:
active: false
AnnotationOnSeparateLine:
active: false
SpacingBetweenDeclarationsWithAnnotations:
active: false
# These rules are duplicated with Detekt's standard rules, so just disable them
Filename:
active: false
FinalNewline:
active: false
MaximumLineLength:
active: false
ModifierOrdering:
active: false
MultiLineIfElse:
active: false
EnumEntryNameCase:
active: false
NoUnusedImports:
active: false
NoWildcardImports:
active: false