Hi Sonar team,
we are migrating an Android Gradle project to AGP 9 and hit a blocker with SonarScanner for Gradle 7.3.0.8198.
The build fails during sonarResolver, before the actual SonarCloud analysis/upload starts. The failure seems to happen when the scanner resolves AGP source directories that include task-backed generated sources,
for example KSP-generated Kotlin sources.
Environment
SonarScanner for Gradle: 7.3.0.8198
Android Gradle Plugin: 9.2.0
Gradle: 9.4.1
Kotlin: 2.2.21
KSP: 2.3.7
JDK: 17
Actual result
Execution failed for task ':<android-module>:sonarResolver'.
> Querying the mapped value of provider(java.util.Set) before task ':<android-module>:kspDebugKotlin' has completed is not supported
Relevant stack trace excerpt:
Caused by: org.gradle.api.InvalidUserCodeException:
Querying the mapped value of provider(java.util.Set)
before task ':<android-module>:kspDebugKotlin' has completed is not supported
at org.gradle.api.internal.file.AbstractFileCollection.getFiles(AbstractFileCollection.java:124)
at org.gradle.api.internal.file.AbstractFileCollection.iterator(AbstractFileCollection.java:165)
at org.sonarqube.gradle.SonarUtils.exists(SonarUtils.java:229)
at org.sonarqube.gradle.SonarResolverTask.getAbsolutePaths(SonarResolverTask.java:165)
at org.sonarqube.gradle.SonarResolverTask.run(SonarResolverTask.java:188)
Expected result
sonarResolver should not eagerly resolve task-backed generated source directory providers before their producer tasks have completed.
Either the scanner should avoid generated/task-backed source providers at this stage, or it should wire the required producer tasks as dependencies before resolving them.