# Default rules: https://github.com/detekt/detekt/blob/main/detekt-core/src/main/resources/default-detekt-config.yml style: AlsoCouldBeApply: active: true OptionalWhenBraces: active: false CascadingCallWrapping: active: true includeElvis: true DataClassShouldBeImmutable: active: true EqualsNullCall: active: true EqualsOnSignatureLine: active: true ExplicitCollectionElementAccessMethod: active: true ExplicitItLambdaParameter: active: true MaxLineLength: # Default is 120 maxLineLength: 160 MagicNumber: active: false ReturnCount: active: false UnnecessaryAbstractClass: active: true FunctionOnlyReturningConstant: active: false UnusedPrivateMember: active: true UnusedParameter: active: true UnnecessaryInnerClass: active: true UnnecessaryLet: active: true UnnecessaryParentheses: active: true allowForUnclearPrecedence: false UntilInsteadOfRangeTo: active: true UnusedImports: active: true UnusedPrivateProperty: active: true ThrowsCount: active: false LoopWithTooManyJumpStatements: active: true SerialVersionUIDInSerializableClass: active: false ProtectedMemberInFinalClass: active: true UseCheckOrError: active: true OptionalUnit: active: true PreferToOverPairSyntax: active: true RedundantExplicitType: active: true TrailingWhitespace: active: true TrimMultilineRawString: active: true trimmingMethods: - 'trimIndent' - 'trimMargin' UnderscoresInNumericLiterals: active: true acceptableLength: 4 allowNonStandardGrouping: false UnnecessaryAnnotationUseSiteTarget: active: true UnnecessaryBackticks: active: true UnnecessaryBracesAroundTrailingLambda: active: true UseDataClass: active: true allowVars: false UseEmptyCounterpart: active: true UseIfEmptyOrIfBlank: active: true UseLet: active: true UseSumOfInsteadOfFlatMapSize: active: true coroutines: GlobalCoroutineUsage: # Keep false for now. active: false SuspendFunSwallowedCancellation: active: true SuspendFunWithCoroutineScopeReceiver: active: true empty-blocks: EmptyFunctionBlock: active: false EmptySecondaryConstructor: active: true potential-bugs: ImplicitDefaultLocale: active: true CastNullableToNonNullableType: active: true CastToNullableType: active: true Deprecation: active: true DontDowncastCollectionTypes: active: true ElseCaseInsteadOfExhaustiveWhen: active: true ExitOutsideMain: active: true ImplicitUnitReturnType: active: true allowExplicitReturnType: false MissingPackageDeclaration: active: true excludes: [ '**/*.kts' ] NullCheckOnMutableProperty: active: true NullableToStringCall: active: true PropertyUsedBeforeDeclaration: active: true UnconditionalJumpStatementInLoop: active: true UnnecessaryNotNullCheck: active: true exceptions: TooGenericExceptionCaught: active: false SwallowedException: active: false ThrowingExceptionsWithoutMessageOrCause: active: true TooGenericExceptionThrown: active: true InstanceOfCheckForException: active: true ObjectExtendsThrowable: active: true complexity: TooManyFunctions: active: false LongMethod: active: false LongParameterList: active: false CyclomaticComplexMethod: active: false NestedBlockDepth: active: false ComplexCondition: active: true LargeClass: active: true naming: VariableNaming: active: true TopLevelPropertyNaming: active: true FunctionNaming: active: true ignoreAnnotated: [ 'Composable' ] LambdaParameterNaming: active: true NonBooleanPropertyPrefixedWithIs: active: true VariableMaxLength: active: true performance: SpreadOperator: active: false CouldBeSequence: active: true UnnecessaryPartOfBinaryExpression: active: true # Note: all rules for `comments` are disabled by default, but I put them here to be aware of their existence comments: AbsentOrWrongFileLicense: active: true licenseTemplateFile: 'license.template' licenseTemplateIsRegex: true CommentOverPrivateFunction: active: false CommentOverPrivateProperty: active: false DeprecatedBlockTag: active: true EndOfSentenceFormat: active: true OutdatedDocumentation: active: true allowParamOnConstructorProperties: true UndocumentedPublicClass: active: false UndocumentedPublicFunction: active: false UndocumentedPublicProperty: active: false Compose: CompositionLocalAllowlist: active: true # You can optionally define a list of CompositionLocals that are allowed here allowedCompositionLocals: LocalCompoundColors, LocalSnackbarDispatcher, LocalCameraPositionState, LocalTimelineItemPresenterFactories CompositionLocalNaming: active: true ContentEmitterReturningValues: active: true # You can optionally add your own composables here # contentEmitters: MyComposable,MyOtherComposable ModifierComposable: active: true ModifierMissing: active: true ModifierReused: active: true ModifierWithoutDefault: active: true MultipleEmitters: active: true # You can optionally add your own composables here # contentEmitters: MyComposable,MyOtherComposable MutableParams: active: true ComposableNaming: active: true # You can optionally disable the checks in this rule for regex matches against the composable name (e.g. molecule presenters) # allowedComposableFunctionNames: .*Presenter,.*MoleculePresenter ComposableParamOrder: active: true PreviewAnnotationNaming: active: true PreviewPublic: active: true # You can optionally disable that only previews with @PreviewParameter are flagged previewPublicOnlyIfParams: false RememberMissing: active: true UnstableCollections: active: true