sonar-detekt icon indicating copy to clipboard operation
sonar-detekt copied to clipboard

Using kotlin context receivers breaks check

Open 5V715 opened this issue 2 years ago • 6 comments

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)

5V715 avatar Dec 01 '22 13:12 5V715

Can you try your code with https://github.com/detekt/detekt and raise the issue upstream eventually?

cortinico avatar Dec 01 '22 13:12 cortinico

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

5V715 avatar Dec 02 '22 14:12 5V715

looks like the ktlint that is also running with it breaks it the way to work around it was to

@file:Suppress("Indentation")

5V715 avatar Dec 02 '22 14:12 5V715

Is there any other solution than the workaround @file:Suppress("Indentation")?

hsalem7 avatar Feb 27 '23 08:02 hsalem7

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.

akhilbv avatar May 12 '23 10:05 akhilbv

Please try https://github.com/detekt/sonar-detekt/releases/tag/2.6.0-RC1 which uses a never KtLint version.

arturbosch avatar Aug 15 '23 14:08 arturbosch