809 lines
24 KiB
YAML
809 lines
24 KiB
YAML
|
# Please refer to https://github.com/mozilla-mobile/firefox-android/blob/main/android-components/config/detekt.yml
|
||
|
# for the source of truth for our detekt configuration.
|
||
|
|
||
|
build:
|
||
|
maxIssues: 0
|
||
|
excludeCorrectable: false
|
||
|
weights:
|
||
|
# complexity: 2
|
||
|
# LongParameterList: 1
|
||
|
# style: 1
|
||
|
# comments: 1
|
||
|
|
||
|
config:
|
||
|
validation: true
|
||
|
warningsAsErrors: false
|
||
|
checkExhaustiveness: false
|
||
|
# when writing own rules with new properties, exclude the property path e.g.: 'my_rule_set,.*>.*>[my_property]'
|
||
|
excludes: ''
|
||
|
|
||
|
processors:
|
||
|
active: true
|
||
|
exclude:
|
||
|
- 'DetektProgressListener'
|
||
|
# - 'KtFileCountProcessor'
|
||
|
# - 'PackageCountProcessor'
|
||
|
# - 'ClassCountProcessor'
|
||
|
# - 'FunctionCountProcessor'
|
||
|
# - 'PropertyCountProcessor'
|
||
|
# - 'ProjectComplexityProcessor'
|
||
|
# - 'ProjectCognitiveComplexityProcessor'
|
||
|
# - 'ProjectLLOCProcessor'
|
||
|
# - 'ProjectCLOCProcessor'
|
||
|
# - 'ProjectLOCProcessor'
|
||
|
# - 'ProjectSLOCProcessor'
|
||
|
# - 'LicenseHeaderLoaderExtension'
|
||
|
|
||
|
console-reports:
|
||
|
active: true
|
||
|
exclude:
|
||
|
# - 'ProjectStatisticsReport'
|
||
|
# - 'ComplexityReport'
|
||
|
# - 'NotificationReport'
|
||
|
# - 'FindingsReport'
|
||
|
# - 'FileBasedFindingsReport'
|
||
|
# - 'LiteFindingsReport'
|
||
|
|
||
|
output-reports:
|
||
|
active: true
|
||
|
exclude:
|
||
|
# - 'TxtOutputReport'
|
||
|
# - 'XmlOutputReport'
|
||
|
# - 'HtmlOutputReport'
|
||
|
# - 'MdOutputReport'
|
||
|
# - 'SarifOutputReport'
|
||
|
|
||
|
comments:
|
||
|
active: true
|
||
|
AbsentOrWrongFileLicense:
|
||
|
active: true
|
||
|
licenseTemplateFile: 'license.template'
|
||
|
licenseTemplateIsRegex: false
|
||
|
CommentOverPrivateFunction:
|
||
|
active: false
|
||
|
CommentOverPrivateProperty:
|
||
|
active: false
|
||
|
DeprecatedBlockTag:
|
||
|
active: false
|
||
|
EndOfSentenceFormat:
|
||
|
active: false
|
||
|
endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)'
|
||
|
KDocReferencesNonPublicProperty:
|
||
|
active: false
|
||
|
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||
|
OutdatedDocumentation:
|
||
|
active: true # Enabled in https://bugzilla.mozilla.org/show_bug.cgi?id=1848527
|
||
|
matchTypeParameters: false # (Default: true) Disabled in https://bugzilla.mozilla.org/show_bug.cgi?id=1848527
|
||
|
matchDeclarationsOrder: true
|
||
|
allowParamOnConstructorProperties: false
|
||
|
UndocumentedPublicClass:
|
||
|
active: true # Enabled in https://github.com/mozilla-mobile/android-components/issues/76
|
||
|
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||
|
searchInNestedClass: true
|
||
|
searchInInnerClass: true
|
||
|
searchInInnerObject: true
|
||
|
searchInInnerInterface: true
|
||
|
searchInProtectedClass: false
|
||
|
UndocumentedPublicFunction:
|
||
|
active: true # Enabled in https://github.com/mozilla-mobile/android-components/issues/76
|
||
|
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
|
||
|
|
||
|
complexity:
|
||
|
active: true
|
||
|
CognitiveComplexMethod:
|
||
|
active: false
|
||
|
threshold: 15
|
||
|
ComplexCondition:
|
||
|
active: true
|
||
|
threshold: 4
|
||
|
ComplexInterface:
|
||
|
active: false
|
||
|
threshold: 10
|
||
|
includeStaticDeclarations: false
|
||
|
includePrivateDeclarations: false
|
||
|
ignoreOverloaded: false
|
||
|
CyclomaticComplexMethod:
|
||
|
active: true
|
||
|
threshold: 18 # (Default: 15) Increased in https://github.com/mozilla-mobile/android-components/pull/10328
|
||
|
ignoreSingleWhenExpression: true # Enabled in https://github.com/mozilla-mobile/android-components/pull/3271
|
||
|
ignoreSimpleWhenEntries: false
|
||
|
ignoreNestingFunctions: false
|
||
|
nestingFunctions:
|
||
|
- 'also'
|
||
|
- 'apply'
|
||
|
- 'forEach'
|
||
|
- 'isNotNull'
|
||
|
- 'ifNull'
|
||
|
- 'let'
|
||
|
- 'run'
|
||
|
- 'use'
|
||
|
- 'with'
|
||
|
LabeledExpression:
|
||
|
active: false
|
||
|
ignoredLabels: []
|
||
|
LargeClass:
|
||
|
active: true
|
||
|
threshold: 600
|
||
|
LongMethod:
|
||
|
active: true
|
||
|
threshold: 75 # (Default: 60) Increased in https://github.com/mozilla-mobile/android-components/issues/6350
|
||
|
LongParameterList:
|
||
|
active: true
|
||
|
functionThreshold: 6
|
||
|
constructorThreshold: 7
|
||
|
ignoreDefaultParameters: true # Enabled in https://github.com/mozilla-mobile/android-components/issues/10835
|
||
|
ignoreDataClasses: true
|
||
|
ignoreAnnotatedParameter: []
|
||
|
MethodOverloading:
|
||
|
active: false
|
||
|
threshold: 6
|
||
|
NamedArguments:
|
||
|
active: false
|
||
|
threshold: 3
|
||
|
ignoreArgumentsMatchingNames: false
|
||
|
NestedBlockDepth:
|
||
|
active: true
|
||
|
threshold: 4
|
||
|
NestedScopeFunctions:
|
||
|
active: false
|
||
|
threshold: 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/**']
|
||
|
threshold: 3
|
||
|
ignoreAnnotation: true
|
||
|
excludeStringsWithLessThan5Characters: true
|
||
|
ignoreStringsRegex: '$^'
|
||
|
TooManyFunctions:
|
||
|
active: true
|
||
|
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||
|
thresholdInFiles: 26 # (Default: 11) Increased in https://github.com/mozilla-mobile/android-components/pull/9927
|
||
|
thresholdInClasses: 26 # (Default: 11) Increased in https://github.com/mozilla-mobile/android-components/pull/9927
|
||
|
thresholdInInterfaces: 26 # (Default: 11) Increased in https://github.com/mozilla-mobile/android-components/pull/9927
|
||
|
thresholdInObjects: 26 # (Default: 11) Increased in https://github.com/mozilla-mobile/android-components/pull/9927
|
||
|
thresholdInEnums: 11
|
||
|
ignoreDeprecated: false
|
||
|
ignorePrivate: false
|
||
|
ignoreOverridden: false
|
||
|
|
||
|
coroutines:
|
||
|
active: true
|
||
|
GlobalCoroutineUsage:
|
||
|
active: false
|
||
|
InjectDispatcher:
|
||
|
active: false # (Default: true)
|
||
|
dispatcherNames:
|
||
|
- 'IO'
|
||
|
- 'Default'
|
||
|
- 'Unconfined'
|
||
|
RedundantSuspendModifier:
|
||
|
active: false # (Default: true)
|
||
|
SleepInsteadOfDelay:
|
||
|
active: false # (Default: true)
|
||
|
SuspendFunSwallowedCancellation:
|
||
|
active: false
|
||
|
SuspendFunWithCoroutineScopeReceiver:
|
||
|
active: false
|
||
|
SuspendFunWithFlowReturnType:
|
||
|
active: false # (Default: 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
|
||
|
EmptyKtFile:
|
||
|
active: true
|
||
|
EmptySecondaryConstructor:
|
||
|
active: true
|
||
|
EmptyTryBlock:
|
||
|
active: true
|
||
|
EmptyWhenBlock:
|
||
|
active: true
|
||
|
EmptyWhileBlock:
|
||
|
active: true
|
||
|
|
||
|
exceptions:
|
||
|
active: true
|
||
|
ExceptionRaisedInUnexpectedLocation:
|
||
|
active: false # (Default: true)
|
||
|
methodNames:
|
||
|
- 'equals'
|
||
|
- 'finalize'
|
||
|
- 'hashCode'
|
||
|
- 'toString'
|
||
|
InstanceOfCheckForException:
|
||
|
active: false # (Default: true)
|
||
|
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||
|
NotImplementedDeclaration:
|
||
|
active: false
|
||
|
ObjectExtendsThrowable:
|
||
|
active: false
|
||
|
PrintStackTrace:
|
||
|
active: true
|
||
|
RethrowCaughtException:
|
||
|
active: false # (Default: true)
|
||
|
ReturnFromFinally:
|
||
|
active: true
|
||
|
ignoreLabeled: false
|
||
|
SwallowedException:
|
||
|
active: false # (Default: true)
|
||
|
ignoredExceptionTypes:
|
||
|
- 'InterruptedException'
|
||
|
- 'MalformedURLException'
|
||
|
- 'NumberFormatException'
|
||
|
- 'ParseException'
|
||
|
allowedExceptionNameRegex: '_|(ignore|expected).*'
|
||
|
ThrowingExceptionFromFinally:
|
||
|
active: true
|
||
|
ThrowingExceptionInMain:
|
||
|
active: false
|
||
|
ThrowingExceptionsWithoutMessageOrCause:
|
||
|
active: false # (Default: 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: true
|
||
|
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||
|
exceptionNames:
|
||
|
- 'ArrayIndexOutOfBoundsException'
|
||
|
- 'Error'
|
||
|
- 'Exception'
|
||
|
- 'IllegalMonitorStateException'
|
||
|
- 'IndexOutOfBoundsException'
|
||
|
- 'NullPointerException'
|
||
|
- 'RuntimeException'
|
||
|
- 'Throwable'
|
||
|
allowedExceptionNameRegex: '_|(ignore|expected).*'
|
||
|
TooGenericExceptionThrown:
|
||
|
active: true
|
||
|
exceptionNames:
|
||
|
- 'Error'
|
||
|
- 'Exception'
|
||
|
- 'RuntimeException'
|
||
|
- 'Throwable'
|
||
|
|
||
|
naming:
|
||
|
active: true
|
||
|
BooleanPropertyNaming:
|
||
|
active: false
|
||
|
allowedPattern: '^(is|has|are)'
|
||
|
ClassNaming:
|
||
|
active: true
|
||
|
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
|
||
|
enumEntryPattern: '[A-Z][_a-zA-Z0-9]*'
|
||
|
ForbiddenClassName:
|
||
|
active: false
|
||
|
forbiddenName: []
|
||
|
FunctionMaxLength:
|
||
|
active: false
|
||
|
maximumFunctionNameLength: 30
|
||
|
FunctionMinLength:
|
||
|
active: false
|
||
|
minimumFunctionNameLength: 3
|
||
|
FunctionNaming:
|
||
|
active: true
|
||
|
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||
|
functionPattern: '[a-z][a-zA-Z0-9]*'
|
||
|
excludeClassPattern: '$^'
|
||
|
ignoreAnnotated: ['Composable'] # Configuration for Compose https://github.com/mozilla-mobile/android-components/issues/11866
|
||
|
FunctionParameterNaming:
|
||
|
active: true
|
||
|
parameterPattern: '[a-z][A-Za-z0-9]*'
|
||
|
excludeClassPattern: '$^'
|
||
|
InvalidPackageDeclaration:
|
||
|
active: false # (Default: true)
|
||
|
rootPackage: ''
|
||
|
requireRootInDeclaration: false
|
||
|
LambdaParameterNaming:
|
||
|
active: false
|
||
|
parameterPattern: '[a-z][A-Za-z0-9]*|_'
|
||
|
MatchingDeclarationName:
|
||
|
active: true
|
||
|
mustBeFirst: true
|
||
|
MemberNameEqualsClassName:
|
||
|
active: false # (Default: true)
|
||
|
ignoreOverridden: true
|
||
|
NoNameShadowing:
|
||
|
active: false # (Default: true)
|
||
|
NonBooleanPropertyPrefixedWithIs:
|
||
|
active: false
|
||
|
ObjectPropertyNaming:
|
||
|
active: true
|
||
|
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
|
||
|
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: true
|
||
|
variablePattern: '[a-z][A-Za-z0-9]*'
|
||
|
privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*'
|
||
|
excludeClassPattern: '$^'
|
||
|
|
||
|
performance:
|
||
|
active: true
|
||
|
ArrayPrimitive:
|
||
|
active: true
|
||
|
CouldBeSequence:
|
||
|
active: false
|
||
|
threshold: 3
|
||
|
ForEachOnRange:
|
||
|
active: true
|
||
|
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||
|
SpreadOperator:
|
||
|
active: true
|
||
|
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||
|
UnnecessaryPartOfBinaryExpression:
|
||
|
active: false
|
||
|
UnnecessaryTemporaryInstantiation:
|
||
|
active: true
|
||
|
|
||
|
potential-bugs:
|
||
|
active: true
|
||
|
AvoidReferentialEquality:
|
||
|
active: false # (Default: true)
|
||
|
forbiddenTypePatterns:
|
||
|
- 'kotlin.String'
|
||
|
CastNullableToNonNullableType:
|
||
|
active: false
|
||
|
CastToNullableType:
|
||
|
active: false
|
||
|
Deprecation:
|
||
|
active: false
|
||
|
DontDowncastCollectionTypes:
|
||
|
active: false
|
||
|
DoubleMutabilityForCollection:
|
||
|
active: true
|
||
|
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: false # (Default: true)
|
||
|
IgnoredReturnValue:
|
||
|
active: false # (Default: true)
|
||
|
restrictToConfig: true
|
||
|
returnValueAnnotations:
|
||
|
- 'CheckResult'
|
||
|
- '*.CheckResult'
|
||
|
- 'CheckReturnValue'
|
||
|
- '*.CheckReturnValue'
|
||
|
ignoreReturnValueAnnotations:
|
||
|
- 'CanIgnoreReturnValue'
|
||
|
- '*.CanIgnoreReturnValue'
|
||
|
returnValueTypes:
|
||
|
- 'kotlin.sequences.Sequence'
|
||
|
- 'kotlinx.coroutines.flow.*Flow'
|
||
|
- 'java.util.stream.*Stream'
|
||
|
ignoreFunctionCall: []
|
||
|
ImplicitDefaultLocale:
|
||
|
active: false # (Default: true)
|
||
|
ImplicitUnitReturnType:
|
||
|
active: false
|
||
|
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: false # (Default: true)
|
||
|
MissingPackageDeclaration:
|
||
|
active: false
|
||
|
excludes: ['**/*.kts']
|
||
|
NullCheckOnMutableProperty:
|
||
|
active: false
|
||
|
NullableToStringCall:
|
||
|
active: false
|
||
|
PropertyUsedBeforeDeclaration:
|
||
|
active: false
|
||
|
UnconditionalJumpStatementInLoop:
|
||
|
active: false
|
||
|
UnnecessaryNotNullCheck:
|
||
|
active: false
|
||
|
UnnecessaryNotNullOperator:
|
||
|
active: true
|
||
|
UnnecessarySafeCall:
|
||
|
active: true
|
||
|
UnreachableCatchBlock:
|
||
|
active: false # (Default: true)
|
||
|
UnreachableCode:
|
||
|
active: true
|
||
|
UnsafeCallOnNullableType:
|
||
|
active: true
|
||
|
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||
|
UnsafeCast:
|
||
|
active: true
|
||
|
UnusedUnaryOperator:
|
||
|
active: false # (Default: true)
|
||
|
UselessPostfixExpression:
|
||
|
active: false # (Default: true)
|
||
|
WrongEqualsTypeParameter:
|
||
|
active: true
|
||
|
|
||
|
style:
|
||
|
active: true
|
||
|
AlsoCouldBeApply:
|
||
|
active: false
|
||
|
BracesOnIfStatements:
|
||
|
active: true # Enabled in https://github.com/mozilla-mobile/android-components/issues/1015
|
||
|
singleLine: 'consistent' # (Default: never)
|
||
|
multiLine: 'always'
|
||
|
BracesOnWhenStatements:
|
||
|
active: false
|
||
|
singleLine: 'necessary'
|
||
|
multiLine: 'consistent'
|
||
|
CanBeNonNullable:
|
||
|
active: false
|
||
|
CascadingCallWrapping:
|
||
|
active: false
|
||
|
includeElvis: true
|
||
|
ClassOrdering:
|
||
|
active: false
|
||
|
CollapsibleIfStatements:
|
||
|
active: true # Enabled in https://github.com/mozilla-mobile/android-components/pull/78
|
||
|
DataClassContainsFunctions:
|
||
|
active: false
|
||
|
conversionFunctionPrefix:
|
||
|
- 'to'
|
||
|
allowOperators: false
|
||
|
DataClassShouldBeImmutable:
|
||
|
active: false
|
||
|
DestructuringDeclarationWithTooManyEntries:
|
||
|
active: false # (Default: true)
|
||
|
maxDestructuringEntries: 3
|
||
|
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
|
||
|
ExplicitItLambdaParameter:
|
||
|
active: false # (Default: true)
|
||
|
ExpressionBodySyntax:
|
||
|
active: false
|
||
|
includeLineWrapping: false
|
||
|
ForbiddenAnnotation:
|
||
|
active: false
|
||
|
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'
|
||
|
- reason: 'Kotlin does not support @Inherited annotation, see https://youtrack.jetbrains.com/issue/KT-22265'
|
||
|
value: 'java.lang.annotation.Inherited'
|
||
|
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
|
||
|
imports: []
|
||
|
forbiddenPatterns: ''
|
||
|
ForbiddenMethodCall:
|
||
|
active: false
|
||
|
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'
|
||
|
ForbiddenSuppress:
|
||
|
active: false
|
||
|
rules: []
|
||
|
ForbiddenVoid:
|
||
|
active: false # (Default: true)
|
||
|
ignoreOverridden: false
|
||
|
ignoreUsageInGenerics: false
|
||
|
FunctionOnlyReturningConstant:
|
||
|
active: true
|
||
|
ignoreOverridableFunction: true
|
||
|
ignoreActualFunction: true
|
||
|
excludedFunctions: []
|
||
|
LoopWithTooManyJumpStatements:
|
||
|
active: false # (Default: true)
|
||
|
maxJumpCount: 1
|
||
|
MagicNumber:
|
||
|
active: true
|
||
|
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/*.kts']
|
||
|
ignoreNumbers:
|
||
|
- '-1'
|
||
|
- '0'
|
||
|
- '1'
|
||
|
- '2'
|
||
|
ignoreHashCodeFunction: true
|
||
|
ignorePropertyDeclaration: true # Enabled for Compose in https://github.com/mozilla-mobile/android-components/issues/11864
|
||
|
ignoreLocalVariableDeclaration: false
|
||
|
ignoreConstantDeclaration: true
|
||
|
ignoreCompanionObjectPropertyDeclaration: true
|
||
|
ignoreAnnotation: false
|
||
|
ignoreNamedArgument: true
|
||
|
ignoreEnums: false
|
||
|
ignoreRanges: false
|
||
|
ignoreExtensionFunctions: true
|
||
|
MandatoryBracesLoops:
|
||
|
active: false
|
||
|
MaxChainedCallsOnSameLine:
|
||
|
active: false
|
||
|
maxChainedCalls: 5
|
||
|
MaxLineLength:
|
||
|
active: true
|
||
|
maxLineLength: 120
|
||
|
excludePackageStatements: true
|
||
|
excludeImportStatements: true
|
||
|
excludeCommentStatements: false
|
||
|
excludeRawStrings: true
|
||
|
MayBeConst:
|
||
|
active: true
|
||
|
ModifierOrder:
|
||
|
active: true
|
||
|
MultilineLambdaItParameter:
|
||
|
active: false
|
||
|
MultilineRawStringIndentation:
|
||
|
active: false
|
||
|
indentSize: 4
|
||
|
trimmingMethods:
|
||
|
- 'trimIndent'
|
||
|
- 'trimMargin'
|
||
|
NestedClassesVisibility:
|
||
|
active: true
|
||
|
NewLineAtEndOfFile:
|
||
|
active: true
|
||
|
NoTabs:
|
||
|
active: true # Enabled in https://github.com/mozilla-mobile/android-components/pull/78
|
||
|
NullableBooleanCheck:
|
||
|
active: false
|
||
|
ObjectLiteralToLambda:
|
||
|
active: false # (Default: true)
|
||
|
OptionalAbstractKeyword:
|
||
|
active: true
|
||
|
OptionalUnit:
|
||
|
active: false
|
||
|
PreferToOverPairSyntax:
|
||
|
active: false
|
||
|
ProtectedMemberInFinalClass:
|
||
|
active: true
|
||
|
RedundantExplicitType:
|
||
|
active: false
|
||
|
RedundantHigherOrderMapUsage:
|
||
|
active: false # (Default: true)
|
||
|
RedundantVisibilityModifierRule:
|
||
|
active: false
|
||
|
ReturnCount:
|
||
|
active: true
|
||
|
max: 3 # (Default: 2) Increased in https://github.com/mozilla-mobile/android-components/issues/3
|
||
|
excludedFunctions:
|
||
|
- 'equals'
|
||
|
excludeLabeled: false
|
||
|
excludeReturnFromLambda: true
|
||
|
excludeGuardClauses: false
|
||
|
SafeCast:
|
||
|
active: true
|
||
|
SerialVersionUIDInSerializableClass:
|
||
|
active: true
|
||
|
SpacingBetweenPackageAndImports:
|
||
|
active: true # Enabled in https://github.com/mozilla-mobile/android-components/pull/78
|
||
|
StringShouldBeRawString:
|
||
|
active: false
|
||
|
maxEscapedCharacterCount: 2
|
||
|
ignoredCharacters: []
|
||
|
ThrowsCount:
|
||
|
active: true
|
||
|
max: 2
|
||
|
excludeGuardClauses: false
|
||
|
TrailingWhitespace:
|
||
|
active: false
|
||
|
TrimMultilineRawString:
|
||
|
active: false
|
||
|
trimmingMethods:
|
||
|
- 'trimIndent'
|
||
|
- 'trimMargin'
|
||
|
UnderscoresInNumericLiterals:
|
||
|
active: false
|
||
|
acceptableLength: 4
|
||
|
allowNonStandardGrouping: false
|
||
|
UnnecessaryAbstractClass:
|
||
|
active: true
|
||
|
UnnecessaryAnnotationUseSiteTarget:
|
||
|
active: false
|
||
|
UnnecessaryApply:
|
||
|
active: true
|
||
|
UnnecessaryBackticks:
|
||
|
active: false
|
||
|
UnnecessaryBracesAroundTrailingLambda:
|
||
|
active: false
|
||
|
UnnecessaryFilter:
|
||
|
active: false # (Default: true)
|
||
|
UnnecessaryInheritance:
|
||
|
active: true
|
||
|
UnnecessaryInnerClass:
|
||
|
active: false
|
||
|
UnnecessaryLet:
|
||
|
active: false
|
||
|
UnnecessaryParentheses:
|
||
|
active: false
|
||
|
allowForUnclearPrecedence: false
|
||
|
UntilInsteadOfRangeTo:
|
||
|
active: false
|
||
|
UnusedImports:
|
||
|
active: false
|
||
|
UnusedParameter:
|
||
|
active: true
|
||
|
allowedNames: 'ignored|expected'
|
||
|
UnusedPrivateClass:
|
||
|
active: true
|
||
|
UnusedPrivateMember:
|
||
|
active: true
|
||
|
allowedNames: ''
|
||
|
ignoreAnnotated: ['Composable'] # Configuration for Compose https://github.com/mozilla-mobile/android-components/issues/11866
|
||
|
UnusedPrivateProperty:
|
||
|
active: true
|
||
|
allowedNames: '_|ignored|expected|serialVersionUID'
|
||
|
UseAnyOrNoneInsteadOfFind:
|
||
|
active: false # (Default: true)
|
||
|
UseArrayLiteralsInAnnotations:
|
||
|
active: false # (Default: true)
|
||
|
UseCheckNotNull:
|
||
|
active: true
|
||
|
UseCheckOrError:
|
||
|
active: false # (Default: true)
|
||
|
UseDataClass:
|
||
|
active: false
|
||
|
allowVars: false
|
||
|
UseEmptyCounterpart:
|
||
|
active: false
|
||
|
UseIfEmptyOrIfBlank:
|
||
|
active: false
|
||
|
UseIfInsteadOfWhen:
|
||
|
active: false
|
||
|
ignoreWhenContainingVariableDeclaration: false
|
||
|
UseIsNullOrEmpty:
|
||
|
active: false # (Default: 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
|
||
|
ignoreLateinitVar: false
|
||
|
WildcardImport:
|
||
|
active: true
|
||
|
excludeImports:
|
||
|
- 'java.util.*'
|
||
|
|
||
|
# Custom Rules
|
||
|
|
||
|
mozilla-detekt-rules:
|
||
|
active: true
|
||
|
MozillaBannedPropertyAccess:
|
||
|
active: true
|
||
|
# BuildConfig.Debug: This property tests whether the application was built
|
||
|
# with the debuggable flag or not. Use a check for different build variants,
|
||
|
# instead.
|
||
|
bannedProperties: 'BuildConfig.DEBUG'
|
||
|
MozillaStrictModeSuppression:
|
||
|
active: true
|
||
|
MozillaCorrectUnitTestRunner:
|
||
|
active: true
|
||
|
MozillaRunBlockingCheck:
|
||
|
active: true
|
||
|
MozillaUseLazyMonitored:
|
||
|
active: true
|