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: #使用Array<Primitive>会导致隐含拳击和性能打击。更喜欢使用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.*'