Sonarqube doesn't work on Android Studio 3.0 (Gradle 2.3.3, Jack enabled).
Scenarios
Works fine:
- Make default project in Android Studio 3.0 with Gradle 2.3.3
- Compile, build, all works fine.
- Add plugin 'org.sonarqube' (classpath, apply)
Start sonar with params:
--stacktrace -Dsonar.host.url=http://localhost:9000 -Dsonar.login=XXXX
All good, no errors, in web-console I see results.
Does not work:
- Make default project in Android Studio 3.0 with Gradle 2.3.3
- Add plugin 'me.tatarka.retrolambda' (classpath, apply), compile, build.
- In MainActivity use lambda
Add to build.gradle:
compileOptions { targetCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8 }
and
jackOptions { enabled true }
Compile, build, all works fine.
- Add plugin 'org.sonarqube' (classpath, apply).
Start sonar with params:
--stacktrace -Dsonar.host.url=http://localhost:9000 -Dsonar.login=XXXX
Error in gradle console:
:app:sonarqube
Unable to find Java compiler on variant 'debugAndroidTest'. Is Jack toolchain used? SonarQube analysis will be less accurate without bytecode.
:app:sonarqube FAILED
Unable to find Java compiler on variant 'debugAndroidTest'. Is Jack toolchain used? SonarQube analysis will be less accurate without bytecode.
:app:sonarqube FAILED
FAILURE: Build failed with an exception.
* What went wrong:
java.lang.NullPointerException (no error message)
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
java.lang.NullPointerException
at org.sonarqube.gradle.SonarQubePlugin.appendProps(SonarQubePlugin.java:216)
at org.sonarqube.gradle.SonarQubePlugin.setTestClasspathProps(SonarQubePlugin.java:226)
at org.sonarqube.gradle.AndroidUtils.populateSonarQubeProps(AndroidUtils.java:203)
at org.sonarqube.gradle.AndroidUtils.configureForAndroid(AndroidUtils.java:87)
at org.sonarqube.gradle.AndroidUtils.configureForAndroid(AndroidUtils.java:67)
at org.sonarqube.gradle.SonarQubePlugin.computeSonarProperties(SonarQubePlugin.java:401)
at org.sonarqube.gradle.SonarQubePlugin.lambda$createTask$10(SonarQubePlugin.java:361)
at org.gradle.util.GUtil.uncheckedCall(GUtil.java:432)
at org.gradle.api.internal.ConventionAwareHelper$2.getValue(ConventionAwareHelper.java:87)
at org.gradle.api.internal.ConventionAwareHelper$MappedPropertyImpl.getValue(ConventionAwareHelper.java:136)
at org.gradle.api.internal.ConventionAwareHelper.getConventionValue(ConventionAwareHelper.java:114)
at org.sonarqube.gradle.SonarQubeTask_Decorated.getProperties(Unknown Source)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
...
Can anyone help?
UPD: I can't use gradle 3+ or retrolambda plugin, because they conflicts with used in our projects frameworks.
UPD2:
Find temporary solution - add into build.gradle:
sonarqube {
androidVariant 'release'
}