sonar-detekt
sonar-detekt copied to clipboard
Using kotlin context receivers breaks check
using kotlins new context receivers breaks the check with
Caused by: java.lang.IllegalStateException: Analyzing /runner/_work/xxxxx/xxx.kt led to an exception.
The original exception message was: null
Running detekt '1.19.0' on Java '11.0.16.1+1' on OS 'Linux'
If the exception message does not help, please feel free to create an issue on our GitHub page.
at io.gitlab.arturbosch.detekt.core.AnalyzerKt.throwIllegalStateException(Analyzer.kt:162)
at io.gitlab.arturbosch.detekt.core.AnalyzerKt.access$throwIllegalStateException(Analyzer.kt:1)
at io.gitlab.arturbosch.detekt.core.Analyzer.runSync(Analyzer.kt:70)
at io.gitlab.arturbosch.detekt.core.Analyzer.run(Analyzer.kt:52)
at io.gitlab.arturbosch.detekt.core.tooling.Lifecycle$analyze$result$1.invoke(Lifecycle.kt:45)
...
Caused by: kotlin.KotlinNullPointerException
at com.pinterest.ktlint.ruleset.standard.IndentationRule.rearrangeBlock(IndentationRule.kt:202)
at com.pinterest.ktlint.ruleset.standard.IndentationRule.access$rearrangeBlock(IndentationRule.kt:103)
at com.pinterest.ktlint.ruleset.standard.IndentationRule$rearrange$1.invoke(IndentationRule.kt:172)
at com.pinterest.ktlint.ruleset.standard.IndentationRule$rearrange$1.invoke(IndentationRule.kt:170)
at com.pinterest.ktlint.core.ast.PackageKt.visit(package.kt:225)
at com.pinterest.ktlint.core.ast.PackageKt.visit(package.kt:226)
at com.pinterest.ktlint.core.ast.PackageKt.visit(package.kt:226)
Can you try your code with https://github.com/detekt/detekt and raise the issue upstream eventually?
created a test project using detekt 1.19.0. and it appears to be working with the context keyword https://github.com/5V715/context-recievers-sample
looks like the ktlint that is also running with it breaks it the way to work around it was to
@file:Suppress("Indentation")
Is there any other solution than the workaround @file:Suppress("Indentation")
?
Disabling the Indentation rules solves the issue. Add the below lines to detect configuration yaml to disable the rule.
formatting:
active: true
Indentation:
active: false
Then go to project settings in sonarqube and update the Detekt yaml configuration file path.
Please try https://github.com/detekt/sonar-detekt/releases/tag/2.6.0-RC1 which uses a never KtLint version.