kotlin-sdk/config/detekt/detekt.yml
dependabot[bot] 4531a4c846
chore(deps): bump dev.detekt:detekt-gradle-plugin from 2.0.0-alpha.3 to 2.0.0-alpha.5 (#849)
Bumps
[dev.detekt:detekt-gradle-plugin](https://github.com/detekt/detekt) from
2.0.0-alpha.3 to 2.0.0-alpha.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/detekt/detekt/releases">dev.detekt:detekt-gradle-plugin's
releases</a>.</em></p>
<blockquote>
<h2>v2.0.0-alpha.5</h2>
<h2>2.0.0-alpha.5 - 2026-06-17</h2>
<p>This is a hotfix release for <code>2.0.0-alpha.4</code> where we
fixed 2 bugs that were preventing detekt from running correctly.</p>
<h3>Changelog</h3>
<ul>
<li>fix: stop leaking ktlint-repackage as a transitive dependency - <a
href="https://redirect.github.com/detekt/detekt/pull/9391">#9391</a></li>
<li>fix: exclude gradle-public-api from published POM - <a
href="https://redirect.github.com/detekt/detekt/pull/9408">#9408</a></li>
<li>Stop accepting unsupported API or language versions passed to CLI -
<a
href="https://redirect.github.com/detekt/detekt/pull/9410">#9410</a></li>
</ul>
<h2>v2.0.0-alpha.4</h2>
<h2>2.0.0-alpha.4 - 2026-06-13</h2>
<p>This is an alpha release of Detekt 2.0.0. Is built against Kotlin
2.4.0, Gradle 9.5.1, AGP 9.2.1 and is tested against JDK 25.</p>
<h3>Notable Changes</h3>
<ul>
<li>Support Kotlin 2.4.0 - <a
href="https://redirect.github.com/detekt/detekt/pull/9218">#9218</a></li>
<li>Add new rule <code>LeakingSessionBoundType</code> - <a
href="https://redirect.github.com/detekt/detekt/pull/9242">#9242</a></li>
<li>Apply the <code>indent_style</code> configuration to all the ktlint
wrapper rules (previsouly this was applied only to the
<code>Indentation</code> rule) - <a
href="https://redirect.github.com/detekt/detekt/pull/9315">#9315</a></li>
</ul>
<h3>Breaking Changes</h3>
<ul>
<li>Expose Glob-to-Regex functions in <code>psi-utils</code> - <a
href="https://redirect.github.com/detekt/detekt/pull/9340">#9340</a></li>
<li>Make <code>Detektion</code> immutable - <a
href="https://redirect.github.com/detekt/detekt/pull/8583">#8583</a></li>
</ul>
<h3>Changelog</h3>
<ul>
<li>fix: prevent ArrayPrimitive crash on unresolved types - <a
href="https://redirect.github.com/detekt/detekt/pull/9364">#9364</a></li>
<li>Update ktlint documentation links - <a
href="https://redirect.github.com/detekt/detekt/pull/9354">#9354</a></li>
<li>Fix PrintStackTrace nested call detection - <a
href="https://redirect.github.com/detekt/detekt/pull/9352">#9352</a></li>
<li>Fix unused import false positive for companion object member
extension properties - <a
href="https://redirect.github.com/detekt/detekt/pull/9349">#9349</a></li>
<li>Accept punctuation after a link - <a
href="https://redirect.github.com/detekt/detekt/pull/9341">#9341</a></li>
<li>Fixes UnnecessaryFullyQualifiedName false positive with explicit
import shadowing - <a
href="https://redirect.github.com/detekt/detekt/pull/9329">#9329</a></li>
<li>docs: fix KMP type resolution task names - <a
href="https://redirect.github.com/detekt/detekt/pull/9316">#9316</a></li>
<li>Stop publishing ktlint-repackage - <a
href="https://redirect.github.com/detekt/detekt/pull/9314">#9314</a></li>
<li>Stop exposing ktlint's StandardRule to detekt-rules-ktlint-wrapper
consumers - <a
href="https://redirect.github.com/detekt/detekt/pull/9313">#9313</a></li>
<li>Include ktlint-repackage in ktlint-wrapper JAR - <a
href="https://redirect.github.com/detekt/detekt/pull/9312">#9312</a></li>
<li>Declare DGP compatibility with Gradle's configuration cache - <a
href="https://redirect.github.com/detekt/detekt/pull/9311">#9311</a></li>
<li>Forward languageVersionSettings to KotlinAnalysisApiEngine.compile -
<a
href="https://redirect.github.com/detekt/detekt/pull/9305">#9305</a></li>
<li>docs: add ForbiddenImport configuration example - <a
href="https://redirect.github.com/detekt/detekt/pull/9302">#9302</a></li>
<li>Fix <code>UnnecessaryFullyQualifiedName</code> clashes with kotlin
package name - <a
href="https://redirect.github.com/detekt/detekt/pull/9289">#9289</a></li>
<li>Remove excludeImportStatements from Deprecation rule - <a
href="https://redirect.github.com/detekt/detekt/pull/9287">#9287</a></li>
<li>Improve repackaging of Analysis API dependencies - <a
href="https://redirect.github.com/detekt/detekt/pull/9285">#9285</a></li>
<li>MaxChainedCallsOnSameLine - Fix AA type leaks - <a
href="https://redirect.github.com/detekt/detekt/pull/9261">#9261</a></li>
<li>SuspendFunSwallowedCancellation - Fix AA type leaks - <a
href="https://redirect.github.com/detekt/detekt/pull/9256">#9256</a></li>
<li>feat: Add exhaustive option to OutdatedDocumentation rule, also
improve error messages - <a
href="https://redirect.github.com/detekt/detekt/pull/9255">#9255</a></li>
<li>Excluding generated sources by default - <a
href="https://redirect.github.com/detekt/detekt/pull/9251">#9251</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9c6ced6339"><code>9c6ced6</code></a>
Stop accepting unsupported API or language versions passed to CLI (<a
href="https://redirect.github.com/detekt/detekt/issues/9410">#9410</a>)</li>
<li><a
href="44526f4564"><code>44526f4</code></a>
fix: exclude gradle-public-api from published POM (<a
href="https://redirect.github.com/detekt/detekt/issues/9408">#9408</a>)</li>
<li><a
href="6bad2e8a81"><code>6bad2e8</code></a>
fix: stop leaking ktlint-repackage as a transitive dependency (<a
href="https://redirect.github.com/detekt/detekt/issues/9391">#9391</a>)</li>
<li><a
href="fd5683e47a"><code>fd5683e</code></a>
Update dependency path-to-regexp to v0.2.5 (<a
href="https://redirect.github.com/detekt/detekt/issues/9397">#9397</a>)</li>
<li><a
href="7865b27e71"><code>7865b27</code></a>
fix: resolve npm security vulnerabilities in website and bots
dependencies (#...</li>
<li><a
href="bb582d5e6a"><code>bb582d5</code></a>
Unbreak snapshot publishing (<a
href="https://redirect.github.com/detekt/detekt/issues/9394">#9394</a>)</li>
<li><a
href="69866dd873"><code>69866dd</code></a>
Update caniuse browser definitions (<a
href="https://redirect.github.com/detekt/detekt/issues/9393">#9393</a>)</li>
<li><a
href="bfd3b5d4ef"><code>bfd3b5d</code></a>
Add Docs for 2.0.0-alpha.4 (<a
href="https://redirect.github.com/detekt/detekt/issues/9388">#9388</a>)</li>
<li><a
href="60300b2d43"><code>60300b2</code></a>
Switch to vanniktech/gradle-maven-publish-plugin for publishing (<a
href="https://redirect.github.com/detekt/detekt/issues/9357">#9357</a>)</li>
<li><a
href="63e0777f45"><code>63e0777</code></a>
Update gradle/actions digest to 3f131e8 (<a
href="https://redirect.github.com/detekt/detekt/issues/9386">#9386</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/detekt/detekt/compare/v2.0.0-alpha.3...v2.0.0-alpha.5">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: devcrocod <devcrocod@gmail.com>
2026-07-02 22:37:39 +02:00

841 lines
23 KiB
YAML

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.<init>(kotlin.Double)'
- reason: 'using `BigDecimal(String)` can result in a `NumberFormatException`. Use `String.toBigDecimalOrNull()`'
value: 'java.math.BigDecimal.<init>(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.*'