• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1build:
2  maxIssues: 0
3  weights:
4    # complexity: 2
5    # LongParameterList: 1
6    # style: 1
7    # comments: 1
8
9processors:
10  active: true
11  exclude:
12  # - 'FunctionCountProcessor'
13  # - 'PropertyCountProcessor'
14  # - 'ClassCountProcessor'
15  # - 'PackageCountProcessor'
16  # - 'KtFileCountProcessor'
17
18console-reports:
19  active: true
20  exclude:
21  #  - 'ProjectStatisticsReport'
22  #  - 'ComplexityReport'
23  #  - 'NotificationReport'
24  #  - 'FindingsReport'
25  #  - 'BuildFailureReport'
26
27comments:
28  active: true
29  excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
30  CommentOverPrivateFunction:
31    active: false
32  CommentOverPrivateProperty:
33    active: false
34  EndOfSentenceFormat:
35    active: false
36    endOfSentenceFormat: ([.?!][ \t\n\r\f<])|([.?!:]$)
37  UndocumentedPublicClass:
38    active: false
39    searchInNestedClass: true
40    searchInInnerClass: true
41    searchInInnerObject: true
42    searchInInnerInterface: true
43  UndocumentedPublicFunction:
44    active: false
45
46complexity:
47  active: true
48  ComplexCondition:
49    active: true
50    threshold: 4
51  ComplexInterface:
52    active: false
53    threshold: 10
54    includeStaticDeclarations: false
55  ComplexMethod:
56    #LeakCanary - increased allowed complexity from 10 to 30; enabled ignores
57    active: true
58    threshold: 30
59    ignoreSingleWhenExpression: true
60    ignoreSimpleWhenEntries: true
61  LabeledExpression:
62    active: false
63    ignoredLabels: ""
64  LargeClass:
65    active: true
66    threshold: 600
67  LongMethod:
68    #LeakCanary - increased from 60 to 90
69    active: true
70    threshold: 90
71  LongParameterList:
72    #LeakCanary - enabled ignore
73    active: true
74    threshold: 6
75    ignoreDefaultParameters: true
76  MethodOverloading:
77    active: false
78    threshold: 6
79  NestedBlockDepth:
80    #LeakCanary - increased from 4 to 7
81    active: true
82    threshold: 7
83  StringLiteralDuplication:
84    active: false
85    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
86    threshold: 3
87    ignoreAnnotation: true
88    excludeStringsWithLessThan5Characters: true
89    ignoreStringsRegex: '$^'
90  TooManyFunctions:
91    #LeakCanary - increased from 11 to 12
92    active: true
93    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
94    thresholdInFiles: 50
95    thresholdInClasses: 50
96    thresholdInInterfaces: 11
97    thresholdInObjects: 50
98    thresholdInEnums: 12
99    ignoreDeprecated: false
100    ignorePrivate: false
101    ignoreOverridden: false
102
103coroutines:
104  active: true
105  GlobalCoroutineUsage:
106    active: true
107  RedundantSuspendModifier:
108    active: true
109
110empty-blocks:
111  active: true
112  EmptyCatchBlock:
113    active: true
114    allowedExceptionNameRegex: "^(_|(ignore|expected).*)"
115  EmptyClassBlock:
116    active: true
117  EmptyDefaultConstructor:
118    active: true
119  EmptyDoWhileBlock:
120    active: true
121  EmptyElseBlock:
122    active: true
123  EmptyFinallyBlock:
124    active: true
125  EmptyForBlock:
126    active: true
127  EmptyFunctionBlock:
128    #LeakCanary - allow empty overridden functions
129    active: true
130    ignoreOverridden: true
131  EmptyIfBlock:
132    active: true
133  EmptyInitBlock:
134    active: true
135  EmptyKtFile:
136    active: true
137  EmptySecondaryConstructor:
138    active: true
139  EmptyWhenBlock:
140    active: true
141  EmptyWhileBlock:
142    active: true
143
144exceptions:
145  active: true
146  ExceptionRaisedInUnexpectedLocation:
147    active: false
148    methodNames: 'toString,hashCode,equals,finalize'
149  InstanceOfCheckForException:
150    active: false
151    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
152  NotImplementedDeclaration:
153    active: false
154  PrintStackTrace:
155    active: false
156  RethrowCaughtException:
157    active: false
158  ReturnFromFinally:
159    active: false
160  SwallowedException:
161    active: false
162    ignoredExceptionTypes: 'InterruptedException,NumberFormatException,ParseException,MalformedURLException'
163  ThrowingExceptionFromFinally:
164    active: false
165  ThrowingExceptionInMain:
166    active: false
167  ThrowingExceptionsWithoutMessageOrCause:
168    active: false
169    exceptions: 'IllegalArgumentException,IllegalStateException,IOException'
170  ThrowingNewInstanceOfSameException:
171    active: false
172  TooGenericExceptionCaught:
173    #LeakCanary - disabled
174    active: false
175    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
176    exceptionNames:
177     - ArrayIndexOutOfBoundsException
178     - Error
179     - Exception
180     - IllegalMonitorStateException
181     - NullPointerException
182     - IndexOutOfBoundsException
183     - RuntimeException
184     - Throwable
185    allowedExceptionNameRegex: "^(_|(ignore|expected).*)"
186  TooGenericExceptionThrown:
187    #LeakCanary - disabled
188    active: false
189    exceptionNames:
190     - Error
191     - Exception
192     - Throwable
193     - RuntimeException
194
195formatting:
196  active: true
197  android: false
198  autoCorrect: true
199  AnnotationOnSeparateLine:
200    active: false
201  ChainWrapping:
202    active: true
203    autoCorrect: true
204  CommentSpacing:
205    active: true
206    autoCorrect: true
207  Filename:
208    active: true
209  FinalNewline:
210    active: true
211    autoCorrect: true
212  ImportOrdering:
213    active: false
214  Indentation:
215    active: false
216    indentSize: 4
217    continuationIndentSize: 4
218  MaximumLineLength:
219    active: true
220    maxLineLength: 120
221  ModifierOrdering:
222    active: true
223    autoCorrect: true
224  MultiLineIfElse:
225    active: true
226    autoCorrect: true
227  NoBlankLineBeforeRbrace:
228    active: true
229    autoCorrect: true
230  NoConsecutiveBlankLines:
231    active: true
232    autoCorrect: true
233  NoEmptyClassBody:
234    active: true
235    autoCorrect: true
236  NoLineBreakAfterElse:
237    active: true
238    autoCorrect: true
239  NoLineBreakBeforeAssignment:
240    active: true
241    autoCorrect: true
242  NoMultipleSpaces:
243    active: true
244    autoCorrect: true
245  NoSemicolons:
246    active: true
247    autoCorrect: true
248  NoTrailingSpaces:
249    active: true
250    autoCorrect: true
251  NoUnitReturn:
252    active: true
253    autoCorrect: true
254  NoUnusedImports:
255    active: true
256    autoCorrect: true
257  NoWildcardImports:
258    active: true
259    autoCorrect: true
260  PackageName:
261    active: true
262    autoCorrect: true
263  ParameterListWrapping:
264    active: true
265    autoCorrect: true
266    indentSize: 4
267  SpacingAroundColon:
268    active: true
269    autoCorrect: true
270  SpacingAroundComma:
271    active: true
272    autoCorrect: true
273  SpacingAroundCurly:
274    active: true
275    autoCorrect: true
276  SpacingAroundDot:
277    active: true
278    autoCorrect: true
279  SpacingAroundKeyword:
280    active: true
281    autoCorrect: true
282  SpacingAroundOperators:
283    active: true
284    autoCorrect: true
285  SpacingAroundParens:
286    active: true
287    autoCorrect: true
288  SpacingAroundRangeOperator:
289    active: true
290    autoCorrect: true
291  StringTemplate:
292    active: true
293    autoCorrect: true
294
295naming:
296  active: true
297  ClassNaming:
298    active: true
299    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
300    classPattern: '[A-Z$][a-zA-Z0-9$]*'
301  ConstructorParameterNaming:
302    active: true
303    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
304    parameterPattern: '[a-z][A-Za-z0-9]*'
305    privateParameterPattern: '[a-z][A-Za-z0-9]*'
306    excludeClassPattern: '$^'
307  EnumNaming:
308    active: true
309    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
310    enumEntryPattern: '^[A-Z][_a-zA-Z0-9]*'
311  ForbiddenClassName:
312    active: false
313    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
314    forbiddenName: ''
315  FunctionMaxLength:
316    active: false
317    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
318    maximumFunctionNameLength: 30
319  FunctionMinLength:
320    active: false
321    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
322    minimumFunctionNameLength: 3
323  FunctionNaming:
324    active: true
325    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
326    functionPattern: '^([a-z$][a-zA-Z$0-9]*)|(`.*`)$'
327    excludeClassPattern: '$^'
328    ignoreOverridden: true
329  FunctionParameterNaming:
330    active: true
331    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
332    parameterPattern: '[a-z][A-Za-z0-9]*'
333    excludeClassPattern: '$^'
334    ignoreOverridden: true
335  InvalidPackageDeclaration:
336    active: false
337    rootPackage: ''
338  MatchingDeclarationName:
339    active: true
340  MemberNameEqualsClassName:
341    active: false
342    ignoreOverridden: true
343  ObjectPropertyNaming:
344    active: true
345    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
346    constantPattern: '[A-Za-z][_A-Za-z0-9]*'
347    propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
348    privatePropertyPattern: '(_)?[A-Za-z][_A-Za-z0-9]*'
349  PackageNaming:
350    active: true
351    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
352    packagePattern: '^[a-z]+(\.[a-z][A-Za-z0-9]*)*$'
353  TopLevelPropertyNaming:
354    active: true
355    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
356    constantPattern: '[A-Z][_A-Z0-9]*'
357    propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
358    privatePropertyPattern: '_?[A-Za-z][_A-Za-z0-9]*'
359  VariableMaxLength:
360    active: false
361    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
362    maximumVariableNameLength: 64
363  VariableMinLength:
364    active: false
365    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
366    minimumVariableNameLength: 1
367  VariableNaming:
368    active: true
369    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
370    variablePattern: '[a-z][A-Za-z0-9]*'
371    privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*'
372    excludeClassPattern: '$^'
373    ignoreOverridden: true
374
375performance:
376  active: true
377  ArrayPrimitive:
378    active: false
379  ForEachOnRange:
380    active: true
381    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
382  SpreadOperator:
383    #LeakCanary - disabled
384    active: false
385    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
386  UnnecessaryTemporaryInstantiation:
387    active: true
388
389potential-bugs:
390  active: true
391  DuplicateCaseInWhenExpression:
392    active: true
393  EqualsAlwaysReturnsTrueOrFalse:
394    active: false
395  EqualsWithHashCodeExist:
396    active: true
397  ExplicitGarbageCollectionCall:
398    #LeakCanary - we want to trigger GC manually
399    active: false
400  InvalidRange:
401    active: false
402  IteratorHasNextCallsNextMethod:
403    active: false
404  IteratorNotThrowingNoSuchElementException:
405    active: false
406  LateinitUsage:
407    active: false
408    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
409    excludeAnnotatedProperties: ""
410    ignoreOnClassesPattern: ""
411  MissingWhenCase:
412    active: false
413  RedundantElseInWhen:
414    active: false
415  UnconditionalJumpStatementInLoop:
416    active: false
417  UnreachableCode:
418    active: true
419  UnsafeCallOnNullableType:
420    active: false
421  UnsafeCast:
422    active: false
423  UselessPostfixExpression:
424    active: false
425  WrongEqualsTypeParameter:
426    active: false
427
428style:
429  active: true
430  CollapsibleIfStatements:
431    active: false
432  DataClassContainsFunctions:
433    active: false
434    conversionFunctionPrefix: 'to'
435  DataClassShouldBeImmutable:
436    active: false
437  EqualsNullCall:
438    #LeakCanary - enabled
439    active: true
440  EqualsOnSignatureLine:
441    #LeakCanary - enabled
442    active: true
443  ExplicitItLambdaParameter:
444    #LeakCanary - enabled
445    active: true
446  ExpressionBodySyntax:
447    active: false
448    includeLineWrapping: false
449  ForbiddenComment:
450    active: true
451    values: 'TODO:,FIXME:,STOPSHIP:'
452  ForbiddenImport:
453    active: false
454    imports: ''
455  ForbiddenVoid:
456    #LeakCanary - enabled
457    active: true
458    ignoreOverridden: false
459  FunctionOnlyReturningConstant:
460    active: false
461    ignoreOverridableFunction: true
462    excludedFunctions: 'describeContents'
463  LibraryCodeMustSpecifyReturnType:
464    active: false
465  LoopWithTooManyJumpStatements:
466    active: false
467    maxJumpCount: 1
468  MagicNumber:
469    #LeakCanary - disabled
470    active: false
471    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
472    ignoreNumbers: '-1,0,1,2'
473    ignoreHashCodeFunction: true
474    ignorePropertyDeclaration: false
475    ignoreConstantDeclaration: true
476    ignoreCompanionObjectPropertyDeclaration: true
477    ignoreAnnotation: false
478    ignoreNamedArgument: true
479    ignoreEnums: false
480    ignoreRanges: false
481  MandatoryBracesIfStatements:
482    #LeakCanary - enabled
483    active: true
484  MaxLineLength:
485    #LeakCanary - increased from 120 to 150
486    active: true
487    maxLineLength: 150
488    excludePackageStatements: true
489    excludeImportStatements: true
490    excludeCommentStatements: false
491  MayBeConst:
492    active: false
493  ModifierOrder:
494    active: true
495  NestedClassesVisibility:
496    active: false
497  NewLineAtEndOfFile:
498    #LeakCanary - disabled
499    active: false
500  NoTabs:
501    active: false
502  OptionalAbstractKeyword:
503    active: true
504  OptionalUnit:
505    active: false
506  OptionalWhenBraces:
507    active: false
508  PreferToOverPairSyntax:
509    active: false
510  ProtectedMemberInFinalClass:
511    active: false
512  RedundantVisibilityModifierRule:
513    active: false
514  ReturnCount:
515    active: false
516    max: 4
517    excludedFunctions: "equals"
518    excludeLabeled: false
519    excludeReturnFromLambda: true
520  SafeCast:
521    active: true
522  SerialVersionUIDInSerializableClass:
523    active: false
524  SpacingBetweenPackageAndImports:
525    active: false
526  ThrowsCount:
527    active: true
528    max: 2
529  TrailingWhitespace:
530    active: false
531  UnderscoresInNumericLiterals:
532    active: false
533    acceptableDecimalLength: 5
534  UnnecessaryAbstractClass:
535    active: false
536    excludeAnnotatedClasses: "dagger.Module"
537  UnnecessaryApply:
538    active: false
539  UnnecessaryInheritance:
540    active: false
541  UnnecessaryLet:
542    active: false
543  UnnecessaryParentheses:
544    active: false
545  UntilInsteadOfRangeTo:
546    active: false
547  UnusedImports:
548    active: false
549  UnusedPrivateClass:
550    active: false
551  UnusedPrivateMember:
552    active: false
553    allowedNames: "(_|ignored|expected|serialVersionUID)"
554  UseCheckOrError:
555    active: false
556  UseDataClass:
557    active: false
558    excludeAnnotatedClasses: ""
559  UseRequire:
560    active: false
561  UselessCallOnNotNull:
562    active: false
563  UtilityClassWithPublicConstructor:
564    active: false
565  VarCouldBeVal:
566    active: false
567  WildcardImport:
568    active: true
569    excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
570    excludeImports: 'java.util.*,kotlinx.android.synthetic.*'
571