Skip to content

Commit 7f85757

Browse files
authored
SONARKT-372 Improve the integration with Gradle Tooling API in the Gradle rules (#400)
1 parent 2a75938 commit 7f85757

File tree

6 files changed

+15
-35
lines changed

6 files changed

+15
-35
lines changed

settings.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ dependencyResolutionManagement {
5858
library("sonar-regex-parsing", "org.sonarsource.analyzer-commons", "sonar-regex-parsing").versionRef(analyzerCommons)
5959
library("sonar-xml-parsing", "org.sonarsource.analyzer-commons", "sonar-xml-parsing").versionRef(analyzerCommons)
6060
library("staxmate", "com.fasterxml.staxmate", "staxmate").versionRef(staxmate)
61-
library("gradle-tooling-api", "org.gradle", "gradle-tooling-api").versionRef(gradleToolingApi)
6261
}
6362

6463
create("utilLibs") {

sonar-kotlin-gradle/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ dependencies {
1717
implementation(libs.staxmate)
1818
implementation(libs.gson)
1919
implementation(libs.sonar.analyzer.commons.recognizers)
20-
implementation(libs.gradle.tooling.api)
2120

2221
implementation(project(":sonar-kotlin-api"))
2322
implementation(project(":sonar-kotlin-surefire"))

sonar-kotlin-gradle/src/main/java/org/sonarsource/kotlin/gradle/KotlinGradleSensor.kt

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
*/
2020
package org.sonarsource.kotlin.gradle
2121

22-
import org.gradle.tooling.GradleConnector
23-
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
2422
import org.jetbrains.kotlin.resolve.BindingContext
2523
import org.slf4j.LoggerFactory
2624
import org.sonar.api.batch.fs.FileSystem
@@ -69,23 +67,18 @@ class KotlinGradleSensor(
6967
override fun getFilesToAnalyse(sensorContext: SensorContext): Iterable<InputFile> {
7068
val fileSystem: FileSystem = sensorContext.fileSystem()
7169

72-
val rootDirFile = File(sensorContext.config()[GRADLE_PROJECT_ROOT_PROPERTY].get())
70+
val mainFilePredicate = fileSystem.predicates().and(
71+
fileSystem.predicates().or(
72+
fileSystem.predicates().hasFilename("build.gradle.kts"),
73+
fileSystem.predicates().hasFilename("settings.gradle.kts")
74+
)
75+
)
7376

74-
checkForMissingGradleSettings(rootDirFile, sensorContext)
75-
76-
val projectConnection = GradleConnector.newConnector()
77-
.forProjectDirectory(rootDirFile)
78-
.connect()
79-
80-
projectConnection.newBuild()
81-
.forTasks("prepareKotlinBuildScriptModel")
82-
.run()
83-
84-
val models = projectConnection.getModel(KotlinDslScriptsModel::class.java).scriptModels
85-
return models.keys.mapNotNull { file ->
86-
val predicate = fileSystem.predicates().hasAbsolutePath(file.absolutePath)
87-
fileSystem.inputFile(predicate)
77+
sensorContext.config()[GRADLE_PROJECT_ROOT_PROPERTY].ifPresent {
78+
checkForMissingGradleSettings(File(it), sensorContext)
8879
}
80+
81+
return fileSystem.inputFiles(mainFilePredicate)
8982
}
9083

9184
private fun checkForMissingGradleSettings(rootDirFile: File, sensorContext: SensorContext) {

sonar-kotlin-plugin/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ tasks.shadowJar {
116116
exclude("org/jetbrains/kotlin/org/jline/**")
117117
exclude("org/jetbrains/kotlin/net/jpountz/**")
118118
doLast {
119-
enforceJarSizeAndCheckContent(shadowJar.get().archiveFile.get().asFile, 39_500_000L, 41_000_000L)
119+
enforceJarSizeAndCheckContent(shadowJar.get().archiveFile.get().asFile, 37_500_000L, 38_000_000L)
120120
}
121121
}
122122

sonar-kotlin-plugin/src/main/java/org/sonarsource/kotlin/plugin/KotlinPlugin.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,7 @@ class KotlinPlugin : Plugin {
6363
KotlinProfileDefinition::class.java,
6464
)
6565

66-
context.bootConfiguration[GRADLE_PROJECT_ROOT_PROPERTY].ifPresent {
67-
context.addExtension(KotlinGradleSensor::class.java)
68-
}
66+
context.addExtension(KotlinGradleSensor::class.java)
6967

7068
if (context.runtime.product != SonarProduct.SONARLINT) {
7169
context.addExtensions(

sonar-kotlin-plugin/src/test/java/org/sonarsource/kotlin/plugin/KotlinPluginTest.kt

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,15 @@ import java.util.Optional
3636
@ExperimentalTime
3737
internal class KotlinPluginTest {
3838
@Test
39-
fun testWithoutGradle() {
40-
testSonarQube(17)
41-
}
42-
43-
@Test
44-
fun testWithGradle() {
45-
testSonarQube(18, mapOf(GRADLE_PROJECT_ROOT_PROPERTY to "../"))
39+
fun testSonarQube() {
40+
testSonarQube(18)
4641
}
4742

4843
@Test
4944
fun testSonarLint() {
50-
testSonarLint(4)
45+
testSonarLint(5)
5146
}
5247

53-
@Test
54-
fun testSonarLintWithGradle() {
55-
testSonarLint(5, mapOf(GRADLE_PROJECT_ROOT_PROPERTY to "../"))
56-
}
5748

5849
private fun testSonarQube(expectedExtensionsCount: Int, overrideProperties: Map<String, String> = emptyMap()) {
5950
val runtime = SonarRuntimeImpl.forSonarQube(Version.create(7, 9), SonarQubeSide.SCANNER, SonarEdition.COMMUNITY)

0 commit comments

Comments
 (0)