mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-15 18:36:01 -04:00
Add detekt
This commit is contained in:
parent
62855f34c6
commit
80c3276786
@ -48,7 +48,7 @@ before_script:
|
|||||||
- adb shell input keyevent 82 &
|
- adb shell input keyevent 82 &
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- ./gradlew jacocoInstrumentationTestReport ktlintCheck app:lintDebug core:lintDebug custom:lintCustomexampleDebug jacocoTestDebugUnitTestReport jacocoTestCustomExampleDebugUnitTestReport app:assembleDebug
|
- ./gradlew jacocoInstrumentationTestReport ktlintCheck detekt app:lintDebug core:lintDebug custom:lintCustomexampleDebug jacocoTestDebugUnitTestReport jacocoTestCustomExampleDebugUnitTestReport app:assembleDebug
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- bash <(curl -s https://codecov.io/bash)
|
- bash <(curl -s https://codecov.io/bash)
|
||||||
|
59
app/detekt_baseline.xml
Normal file
59
app/detekt_baseline.xml
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<SmellBaseline>
|
||||||
|
<Blacklist></Blacklist>
|
||||||
|
<Whitelist>
|
||||||
|
<ID>EmptyFunctionBlock:None.kt$None${ }</ID>
|
||||||
|
<ID>EmptyFunctionBlock:SimplePageChangeListener.kt$SimplePageChangeListener${ }</ID>
|
||||||
|
<ID>EmptyFunctionBlock:ZimHostActivity.kt$ZimHostActivity.<no name provided>${}</ID>
|
||||||
|
<ID>ForbiddenComment:KiwixMainActivity.kt$KiwixMainActivity$// TODO: Show to user</ID>
|
||||||
|
<ID>LongParameterList:ZimManageViewModel.kt$ZimManageViewModel$( booksOnFileSystem: List<BookOnDisk>, activeDownloads: List<DownloadModel>, allLanguages: List<Language>, libraryNetworkEntity: LibraryNetworkEntity, filter: String, fileSystemState: FileSystemState )</ID>
|
||||||
|
<ID>MagicNumber:LibraryFragment.kt$LibraryFragment$1024f</ID>
|
||||||
|
<ID>MagicNumber:ShareFiles.kt$ShareFiles$24</ID>
|
||||||
|
<ID>MagicNumber:ZimManageViewModel.kt$ZimManageViewModel$5</ID>
|
||||||
|
<ID>MagicNumber:ZimManageViewModel.kt$ZimManageViewModel$500</ID>
|
||||||
|
<ID>MagicNumber:ZimManageViewModel.kt$ZimManageViewModel$60</ID>
|
||||||
|
<ID>PackageNaming:ConnectivityBroadcastReceiver.kt$package org.kiwix.kiwixmobile.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:DefaultLanguageProvider.kt$package org.kiwix.kiwixmobile.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:DeleteFiles.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects</ID>
|
||||||
|
<ID>PackageNaming:DownloadAdapter.kt$package org.kiwix.kiwixmobile.zim_manager.download_view</ID>
|
||||||
|
<ID>PackageNaming:DownloadFragment.kt$package org.kiwix.kiwixmobile.zim_manager.download_view</ID>
|
||||||
|
<ID>PackageNaming:DownloadViewHolder.kt$package org.kiwix.kiwixmobile.zim_manager.download_view</ID>
|
||||||
|
<ID>PackageNaming:Fat32Checker.kt$package org.kiwix.kiwixmobile.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:FileSelectListState.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view</ID>
|
||||||
|
<ID>PackageNaming:HotspotStateReceiver.kt$package org.kiwix.kiwixmobile.webserver.wifi_hotspot</ID>
|
||||||
|
<ID>PackageNaming:LibraryAdapter.kt$package org.kiwix.kiwixmobile.zim_manager.library_view.adapter</ID>
|
||||||
|
<ID>PackageNaming:LibraryDelegate.kt$package org.kiwix.kiwixmobile.zim_manager.library_view.adapter</ID>
|
||||||
|
<ID>PackageNaming:LibraryFragment.kt$package org.kiwix.kiwixmobile.zim_manager.library_view</ID>
|
||||||
|
<ID>PackageNaming:LibraryListItem.kt$package org.kiwix.kiwixmobile.zim_manager.library_view.adapter</ID>
|
||||||
|
<ID>PackageNaming:LibraryViewHolder.kt$package org.kiwix.kiwixmobile.zim_manager.library_view.adapter</ID>
|
||||||
|
<ID>PackageNaming:NetworkState.kt$package org.kiwix.kiwixmobile.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:None.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects</ID>
|
||||||
|
<ID>PackageNaming:OpenFile.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects</ID>
|
||||||
|
<ID>PackageNaming:SectionsPagerAdapter.kt$package org.kiwix.kiwixmobile.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:ShareFiles.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects</ID>
|
||||||
|
<ID>PackageNaming:SimplePageChangeListener.kt$package org.kiwix.kiwixmobile.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:SimpleTextListener.kt$package org.kiwix.kiwixmobile.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:StartMultiSelection.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view.effects</ID>
|
||||||
|
<ID>PackageNaming:ZimFileSelectFragment.kt$package org.kiwix.kiwixmobile.zim_manager.fileselect_view</ID>
|
||||||
|
<ID>PackageNaming:ZimManageActivity.kt$package org.kiwix.kiwixmobile.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:ZimManageViewModel.kt$package org.kiwix.kiwixmobile.zim_manager</ID>
|
||||||
|
<ID>ReturnCount:LanguageActivity.kt$LanguageActivity$override fun onOptionsItemSelected(item: MenuItem): Boolean</ID>
|
||||||
|
<ID>ReturnCount:LibraryFragment.kt$LibraryFragment$private fun onBookItemClick(item: BookItem)</ID>
|
||||||
|
<ID>SpreadOperator:LanguageAdapter.kt$LanguageAdapter$(*delegates)</ID>
|
||||||
|
<ID>SpreadOperator:LibraryAdapter.kt$LibraryAdapter$( *delegates )</ID>
|
||||||
|
<ID>SpreadOperator:ZimManageViewModel.kt$ZimManageViewModel$( *createLibrarySection( booksUnfilteredByLanguage.filter { activeLanguageCodes.contains(it.language) }, fileSystemState, R.string.your_languages, Long.MAX_VALUE ), *createLibrarySection( booksUnfilteredByLanguage.filterNot { activeLanguageCodes.contains(it.language) }, fileSystemState, R.string.other_languages, Long.MIN_VALUE ) )</ID>
|
||||||
|
<ID>SpreadOperator:ZimManageViewModel.kt$ZimManageViewModel$( DividerItem(sectionId, context.getString(sectionStringId)), *toBookItems(books, fileSystemState) )</ID>
|
||||||
|
<ID>SpreadOperator:ZimManageViewModel.kt$ZimManageViewModel$(*disposables())</ID>
|
||||||
|
<ID>TooGenericExceptionCaught:Fat32Checker.kt$Fat32Checker$e: Exception</ID>
|
||||||
|
<ID>TooGenericExceptionCaught:KiwixMainActivity.kt$KiwixMainActivity$e: Exception</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:LibraryViewHolder.kt$LibraryViewHolder.LibraryBookViewHolder$throw RuntimeException("impossible invalid state: ${item.fileSystemState}")</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:SectionsPagerAdapter.kt$SectionsPagerAdapter$throw RuntimeException("No matching fragment for position: $position")</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:SectionsPagerAdapter.kt$SectionsPagerAdapter$throw RuntimeException("No matching title for position: $position")</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:ZimManageViewModel.kt$ZimManageViewModel$throw RuntimeException("Impossible state")</ID>
|
||||||
|
<ID>TooManyFunctions:KiwixActivityComponent.kt$KiwixActivityComponent$KiwixActivityComponent</ID>
|
||||||
|
<ID>TooManyFunctions:KiwixMainActivity.kt$KiwixMainActivity$KiwixMainActivity</ID>
|
||||||
|
<ID>TooManyFunctions:LibraryFragment.kt$LibraryFragment$LibraryFragment</ID>
|
||||||
|
<ID>TooManyFunctions:ZimHostActivity.kt$ZimHostActivity$ZimHostActivity</ID>
|
||||||
|
<ID>TooManyFunctions:ZimManageViewModel.kt$ZimManageViewModel$ZimManageViewModel</ID>
|
||||||
|
</Whitelist>
|
||||||
|
</SmellBaseline>
|
@ -8,6 +8,7 @@ buildscript {
|
|||||||
classpath(Libs.kotlin_gradle_plugin)
|
classpath(Libs.kotlin_gradle_plugin)
|
||||||
classpath(Libs.ktlint_gradle)
|
classpath(Libs.ktlint_gradle)
|
||||||
classpath(Libs.jacoco_android)
|
classpath(Libs.jacoco_android)
|
||||||
|
classpath(Libs.detekt_gradle_plugin)
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ dependencies {
|
|||||||
implementation("com.dicedmelon.gradle:jacoco-android:0.1.4")
|
implementation("com.dicedmelon.gradle:jacoco-android:0.1.4")
|
||||||
implementation("org.jlleitschuh.gradle:ktlint-gradle:8.2.0")
|
implementation("org.jlleitschuh.gradle:ktlint-gradle:8.2.0")
|
||||||
implementation("com.google.apis:google-api-services-androidpublisher:v3-rev129-1.25.0")
|
implementation("com.google.apis:google-api-services-androidpublisher:v3-rev129-1.25.0")
|
||||||
|
implementation("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.2.2")
|
||||||
|
|
||||||
implementation(gradleApi())
|
implementation(gradleApi())
|
||||||
implementation(localGroovy())
|
implementation(localGroovy())
|
||||||
|
@ -48,6 +48,36 @@ object Libs {
|
|||||||
*/
|
*/
|
||||||
const val retrofit: String = "com.squareup.retrofit2:retrofit:" + Versions.com_squareup_retrofit2
|
const val retrofit: String = "com.squareup.retrofit2:retrofit:" + Versions.com_squareup_retrofit2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://kotlinlang.org/
|
||||||
|
*/
|
||||||
|
const val kotlin_android_extensions: String = "org.jetbrains.kotlin:kotlin-android-extensions:" +
|
||||||
|
Versions.org_jetbrains_kotlin
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://kotlinlang.org/
|
||||||
|
*/
|
||||||
|
const val kotlin_android_extensions_runtime: String =
|
||||||
|
"org.jetbrains.kotlin:kotlin-android-extensions-runtime:" + Versions.org_jetbrains_kotlin
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://kotlinlang.org/
|
||||||
|
*/
|
||||||
|
const val kotlin_annotation_processing_gradle: String =
|
||||||
|
"org.jetbrains.kotlin:kotlin-annotation-processing-gradle:" + Versions.org_jetbrains_kotlin
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://kotlinlang.org/
|
||||||
|
*/
|
||||||
|
const val kotlin_gradle_plugin: String = "org.jetbrains.kotlin:kotlin-gradle-plugin:" +
|
||||||
|
Versions.org_jetbrains_kotlin
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://kotlinlang.org/
|
||||||
|
*/
|
||||||
|
const val kotlin_stdlib_jdk7: String = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:" +
|
||||||
|
Versions.org_jetbrains_kotlin
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* https://github.com/google/dagger
|
* https://github.com/google/dagger
|
||||||
*/
|
*/
|
||||||
@ -192,41 +222,18 @@ object Libs {
|
|||||||
"com.github.triplet.play:com.github.triplet.play.gradle.plugin:" +
|
"com.github.triplet.play:com.github.triplet.play.gradle.plugin:" +
|
||||||
Versions.com_github_triplet_play_gradle_plugin
|
Versions.com_github_triplet_play_gradle_plugin
|
||||||
|
|
||||||
/**
|
|
||||||
* https://kotlinlang.org/
|
|
||||||
*/
|
|
||||||
const val kotlin_annotation_processing_gradle: String =
|
|
||||||
"org.jetbrains.kotlin:kotlin-annotation-processing-gradle:" +
|
|
||||||
Versions.kotlin_annotation_processing_gradle
|
|
||||||
|
|
||||||
/**
|
|
||||||
* https://kotlinlang.org/
|
|
||||||
*/
|
|
||||||
const val kotlin_android_extensions_runtime: String =
|
|
||||||
"org.jetbrains.kotlin:kotlin-android-extensions-runtime:" +
|
|
||||||
Versions.kotlin_android_extensions_runtime
|
|
||||||
|
|
||||||
/**
|
|
||||||
* https://kotlinlang.org/
|
|
||||||
*/
|
|
||||||
const val kotlin_android_extensions: String = "org.jetbrains.kotlin:kotlin-android-extensions:" +
|
|
||||||
Versions.kotlin_android_extensions
|
|
||||||
|
|
||||||
const val multidex_instrumentation: String = "androidx.multidex:multidex-instrumentation:" +
|
const val multidex_instrumentation: String = "androidx.multidex:multidex-instrumentation:" +
|
||||||
Versions.multidex_instrumentation
|
Versions.multidex_instrumentation
|
||||||
|
|
||||||
|
const val detekt_gradle_plugin: String = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:" +
|
||||||
|
Versions.detekt_gradle_plugin
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* http://jcp.org/en/jsr/detail?id=250
|
* http://jcp.org/en/jsr/detail?id=250
|
||||||
*/
|
*/
|
||||||
const val javax_annotation_api: String = "javax.annotation:javax.annotation-api:" +
|
const val javax_annotation_api: String = "javax.annotation:javax.annotation-api:" +
|
||||||
Versions.javax_annotation_api
|
Versions.javax_annotation_api
|
||||||
|
|
||||||
/**
|
|
||||||
* https://kotlinlang.org/
|
|
||||||
*/
|
|
||||||
const val kotlin_gradle_plugin: String = "org.jetbrains.kotlin:kotlin-gradle-plugin:" +
|
|
||||||
Versions.kotlin_gradle_plugin
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* https://github.com/square/okhttp
|
* https://github.com/square/okhttp
|
||||||
*/
|
*/
|
||||||
@ -236,12 +243,6 @@ object Libs {
|
|||||||
const val ink_page_indicator: String = "com.pacioianu.david:ink-page-indicator:" +
|
const val ink_page_indicator: String = "com.pacioianu.david:ink-page-indicator:" +
|
||||||
Versions.ink_page_indicator
|
Versions.ink_page_indicator
|
||||||
|
|
||||||
/**
|
|
||||||
* https://kotlinlang.org/
|
|
||||||
*/
|
|
||||||
const val kotlin_stdlib_jdk7: String = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:" +
|
|
||||||
Versions.kotlin_stdlib_jdk7
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* http://github.com/square/leakcanary/
|
* http://github.com/square/leakcanary/
|
||||||
*/
|
*/
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import kotlin.String
|
||||||
import org.gradle.plugin.use.PluginDependenciesSpec
|
import org.gradle.plugin.use.PluginDependenciesSpec
|
||||||
import org.gradle.plugin.use.PluginDependencySpec
|
import org.gradle.plugin.use.PluginDependencySpec
|
||||||
|
|
||||||
@ -13,7 +14,9 @@ import org.gradle.plugin.use.PluginDependencySpec
|
|||||||
object Versions {
|
object Versions {
|
||||||
const val androidx_test_espresso: String = "3.1.1" // available: "3.2.0"
|
const val androidx_test_espresso: String = "3.1.1" // available: "3.2.0"
|
||||||
|
|
||||||
const val com_squareup_retrofit2: String = "2.5.0" // available: "2.6.2"
|
const val com_squareup_retrofit2: String = "2.5.0" // available: "2.7.0"
|
||||||
|
|
||||||
|
const val org_jetbrains_kotlin: String = "1.3.61"
|
||||||
|
|
||||||
const val com_google_dagger: String = "2.21" // available: "2.25.2"
|
const val com_google_dagger: String = "2.21" // available: "2.25.2"
|
||||||
|
|
||||||
@ -29,7 +32,7 @@ object Versions {
|
|||||||
|
|
||||||
const val android_arch_lifecycle_extensions: String = "1.1.1"
|
const val android_arch_lifecycle_extensions: String = "1.1.1"
|
||||||
|
|
||||||
const val com_android_tools_build_gradle: String = "3.5.2"
|
const val com_android_tools_build_gradle: String = "3.5.2" // available: "3.5.3"
|
||||||
|
|
||||||
const val androidx_test_runner: String = "1.2.0"
|
const val androidx_test_runner: String = "1.2.0"
|
||||||
|
|
||||||
@ -41,24 +44,16 @@ object Versions {
|
|||||||
|
|
||||||
const val com_github_triplet_play_gradle_plugin: String = "2.5.0" // available: "2.6.1"
|
const val com_github_triplet_play_gradle_plugin: String = "2.5.0" // available: "2.6.1"
|
||||||
|
|
||||||
const val kotlin_annotation_processing_gradle: String = "1.3.61"
|
|
||||||
|
|
||||||
const val kotlin_android_extensions_runtime: String = "1.3.61"
|
|
||||||
|
|
||||||
const val kotlin_android_extensions: String = "1.3.61"
|
|
||||||
|
|
||||||
const val multidex_instrumentation: String = "2.0.0"
|
const val multidex_instrumentation: String = "2.0.0"
|
||||||
|
|
||||||
const val javax_annotation_api: String = "1.3.2"
|
const val detekt_gradle_plugin: String = "1.2.2"
|
||||||
|
|
||||||
const val kotlin_gradle_plugin: String = "1.3.61"
|
const val javax_annotation_api: String = "1.3.2"
|
||||||
|
|
||||||
const val logging_interceptor: String = "3.12.1" // available: "4.2.2"
|
const val logging_interceptor: String = "3.12.1" // available: "4.2.2"
|
||||||
|
|
||||||
const val ink_page_indicator: String = "1.3.0"
|
const val ink_page_indicator: String = "1.3.0"
|
||||||
|
|
||||||
const val kotlin_stdlib_jdk7: String = "1.3.61"
|
|
||||||
|
|
||||||
const val leakcanary_android: String = "2.0"
|
const val leakcanary_android: String = "2.0"
|
||||||
|
|
||||||
const val constraintlayout: String = "1.1.3"
|
const val constraintlayout: String = "1.1.3"
|
||||||
@ -85,7 +80,7 @@ object Versions {
|
|||||||
|
|
||||||
const val orchestrator: String = "1.1.0" // available: "1.2.0"
|
const val orchestrator: String = "1.1.0" // available: "1.2.0"
|
||||||
|
|
||||||
const val lint_gradle: String = "26.5.2"
|
const val lint_gradle: String = "26.5.2" // available: "26.5.3"
|
||||||
|
|
||||||
const val testing_ktx: String = "1.1.1"
|
const val testing_ktx: String = "1.1.1"
|
||||||
|
|
||||||
@ -105,7 +100,7 @@ object Versions {
|
|||||||
|
|
||||||
const val core_ktx: String = "1.1.0"
|
const val core_ktx: String = "1.1.0"
|
||||||
|
|
||||||
const val kiwixlib: String = "8.2.1"
|
const val kiwixlib: String = "8.2.1" // available: "8.2.2"
|
||||||
|
|
||||||
const val material: String = "1.1.0-beta02"
|
const val material: String = "1.1.0-beta02"
|
||||||
|
|
||||||
@ -123,7 +118,7 @@ object Versions {
|
|||||||
|
|
||||||
const val rxjava: String = "2.2.5" // available: "2.2.15"
|
const val rxjava: String = "2.2.5" // available: "2.2.15"
|
||||||
|
|
||||||
const val aapt2: String = "3.5.2-5435860"
|
const val aapt2: String = "3.5.2-5435860" // available: "3.5.3-5435860"
|
||||||
|
|
||||||
const val junit: String = "1.1.1"
|
const val junit: String = "1.1.1"
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ package plugin
|
|||||||
import Config
|
import Config
|
||||||
import Libs
|
import Libs
|
||||||
import com.android.build.gradle.BaseExtension
|
import com.android.build.gradle.BaseExtension
|
||||||
|
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.tasks.testing.Test
|
import org.gradle.api.tasks.testing.Test
|
||||||
import org.gradle.kotlin.dsl.KotlinClosure1
|
import org.gradle.kotlin.dsl.KotlinClosure1
|
||||||
@ -39,6 +40,7 @@ class AllProjectConfigurer {
|
|||||||
target.plugins.apply("kotlin-kapt")
|
target.plugins.apply("kotlin-kapt")
|
||||||
target.plugins.apply("jacoco-android")
|
target.plugins.apply("jacoco-android")
|
||||||
target.plugins.apply("org.jlleitschuh.gradle.ktlint")
|
target.plugins.apply("org.jlleitschuh.gradle.ktlint")
|
||||||
|
target.plugins.apply("io.gitlab.arturbosch.detekt")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun configureBaseExtension(target: Project, path: String) {
|
fun configureBaseExtension(target: Project, path: String) {
|
||||||
@ -134,6 +136,10 @@ class AllProjectConfigurer {
|
|||||||
configureExtension<AndroidExtensionsExtension> { isExperimental = true }
|
configureExtension<AndroidExtensionsExtension> { isExperimental = true }
|
||||||
configureExtension<JacocoPluginExtension> { toolVersion = "0.8.3" }
|
configureExtension<JacocoPluginExtension> { toolVersion = "0.8.3" }
|
||||||
configureExtension<KtlintExtension> { android.set(true) }
|
configureExtension<KtlintExtension> { android.set(true) }
|
||||||
|
configureExtension<DetektExtension> {
|
||||||
|
baseline = project.file("detekt_baseline.xml")
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
580
config/detekt/detekt.yml
Normal file
580
config/detekt/detekt.yml
Normal file
@ -0,0 +1,580 @@
|
|||||||
|
build:
|
||||||
|
maxIssues: 10
|
||||||
|
weights:
|
||||||
|
# complexity: 2
|
||||||
|
# LongParameterList: 1
|
||||||
|
# style: 1
|
||||||
|
# comments: 1
|
||||||
|
|
||||||
|
config:
|
||||||
|
validation: true
|
||||||
|
# when writing own rules with new properties, exclude the property path e.g.: "my_rule_set,.*>.*>[my_property]"
|
||||||
|
excludes: ""
|
||||||
|
|
||||||
|
processors:
|
||||||
|
active: true
|
||||||
|
exclude:
|
||||||
|
# - 'DetektProgressListener'
|
||||||
|
# - 'FunctionCountProcessor'
|
||||||
|
# - 'PropertyCountProcessor'
|
||||||
|
# - 'ClassCountProcessor'
|
||||||
|
# - 'PackageCountProcessor'
|
||||||
|
# - 'KtFileCountProcessor'
|
||||||
|
|
||||||
|
console-reports:
|
||||||
|
active: true
|
||||||
|
exclude:
|
||||||
|
# - 'ProjectStatisticsReport'
|
||||||
|
# - 'ComplexityReport'
|
||||||
|
# - 'NotificationReport'
|
||||||
|
# - 'FindingsReport'
|
||||||
|
- 'FileBasedFindingsReport'
|
||||||
|
# - 'BuildFailureReport'
|
||||||
|
|
||||||
|
comments:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
CommentOverPrivateFunction:
|
||||||
|
active: false
|
||||||
|
CommentOverPrivateProperty:
|
||||||
|
active: false
|
||||||
|
EndOfSentenceFormat:
|
||||||
|
active: false
|
||||||
|
endOfSentenceFormat: ([.?!][ \t\n\r\f<])|([.?!:]$)
|
||||||
|
UndocumentedPublicClass:
|
||||||
|
active: false
|
||||||
|
searchInNestedClass: true
|
||||||
|
searchInInnerClass: true
|
||||||
|
searchInInnerObject: true
|
||||||
|
searchInInnerInterface: true
|
||||||
|
UndocumentedPublicFunction:
|
||||||
|
active: false
|
||||||
|
UndocumentedPublicProperty:
|
||||||
|
active: false
|
||||||
|
|
||||||
|
complexity:
|
||||||
|
active: true
|
||||||
|
ComplexCondition:
|
||||||
|
active: true
|
||||||
|
threshold: 4
|
||||||
|
ComplexInterface:
|
||||||
|
active: false
|
||||||
|
threshold: 10
|
||||||
|
includeStaticDeclarations: false
|
||||||
|
ComplexMethod:
|
||||||
|
active: true
|
||||||
|
threshold: 15
|
||||||
|
ignoreSingleWhenExpression: false
|
||||||
|
ignoreSimpleWhenEntries: false
|
||||||
|
ignoreNestingFunctions: false
|
||||||
|
nestingFunctions: run,let,apply,with,also,use,forEach,isNotNull,ifNull
|
||||||
|
LabeledExpression:
|
||||||
|
active: false
|
||||||
|
ignoredLabels: ""
|
||||||
|
LargeClass:
|
||||||
|
active: true
|
||||||
|
threshold: 600
|
||||||
|
LongMethod:
|
||||||
|
active: true
|
||||||
|
threshold: 60
|
||||||
|
LongParameterList:
|
||||||
|
active: true
|
||||||
|
threshold: 6
|
||||||
|
ignoreDefaultParameters: false
|
||||||
|
MethodOverloading:
|
||||||
|
active: false
|
||||||
|
threshold: 6
|
||||||
|
NestedBlockDepth:
|
||||||
|
active: true
|
||||||
|
threshold: 4
|
||||||
|
StringLiteralDuplication:
|
||||||
|
active: false
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
threshold: 3
|
||||||
|
ignoreAnnotation: true
|
||||||
|
excludeStringsWithLessThan5Characters: true
|
||||||
|
ignoreStringsRegex: '$^'
|
||||||
|
TooManyFunctions:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
thresholdInFiles: 11
|
||||||
|
thresholdInClasses: 11
|
||||||
|
thresholdInInterfaces: 11
|
||||||
|
thresholdInObjects: 11
|
||||||
|
thresholdInEnums: 11
|
||||||
|
ignoreDeprecated: false
|
||||||
|
ignorePrivate: false
|
||||||
|
ignoreOverridden: 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
|
||||||
|
ignoreOverriddenFunctions: false
|
||||||
|
EmptyIfBlock:
|
||||||
|
active: true
|
||||||
|
EmptyInitBlock:
|
||||||
|
active: true
|
||||||
|
EmptyKtFile:
|
||||||
|
active: true
|
||||||
|
EmptySecondaryConstructor:
|
||||||
|
active: true
|
||||||
|
EmptyWhenBlock:
|
||||||
|
active: true
|
||||||
|
EmptyWhileBlock:
|
||||||
|
active: true
|
||||||
|
|
||||||
|
exceptions:
|
||||||
|
active: true
|
||||||
|
ExceptionRaisedInUnexpectedLocation:
|
||||||
|
active: false
|
||||||
|
methodNames: 'toString,hashCode,equals,finalize'
|
||||||
|
InstanceOfCheckForException:
|
||||||
|
active: false
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
NotImplementedDeclaration:
|
||||||
|
active: false
|
||||||
|
PrintStackTrace:
|
||||||
|
active: false
|
||||||
|
RethrowCaughtException:
|
||||||
|
active: false
|
||||||
|
ReturnFromFinally:
|
||||||
|
active: false
|
||||||
|
ignoreLabeled: false
|
||||||
|
SwallowedException:
|
||||||
|
active: false
|
||||||
|
ignoredExceptionTypes: 'InterruptedException,NumberFormatException,ParseException,MalformedURLException'
|
||||||
|
allowedExceptionNameRegex: "^(_|(ignore|expected).*)"
|
||||||
|
ThrowingExceptionFromFinally:
|
||||||
|
active: false
|
||||||
|
ThrowingExceptionInMain:
|
||||||
|
active: false
|
||||||
|
ThrowingExceptionsWithoutMessageOrCause:
|
||||||
|
active: false
|
||||||
|
exceptions: 'IllegalArgumentException,IllegalStateException,IOException'
|
||||||
|
ThrowingNewInstanceOfSameException:
|
||||||
|
active: false
|
||||||
|
TooGenericExceptionCaught:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
exceptionNames:
|
||||||
|
- ArrayIndexOutOfBoundsException
|
||||||
|
- Error
|
||||||
|
- Exception
|
||||||
|
- IllegalMonitorStateException
|
||||||
|
- NullPointerException
|
||||||
|
- IndexOutOfBoundsException
|
||||||
|
- RuntimeException
|
||||||
|
- Throwable
|
||||||
|
allowedExceptionNameRegex: "^(_|(ignore|expected).*)"
|
||||||
|
TooGenericExceptionThrown:
|
||||||
|
active: true
|
||||||
|
exceptionNames:
|
||||||
|
- Error
|
||||||
|
- Exception
|
||||||
|
- Throwable
|
||||||
|
- RuntimeException
|
||||||
|
|
||||||
|
formatting:
|
||||||
|
active: true
|
||||||
|
android: false
|
||||||
|
autoCorrect: true
|
||||||
|
AnnotationOnSeparateLine:
|
||||||
|
active: false
|
||||||
|
autoCorrect: true
|
||||||
|
ChainWrapping:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
CommentSpacing:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
Filename:
|
||||||
|
active: true
|
||||||
|
FinalNewline:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
ImportOrdering:
|
||||||
|
active: false
|
||||||
|
autoCorrect: true
|
||||||
|
Indentation:
|
||||||
|
active: false
|
||||||
|
autoCorrect: true
|
||||||
|
indentSize: 4
|
||||||
|
continuationIndentSize: 4
|
||||||
|
MaximumLineLength:
|
||||||
|
active: true
|
||||||
|
maxLineLength: 120
|
||||||
|
ModifierOrdering:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
MultiLineIfElse:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoBlankLineBeforeRbrace:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoConsecutiveBlankLines:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoEmptyClassBody:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoLineBreakAfterElse:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoLineBreakBeforeAssignment:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoMultipleSpaces:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoSemicolons:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoTrailingSpaces:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoUnitReturn:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoUnusedImports:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
NoWildcardImports:
|
||||||
|
active: true
|
||||||
|
PackageName:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
ParameterListWrapping:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
indentSize: 4
|
||||||
|
SpacingAroundColon:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
SpacingAroundComma:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
SpacingAroundCurly:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
SpacingAroundDot:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
SpacingAroundKeyword:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
SpacingAroundOperators:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
SpacingAroundParens:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
SpacingAroundRangeOperator:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
StringTemplate:
|
||||||
|
active: true
|
||||||
|
autoCorrect: true
|
||||||
|
|
||||||
|
naming:
|
||||||
|
active: true
|
||||||
|
ClassNaming:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
classPattern: '[A-Z$][a-zA-Z0-9$]*'
|
||||||
|
ConstructorParameterNaming:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
parameterPattern: '[a-z][A-Za-z0-9]*'
|
||||||
|
privateParameterPattern: '[a-z][A-Za-z0-9]*'
|
||||||
|
excludeClassPattern: '$^'
|
||||||
|
ignoreOverridden: true
|
||||||
|
EnumNaming:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
enumEntryPattern: '^[A-Z][_a-zA-Z0-9]*'
|
||||||
|
ForbiddenClassName:
|
||||||
|
active: false
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
forbiddenName: ''
|
||||||
|
FunctionMaxLength:
|
||||||
|
active: false
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
maximumFunctionNameLength: 30
|
||||||
|
FunctionMinLength:
|
||||||
|
active: false
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
minimumFunctionNameLength: 3
|
||||||
|
FunctionNaming:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
functionPattern: '^([a-z$][a-zA-Z$0-9]*)|(`.*`)$'
|
||||||
|
excludeClassPattern: '$^'
|
||||||
|
ignoreOverridden: true
|
||||||
|
FunctionParameterNaming:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
parameterPattern: '[a-z][A-Za-z0-9]*'
|
||||||
|
excludeClassPattern: '$^'
|
||||||
|
ignoreOverriddenFunctions: true
|
||||||
|
InvalidPackageDeclaration:
|
||||||
|
active: false
|
||||||
|
rootPackage: ''
|
||||||
|
MatchingDeclarationName:
|
||||||
|
active: true
|
||||||
|
MemberNameEqualsClassName:
|
||||||
|
active: true
|
||||||
|
ignoreOverriddenFunction: true
|
||||||
|
ObjectPropertyNaming:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
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/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
packagePattern: '^[a-z]+(\.[a-z][A-Za-z0-9]*)*$'
|
||||||
|
TopLevelPropertyNaming:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
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/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
maximumVariableNameLength: 64
|
||||||
|
VariableMinLength:
|
||||||
|
active: false
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
minimumVariableNameLength: 1
|
||||||
|
VariableNaming:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
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/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
SpreadOperator:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
UnnecessaryTemporaryInstantiation:
|
||||||
|
active: true
|
||||||
|
|
||||||
|
potential-bugs:
|
||||||
|
active: true
|
||||||
|
Deprecation:
|
||||||
|
active: false
|
||||||
|
DuplicateCaseInWhenExpression:
|
||||||
|
active: true
|
||||||
|
EqualsAlwaysReturnsTrueOrFalse:
|
||||||
|
active: true
|
||||||
|
EqualsWithHashCodeExist:
|
||||||
|
active: true
|
||||||
|
ExplicitGarbageCollectionCall:
|
||||||
|
active: true
|
||||||
|
HasPlatformType:
|
||||||
|
active: false
|
||||||
|
ImplicitDefaultLocale:
|
||||||
|
active: false
|
||||||
|
InvalidRange:
|
||||||
|
active: true
|
||||||
|
IteratorHasNextCallsNextMethod:
|
||||||
|
active: true
|
||||||
|
IteratorNotThrowingNoSuchElementException:
|
||||||
|
active: true
|
||||||
|
LateinitUsage:
|
||||||
|
active: false
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
excludeAnnotatedProperties: ""
|
||||||
|
ignoreOnClassesPattern: ""
|
||||||
|
MissingWhenCase:
|
||||||
|
active: true
|
||||||
|
RedundantElseInWhen:
|
||||||
|
active: true
|
||||||
|
UnconditionalJumpStatementInLoop:
|
||||||
|
active: false
|
||||||
|
UnreachableCode:
|
||||||
|
active: true
|
||||||
|
UnsafeCallOnNullableType:
|
||||||
|
active: true
|
||||||
|
UnsafeCast:
|
||||||
|
active: false
|
||||||
|
UselessPostfixExpression:
|
||||||
|
active: false
|
||||||
|
WrongEqualsTypeParameter:
|
||||||
|
active: true
|
||||||
|
|
||||||
|
style:
|
||||||
|
active: true
|
||||||
|
CollapsibleIfStatements:
|
||||||
|
active: false
|
||||||
|
DataClassContainsFunctions:
|
||||||
|
active: false
|
||||||
|
conversionFunctionPrefix: 'to'
|
||||||
|
DataClassShouldBeImmutable:
|
||||||
|
active: false
|
||||||
|
EqualsNullCall:
|
||||||
|
active: true
|
||||||
|
EqualsOnSignatureLine:
|
||||||
|
active: false
|
||||||
|
ExplicitItLambdaParameter:
|
||||||
|
active: false
|
||||||
|
ExpressionBodySyntax:
|
||||||
|
active: false
|
||||||
|
includeLineWrapping: false
|
||||||
|
ForbiddenComment:
|
||||||
|
active: true
|
||||||
|
values: 'TODO:,FIXME:,STOPSHIP:'
|
||||||
|
allowedPatterns: ""
|
||||||
|
ForbiddenImport:
|
||||||
|
active: false
|
||||||
|
imports: ''
|
||||||
|
forbiddenPatterns: ""
|
||||||
|
ForbiddenVoid:
|
||||||
|
active: false
|
||||||
|
ignoreOverridden: false
|
||||||
|
ignoreUsageInGenerics: false
|
||||||
|
FunctionOnlyReturningConstant:
|
||||||
|
active: true
|
||||||
|
ignoreOverridableFunction: true
|
||||||
|
excludedFunctions: 'describeContents'
|
||||||
|
excludeAnnotatedFunction: "dagger.Provides"
|
||||||
|
LibraryCodeMustSpecifyReturnType:
|
||||||
|
active: true
|
||||||
|
LoopWithTooManyJumpStatements:
|
||||||
|
active: true
|
||||||
|
maxJumpCount: 1
|
||||||
|
MagicNumber:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
ignoreNumbers: '-1,0,1,2'
|
||||||
|
ignoreHashCodeFunction: true
|
||||||
|
ignorePropertyDeclaration: false
|
||||||
|
ignoreLocalVariableDeclaration: false
|
||||||
|
ignoreConstantDeclaration: true
|
||||||
|
ignoreCompanionObjectPropertyDeclaration: true
|
||||||
|
ignoreAnnotation: false
|
||||||
|
ignoreNamedArgument: true
|
||||||
|
ignoreEnums: false
|
||||||
|
ignoreRanges: false
|
||||||
|
MandatoryBracesIfStatements:
|
||||||
|
active: false
|
||||||
|
MaxLineLength:
|
||||||
|
active: true
|
||||||
|
maxLineLength: 120
|
||||||
|
excludePackageStatements: true
|
||||||
|
excludeImportStatements: true
|
||||||
|
excludeCommentStatements: false
|
||||||
|
MayBeConst:
|
||||||
|
active: true
|
||||||
|
ModifierOrder:
|
||||||
|
active: true
|
||||||
|
NestedClassesVisibility:
|
||||||
|
active: false
|
||||||
|
NewLineAtEndOfFile:
|
||||||
|
active: true
|
||||||
|
NoTabs:
|
||||||
|
active: false
|
||||||
|
OptionalAbstractKeyword:
|
||||||
|
active: true
|
||||||
|
OptionalUnit:
|
||||||
|
active: false
|
||||||
|
OptionalWhenBraces:
|
||||||
|
active: false
|
||||||
|
PreferToOverPairSyntax:
|
||||||
|
active: false
|
||||||
|
ProtectedMemberInFinalClass:
|
||||||
|
active: true
|
||||||
|
RedundantExplicitType:
|
||||||
|
active: false
|
||||||
|
RedundantVisibilityModifierRule:
|
||||||
|
active: false
|
||||||
|
ReturnCount:
|
||||||
|
active: true
|
||||||
|
max: 2
|
||||||
|
excludedFunctions: "equals"
|
||||||
|
excludeLabeled: false
|
||||||
|
excludeReturnFromLambda: true
|
||||||
|
excludeGuardClauses: false
|
||||||
|
SafeCast:
|
||||||
|
active: true
|
||||||
|
SerialVersionUIDInSerializableClass:
|
||||||
|
active: false
|
||||||
|
SpacingBetweenPackageAndImports:
|
||||||
|
active: false
|
||||||
|
ThrowsCount:
|
||||||
|
active: true
|
||||||
|
max: 2
|
||||||
|
TrailingWhitespace:
|
||||||
|
active: false
|
||||||
|
UnderscoresInNumericLiterals:
|
||||||
|
active: false
|
||||||
|
acceptableDecimalLength: 5
|
||||||
|
UnnecessaryAbstractClass:
|
||||||
|
active: true
|
||||||
|
excludeAnnotatedClasses: "dagger.Module"
|
||||||
|
UnnecessaryApply:
|
||||||
|
active: false
|
||||||
|
UnnecessaryInheritance:
|
||||||
|
active: true
|
||||||
|
UnnecessaryLet:
|
||||||
|
active: false
|
||||||
|
UnnecessaryParentheses:
|
||||||
|
active: false
|
||||||
|
UntilInsteadOfRangeTo:
|
||||||
|
active: false
|
||||||
|
UnusedImports:
|
||||||
|
active: false
|
||||||
|
UnusedPrivateClass:
|
||||||
|
active: true
|
||||||
|
UnusedPrivateMember:
|
||||||
|
active: false
|
||||||
|
allowedNames: "(_|ignored|expected|serialVersionUID)"
|
||||||
|
UseArrayLiteralsInAnnotations:
|
||||||
|
active: false
|
||||||
|
UseCheckOrError:
|
||||||
|
active: false
|
||||||
|
UseDataClass:
|
||||||
|
active: false
|
||||||
|
excludeAnnotatedClasses: ""
|
||||||
|
allowVars: false
|
||||||
|
UseIfInsteadOfWhen:
|
||||||
|
active: false
|
||||||
|
UseRequire:
|
||||||
|
active: false
|
||||||
|
UselessCallOnNotNull:
|
||||||
|
active: true
|
||||||
|
UtilityClassWithPublicConstructor:
|
||||||
|
active: true
|
||||||
|
VarCouldBeVal:
|
||||||
|
active: false
|
||||||
|
WildcardImport:
|
||||||
|
active: true
|
||||||
|
excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
|
||||||
|
excludeImports: 'java.util.*,kotlinx.android.synthetic.*'
|
62
core/detekt_baseline.xml
Normal file
62
core/detekt_baseline.xml
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<SmellBaseline>
|
||||||
|
<Blacklist></Blacklist>
|
||||||
|
<Whitelist>
|
||||||
|
<ID>ConstructorParameterNaming:KiwixTag.kt$KiwixTag.Companion.YesNoValueTag$_value: String</ID>
|
||||||
|
<ID>EmptyFunctionBlock:BooksOnDiskViewHolder.kt$BookOnDiskViewHolder.BookViewHolder${ }</ID>
|
||||||
|
<ID>EmptyFunctionBlock:FetchDownloadMonitor.kt$FetchDownloadMonitor.<no name provided>${}</ID>
|
||||||
|
<ID>MagicNumber:ArticleCount.kt$ArticleCount$1000.0</ID>
|
||||||
|
<ID>MagicNumber:ArticleCount.kt$ArticleCount$3</ID>
|
||||||
|
<ID>MagicNumber:CoreSplashActivity.kt$CoreSplashActivity$10</ID>
|
||||||
|
<ID>MagicNumber:DownloadItem.kt$DownloadItem$1000L</ID>
|
||||||
|
<ID>MagicNumber:DownloaderModule.kt$DownloaderModule$5</ID>
|
||||||
|
<ID>MagicNumber:FetchDownloadNotificationManager.kt$FetchDownloadNotificationManager$100</ID>
|
||||||
|
<ID>MagicNumber:FetchDownloadRequester.kt$10</ID>
|
||||||
|
<ID>MagicNumber:FileUtils.kt$FileUtils$3</ID>
|
||||||
|
<ID>MagicNumber:KiloByte.kt$KiloByte$1024.0</ID>
|
||||||
|
<ID>MagicNumber:MainMenu.kt$MainMenu$99</ID>
|
||||||
|
<ID>MagicNumber:Seconds.kt$Seconds$24</ID>
|
||||||
|
<ID>MagicNumber:Seconds.kt$Seconds$60</ID>
|
||||||
|
<ID>MagicNumber:Seconds.kt$Seconds$60.0</ID>
|
||||||
|
<ID>NestedBlockDepth:FileUtils.kt$FileUtils$deleteZimFile</ID>
|
||||||
|
<ID>NestedBlockDepth:ImageUtils.kt$ImageUtils$getBitmapFromView</ID>
|
||||||
|
<ID>NestedBlockDepth:StorageDeviceUtils.kt$StorageDeviceUtils$canWrite</ID>
|
||||||
|
<ID>PackageNaming:ArticleCount.kt$package org.kiwix.kiwixmobile.core.zim_manager.fileselect_view</ID>
|
||||||
|
<ID>PackageNaming:BookOnDiskDelegate.kt$package org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter</ID>
|
||||||
|
<ID>PackageNaming:BooksOnDiskAdapter.kt$package org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter</ID>
|
||||||
|
<ID>PackageNaming:BooksOnDiskListItem.kt$package org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter</ID>
|
||||||
|
<ID>PackageNaming:BooksOnDiskViewHolder.kt$package org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter</ID>
|
||||||
|
<ID>PackageNaming:KiloByte.kt$package org.kiwix.kiwixmobile.core.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:KiwixTag.kt$package org.kiwix.kiwixmobile.core.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:Language.kt$package org.kiwix.kiwixmobile.core.zim_manager</ID>
|
||||||
|
<ID>PackageNaming:SelectionMode.kt$package org.kiwix.kiwixmobile.core.zim_manager.fileselect_view</ID>
|
||||||
|
<ID>PackageNaming:TagsView.kt$package org.kiwix.kiwixmobile.core.zim_manager</ID>
|
||||||
|
<ID>ReturnCount:FileUtils.kt$FileUtils$@JvmStatic fun getAllZimParts(book: Book): List<File></ID>
|
||||||
|
<ID>ReturnCount:FileUtils.kt$FileUtils$@JvmStatic fun getLocalFilePathByUri( context: Context, uri: Uri ): String?</ID>
|
||||||
|
<ID>ReturnCount:FileUtils.kt$FileUtils$@JvmStatic fun hasPart(file: File): Boolean</ID>
|
||||||
|
<ID>ReturnCount:FileUtils.kt$FileUtils$@Synchronized private fun deleteZimFileParts(path: String): Boolean</ID>
|
||||||
|
<ID>ReturnCount:ImageUtils.kt$ImageUtils$private fun getBitmapFromView(width: Int, height: Int, viewToDrawFrom: View): Bitmap?</ID>
|
||||||
|
<ID>SpreadOperator:AlertDialogShower.kt$AlertDialogShower$(dialog.message, *bodyArguments(dialog))</ID>
|
||||||
|
<ID>SpreadOperator:BooksOnDiskAdapter.kt$BooksOnDiskAdapter$( *delegates )</ID>
|
||||||
|
<ID>SpreadOperator:FileSearch.kt$FileSearch$(*zimFileExtensions)</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:AbstractContentProvider.kt$AbstractContentProvider$throw RuntimeException("Operation not supported")</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:AdapterDelegateManager.kt$AdapterDelegateManager$throw RuntimeException("No delegate registered for $item")</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:Bytes.kt$Bytes$throw RuntimeException("impossible value $size")</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:CursorExtensions.kt$throw RuntimeException("$columnName not found in $columnNames")</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:CursorExtensions.kt$throw RuntimeException("Unexpected return type ${T::class.java.simpleName}")</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:NightModeConfig.kt$NightModeConfig.Mode.Companion$throw RuntimeException("Invalid night mode $nightMode")</ID>
|
||||||
|
<ID>TooGenericExceptionThrown:NightModeConfig.kt$NightModeConfig.UiMode.Companion$throw RuntimeException("Invalid night mode $uiMode")</ID>
|
||||||
|
<ID>TooManyFunctions:CoreComponent.kt$CoreComponent$CoreComponent</ID>
|
||||||
|
<ID>TooManyFunctions:FetchDownloadMonitor.kt$FetchDownloadMonitor$<no name provided> : FetchListener</ID>
|
||||||
|
<ID>TooManyFunctions:FileUtils.kt$FileUtils$FileUtils</ID>
|
||||||
|
<ID>TooManyFunctions:Repository.kt$Repository$Repository</ID>
|
||||||
|
<ID>TooManyFunctions:ZimFileReader.kt$ZimFileReader$ZimFileReader</ID>
|
||||||
|
<ID>TooManyFunctions:ZimReaderContainer.kt$ZimReaderContainer$ZimReaderContainer</ID>
|
||||||
|
<ID>TopLevelPropertyNaming:Bytes.kt$const val Eb = Pb * 1024</ID>
|
||||||
|
<ID>TopLevelPropertyNaming:Bytes.kt$const val Gb = Mb * 1024</ID>
|
||||||
|
<ID>TopLevelPropertyNaming:Bytes.kt$const val Kb = 1 * 1024L</ID>
|
||||||
|
<ID>TopLevelPropertyNaming:Bytes.kt$const val Mb = Kb * 1024</ID>
|
||||||
|
<ID>TopLevelPropertyNaming:Bytes.kt$const val Pb = Tb * 1024</ID>
|
||||||
|
<ID>TopLevelPropertyNaming:Bytes.kt$const val Tb = Gb * 1024</ID>
|
||||||
|
</Whitelist>
|
||||||
|
</SmellBaseline>
|
9
custom/detekt_baseline.xml
Normal file
9
custom/detekt_baseline.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<SmellBaseline>
|
||||||
|
<Blacklist></Blacklist>
|
||||||
|
<Whitelist>
|
||||||
|
<ID>LongParameterList:DownloadCustom.kt$DownloadCustom$( id: String = "", title: String = "", description: String = "", language: String = "", creator: String = "", publisher: String = "", date: String = "", url: String = "", articleCount: String = "", mediaCount: String = "", size: String = "", name: String = "", favIcon: String = "" )</ID>
|
||||||
|
<ID>MagicNumber:CustomDownloadActivity.kt$CustomDownloadActivity$3</ID>
|
||||||
|
<ID>TooManyFunctions:CustomMainActivity.kt$CustomMainActivity$CustomMainActivity</ID>
|
||||||
|
</Whitelist>
|
||||||
|
</SmellBaseline>
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
echo "Running lint..."
|
echo "Running lint..."
|
||||||
|
|
||||||
./gradlew ktlintCheck app:lintDebug core:lintDebug custom:lintCustomexampleDebug --daemon
|
./gradlew ktlintCheck detekt app:lintDebug core:lintDebug custom:lintCustomexampleDebug --daemon
|
||||||
|
|
||||||
status=$?
|
status=$?
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user