In a multi module Android project with product flavors (let's say we have a flavor
paid
) I need to run two different Detekt tasks to get full coverage:
1.
./gradlew detektPaidDebug
only finds defects in the app module but not in library modules
2.
./gradlew detektDebug
only finds defects in library modules but not in the app module
When I run
./gradlew detekt
it finds defects in all modules. However we want to run with type resolution. Is this a known issue or am I doing something wrong?
As a reference, the configuration
subprojects {
apply plugin: "io.gitlab.arturbosch.detekt"
// includes the custom rules module
dependencies {
detektPlugins(project(":lib-code-quality"))
}
def baseDir = rootProject.projectDir
def baseLineFile = file("$baseDir/config/detekt/${project.name}/detekt-baseline.xml")
def reportPath = "$baseDir/build/reports/detekt/${project.name}"
detekt {
debug = false
parallel = true
config.setFrom(file("$baseDir/config/detekt/detekt-config.yml"))
baseline = baseLineFile
buildUponDefaultConfig = true
allRules = true
}
tasks.withType(Detekt).configureEach {
reports {
html.required.set(true)
html.outputLocation.set(file("$reportPath/detekt.html"))
txt.required.set(true)
txt.outputLocation.set(file("$reportPath/detekt.txt"))
xml.required.set(false)
md.required.set(false)
sarif.required.set(false)
}
}
tasks.withType(DetektCreateBaselineTask).configureEach {
baseline.set(baseLineFile)
}
}