Skip to content

Commit e5fe60b

Browse files
committed
Better project-type dependency resolution for Detekt custom rules execution
1 parent 5376af1 commit e5fe60b

File tree

22 files changed

+40
-48
lines changed

22 files changed

+40
-48
lines changed

buildSrc/src/main/kotlin/com/datadog/gradle/config/DetektCustomConfig.kt

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package com.datadog.gradle.config
88

99
import com.android.build.gradle.LibraryExtension
1010
import org.gradle.api.Project
11+
import org.gradle.api.artifacts.ProjectDependency
1112
import org.gradle.api.file.FileCollection
1213
import org.gradle.api.file.FileTree
1314
import org.gradle.api.internal.file.UnionFileTree
@@ -17,9 +18,7 @@ import org.gradle.api.tasks.JavaExec
1718
import java.io.File
1819
import java.util.Properties
1920

20-
fun Project.detektCustomConfig(
21-
vararg moduleDependencies: String
22-
) {
21+
fun Project.detektCustomConfig() {
2322
val ext = extensions.findByType(LibraryExtension::class.java)
2423

2524
tasks.register("printDetektClasspath") {
@@ -99,6 +98,23 @@ fun Project.detektCustomConfig(
9998
args("-ex", "**/*.kts")
10099
args("--jvm-target", "11")
101100

101+
val moduleDependencies = configurations
102+
.filter { it.name == "implementation" || it.name == "api" }
103+
.flatMap { it.dependencies.filterIsInstance<ProjectDependency>() }
104+
.map { it.path }
105+
.toSet()
106+
.let {
107+
// api configurations have canBeResolved=false, so we cannot go inside them to see transitive
108+
// module dependencies, so including common modules
109+
if (project.path == ":dd-sdk-android-internal") {
110+
it
111+
} else if (project.path == ":dd-sdk-android-core") {
112+
it + ":dd-sdk-android-internal"
113+
} else {
114+
it + setOf(":dd-sdk-android-core", ":dd-sdk-android-internal")
115+
}
116+
}
117+
102118
val externalDependencies = File("${projectDir.absolutePath}/detekt_classpath").readText()
103119
val moduleDependenciesClasses = moduleDependencies.map {
104120
"${rootDir.absolutePath}${it.replace(':', '/')}/build/extracted/classes.jar"

features/dd-sdk-android-logs/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,4 @@ publishingConfig(
8888
"The Logs feature to use with the Datadog monitoring " +
8989
"library for Android applications."
9090
)
91-
detektCustomConfig(":dd-sdk-android-core", ":dd-sdk-android-internal")
91+
detektCustomConfig()

features/dd-sdk-android-ndk/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,4 +109,4 @@ dependencyUpdateConfig()
109109
publishingConfig(
110110
"An NDK integration to use with the Datadog monitoring library for Android applications."
111111
)
112-
detektCustomConfig(":dd-sdk-android-core")
112+
detektCustomConfig()

features/dd-sdk-android-rum/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,4 @@ publishingConfig(
118118
"The RUM feature to use with the Datadog monitoring " +
119119
"library for Android applications."
120120
)
121-
detektCustomConfig(":dd-sdk-android-core", ":dd-sdk-android-internal")
121+
detektCustomConfig()

features/dd-sdk-android-session-replay-compose/build.gradle.kts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,4 @@ dependencyUpdateConfig()
8787
publishingConfig(
8888
"Session Replay Extension Support for Jetpack Compose."
8989
)
90-
detektCustomConfig(
91-
":dd-sdk-android-core",
92-
":dd-sdk-android-internal",
93-
":features:dd-sdk-android-session-replay"
94-
)
90+
detektCustomConfig()

features/dd-sdk-android-session-replay-material/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,4 @@ dependencyUpdateConfig()
7070
publishingConfig(
7171
"Session Replay Extension Support for Material UI components."
7272
)
73-
detektCustomConfig(":dd-sdk-android-core", ":dd-sdk-android-internal", ":features:dd-sdk-android-session-replay")
73+
detektCustomConfig()

features/dd-sdk-android-session-replay/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,4 @@ publishingConfig(
9090
"The Session Replay feature to use with the Datadog monitoring " +
9191
"library for Android applications."
9292
)
93-
detektCustomConfig(":dd-sdk-android-core", ":dd-sdk-android-internal")
93+
detektCustomConfig()

features/dd-sdk-android-trace-otel/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,4 @@ dependencyUpdateConfig()
8888
publishingConfig(
8989
"The tracing library for Android, providing OpenTelemetry compatibility."
9090
)
91-
detektCustomConfig(":dd-sdk-android-core", ":features:dd-sdk-android-trace")
91+
detektCustomConfig()

features/dd-sdk-android-trace/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,4 @@ publishingConfig(
9393
"The Tracing feature to use with the Datadog monitoring " +
9494
"library for Android applications."
9595
)
96-
detektCustomConfig(":dd-sdk-android-core", ":dd-sdk-android-internal")
96+
detektCustomConfig()

features/dd-sdk-android-webview/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,4 @@ publishingConfig(
8181
"The WebView integration feature to use with the Datadog monitoring " +
8282
"library for Android applications."
8383
)
84-
detektCustomConfig(":dd-sdk-android-internal")
84+
detektCustomConfig()

0 commit comments

Comments
 (0)