config: validation: true warningsAsErrors: false checkExhaustiveness: false processors: active: false console-reports: active: true exclude: - 'ProjectStatisticsReport' - 'ComplexityReport' - 'NotificationReport' - 'IssuesReport' - 'FileBasedIssuesReport' # - 'LiteIssuesReport' comments: active: true AbsentOrWrongFileLicense: active: false licenseTemplateIsRegex: false licenseTemplate: '' DeprecatedBlockTag: active: true DocumentationOverPrivateFunction: active: false DocumentationOverPrivateProperty: active: false EndOfSentenceFormat: active: false endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)' KDocReferencesNonPublicProperty: active: true excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] OutdatedDocumentation: active: false matchTypeParameters: true matchDeclarationsOrder: true allowParamOnConstructorProperties: false UndocumentedPublicClass: active: true excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] searchInNestedClass: true searchInInnerClass: true searchInInnerObject: true searchInInnerInterface: true searchInProtectedClass: false ignoreDefaultCompanionObject: true UndocumentedPublicFunction: active: true excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] searchProtectedFunction: false UndocumentedPublicProperty: active: false excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] searchProtectedProperty: false ignoreEnumEntries: false complexity: active: true CognitiveComplexMethod: active: false allowedComplexity: 20 ComplexCondition: active: true allowedConditions: 4 ComplexInterface: active: false allowedDefinitions: 10 includeStaticDeclarations: false includePrivateDeclarations: false ignoreOverloaded: false CyclomaticComplexMethod: active: false allowedComplexity: 15 ignoreSingleWhenExpression: false ignoreSimpleWhenEntries: false ignoreNestingFunctions: false ignoreLocalFunctions: false nestingFunctions: - 'also' - 'apply' - 'forEach' - 'isNotNull' - 'ifNull' - 'let' - 'run' - 'use' - 'with' LabeledExpression: active: false ignoredLabels: [] LargeClass: active: false allowedLines: 700 LongMethod: active: false allowedLines: 110 LongParameterList: active: false allowedFunctionParameters: 8 allowedConstructorParameters: 8 ignoreDefaultParameters: false ignoreDataClasses: true ignoreAnnotatedParameter: [] MethodOverloading: active: false allowedOverloads: 6 NamedArguments: active: false allowedArguments: 3 ignoreMethods: [] ignoreArgumentsMatchingNames: false NestedBlockDepth: active: true allowedDepth: 4 NestedScopeFunctions: active: false allowedDepth: 1 functions: - 'kotlin.apply' - 'kotlin.run' - 'kotlin.with' - 'kotlin.let' - 'kotlin.also' ReplaceSafeCallChainWithRun: active: false StringLiteralDuplication: active: false excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] allowedDuplications: 3 ignoreAnnotation: true allowedWithLengthLessThan: 5 ignoreStringsRegex: '$^' TooManyFunctions: active: false excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] allowedFunctionsPerFile: 20 allowedFunctionsPerClass: 20 allowedFunctionsPerInterface: 20 allowedFunctionsPerObject: 20 allowedFunctionsPerEnum: 11 ignoreDeprecated: true ignorePrivate: true ignoreInternal: true ignoreOverridden: false ignoreAnnotatedFunctions: [] coroutines: active: true CoroutineLaunchedInTestWithoutRunTest: active: false GlobalCoroutineUsage: active: true InjectDispatcher: active: false dispatcherNames: - 'IO' - 'Default' - 'Unconfined' RedundantSuspendModifier: active: true SleepInsteadOfDelay: active: true SuspendFunInFinallySection: active: false SuspendFunSwallowedCancellation: active: false SuspendFunWithCoroutineScopeReceiver: active: false aliases: ['SuspendFunctionOnCoroutineScope'] SuspendFunWithFlowReturnType: 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: active: true ignoreOverridden: false EmptyIfBlock: active: true EmptyInitBlock: active: true EmptyKotlinFile: active: true EmptySecondaryConstructor: active: true EmptyTryBlock: active: true EmptyWhenBlock: active: true EmptyWhileBlock: active: true exceptions: active: true ErrorUsageWithThrowable: active: false ExceptionRaisedInUnexpectedLocation: active: true methodNames: - 'equals' - 'finalize' - 'hashCode' - 'toString' InstanceOfCheckForException: active: false excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] NotImplementedDeclaration: active: true ObjectExtendsThrowable: active: true PrintStackTrace: active: true RethrowCaughtException: active: true ReturnFromFinally: active: true ignoreLabeled: false SwallowedException: active: true ignoredExceptionTypes: - 'InterruptedException' - 'MalformedURLException' - 'NumberFormatException' - 'ParseException' allowedExceptionNameRegex: '_|(ignore|expected).*' ThrowingExceptionFromFinally: active: true ThrowingExceptionInMain: active: false ThrowingExceptionsWithoutMessageOrCause: active: true excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] exceptions: - 'ArrayIndexOutOfBoundsException' - 'Exception' - 'IllegalArgumentException' - 'IllegalMonitorStateException' - 'IllegalStateException' - 'IndexOutOfBoundsException' - 'NullPointerException' - 'RuntimeException' - 'Throwable' ThrowingNewInstanceOfSameException: active: true TooGenericExceptionCaught: active: false excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] exceptionNames: - 'ArrayIndexOutOfBoundsException' - 'Error' - 'Exception' - 'IllegalMonitorStateException' - 'IndexOutOfBoundsException' - 'NullPointerException' - 'RuntimeException' - 'Throwable' allowedExceptionNameRegex: '_|(ignore|expected).*' TooGenericExceptionThrown: active: false exceptionNames: - 'Error' - 'Exception' - 'RuntimeException' - 'Throwable' naming: active: true BooleanPropertyNaming: active: false allowedPattern: '^(is|has|are)' ClassNaming: active: true aliases: ['ClassName'] classPattern: '[A-Z][a-zA-Z0-9]*' ConstructorParameterNaming: active: true parameterPattern: '[a-z][A-Za-z0-9]*' privateParameterPattern: '[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' EnumNaming: active: true aliases: ['EnumEntryName'] enumEntryPattern: '[A-Z][_a-zA-Z0-9]*' ForbiddenClassName: active: false forbiddenName: [] FunctionNameMaxLength: active: false aliases: ['FunctionMaxNameLength'] maximumFunctionNameLength: 30 FunctionNameMinLength: active: false aliases: ['FunctionMinNameLength'] minimumFunctionNameLength: 3 FunctionNaming: active: true aliases: ['FunctionName'] excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] functionPattern: '[a-z][a-zA-Z0-9]*' excludeClassPattern: '$^' FunctionParameterNaming: active: true parameterPattern: '[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' InvalidPackageDeclaration: active: true aliases: ['PackageDirectoryMismatch'] rootPackage: '' requireRootInDeclaration: false LambdaParameterNaming: active: false parameterPattern: '[a-z][A-Za-z0-9]*|_' MatchingDeclarationName: active: false mustBeFirst: true multiplatformTargets: - 'ios' - 'android' - 'js' - 'jvm' - 'native' - 'iosArm64' - 'iosX64' - 'macosX64' - 'mingwX64' - 'linuxX64' MemberNameEqualsClassName: active: true ignoreOverridden: true NoNameShadowing: active: true NonBooleanPropertyPrefixedWithIs: active: true ObjectPropertyNaming: active: true aliases: ['ObjectPropertyName'] 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 aliases: ['PackageName'] packagePattern: '[a-z]+(\.[a-z][A-Za-z0-9]*)*' TopLevelPropertyNaming: active: true 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 maximumVariableNameLength: 64 VariableMinLength: active: false minimumVariableNameLength: 1 VariableNaming: active: false aliases: ['PropertyName'] variablePattern: '[a-z][A-Za-z0-9]*' privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' performance: active: true ArrayPrimitive: active: true CouldBeSequence: active: false allowedOperations: 3 ForEachOnRange: active: true excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] SpreadOperator: active: false excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] UnnecessaryInitOnArray: active: false UnnecessaryPartOfBinaryExpression: active: true UnnecessaryTemporaryInstantiation: active: true UnnecessaryTypeCasting: active: true potential-bugs: active: true AvoidReferentialEquality: active: true forbiddenTypePatterns: - 'kotlin.String' CastNullableToNonNullableType: active: true ignorePlatformTypes: true CastToNullableType: active: false CharArrayToStringCall: active: false Deprecation: active: false aliases: ['DEPRECATION'] DontDowncastCollectionTypes: active: false DoubleMutabilityForCollection: active: true aliases: ['DoubleMutability'] mutableTypes: - 'kotlin.collections.MutableList' - 'kotlin.collections.MutableMap' - 'kotlin.collections.MutableSet' - 'java.util.ArrayList' - 'java.util.LinkedHashSet' - 'java.util.HashSet' - 'java.util.LinkedHashMap' - 'java.util.HashMap' ElseCaseInsteadOfExhaustiveWhen: active: false ignoredSubjectTypes: [] EqualsAlwaysReturnsTrueOrFalse: active: true EqualsWithHashCodeExist: active: true ExitOutsideMain: active: false ExplicitGarbageCollectionCall: active: true HasPlatformType: active: true IgnoredReturnValue: active: true restrictToConfig: true returnValueAnnotations: - 'CheckResult' - '*.CheckResult' - 'CheckReturnValue' - '*.CheckReturnValue' ignoreReturnValueAnnotations: - 'CanIgnoreReturnValue' - '*.CanIgnoreReturnValue' returnValueTypes: - 'kotlin.Function*' - 'kotlin.sequences.Sequence' - 'kotlinx.coroutines.flow.*Flow' - 'java.util.stream.*Stream' ignoreFunctionCall: [] ImplicitDefaultLocale: active: true ImplicitUnitReturnType: active: false ignoreAnnotated: ['Test'] allowExplicitReturnType: true InvalidRange: active: true IteratorHasNextCallsNextMethod: active: true IteratorNotThrowingNoSuchElementException: active: true LateinitUsage: active: false excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] ignoreOnClassesPattern: '' MapGetWithNotNullAssertionOperator: active: true MissingPackageDeclaration: active: true excludes: ['**/*.kts'] MissingSuperCall: active: false mustInvokeSuperAnnotations: - 'androidx.annotation.CallSuper' - 'javax.annotation.OverridingMethodsMustInvokeSuper' MissingUseCall: active: false ignoreClass: - 'java.io.ByteArrayInputStream' - 'java.io.ByteArrayOutputStream' NullCheckOnMutableProperty: active: false NullableToStringCall: active: false PropertyUsedBeforeDeclaration: active: false UnconditionalJumpStatementInLoop: active: false UnnamedParameterUse: active: false allowAdjacentDifferentTypeParams: true allowSingleParamUse: true ignoreArgumentsMatchingNames: true ignoreFunctionCall: [] UnnecessaryNotNullCheck: active: false UnnecessaryNotNullOperator: active: true UnnecessarySafeCall: active: true UnreachableCatchBlock: active: true UnreachableCode: active: true UnsafeCallOnNullableType: active: true excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] UnsafeCast: active: true aliases: ['UNCHECKED_CAST'] UnusedUnaryOperator: active: true UselessPostfixExpression: active: true WrongEqualsTypeParameter: active: true style: active: true AbstractClassCanBeConcreteClass: active: true AbstractClassCanBeInterface: active: true AlsoCouldBeApply: active: false BracesOnIfStatements: active: false singleLine: 'never' multiLine: 'always' BracesOnWhenStatements: active: false singleLine: 'necessary' multiLine: 'consistent' CanBeNonNullable: active: false CascadingCallWrapping: active: false includeElvis: true ClassOrdering: active: false CollapsibleIfStatements: active: false DataClassContainsFunctions: active: false conversionFunctionPrefix: - 'to' allowOperators: false DataClassShouldBeImmutable: active: false DestructuringDeclarationWithTooManyEntries: active: true maxDestructuringEntries: 3 DoubleNegativeExpression: active: false DoubleNegativeLambda: active: false negativeFunctions: - reason: 'Use `takeIf` instead.' value: 'takeUnless' - reason: 'Use `all` instead.' value: 'none' negativeFunctionNameParts: - 'not' - 'non' EqualsNullCall: active: true EqualsOnSignatureLine: active: false ExplicitCollectionElementAccessMethod: active: false ExplicitItLambdaMultipleParameters: active: true ExplicitItLambdaParameter: active: false ExpressionBodySyntax: active: false includeLineWrapping: false ForbiddenAnnotation: active: true annotations: - reason: 'it is a java annotation. Use `Suppress` instead.' value: 'java.lang.SuppressWarnings' - reason: 'it is a java annotation. Use `kotlin.Deprecated` instead.' value: 'java.lang.Deprecated' - reason: 'it is a java annotation. Use `kotlin.annotation.MustBeDocumented` instead.' value: 'java.lang.annotation.Documented' - reason: 'it is a java annotation. Use `kotlin.annotation.Target` instead.' value: 'java.lang.annotation.Target' - reason: 'it is a java annotation. Use `kotlin.annotation.Retention` instead.' value: 'java.lang.annotation.Retention' - reason: 'it is a java annotation. Use `kotlin.annotation.Repeatable` instead.' value: 'java.lang.annotation.Repeatable' ForbiddenComment: active: true comments: - reason: 'Forbidden FIXME todo marker in comment, please fix the problem.' value: 'FIXME:' - reason: 'Forbidden STOPSHIP todo marker in comment, please address the problem before shipping the code.' value: 'STOPSHIP:' - reason: 'Forbidden TODO todo marker in comment, please do the changes.' value: 'TODO:' allowedPatterns: '' ForbiddenImport: active: false forbiddenImports: [] allowedImports: [] ForbiddenMethodCall: active: true methods: - reason: 'print does not allow you to configure the output stream. Use a logger instead.' value: 'kotlin.io.print' - reason: 'println does not allow you to configure the output stream. Use a logger instead.' value: 'kotlin.io.println' - reason: 'using `BigDecimal(Double)` can result in unexpected floating point precision behavior. Use `BigDecimal.valueOf(Double)` or `String.toBigDecimalOrNull()` instead.' value: 'java.math.BigDecimal.(kotlin.Double)' - reason: 'using `BigDecimal(String)` can result in a `NumberFormatException`. Use `String.toBigDecimalOrNull()`' value: 'java.math.BigDecimal.(kotlin.String)' - reason: 'It is marked as obsolete. Use `kotlin.time.measureTime` instead.' value: 'kotlin.system.measureTimeMillis' ForbiddenNamedParam: active: false methods: [] ForbiddenOptIn: active: false markerClasses: [] ForbiddenSuppress: active: false rules: [] ForbiddenVoid: active: true ignoreOverridden: false ignoreUsageInGenerics: false FunctionOnlyReturningConstant: active: true ignoreOverridableFunction: true ignoreActualFunction: true excludedFunctions: [] LoopWithTooManyJumpStatements: active: true maxJumpCount: 1 MagicNumber: active: false excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/*.kts'] ignoreNumbers: - '-1' - '0' - '1' - '2' ignoreHashCodeFunction: true ignorePropertyDeclaration: true ignoreLocalVariableDeclaration: true ignoreConstantDeclaration: true ignoreCompanionObjectPropertyDeclaration: true ignoreAnnotation: false ignoreNamedArgument: true ignoreEnums: false ignoreRanges: false ignoreExtensionFunctions: true MandatoryBracesLoops: active: false MaxChainedCallsOnSameLine: active: false maxChainedCalls: 5 MaxLineLength: active: false maxLineLength: 120 excludePackageStatements: true excludeImportStatements: true excludeCommentStatements: false excludeRawStrings: true MayBeConstant: active: true ModifierOrder: active: true MultilineLambdaItParameter: active: false MultilineRawStringIndentation: active: false indentSize: 4 trimmingMethods: - 'trimIndent' - 'trimMargin' NestedClassesVisibility: active: true NewLineAtEndOfFile: active: true NoTabs: active: false NullableBooleanCheck: active: false ObjectLiteralToLambda: active: true OptionalAbstractKeyword: active: true OptionalUnit: active: false ProtectedMemberInFinalClass: active: true RangeUntilInsteadOfRangeTo: active: true RedundantConstructorKeyword: active: false RedundantExplicitType: active: false RedundantHigherOrderMapUsage: active: true RedundantVisibilityModifier: active: false ReturnCount: active: false max: 2 excludedFunctions: - 'equals' excludeLabeled: false excludeReturnFromLambda: true excludeGuardClauses: false SafeCast: active: true SerialVersionUIDInSerializableClass: active: true SpacingAfterPackageAndImports: active: false StringShouldBeRawString: active: false maxEscapedCharacterCount: 2 ignoredCharacters: [] ThrowsCount: active: false max: 2 excludeGuardClauses: false TrailingWhitespace: active: false TrimMultilineRawString: active: false trimmingMethods: - 'trimIndent' - 'trimMargin' UnderscoresInNumericLiterals: active: false acceptableLength: 4 allowNonStandardGrouping: false UnnecessaryAny: active: false UnnecessaryApply: active: true UnnecessaryBackticks: active: false UnnecessaryBracesAroundTrailingLambda: active: false UnnecessaryFilter: active: true UnnecessaryFullyQualifiedName: active: true UnnecessaryInheritance: active: true UnnecessaryInnerClass: active: false UnnecessaryLet: active: false UnnecessaryParentheses: active: false allowForUnclearPrecedence: false UnnecessaryReversed: active: false UnusedImport: active: false additionalOperatorSet: [] UnusedParameter: active: true aliases: ['UNUSED_PARAMETER', 'unused'] allowedNames: 'ignored|expected' UnusedPrivateClass: active: true aliases: ['unused'] UnusedPrivateFunction: active: true aliases: ['unused'] allowedNames: '' UnusedPrivateProperty: active: true aliases: ['unused'] allowedNames: 'ignored|expected|serialVersionUID' UnusedVariable: active: true aliases: ['UNUSED_VARIABLE', 'unused'] allowedNames: 'ignored|_' UseAnyOrNoneInsteadOfFind: active: true UseArrayLiteralsInAnnotations: active: true UseCheckNotNull: active: true UseCheckOrError: active: true UseDataClass: active: false allowVars: false UseEmptyCounterpart: active: false UseIfEmptyOrIfBlank: active: false UseIfInsteadOfWhen: active: false ignoreWhenContainingVariableDeclaration: false UseIsNullOrEmpty: active: true UseLet: active: false UseOrEmpty: active: true UseRequire: active: true UseRequireNotNull: active: true UseSumOfInsteadOfFlatMapSize: active: false UselessCallOnNotNull: active: true UtilityClassWithPublicConstructor: active: true VarCouldBeVal: active: true aliases: ['CanBeVal'] ignoreLateinitVar: false WildcardImport: active: false excludeImports: - 'java.util.*'