aboutsummaryrefslogtreecommitdiff
path: root/detekt.yml
blob: a6fdea75112aaebbdf7a1d2376425f77acb26060 (plain)
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
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
autoCorrect: true
failFast: false

build:
  warningThreshold: 5
  failThreshold: 10
  weights:
    complexity: 2
    formatting: 1
    LongParameterList: 1
    comments: 1

processors:
  active: true
  exclude:
  # - 'FunctionCountProcessor'
  # - 'PropertyCountProcessor'
  # - 'ClassCountProcessor'
  # - 'PackageCountProcessor'
  # - 'KtFileCountProcessor'

console-reports:
  active: true
  exclude:
  #  - 'ProjectStatisticsReport'
  #  - 'ComplexityReport'
  #  - 'NotificationReport'
  #  - 'FindingsReport'
  #  - 'BuildFailureReport'

output-reports:
  active: true
  exclude:
  #  - 'PlainOutputReport'
  #  - 'XmlOutputReport'

potential-bugs:
  active: true
  DuplicateCaseInWhenExpression:
    active: true
  EqualsAlwaysReturnsTrueOrFalse:
    active: false
  EqualsWithHashCodeExist:
    active: true
  WrongEqualsTypeParameter:
    active: false
  ExplicitGarbageCollectionCall:
    active: true
  UnreachableCode:
    active: true
  LateinitUsage:
    active: false
  UnsafeCallOnNullableType:
    active: false
  UnsafeCast:
    active: false
  UselessPostfixExpression:
    active: false

performance:
  active: true
  ForEachOnRange:
    active: true
  SpreadOperator:
    active: true
  UnnecessaryTemporaryInstantiation:
    active: true

exceptions:
  active: true
  TooGenericExceptionCatched:
    active: true
    exceptions:
      - ArrayIndexOutOfBoundsException
      - Error
      - Exception
      - IllegalMonitorStateException
      - IndexOutOfBoundsException
      - NullPointerException
      - RuntimeException
  TooGenericExceptionThrown:
    active: true
    exceptions:
      - Throwable
      - ThrowError
      - ThrowException
      - ThrowNullPointerException
      - ThrowRuntimeException
      - ThrowThrowable

empty-blocks:
  active: true
  EmptyCatchBlock:
    active: true
  EmptyClassBlock:
    active: true
  EmptyDefaultConstructor:
    active: true
  EmptyDoWhileBlock:
    active: true
  EmptyElseBlock:
    active: true
  EmptyFinallyBlock:
    active: true
  EmptyForBlock:
    active: true
  EmptyFunctionBlock:
    active: true
  EmptyIfBlock:
    active: true
  EmptyInitBlock:
    active: true
  EmptySecondaryConstructor:
    active: true
  EmptyWhenBlock:
    active: true
  EmptyWhileBlock:
    active: true

complexity:
  active: true
  LongMethod:
    threshold: 20
  LongParameterList:
    threshold: 5
  LargeClass:
    threshold: 150
  ComplexMethod:
    threshold: 10
  TooManyFunctions:
    threshold: 10
  ComplexCondition:
    threshold: 3
  LabeledExpression:
    active: false
  StringLiteralDuplication:
    active: false
    threshold: 2
    ignoreAnnotation: true
    excludeStringsWithLessThan5Characters: true
    ignoreStringsRegex: '$^'

code-smell:
  active: true
  FeatureEnvy:
    threshold: 0.5
    weight: 0.45
    base: 0.5

formatting:
  active: true
  useTabs: true
  Indentation:
    active: false
    indentSize: 4
  ConsecutiveBlankLines:
    active: true
    autoCorrect: true
  MultipleSpaces:
    active: true
    autoCorrect: true
  SpacingAfterComma:
    active: true
    autoCorrect: true
  SpacingAfterKeyword:
    active: true
    autoCorrect: true
  SpacingAroundColon:
    active: true
    autoCorrect: true
  SpacingAroundCurlyBraces:
    active: true
    autoCorrect: true
  SpacingAroundOperator:
    active: true
    autoCorrect: true
  TrailingSpaces:
    active: true
    autoCorrect: true
  UnusedImports:
    active: true
    autoCorrect: true
  OptionalSemicolon:
    active: true
    autoCorrect: true
  OptionalUnit:
    active: true
    autoCorrect: true
  ExpressionBodySyntax:
    active: false
    autoCorrect: false
  ExpressionBodySyntaxLineBreaks:
    active: false
    autoCorrect: false
  OptionalReturnKeyword:
    active: true
    autoCorrect: false

style:
  active: true
  ReturnCount:
    active: true
    max: 2
  NewLineAtEndOfFile:
    active: true
  OptionalAbstractKeyword:
    active: true
  OptionalWhenBraces:
    active: false
  EqualsNullCall:
    active: false
  ForbiddenComment:
    active: true
    values: 'TODO:,FIXME:,STOPSHIP:'
  ForbiddenImport:
    active: false
    imports: ''
  ModifierOrder:
    active: true
  MagicNumber:
    active: true
    ignoreNumbers: '-1,0,1,2'
    ignoreHashCodeFunction: false
    ignorePropertyDeclaration: false
    ignoreAnnotation: false
  WildcardImport:
    active: true
  SafeCast:
    active: true
  MaxLineLength:
    active: true
    maxLineLength: 120
    excludePackageStatements: false
    excludeImportStatements: false
  PackageNaming:
    active: true
    packagePattern: '^[a-z]+(\.[a-z][a-z0-9]*)*$'
  ClassNaming:
    active: true
    classPattern: '[A-Z$][a-zA-Z$]*'
  EnumNaming:
    active: true
    enumEntryPattern: '^[A-Z$][a-zA-Z_$]*$'
  FunctionNaming :
    active: true
    functionPattern: '^[a-z$][a-zA-Z$0-9]*$'
  FunctionMaxLength:
    active: false
    maximumFunctionNameLength: 30
  FunctionMinLength:
    active: false
    minimumFunctionNameLength: 3
  VariableNaming :
    active: true
    variablePattern: '^(_)?[a-z$][a-zA-Z$0-9]*$'
  ConstantNaming :
    active: true
    constantPattern: '^([A-Z_]*|serialVersionUID)$'
  VariableMaxLength:
    active: false
    maximumVariableNameLength: 30
  VariableMinLength:
    active: false
    minimumVariableNameLength: 3
  ProtectedMemberInFinalClass:
    active: false
  UnnecessaryParentheses:
    active: false

comments:
  active: true
  CommentOverPrivateMethod:
    active: true
  CommentOverPrivateProperty:
    active: true
  UndocumentedPublicClass:
    active: false
    searchInNestedClass: true
    searchInInnerClass: true
    searchInInnerObject: true
    searchInInnerInterface: true
  UndocumentedPublicFunction:
    active: false

# *experimental feature*
# Migration rules can be defined in the same config file or a new one
migration:
  active: true
  imports:
    # your.package.Class: new.package.or.Class
    # for example:
    # io.gitlab.arturbosch.detekt.api.Rule: io.gitlab.arturbosch.detekt.rule.Rule