| build: |
| maxIssues: 0 |
| weights: |
| # complexity: 2 |
| # LongParameterList: 1 |
| # style: 1 |
| # comments: 1 |
| |
| processors: |
| active: true |
| exclude: |
| # - 'FunctionCountProcessor' |
| # - 'PropertyCountProcessor' |
| # - 'ClassCountProcessor' |
| # - 'PackageCountProcessor' |
| # - 'KtFileCountProcessor' |
| |
| console-reports: |
| active: true |
| exclude: |
| # - 'ProjectStatisticsReport' |
| # - 'ComplexityReport' |
| # - 'NotificationReport' |
| # - 'FindingsReport' |
| # - 'BuildFailureReport' |
| |
| comments: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| CommentOverPrivateFunction: |
| active: false |
| CommentOverPrivateProperty: |
| active: false |
| EndOfSentenceFormat: |
| active: false |
| endOfSentenceFormat: ([.?!][ \t\n\r\f<])|([.?!:]$) |
| UndocumentedPublicClass: |
| active: false |
| searchInNestedClass: true |
| searchInInnerClass: true |
| searchInInnerObject: true |
| searchInInnerInterface: true |
| UndocumentedPublicFunction: |
| active: false |
| |
| complexity: |
| active: true |
| ComplexCondition: |
| active: true |
| threshold: 4 |
| ComplexInterface: |
| active: false |
| threshold: 10 |
| includeStaticDeclarations: false |
| ComplexMethod: |
| #LeakCanary - increased allowed complexity from 10 to 30; enabled ignores |
| active: true |
| threshold: 30 |
| ignoreSingleWhenExpression: true |
| ignoreSimpleWhenEntries: true |
| LabeledExpression: |
| active: false |
| ignoredLabels: "" |
| LargeClass: |
| active: true |
| threshold: 600 |
| LongMethod: |
| #LeakCanary - increased from 60 to 90 |
| active: true |
| threshold: 90 |
| LongParameterList: |
| #LeakCanary - enabled ignore |
| active: true |
| threshold: 6 |
| ignoreDefaultParameters: true |
| MethodOverloading: |
| active: false |
| threshold: 6 |
| NestedBlockDepth: |
| #LeakCanary - increased from 4 to 7 |
| active: true |
| threshold: 7 |
| StringLiteralDuplication: |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| threshold: 3 |
| ignoreAnnotation: true |
| excludeStringsWithLessThan5Characters: true |
| ignoreStringsRegex: '$^' |
| TooManyFunctions: |
| #LeakCanary - increased from 11 to 12 |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| thresholdInFiles: 12 |
| thresholdInClasses: 12 |
| thresholdInInterfaces: 12 |
| thresholdInObjects: 12 |
| thresholdInEnums: 12 |
| ignoreDeprecated: false |
| ignorePrivate: false |
| ignoreOverridden: false |
| |
| coroutines: |
| active: true |
| GlobalCoroutineUsage: |
| active: true |
| RedundantSuspendModifier: |
| active: true |
| |
| empty-blocks: |
| active: true |
| EmptyCatchBlock: |
| active: true |
| allowedExceptionNameRegex: "^(_|(ignore|expected).*)" |
| EmptyClassBlock: |
| active: true |
| EmptyDefaultConstructor: |
| active: true |
| EmptyDoWhileBlock: |
| active: true |
| EmptyElseBlock: |
| active: true |
| EmptyFinallyBlock: |
| active: true |
| EmptyForBlock: |
| active: true |
| EmptyFunctionBlock: |
| #LeakCanary - allow empty overridden functions |
| active: true |
| ignoreOverridden: true |
| EmptyIfBlock: |
| active: true |
| EmptyInitBlock: |
| active: true |
| EmptyKtFile: |
| active: true |
| EmptySecondaryConstructor: |
| active: true |
| EmptyWhenBlock: |
| active: true |
| EmptyWhileBlock: |
| active: true |
| |
| exceptions: |
| active: true |
| ExceptionRaisedInUnexpectedLocation: |
| active: false |
| methodNames: 'toString,hashCode,equals,finalize' |
| InstanceOfCheckForException: |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| NotImplementedDeclaration: |
| active: false |
| PrintStackTrace: |
| active: false |
| RethrowCaughtException: |
| active: false |
| ReturnFromFinally: |
| active: false |
| SwallowedException: |
| active: false |
| ignoredExceptionTypes: 'InterruptedException,NumberFormatException,ParseException,MalformedURLException' |
| ThrowingExceptionFromFinally: |
| active: false |
| ThrowingExceptionInMain: |
| active: false |
| ThrowingExceptionsWithoutMessageOrCause: |
| active: false |
| exceptions: 'IllegalArgumentException,IllegalStateException,IOException' |
| ThrowingNewInstanceOfSameException: |
| active: false |
| TooGenericExceptionCaught: |
| #LeakCanary - disabled |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| exceptionNames: |
| - ArrayIndexOutOfBoundsException |
| - Error |
| - Exception |
| - IllegalMonitorStateException |
| - NullPointerException |
| - IndexOutOfBoundsException |
| - RuntimeException |
| - Throwable |
| allowedExceptionNameRegex: "^(_|(ignore|expected).*)" |
| TooGenericExceptionThrown: |
| #LeakCanary - disabled |
| active: false |
| exceptionNames: |
| - Error |
| - Exception |
| - Throwable |
| - RuntimeException |
| |
| formatting: |
| active: true |
| android: false |
| autoCorrect: true |
| AnnotationOnSeparateLine: |
| active: false |
| ChainWrapping: |
| active: true |
| autoCorrect: true |
| CommentSpacing: |
| active: true |
| autoCorrect: true |
| Filename: |
| active: true |
| FinalNewline: |
| active: true |
| autoCorrect: true |
| ImportOrdering: |
| active: false |
| Indentation: |
| active: false |
| indentSize: 4 |
| continuationIndentSize: 4 |
| MaximumLineLength: |
| active: true |
| maxLineLength: 120 |
| ModifierOrdering: |
| active: true |
| autoCorrect: true |
| MultiLineIfElse: |
| active: true |
| autoCorrect: true |
| NoBlankLineBeforeRbrace: |
| active: true |
| autoCorrect: true |
| NoConsecutiveBlankLines: |
| active: true |
| autoCorrect: true |
| NoEmptyClassBody: |
| active: true |
| autoCorrect: true |
| NoLineBreakAfterElse: |
| active: true |
| autoCorrect: true |
| NoLineBreakBeforeAssignment: |
| active: true |
| autoCorrect: true |
| NoMultipleSpaces: |
| active: true |
| autoCorrect: true |
| NoSemicolons: |
| active: true |
| autoCorrect: true |
| NoTrailingSpaces: |
| active: true |
| autoCorrect: true |
| NoUnitReturn: |
| active: true |
| autoCorrect: true |
| NoUnusedImports: |
| active: true |
| autoCorrect: true |
| NoWildcardImports: |
| active: true |
| autoCorrect: true |
| PackageName: |
| active: true |
| autoCorrect: true |
| ParameterListWrapping: |
| active: true |
| autoCorrect: true |
| indentSize: 4 |
| SpacingAroundColon: |
| active: true |
| autoCorrect: true |
| SpacingAroundComma: |
| active: true |
| autoCorrect: true |
| SpacingAroundCurly: |
| active: true |
| autoCorrect: true |
| SpacingAroundDot: |
| active: true |
| autoCorrect: true |
| SpacingAroundKeyword: |
| active: true |
| autoCorrect: true |
| SpacingAroundOperators: |
| active: true |
| autoCorrect: true |
| SpacingAroundParens: |
| active: true |
| autoCorrect: true |
| SpacingAroundRangeOperator: |
| active: true |
| autoCorrect: true |
| StringTemplate: |
| active: true |
| autoCorrect: true |
| |
| naming: |
| active: true |
| ClassNaming: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| classPattern: '[A-Z$][a-zA-Z0-9$]*' |
| ConstructorParameterNaming: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| parameterPattern: '[a-z][A-Za-z0-9]*' |
| privateParameterPattern: '[a-z][A-Za-z0-9]*' |
| excludeClassPattern: '$^' |
| EnumNaming: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| enumEntryPattern: '^[A-Z][_a-zA-Z0-9]*' |
| ForbiddenClassName: |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| forbiddenName: '' |
| FunctionMaxLength: |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| maximumFunctionNameLength: 30 |
| FunctionMinLength: |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| minimumFunctionNameLength: 3 |
| FunctionNaming: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| functionPattern: '^([a-z$][a-zA-Z$0-9]*)|(`.*`)$' |
| excludeClassPattern: '$^' |
| ignoreOverridden: true |
| FunctionParameterNaming: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| parameterPattern: '[a-z][A-Za-z0-9]*' |
| excludeClassPattern: '$^' |
| ignoreOverridden: true |
| InvalidPackageDeclaration: |
| active: false |
| rootPackage: '' |
| MatchingDeclarationName: |
| active: true |
| MemberNameEqualsClassName: |
| active: false |
| ignoreOverridden: true |
| ObjectPropertyNaming: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| constantPattern: '[A-Za-z][_A-Za-z0-9]*' |
| propertyPattern: '[A-Za-z][_A-Za-z0-9]*' |
| privatePropertyPattern: '(_)?[A-Za-z][_A-Za-z0-9]*' |
| PackageNaming: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| packagePattern: '^[a-z]+(\.[a-z][A-Za-z0-9]*)*$' |
| TopLevelPropertyNaming: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| constantPattern: '[A-Z][_A-Z0-9]*' |
| propertyPattern: '[A-Za-z][_A-Za-z0-9]*' |
| privatePropertyPattern: '_?[A-Za-z][_A-Za-z0-9]*' |
| VariableMaxLength: |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| maximumVariableNameLength: 64 |
| VariableMinLength: |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| minimumVariableNameLength: 1 |
| VariableNaming: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| variablePattern: '[a-z][A-Za-z0-9]*' |
| privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*' |
| excludeClassPattern: '$^' |
| ignoreOverridden: true |
| |
| performance: |
| active: true |
| ArrayPrimitive: |
| active: false |
| ForEachOnRange: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| SpreadOperator: |
| #LeakCanary - disabled |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| UnnecessaryTemporaryInstantiation: |
| active: true |
| |
| potential-bugs: |
| active: true |
| DuplicateCaseInWhenExpression: |
| active: true |
| EqualsAlwaysReturnsTrueOrFalse: |
| active: false |
| EqualsWithHashCodeExist: |
| active: true |
| ExplicitGarbageCollectionCall: |
| #LeakCanary - we want to trigger GC manually |
| active: false |
| InvalidRange: |
| active: false |
| IteratorHasNextCallsNextMethod: |
| active: false |
| IteratorNotThrowingNoSuchElementException: |
| active: false |
| LateinitUsage: |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| excludeAnnotatedProperties: "" |
| ignoreOnClassesPattern: "" |
| MissingWhenCase: |
| active: false |
| RedundantElseInWhen: |
| active: false |
| UnconditionalJumpStatementInLoop: |
| active: false |
| UnreachableCode: |
| active: true |
| UnsafeCallOnNullableType: |
| active: false |
| UnsafeCast: |
| active: false |
| UselessPostfixExpression: |
| active: false |
| WrongEqualsTypeParameter: |
| active: false |
| |
| style: |
| active: true |
| CollapsibleIfStatements: |
| active: false |
| DataClassContainsFunctions: |
| active: false |
| conversionFunctionPrefix: 'to' |
| DataClassShouldBeImmutable: |
| active: false |
| EqualsNullCall: |
| #LeakCanary - enabled |
| active: true |
| EqualsOnSignatureLine: |
| #LeakCanary - enabled |
| active: true |
| ExplicitItLambdaParameter: |
| #LeakCanary - enabled |
| active: true |
| ExpressionBodySyntax: |
| active: false |
| includeLineWrapping: false |
| ForbiddenComment: |
| active: true |
| values: 'TODO:,FIXME:,STOPSHIP:' |
| ForbiddenImport: |
| active: false |
| imports: '' |
| ForbiddenVoid: |
| #LeakCanary - enabled |
| active: true |
| ignoreOverridden: false |
| FunctionOnlyReturningConstant: |
| active: false |
| ignoreOverridableFunction: true |
| excludedFunctions: 'describeContents' |
| LibraryCodeMustSpecifyReturnType: |
| active: false |
| LoopWithTooManyJumpStatements: |
| active: false |
| maxJumpCount: 1 |
| MagicNumber: |
| #LeakCanary - disabled |
| active: false |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| ignoreNumbers: '-1,0,1,2' |
| ignoreHashCodeFunction: true |
| ignorePropertyDeclaration: false |
| ignoreConstantDeclaration: true |
| ignoreCompanionObjectPropertyDeclaration: true |
| ignoreAnnotation: false |
| ignoreNamedArgument: true |
| ignoreEnums: false |
| ignoreRanges: false |
| MandatoryBracesIfStatements: |
| #LeakCanary - enabled |
| active: true |
| MaxLineLength: |
| #LeakCanary - increased from 120 to 150 |
| active: true |
| maxLineLength: 150 |
| excludePackageStatements: true |
| excludeImportStatements: true |
| excludeCommentStatements: false |
| MayBeConst: |
| active: false |
| ModifierOrder: |
| active: true |
| NestedClassesVisibility: |
| active: false |
| NewLineAtEndOfFile: |
| #LeakCanary - disabled |
| active: false |
| NoTabs: |
| active: false |
| OptionalAbstractKeyword: |
| active: true |
| OptionalUnit: |
| active: false |
| OptionalWhenBraces: |
| active: false |
| PreferToOverPairSyntax: |
| active: false |
| ProtectedMemberInFinalClass: |
| active: false |
| RedundantVisibilityModifierRule: |
| active: false |
| ReturnCount: |
| #LeakCanary - increased from 2 to 4 |
| active: true |
| max: 4 |
| excludedFunctions: "equals" |
| excludeLabeled: false |
| excludeReturnFromLambda: true |
| SafeCast: |
| active: true |
| SerialVersionUIDInSerializableClass: |
| active: false |
| SpacingBetweenPackageAndImports: |
| active: false |
| ThrowsCount: |
| active: true |
| max: 2 |
| TrailingWhitespace: |
| active: false |
| UnderscoresInNumericLiterals: |
| active: false |
| acceptableDecimalLength: 5 |
| UnnecessaryAbstractClass: |
| active: false |
| excludeAnnotatedClasses: "dagger.Module" |
| UnnecessaryApply: |
| active: false |
| UnnecessaryInheritance: |
| active: false |
| UnnecessaryLet: |
| active: false |
| UnnecessaryParentheses: |
| active: false |
| UntilInsteadOfRangeTo: |
| active: false |
| UnusedImports: |
| active: false |
| UnusedPrivateClass: |
| active: false |
| UnusedPrivateMember: |
| active: false |
| allowedNames: "(_|ignored|expected|serialVersionUID)" |
| UseCheckOrError: |
| active: false |
| UseDataClass: |
| active: false |
| excludeAnnotatedClasses: "" |
| UseRequire: |
| active: false |
| UselessCallOnNotNull: |
| active: false |
| UtilityClassWithPublicConstructor: |
| active: false |
| VarCouldBeVal: |
| active: false |
| WildcardImport: |
| active: true |
| excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt" |
| excludeImports: 'java.util.*,kotlinx.android.synthetic.*' |