Files
MoGoEagleEye/codequality/detekt.yml
2023-10-07 17:27:28 +08:00

803 lines
31 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
build:
excludeCorrectable: false
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: 'custom-checks.*'
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: false
AbsentOrWrongFileLicense: #报告每个没有所需许可证标头的Kotlin源文件
active: false
licenseTemplateFile: 'license.template'
# licenseTemplateIsRegex: false
CommentOverPrivateFunction: #报告private函数的注释和文档
active: false
CommentOverPrivateProperty: #报告私有属性的注释和文档
active: false
# DeprecatedBlockTag: #报告注释中使用@deprecated块标记,可以使用@ReplaceWith annotations
# active: false
EndOfSentenceFormat: #验证KDoc注释的第一句话的结尾
active: false
endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)'
# KDocReferencesNonPublicProperty: #报告任何引用类的非公共属性的KDoc注释
# active: false
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
# OutdatedDocumentation: #报告任何具有与声明签名不匹配的KDoc的类、函数或构造函数
# active: false
# matchTypeParameters: true
# matchDeclarationsOrder: true
# allowParamOnConstructorProperties: false
UndocumentedPublicClass: #报告没有所需文档的公共类、对象和接口
active: false
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
searchInNestedClass: true
searchInInnerClass: true
searchInInnerObject: true
searchInInnerInterface: true
# searchInProtectedClass: false
UndocumentedPublicFunction: #报告任何没有所需文档的公共方法
active: false
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
# allowedComplexity: 15
ComplexCondition: #报告复杂条件
active: false
# allowedConditions: 4
ComplexInterface: #包含太多函数和/或属性的复杂接口表明该接口一次处理太多事情。接口应该遵循单一责任原则,以鼓励该接口的实现不要同时处理太多事情
active: false
# allowedDefinitions: 10
includeStaticDeclarations: false
includePrivateDeclarations: false
# ignoreOverloaded: false
#该规则使用McCabe的循环复杂性MCC度量来测量函数源代码中线性独立路径的数量{https://www.ndepend.com/docs/code-metrics#CC}
# CyclomaticComplexMethod: #复杂的方法很难理解和阅读。复杂方法的副作用可能并不明显。更喜欢把复杂的方法分解成更小的方法,这样更容易理解。较小的方法也可以命名得更清晰,从而提高代码的可读性。
# active: true
# allowedComplexity: 14
# ignoreSingleWhenExpression: false
# ignoreSimpleWhenEntries: false
# ignoreNestingFunctions: false
# ignoreLocalFunctions: false
# nestingFunctions:
# - 'also'
# - 'apply'
# - 'forEach'
# - 'isNotNull'
# - 'ifNull'
# - 'let'
# - 'run'
# - 'use'
# - 'with'
LabeledExpression: #报告已标记的表达式
active: false
ignoredLabels: []
LargeClass: #报告大型类
active: true
# allowedLines: 600
LongMethod: #报告大方法
active: true
# allowedLines: 60
LongParameterList: #报告参数超过特定阈值的函数和构造函数。
active: true
# allowedFunctionParameters: 6
# allowedConstructorParameters: 15
ignoreDefaultParameters: false
ignoreDataClasses: true
# ignoreAnnotatedParameter: []
MethodOverloading: #报告经常重载的方法
active: false
# allowedOverloads: 6
NamedArguments: #报告参数超过某个阈值且全部未命名的函数调用。参数过多的调用更难理解,因此命名参数会有所帮助。
active: false
# allowedArguments: 3
# ignoreArgumentsMatchingNames: false
NestedBlockDepth: #报告函数中嵌套深度过大
active: true
# allowedDepth: 4
# NestedScopeFunctions: #避免嵌套作用域函数
# active: false
# allowedDepth: 1
# functions:
# - 'kotlin.apply'
# - 'kotlin.run'
# - 'kotlin.with'
# - 'kotlin.let'
# - 'kotlin.also'
ReplaceSafeCallChainWithRun: #不可为null的类型上的安全调用链是冗余的可以通过将冗余的安全调用封装在run块中来删除 {xxx?.run}
active: false
StringLiteralDuplication: #规则检测并报告重复的字符串文字
active: false
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
# allowedDuplications: 2
ignoreAnnotation: true
# allowedWithLengthLessThan: 5
ignoreStringsRegex: '$^'
TooManyFunctions: #此规则报告包含过多函数的文件、类、接口、对象和枚举。每个元素可以配置有不同的阈值。
active: true
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
# allowedFunctionsPerFile: 11
# allowedFunctionsPerClass: 11
# allowedFunctionsPerInterface: 11
# allowedFunctionsPerObject: 11
# allowedFunctionsPerEnum: 11
ignoreDeprecated: false
ignorePrivate: false
ignoreOverridden: false
#协程规则集分析代码中潜在的协程问题。
coroutines:
active: true
GlobalCoroutineUsage:
active: false
# InjectDispatcher: #始终使用依赖项注入来注入调度器,以便于测试
# active: true
# dispatcherNames:
# - 'IO'
# - 'Default'
# - 'Unconfined'
RedundantSuspendModifier: #suspend修饰符只能在需要的地方使用否则该函数只能从其他挂起函数中使用。这不必要地限制了函数的使用应该通过删除不需要的suspend修饰符来避免
active: true
# SleepInsteadOfDelay: #报告Thread.sleep在挂起函数和协同程序块中的使用情况。由于协程的轻量级性质一个线程可以同时包含多个协程因此如果一个协程调用thread.sleep它可能会停止执行不相关的协程并导致不可预测的行为。
# active: true
# SuspendFunSwallowedCancellation: #不应在runCatching的lambda块内部调用suspend函数
# active: false
# SuspendFunWithCoroutineScopeReceiver: #将CoroutineScope用作接收器的挂起函数不应标记为挂起。
# active: false
SuspendFunWithFlowReturnType: #从kotlin.coroutines.Flow返回Flow的函数不应标记为挂起简单地调用一个返回Flow的函数的行为不应该有任何副作用。只有当针对返回的Flow开始收集时才应该实际完成工作。
active: true
#空块规则集包含将报告应避免的空代码块的规则。
empty-blocks:
active: true
EmptyCatchBlock: #报告空的捕获块。空的catch块表示异常被忽略而未被处理
active: true
allowedExceptionNameRegex: '_|(ignore|expected).*'
EmptyClassBlock: #报告空类。空的代码块没有任何作用,应该删除
active: true
EmptyDefaultConstructor: #报告空的默认构造函数。空的代码块没有任何作用,应该删除
active: true
EmptyDoWhileBlock: #报告空的do/while循环。空的代码块没有任何作用应该删除
active: true
EmptyElseBlock: #报告为空的else块。空的代码块没有任何作用应该删除
active: true
EmptyFinallyBlock: #报告为空的finally块。空代码块没有任何作用应该删除
active: true
EmptyForBlock: #报告为空的for块。空代码块没有任何作用应该删除
active: true
EmptyFunctionBlock: #报告为空的方法块。空代码块没有任何作用,应该删除
active: true
ignoreOverridden: false
EmptyIfBlock: #报告为空的if块。空代码块没有任何作用应该删除
active: true
EmptyInitBlock: #报告为空的init块。空代码块没有任何作用应该删除
active: true
# EmptyKotlinFile: #报告为空的kotlin文件。空代码块没有任何作用应该删除
# active: true
EmptySecondaryConstructor: #报告为空的辅助构造函数。空代码块没有任何作用,应该删除
active: true
EmptyTryBlock: #报告为空的try块。空代码块没有任何作用应该删除
active: true
EmptyWhenBlock: #报告为空的when块。空代码块没有任何作用应该删除
active: true
EmptyWhileBlock: #报告为空的while块。空代码块没有任何作用应该删除
active: true
exceptions:
active: true
ExceptionRaisedInUnexpectedLocation: #此规则报告从不应引发异常的函数。如果存在引发异常的函数则会报告该函数。默认情况下此规则检查toString、hashCode、equals和finalize。此规则可通过methodNames配置进行配置
active: true
methodNames:
- 'equals'
- 'finalize'
- 'hashCode'
- 'toString'
InstanceOfCheckForException: #此规则报告通过is检查或强制转换检查异常类型的捕获块。代码应该使用多个catch块而不是捕获一般的异常类型然后检查特定的异常类型。然后这些捕获块应该捕获特定的异常
active: true
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
NotImplementedDeclaration: #此规则报告引发的所有NotImplementedError类型的异常。它还报告所有TODO..)函数。这表明功能仍在开发中,无法正常工作。这两种声明都只能作为临时声明,不应放入生产环境中
active: false
# ObjectExtendsThrowable: #避免抛出单例Throwable
# active: false
PrintStackTrace: #打印堆栈
active: true
RethrowCaughtException: #重新抛出异常
active: true
ReturnFromFinally: # finally return
active: true
ignoreLabeled: false
SwallowedException: #报告所有捕获异常且未正确传递(例如作为原因)到新引发异常的实例
active: true
ignoredExceptionTypes:
- 'InterruptedException'
- 'MalformedURLException'
- 'NumberFormatException'
- 'ParseException'
allowedExceptionNameRegex: '_|(ignore|expected).*'
ThrowingExceptionFromFinally: #报告从finally块抛出异常
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: 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: []
# FunctionNameMaxLength:
# active: false
# maximumFunctionNameLength: 30
# FunctionNameMinLength:
# active: false
# minimumFunctionNameLength: 3
FunctionNaming:
active: true
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
rootPackage: ''
# requireRootInDeclaration: false
# LambdaParameterNaming:
# active: false
# parameterPattern: '[a-z][A-Za-z0-9]*|_'
MatchingDeclarationName:
active: true
mustBeFirst: true
# multiplatformTargets:
# - 'ios'
# - 'android'
# - 'js'
# - 'jvm'
# - 'native'
# - 'iosArm64'
# - 'iosX64'
# - 'macosX64'
# - 'mingwX64'
# - 'linuxX64'
MemberNameEqualsClassName:
active: true
ignoreOverridden: true
# NoNameShadowing:
# active: 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: #使用ArrayPrimitive会导致隐含拳击和性能打击。更喜欢使用Kotlin专用的数组实例
active: true
# CouldBeSequence: #由于每个调用都会创建一个新的列表,因此长链的收集操作将带来性能损失。请考虑使用序列
# active: false
# allowedOperations: 2
ForEachOnRange: #在一个范围内使用forEach可能会产生巨大的性能成本。因此在大多数情况下应该使用简单的for循环 (for example: {(1..10).forEach})
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: true
# forbiddenTypePatterns:
# - 'kotlin.String'
# CastNullableToNonNullableType: #可空强转null
# active: false
# ignorePlatformTypes: true
# CastToNullableType: #将不安全的强制转换报告为可为null的类型。作为字符串未填充可能被误用为安全类型转换字符串
# active: false
# CharArrayToStringCall:
# active: false
Deprecation:
active: false
# DontDowncastCollectionTypes: #检查集合向下类型转换,建议方法转换({list as MutableList} convert : {list.toMutableList()})
# active: false
# DoubleMutabilityForCollection: #MutableState可变var,不可变建议val
# 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: #当表达式包含else大小写时即使它们有一组详尽的大小写该规则也会报告
# active: false
# ignoredSubjectTypes: []
EqualsAlwaysReturnsTrueOrFalse: #报告始终返回true或false的equals方法。
active: true
EqualsWithHashCodeExist: #当一个类重写equals方法时它也应该重写hashCode方法
active: true
# ExitOutsideMain: #报告主函数之外使用System.exit、Runtime.exit、Runtime.holt和Kotlin的exitProcess时的使用情况
# active: false
ExplicitGarbageCollectionCall: #报告所有显式触发垃圾回收器的调用。代码应该独立于垃圾收集器工作并且不应该要求在某些时间点触发GC。
active: true
HasPlatformType: #必须在公共API中显式声明平台类型以防止出现意外错误
active: true
#此规则对使用@CheckReturnValue或@CheckResult注释的函数返回值但未以任何方式使用该值的实例发出警告Kotlin编译器通常不会对这种情况发出警告所以这就是该规则背后的基本原理。
IgnoredReturnValue:
active: false
# restrictToConfig: true
returnValueAnnotations:
- 'CheckResult'
- '*.CheckResult'
- 'CheckReturnValue'
- '*.CheckReturnValue'
# ignoreReturnValueAnnotations:
# - 'CanIgnoreReturnValue'
# - '*.CanIgnoreReturnValue'
# returnValueTypes:
# - 'kotlin.sequences.Sequence'
# - 'kotlinx.coroutines.flow.*Flow'
# - 'java.util.stream.*Stream'
# ignoreFunctionCall: []
ImplicitDefaultLocale: #格式化字符串或执行大小写转换时,更喜欢显式传递[java.util.Locale],而不是使用隐式默认值
active: false
ImplicitUnitReturnType: #使用表达式语句的函数具有隐式返回类型
active: false
allowExplicitReturnType: true
InvalidRange: #报告为空的范围
active: true
IteratorHasNextCallsNextMethod: #验证Iterator接口的实现。Iterator实现的hasNext方法不应该有任何副作用
active: true
IteratorNotThrowingNoSuchElementException: #报告在next方法的实现中不抛出NoSuchElementException的Iterator接口的实现。当没有更多的元素要返回时迭代器应该抛出NoSuchElementException
active: true
LateinitUsage: #报告Late-init修饰符的用法。
active: false
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
ignoreOnClassesPattern: ''
MapGetWithNotNullAssertionOperator: #使用非null断言运算符报告对map访问方法map[]或map.get的调用。这可能会导致NullPointerException
active: true
# MissingPackageDeclaration: #当缺少包声明时报告
# active: false
# excludes: ['**/*.kts']
# NullCheckOnMutableProperty: #报告对可变属性的null检查因为这些属性的值可以在执行if语句后更改从而使null检查无效
# active: false
NullableToStringCall: #使用可能返回字符串“null”的可为null的接收器报告toString调用
active: false
# PropertyUsedBeforeDeclaration: #报告在声明之前使用的属性
# active: false
UnconditionalJumpStatementInLoop: #报告包含跳转语句的循环,这些语句在任何条件下都会跳转
active: false
# UnnecessaryNotNullCheck: #使用requireNotNull或checkNotNull报告用户可以删除的不必要的非null检查。
# active: false
UnnecessaryNotNullOperator: #报告用户可以删除的不必要的非null运算符用法!!
active: true
UnnecessarySafeCall: #报告用户可以删除的不必要的非null运算符用法?
active: true
# UnreachableCatchBlock: #报告无法访问的捕获块。如果在上面的块中已经捕获到异常,则捕获块可能无法访问(Exception or Throwable)catch顺序
# active: true
UnreachableCode: #报告无法访问的代码。代码可能无法访问因为它位于return、throw、continue或break表达式后面
active: true
UnsafeCallOnNullableType: #报告对可为null的类型的不安全调用
active: true
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
UnsafeCast: #报告不安全的强制转换
active: true
# UnusedUnaryOperator: #检测未使用的一元运算符
# active: true
UselessPostfixExpression: #报告未使用因而不必要的后缀表达式(++--
active: true
WrongEqualsTypeParameter: #报告接受错误类型参数的equals方法
active: true
#{link https://detekt.dev/docs/rules/style#explicititlambdaparameter}
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: false
# 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: 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: false
# 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: true
ignoreOverridden: false
ignoreUsageInGenerics: false
FunctionOnlyReturningConstant:
active: true
ignoreOverridableFunction: true
# ignoreActualFunction: true
# excludedFunctions: []
LoopWithTooManyJumpStatements:
active: true
maxJumpCount: 1
MagicNumber:
active: true
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/*.kts']
ignoreNumbers:
- '-1'
- '0'
- '1'
- '2'
ignoreHashCodeFunction: true
ignorePropertyDeclaration: false
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
# 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: #除了实现单个方法之外什么都不做的匿名对象可以用作lambda。
# active: true
OptionalAbstractKeyword:
active: true
OptionalUnit:
active: false
PreferToOverPairSyntax:
active: false
ProtectedMemberInFinalClass:
active: true
# RangeUntilInsteadOfRangeTo:
# active: false
RedundantExplicitType:
active: false
RedundantHigherOrderMapUsage:
active: true
RedundantVisibilityModifierRule:
active: false
# ReturnCount: #在一个函数中有许多出口点可能会造成混乱,并影响代码的可读性。
# active: false
# max: 2
# excludedFunctions:
# - 'equals'
# excludeLabeled: false
# excludeReturnFromLambda: false
# excludeGuardClauses: false
SafeCast:
active: true
SerialVersionUIDInSerializableClass:
active: true
# SpacingAfterPackageDeclaration:
# active: false
# StringShouldBeRawString:
# active: false
# maxEscapedCharacterCount: 2
# ignoredCharacters: []
ThrowsCount: #限制函数中抛出语句的数量,函数应该有明确的throw语句
active: true
max: 2
# excludeGuardClauses: false
TrailingWhitespace:
active: false
# TrimMultilineRawString:
# active: false
# trimmingMethods:
# - 'trimIndent'
# - 'trimMargin'
UnderscoresInNumericLiterals:
active: false
# acceptableLength: 4
# allowNonStandardGrouping: false
UnnecessaryAnnotationUseSiteTarget:
active: false
UnnecessaryApply:
active: true
# UnnecessaryBackticks:
# active: false
# UnnecessaryBracesAroundTrailingLambda:
# active: false
# UnnecessaryFilter:
# active: true
UnnecessaryInheritance: #此规则报告不必要的超类型
active: true
# UnnecessaryInnerClass:
# active: false
UnnecessaryLet:
active: false
UnnecessaryParentheses:
active: false
# allowForUnclearPrecedence: false
# UnusedImport:
# active: false
# UnusedParameter:
# active: true
# allowedNames: 'ignored|expected'
UnusedPrivateClass:
active: true
UnusedPrivateMember:
active: true
allowedNames: ''
# UnusedPrivateProperty:
# active: true
# allowedNames: '_|ignored|expected|serialVersionUID'
# 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
# ignoreLateinitVar: false
WildcardImport:
active: true
excludeImports:
- 'java.util.*'