diff --git a/build.gradle.kts b/build.gradle.kts index 91831b3..8bbd331 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,4 +10,22 @@ dependencyLocking { plugins { id("bip39.ktlint-conventions") + alias(libs.plugins.detekt) +} + +tasks { + register("detektAll", io.gitlab.arturbosch.detekt.Detekt::class) { + parallel = true + setSource(files(projectDir)) + include("**/*.kt") + //include("**/*.kts") + exclude("**/resources/**") + exclude("**/build/**") + exclude("**/commonTest/**") + exclude("**/jvmTest/**") + exclude("**/androidTest/**") + config.setFrom(files("${rootProject.projectDir}/tools/detekt.yml")) + baseline.set(file("$rootDir/tools/detekt-baseline.xml")) + buildUponDefaultConfig = true + } } diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 8ae99b9..728b558 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -10,6 +10,10 @@ com.google.guava:guava:29.0-jre=classpath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=classpath com.google.j2objc:j2objc-annotations:1.3=classpath de.undercouch:gradle-download-task:4.1.1=classpath +io.github.detekt.sarif4k:sarif4k:0.0.1=classpath +io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.20.0=classpath +io.gitlab.arturbosch.detekt:detekt-utils:1.20.0=classpath +io.gitlab.arturbosch.detekt:io.gitlab.arturbosch.detekt.gradle.plugin:1.20.0=classpath net.java.dev.jna:jna:5.6.0=classpath org.checkerframework:checker-qual:2.11.1=classpath org.jetbrains.intellij.deps:trove4j:1.0.20200330=classpath @@ -30,8 +34,15 @@ org.jetbrains.kotlin:kotlin-scripting-common:1.6.21=classpath org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.21=classpath org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.6.21=classpath org.jetbrains.kotlin:kotlin-scripting-jvm:1.6.21=classpath +org.jetbrains.kotlin:kotlin-stdlib-common:1.5.31=classpath +org.jetbrains.kotlin:kotlin-stdlib:1.5.31=classpath org.jetbrains.kotlin:kotlin-tooling-metadata:1.6.21=classpath org.jetbrains.kotlin:kotlin-util-io:1.6.21=classpath org.jetbrains.kotlin:kotlin-util-klib:1.6.21=classpath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.1.0=classpath +org.jetbrains.kotlinx:kotlinx-serialization-core:1.1.0=classpath +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.1.0=classpath +org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0=classpath +org.jetbrains:annotations:13.0=classpath empty= diff --git a/gradle.lockfile b/gradle.lockfile index c5ca209..0a7de83 100644 --- a/gradle.lockfile +++ b/gradle.lockfile @@ -3,6 +3,7 @@ # This file is expected to be part of source control. ch.qos.logback:logback-classic:1.2.9=ktlint ch.qos.logback:logback-core:1.2.9=ktlint +com.beust:jcommander:1.82=detekt com.github.shyiko.klob:klob:0.2.1=ktlint com.pinterest.ktlint:ktlint-core:0.45.2=ktlint com.pinterest.ktlint:ktlint-reporter-baseline:0.45.2=ktlint @@ -16,23 +17,47 @@ com.pinterest.ktlint:ktlint-ruleset-standard:0.45.2=ktlint com.pinterest.ktlint:ktlint-ruleset-test:0.45.2=ktlint com.pinterest:ktlint:0.45.2=ktlint info.picocli:picocli:3.9.6=ktlint -io.github.detekt.sarif4k:sarif4k:0.0.1=ktlint +io.github.detekt.sarif4k:sarif4k:0.0.1=detekt,ktlint io.github.microutils:kotlin-logging-jvm:2.1.21=ktlint -net.java.dev.jna:jna:5.6.0=ktlint +io.gitlab.arturbosch.detekt:detekt-api:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-cli:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-core:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-metrics:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-parser:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-psi-utils:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-report-html:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-report-sarif:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-report-txt:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-report-xml:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-rules-complexity:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-rules-coroutines:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-rules-documentation:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-rules-empty:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-rules-errorprone:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-rules-exceptions:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-rules-naming:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-rules-performance:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-rules-style:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-rules:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-tooling:1.20.0=detekt +io.gitlab.arturbosch.detekt:detekt-utils:1.20.0=detekt +net.java.dev.jna:jna:5.6.0=detekt,ktlint org.ec4j.core:ec4j-core:0.3.0=ktlint -org.jetbrains.intellij.deps:trove4j:1.0.20200330=ktlint -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.20=ktlint -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.6.20=ktlint -org.jetbrains.kotlin:kotlin-reflect:1.6.20=ktlint -org.jetbrains.kotlin:kotlin-script-runtime:1.6.20=ktlint -org.jetbrains.kotlin:kotlin-stdlib-common:1.6.20=ktlint +org.jetbrains.intellij.deps:trove4j:1.0.20200330=detekt,ktlint +org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.20=detekt,ktlint +org.jetbrains.kotlin:kotlin-daemon-embeddable:1.6.20=detekt,ktlint +org.jetbrains.kotlin:kotlin-reflect:1.6.20=detekt,ktlint +org.jetbrains.kotlin:kotlin-script-runtime:1.6.20=detekt,ktlint +org.jetbrains.kotlin:kotlin-stdlib-common:1.6.20=detekt,ktlint org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.20=ktlint org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.20=ktlint -org.jetbrains.kotlin:kotlin-stdlib:1.6.20=ktlint -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.1.0=ktlint -org.jetbrains.kotlinx:kotlinx-serialization-core:1.1.0=ktlint -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.1.0=ktlint -org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0=ktlint -org.jetbrains:annotations:13.0=ktlint +org.jetbrains.kotlin:kotlin-stdlib:1.6.20=detekt,ktlint +org.jetbrains.kotlinx:kotlinx-html-jvm:0.7.5=detekt +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.1.0=detekt,ktlint +org.jetbrains.kotlinx:kotlinx-serialization-core:1.1.0=detekt,ktlint +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.1.0=detekt,ktlint +org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0=detekt,ktlint +org.jetbrains:annotations:13.0=detekt,ktlint org.slf4j:slf4j-api:1.7.32=ktlint -empty=annotationProcessor,compileClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +org.yaml:snakeyaml:1.30=detekt +empty=annotationProcessor,compileClasspath,detektPlugins,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d001640..eadc6a3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,6 +12,7 @@ moshi-core = { module = "com.squareup.moshi:moshi", version.ref = "moshi" } moshi-kotlin = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "moshi" } [plugins] +detekt = "io.gitlab.arturbosch.detekt:1.20.0" dokka = "org.jetbrains.dokka:1.6.20" -versions = "com.github.ben-manes.versions:0.42.0" publish = "com.vanniktech.maven.publish:0.18.0" +versions = "com.github.ben-manes.versions:0.42.0" \ No newline at end of file diff --git a/tools/detekt-baseline.xml b/tools/detekt-baseline.xml new file mode 100644 index 0000000..d707704 --- /dev/null +++ b/tools/detekt-baseline.xml @@ -0,0 +1,78 @@ + + + + + ForEachOnRange:Mnemonics.kt$Mnemonics.MnemonicCode$forEach { i -> // isolate the next bit (starting from the big end) val bit = phraseIndex and (1 shl i) != 0 // if the bit is set, then update the corresponding bit in the nextByte if (bit) nextByte = nextByte or (1 shl 7 - (bitsProcessed).rem(8)).toByte() val entropyIndex = ((++bitsProcessed) - 1) / 8 // if we're at a byte boundary (excluding the extra checksum bits) if (bitsProcessed.rem(8) == 0 && entropyIndex < entropy.size) { // then set the byte and prepare to process the next byte entropy[entropyIndex] = nextByte nextByte = 0.toByte() // if we're now processing checksum bits, then track them for later } else if (entropyIndex >= entropy.size) { checksumBits.add(bit) } } + FunctionNaming:Pbkdf2Sha512.kt$Pbkdf2Sha512$private fun F(p: ByteArray, s: ByteArray, c: Int, i: Int): ByteArray + ImplicitDefaultLocale:MnemonicsTest.kt$String.format("%02x", b) + IteratorNotThrowingNoSuchElementException:Mnemonics.kt$Mnemonics.MnemonicCode$<no name provided> : Iterator + LargeClass:WordList.kt$WordList$Companion + LongMethod:WordList.kt$WordList.Companion$ private fun fetchWords(languageCode: String): List<String> + MagicNumber:Mnemonics.kt$7 + MagicNumber:Mnemonics.kt$8 + MagicNumber:Mnemonics.kt$Mnemonics.MnemonicCode$10 + MagicNumber:Mnemonics.kt$Mnemonics.MnemonicCode$11 + MagicNumber:Mnemonics.kt$Mnemonics.MnemonicCode$3 + MagicNumber:Mnemonics.kt$Mnemonics.MnemonicCode$33 + MagicNumber:Mnemonics.kt$Mnemonics.MnemonicCode$7 + MagicNumber:Mnemonics.kt$Mnemonics.MnemonicCode$8 + MagicNumber:Mnemonics.kt$Mnemonics.MnemonicCode.Companion$11 + MagicNumber:Mnemonics.kt$Mnemonics.MnemonicCode.Companion$3 + MagicNumber:Mnemonics.kt$Mnemonics.MnemonicCode.Companion$4 + MagicNumber:Mnemonics.kt$Mnemonics.WordCount$3 + MagicNumber:Mnemonics.kt$Mnemonics.WordCount$32 + MagicNumber:Mnemonics.kt$Mnemonics.WordCount.COUNT_12$12 + MagicNumber:Mnemonics.kt$Mnemonics.WordCount.COUNT_15$15 + MagicNumber:Mnemonics.kt$Mnemonics.WordCount.COUNT_18$18 + MagicNumber:Mnemonics.kt$Mnemonics.WordCount.COUNT_21$21 + MagicNumber:Mnemonics.kt$Mnemonics.WordCount.COUNT_24$24 + MagicNumber:Pbkdf2Sha512.kt$Pbkdf2Sha512$20.0 + MagicNumber:Pbkdf2Sha512.kt$Pbkdf2Sha512$24 + MagicNumber:Pbkdf2Sha512.kt$Pbkdf2Sha512$4 + MagicNumber:Pbkdf2Sha512.kt$Pbkdf2Sha512$8 + MaxLineLength:MnemonicsTest.kt$MnemonicsTest$hex shouldBe "b873212f885ccffbf4692afcb84bc2e55886de2dfa07d90f5c3c239abc31c0a6ce047e30fd8bf6a281e71389aa82d73df74c7bbfb3b06b4639a5cee775cccd3c" + MaxLineLength:MnemonicsTest.kt$MnemonicsTest$row(12, "0b01c3c0b0590faf45fc171da17cfb22", "arch asthma usual gaze movie stumble blood load buffalo armor disagree earth") + MaxLineLength:MnemonicsTest.kt$MnemonicsTest$row(15, "e06ce21369dc09eb2bda66510a76f65ab3f947cce90fcb10", "there grow luggage squirrel scene void quarter error extra father rural rely display physical crisp capable slam lumber") + MaxLineLength:MnemonicsTest.kt$MnemonicsTest$row(18, "d5bcbf62dea1a07ab1abb0144b299300137168a7939f3071f112b557", "stick tourist suffer run borrow diary shop invite begin flock gospel ability damage reform oxygen initial corn moon dwarf height image") + MaxLineLength:MnemonicsTest.kt$MnemonicsTest$row(24, "b893a6b0da8fc9b73d709bda939e818a677aa376c266949378300b65a34b8e52", "review outdoor promote relax wish swear volume beach surround ostrich parrot below jeans faculty swallow error nest orange army bitter focus place deer fat") + MaxLineLength:MnemonicsTest.kt$MnemonicsTest$val validPhrase = "void come effort suffer camp survey warrior heavy shoot primary clutch crush open amazing screen patrol group space point ten exist slush involve unfold" + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTT", "saltKEYbcTcXHCBxtjD", 1, 512, "cbe6088ad4359af42e603c2a33760ef9d4017a7b2aad10af46f992c660a0b461ecb0dc2a79c2570941bea6a08d15d6887e79f32b132e1c134e9525eeddd744fa") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTT", "saltKEYbcTcXHCBxtjD", 31, 504, "15530800da88a0776a812937eb2afeea4a2e7ecad633a918f1024688f73c5721d8bfcaa87f253cf50b9181ab3bb28043e13b1ce859f71d002674806bab0547") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTT", "saltKEYbcTcXHCBxtjD", 79, 520, "3b9359b5639de3f8ec4009491b5fafe764548794c87f44a9fd6a7b9364522bee36b6b71819b71e9130dc6df1db6eba29133393762d9d89f68dd2d5d9d61488937e") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTl", "saltKEYbcTcXHCBxtjD2", 3, 512, "3660a4d16e9f8c2d467a051d95444d33148fcb8e595767f05f554487a1f97426b8dad9a83538144539b14b9274a819a8bbe59267cc51073746eef67b6042ed9d") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTl", "saltKEYbcTcXHCBxtjD2", 37, 504, "6a71211a3b59e4b76fe962e17c2db6232a84a10edc043807831992665ff9d0b9cc76c6f5dc84297050bdd026e05144e3e651b3f8b4108bb050e576ba0b9440") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTl", "saltKEYbcTcXHCBxtjD2", 83, 520, "8ec068d1a5ad8aec6ea95aab0b4545e86adeb940bfa71c9b6e8969cd70239ec60020137c8094cf466d2129f98bc55b53077e0befb72615f0fe38554cb22f2cf455") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlR", "saltKEYbcTcXHCBxtjD2P", 41, 504, "613a19696be76eb92a705b9a2fe6eb12cab31086c9b2778b8b83fc7f40cc3a02b39b3b17cbd0c97938be2e6e8d6f6bf73afbe7dea8cffcdd4e4bc6853f4e40") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlR", "saltKEYbcTcXHCBxtjD2P", 5, 512, "cc2fe2ab0ba48720dc1db53e850219fca6c5eada37023cb952e7f26d4ab707bcf7e25360e28db6cc97df1d6bf5fa49b2e0b1282fd6b05fed5766dca7bb306a2c") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlR", "saltKEYbcTcXHCBxtjD2P", 89, 520, "c882fda77fec48a78af3393a27cdcda40f8392ac5997ed150e45cc501dbcb1a4fdb770556f12f6c7c22bd8d111051bb6a9a260cff821f2cb5902ea6a6536338cf9") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE5", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJe", 43, 504, "e0d5567fb5f45381284d7d67a3386f943e14b1af2766b675cdd988614e40ffc012b9f320b5e33d3f6aea8af3fcd2f1077b4082e70414750af2b1b3bbf5948b") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE5", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJe", 7, 512, "3cba5dc465030d7d883df2d2eba356c2daf047605d873be576385acf50d57a574d4ccc2f65cfd63d04c6746d553605c7a1eafbadb86fde0600c6a0fefab076c3") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE5", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJe", 97, 520, "d641b7852c0f5ad0bba73b155722bd9f0a6142765d0719eaabc36d25d7dc0a10edb2511d463748e611349a6c71b9b7f5dea5e445c1c98afc209387d6786970d21c") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJem", 101, 520, "d44e4dae8a7a5223898f419c18645191d57748bfdeef5b0f49bc36b5efa3611c76e82f097de834de3294bbad9f0a8071c0a09587bf748ed04118706f384ee87679") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJem", 11, 512, "22110678bafc2672df890e9e54f4a8ca4cd4b92894a36003f293de1209497e8c4b1ab7a0e5da5868e1398787a3d3dd7a54d3ef0912bcf2322dd0521cd342c156") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJem", 47, 504, "c92ce4dceb97d3411e7a6ccd21d143d6a0f830b3d6e2ebe8dd6ff5aaac8d879bb7cda02dd652471243cb30e3bef8213dc4b6e4e9e2623af9702d67c30ea8ed") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemk", 103, 520, "2dbd66db3e0b9de948e5a76821a246bb1b03d5da68d1c1c0f7c6dbc41d5716caff82ac844d8107febb96ae9bae3958ade57528e27e53dab024263701ea432b9ed4") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemk", 13, 512, "726a143f2843b01b3074351842db496f102ca333e3eef51ae262984812cc133e57d61c89d90f455d64555b38f7a8f5dbf74f2ab1f5e3bd30eda32103d76365cc") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemk", 53, 504, "40de5197dc99cf3c788ba10ad93fe8213584cc2c9304fce1ad2c0df261e28aac6769bebf7b19f4ca5b9758ad97c193a31a89faa80f1a0e75c8347da134f4c6") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi0", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy", 107, 520, "2186bb78640371f3912d8ce507a4323c903608ec54b85ecc43608eafe52ee1f403f3e68e09a150599ca9f70097bc51f232d6449586a70fc5b7b0a21c629110563d") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi0", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy", 17, 512, "b14ac88b22ca14b4a036159b9d671e542702ec07239108ea756040a7e189c6d4680e7875fc92849d853c93e9a89bf232a08fbd0d6e770a5b78ff6be5fd272d64") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi0", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy", 61, 504, "d2e627cbe497af8eba3c2d22bbb765c14b065259d3147f58e2d567236aebd0c9a2b00f4cf2d54f3f8235ee02d3541d4c6f7240f5fd9a47a94ce914a648c016") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6", 109, 520, "c512aa138dd99b1a785c3ec048dddd4eb569d7f9eb7f206b0544746e266f214fdcc4f5d5ba0869140010bdce517a550c58b527439dc40463f9c7fba7e2cbbc8820") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6", 19, 512, "9f6b95569376f14c9b716741297b0f64e9ea46b837c7a4c2831d3c9f7a94633aa4eda057916ae03c09030aed2c6dd6203172e257ab08b98aa1ce60fe90a7a18f") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6", 67, 504, "cc51a623e2a197a8b009815a6d4ebebaaa247beb7a0643ea2b77909ff10b4c6d85bf080e55f2954ae003a1cfb78fd940fedfd67fe8ed4849e2bc1ae42ec055") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6P", 113, 520, "e4c2be8f5cad779f90f54bec52888d6a1684f55d5145103515981217cc6609a039a86a41b3d22bae22f9a6687a605ae5c9e9dc411d83ba892f69af608b37fb89e8") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6P", 23, 512, "92c92d9ffe4242ed0691a8b704834621e909e2a03c101b4f90e098909039b819f3bcb55f08058fa96412d17c2e2b0ad52b095f782fb2969c50ff1e1262844cf9") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("passDATAb00AB7YxDTTlRH2dqxDx19GDxDV1zFMz7E6QVqKIzwOtMnlxQLttpE57Un4u12D2YD7oOPpiEvCDYvntXEe4NNPLCnGGeJArbYDEu6xDoCfWH6kbuV6awi04U", "saltKEYbcTcXHCBxtjD2PnBh44AIQ6XUOCESOhXpEp3HrcGMwbjzQKMSaf63IJemkURWoqHusIeVB8Il91NjiCGQacPUu9qTFaShLbKG0Yj4RCMV56WPj7E14EMpbxy6P", 71, 504, "f8e55259f1d1d884d0ffbd1d22bc7894c53e2a313131499ba8f35faeda6208a80c16ac93f5c0b79c3a1575d92f6a833ae7036d52be926e6468637c28222cd7") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("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", 127, 520, "bb344a5712d07c4c49dfb9f77e44c5b4c29406c78c84214b07defb36a7898ae7a96c6cfeaf8d753b4bde382c4e48f247a90c17df79726228e2fed11c40b98e2648") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("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", 29, 512, "5edc3d6649fa05c07622dede976997afe683f8b489d996509e2bf9421cd81f49b7bd38e78ad7ccad0a2a9070710ad451da7b6f5b207a0ee17c14ad2054bf492a") + MaxLineLength:Pbkdf2Sha512Test.kt$Pbkdf2Sha512Test$row("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", 73, 504, "d5ef8859566cabceb37b6f4a91e54a36067084bed91d9ccbb4d1e65942764cc5ff45304a4788f1a181e4415df2104f299aaadaed25392b74d5ecdf1af09c10") + MaxLineLength:ReadmeExamplesTest.kt$ReadmeExamplesTest$"still champion voice habit trend flight survey between bitter process artefact blind carbon truly provide dizzy crush flush breeze blouse charge solid fish spread" + NestedBlockDepth:Mnemonics.kt$Mnemonics.MnemonicCode$ fun toEntropy(): ByteArray + ThrowsCount:Mnemonics.kt$Mnemonics.MnemonicCode$ fun toEntropy(): ByteArray + UnusedPrivateMember:build.gradle.kts$val commonMain by getting { dependencies { } } + UnusedPrivateMember:build.gradle.kts$val commonTest by getting { dependencies { implementation(kotlin("test")) } } + UnusedPrivateMember:build.gradle.kts$val detektProjectBaseline by registering(io.gitlab.arturbosch.detekt.DetektCreateBaselineTask::class) { description = "Overrides current baseline." buildUponDefaultConfig.set(true) ignoreFailures.set(true) parallel.set(true) setSource(files(rootDir)) config.setFrom(files("${rootProject.projectDir}/tools/detekt.yml")) baseline.set(file("$rootDir/tools/detekt-baseline.xml")) include("**/*.kt") include("**/*.kts") exclude("**/resources/**") exclude("**/build/**") } + UnusedPrivateMember:build.gradle.kts$val jvmMain by getting { dependencies { } } + UnusedPrivateMember:build.gradle.kts$val jvmTest by getting { dependencies { implementation(kotlin("test")) implementation(libs.kotest.runner) implementation(libs.kotest.assertion) implementation(libs.kotest.property) implementation(libs.moshi.core) implementation(libs.moshi.kotlin) } } + + diff --git a/tools/detekt.yml b/tools/detekt.yml new file mode 100644 index 0000000..dd92c93 --- /dev/null +++ b/tools/detekt.yml @@ -0,0 +1,701 @@ +build: + maxIssues: 0 + excludeCorrectable: false + weights: + # complexity: 2 + # LongParameterList: 1 + # style: 1 + # comments: 1 + +config: + validation: true + warningsAsErrors: 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' + +comments: + active: true + AbsentOrWrongFileLicense: + active: false + licenseTemplateFile: 'license.template' + licenseTemplateIsRegex: false + CommentOverPrivateFunction: + active: false + CommentOverPrivateProperty: + active: false + DeprecatedBlockTag: + active: false + EndOfSentenceFormat: + active: false + endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)' + OutdatedDocumentation: + active: false + matchTypeParameters: true + matchDeclarationsOrder: true + allowParamOnConstructorProperties: false + UndocumentedPublicClass: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + searchInNestedClass: true + searchInInnerClass: true + searchInInnerObject: true + searchInInnerInterface: true + UndocumentedPublicFunction: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + UndocumentedPublicProperty: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + +complexity: + active: true + ComplexCondition: + active: true + threshold: 4 + ComplexInterface: + active: false + threshold: 10 + includeStaticDeclarations: false + includePrivateDeclarations: false + ComplexMethod: + active: true + threshold: 15 + ignoreSingleWhenExpression: false + 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: 60 + LongParameterList: + active: true + functionThreshold: 6 + constructorThreshold: 7 + ignoreDefaultParameters: false + ignoreDataClasses: true + ignoreAnnotatedParameter: [] + MethodOverloading: + active: false + threshold: 6 + NamedArguments: + active: false + threshold: 3 + ignoreArgumentsMatchingNames: false + NestedBlockDepth: + active: true + threshold: 4 + ReplaceSafeCallChainWithRun: + active: false + StringLiteralDuplication: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + threshold: 3 + ignoreAnnotation: true + excludeStringsWithLessThan5Characters: true + ignoreStringsRegex: '$^' + TooManyFunctions: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + thresholdInFiles: 11 + thresholdInClasses: 11 + thresholdInInterfaces: 11 + thresholdInObjects: 11 + thresholdInEnums: 11 + ignoreDeprecated: false + ignorePrivate: false + ignoreOverridden: false + +coroutines: + active: true + GlobalCoroutineUsage: + active: false + InjectDispatcher: + active: false + dispatcherNames: + - 'IO' + - 'Default' + - 'Unconfined' + RedundantSuspendModifier: + active: false + SleepInsteadOfDelay: + active: false + SuspendFunWithCoroutineScopeReceiver: + active: false + SuspendFunWithFlowReturnType: + active: false + +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: true + methodNames: + - 'equals' + - 'finalize' + - 'hashCode' + - 'toString' + InstanceOfCheckForException: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + NotImplementedDeclaration: + active: false + ObjectExtendsThrowable: + active: false + 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/**', '**/jsTest/**', '**/iosTest/**'] + exceptions: + - 'ArrayIndexOutOfBoundsException' + - 'Exception' + - 'IllegalArgumentException' + - 'IllegalMonitorStateException' + - 'IllegalStateException' + - 'IndexOutOfBoundsException' + - 'NullPointerException' + - 'RuntimeException' + - 'Throwable' + ThrowingNewInstanceOfSameException: + active: true + TooGenericExceptionCaught: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/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 + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + allowedPattern: '^(is|has|are)' + ignoreOverridden: true + ClassNaming: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + classPattern: '[A-Z][a-zA-Z0-9]*' + ConstructorParameterNaming: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + parameterPattern: '[a-z][A-Za-z0-9]*' + privateParameterPattern: '[a-z][A-Za-z0-9]*' + excludeClassPattern: '$^' + ignoreOverridden: true + EnumNaming: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + enumEntryPattern: '[A-Z][_a-zA-Z0-9]*' + ForbiddenClassName: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + forbiddenName: [] + FunctionMaxLength: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + maximumFunctionNameLength: 30 + FunctionMinLength: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + minimumFunctionNameLength: 3 + FunctionNaming: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + functionPattern: '([a-z][a-zA-Z0-9]*)|(`.*`)' + excludeClassPattern: '$^' + ignoreOverridden: true + ignoreAnnotated: + - 'Composable' + FunctionParameterNaming: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + parameterPattern: '[a-z][A-Za-z0-9]*' + excludeClassPattern: '$^' + ignoreOverridden: true + InvalidPackageDeclaration: + active: false + excludes: ['**/*.kts'] + rootPackage: '' + requireRootInDeclaration: false + LambdaParameterNaming: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + parameterPattern: '[a-z][A-Za-z0-9]*|_' + MatchingDeclarationName: + active: true + mustBeFirst: true + MemberNameEqualsClassName: + active: true + ignoreOverridden: true + NoNameShadowing: + active: false + NonBooleanPropertyPrefixedWithIs: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + ObjectPropertyNaming: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + 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 + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + packagePattern: '[a-z]+(\.[a-z][A-Za-z0-9]*)*' + TopLevelPropertyNaming: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + 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 + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + maximumVariableNameLength: 64 + VariableMinLength: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + minimumVariableNameLength: 1 + VariableNaming: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + variablePattern: '[a-z][A-Za-z0-9]*' + privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*' + excludeClassPattern: '$^' + ignoreOverridden: true + +performance: + active: true + ArrayPrimitive: + active: true + ForEachOnRange: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + SpreadOperator: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + UnnecessaryTemporaryInstantiation: + active: true + +potential-bugs: + active: true + AvoidReferentialEquality: + active: false + forbiddenTypePatterns: + - 'kotlin.String' + CastToNullableType: + active: false + Deprecation: + active: false + DontDowncastCollectionTypes: + active: false + DoubleMutabilityForCollection: + active: false + 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' + DuplicateCaseInWhenExpression: + active: true + ElseCaseInsteadOfExhaustiveWhen: + active: false + EqualsAlwaysReturnsTrueOrFalse: + active: true + EqualsWithHashCodeExist: + active: true + ExitOutsideMain: + active: false + ExplicitGarbageCollectionCall: + active: true + HasPlatformType: + active: false + IgnoredReturnValue: + active: false + restrictToAnnotatedMethods: true + returnValueAnnotations: + - '*.CheckResult' + - '*.CheckReturnValue' + ignoreReturnValueAnnotations: + - '*.CanIgnoreReturnValue' + ignoreFunctionCall: [] + ImplicitDefaultLocale: + active: true + ImplicitUnitReturnType: + active: false + allowExplicitReturnType: true + InvalidRange: + active: true + IteratorHasNextCallsNextMethod: + active: true + IteratorNotThrowingNoSuchElementException: + active: true + LateinitUsage: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + ignoreOnClassesPattern: '' + MapGetWithNotNullAssertionOperator: + active: false + MissingPackageDeclaration: + active: false + excludes: ['**/*.kts'] + MissingWhenCase: + active: true + allowElseExpression: true + NullCheckOnMutableProperty: + active: false + NullableToStringCall: + active: false + RedundantElseInWhen: + active: true + UnconditionalJumpStatementInLoop: + active: false + UnnecessaryNotNullOperator: + active: true + UnnecessarySafeCall: + active: true + UnreachableCatchBlock: + active: false + UnreachableCode: + active: true + UnsafeCallOnNullableType: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + UnsafeCast: + active: true + UnusedUnaryOperator: + active: false + UselessPostfixExpression: + active: false + WrongEqualsTypeParameter: + active: true + +style: + active: true + CanBeNonNullable: + active: false + ClassOrdering: + active: false + CollapsibleIfStatements: + active: false + DataClassContainsFunctions: + active: false + conversionFunctionPrefix: 'to' + DataClassShouldBeImmutable: + active: false + DestructuringDeclarationWithTooManyEntries: + active: false + maxDestructuringEntries: 3 + EqualsNullCall: + active: true + EqualsOnSignatureLine: + active: false + ExplicitCollectionElementAccessMethod: + active: false + ExplicitItLambdaParameter: + active: false + ExpressionBodySyntax: + active: false + includeLineWrapping: false + ForbiddenComment: + active: true + values: + - 'FIXME:' + - 'STOPSHIP:' + - 'TODO:' + allowedPatterns: '\[[^\]]\d+\]' + customMessage: '' + ForbiddenImport: + active: false + imports: [] + forbiddenPatterns: '' + ForbiddenMethodCall: + active: false + methods: + - 'kotlin.io.print' + - 'kotlin.io.println' + ForbiddenPublicDataClass: + active: true + excludes: ['**'] + ignorePackages: + - '*.internal' + - '*.internal.*' + ForbiddenVoid: + active: false + ignoreOverridden: false + ignoreUsageInGenerics: false + FunctionOnlyReturningConstant: + active: true + ignoreOverridableFunction: true + ignoreActualFunction: true + excludedFunctions: '' + LibraryCodeMustSpecifyReturnType: + active: true + excludes: ['**'] + LibraryEntitiesShouldNotBePublic: + active: true + excludes: ['**'] + LoopWithTooManyJumpStatements: + active: true + maxJumpCount: 1 + MagicNumber: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + 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 + MandatoryBracesIfStatements: + active: false + MandatoryBracesLoops: + active: false + MaxLineLength: + active: true + maxLineLength: 120 + excludePackageStatements: true + excludeImportStatements: true + excludeCommentStatements: false + MayBeConst: + active: true + ModifierOrder: + active: true + MultilineLambdaItParameter: + active: false + NestedClassesVisibility: + active: true + NewLineAtEndOfFile: + active: false + NoTabs: + active: false + ObjectLiteralToLambda: + active: false + OptionalAbstractKeyword: + active: true + OptionalUnit: + active: false + OptionalWhenBraces: + active: false + PreferToOverPairSyntax: + active: false + ProtectedMemberInFinalClass: + active: true + RedundantExplicitType: + active: false + RedundantHigherOrderMapUsage: + active: false + RedundantVisibilityModifierRule: + active: false + ReturnCount: + active: true + max: 2 + excludedFunctions: 'equals' + excludeLabeled: false + excludeReturnFromLambda: true + excludeGuardClauses: false + SafeCast: + active: true + SerialVersionUIDInSerializableClass: + active: true + SpacingBetweenPackageAndImports: + active: false + ThrowsCount: + active: true + max: 2 + excludeGuardClauses: false + TrailingWhitespace: + active: false + UnderscoresInNumericLiterals: + active: false + acceptableLength: 4 + allowNonStandardGrouping: false + UnnecessaryAbstractClass: + active: true + UnnecessaryAnnotationUseSiteTarget: + active: false + UnnecessaryApply: + active: true + UnnecessaryFilter: + active: false + UnnecessaryInheritance: + active: true + UnnecessaryInnerClass: + active: false + UnnecessaryLet: + active: false + UnnecessaryParentheses: + active: false + UntilInsteadOfRangeTo: + active: false + UnusedImports: + active: false + UnusedPrivateClass: + active: true + UnusedPrivateMember: + active: true + allowedNames: '(_|ignored|expected|serialVersionUID)' + UseAnyOrNoneInsteadOfFind: + active: false + UseArrayLiteralsInAnnotations: + active: false + UseCheckNotNull: + active: false + UseCheckOrError: + active: false + UseDataClass: + active: false + allowVars: false + UseEmptyCounterpart: + active: false + UseIfEmptyOrIfBlank: + active: false + UseIfInsteadOfWhen: + active: false + UseIsNullOrEmpty: + active: false + UseOrEmpty: + active: false + UseRequire: + active: false + UseRequireNotNull: + active: false + UselessCallOnNotNull: + active: true + UtilityClassWithPublicConstructor: + active: true + VarCouldBeVal: + active: true + WildcardImport: + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] + excludeImports: + - 'java.util.*'