jeremymailen / kotlinter-gradle

Painless, fast ktlint plugin for Gradle

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kotlinter crashes with NoSuchMethodError in Sarif4K 0.6.0

rock3r opened this issue · comments

When running check, the plugin crashes:

java.lang.NoSuchMethodError: 'void io.github.detekt.sarif4k.ToolComponent.<init>(io.github.detekt.sarif4k.ToolComponentReference, java.util.List, java.lang.String, java.lang.String, io.github.detekt.sarif4k.MultiformatMessageString, java.lang.String, java.util.Map, java.lang.String, java.lang.String, java.lang.Boolean, java.lang.String, java.lang.String, java.util.List, java.lang.String, java.lang.String, java.util.List, java.lang.String, java.lang.String, java.lang.String, io.github.detekt.sarif4k.PropertyBag, java.lang.String, java.util.List, java.lang.String, io.github.detekt.sarif4k.MultiformatMessageString, java.util.List, java.util.List, io.github.detekt.sarif4k.TranslationMetadata, java.lang.String, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at com.pinterest.ktlint.cli.reporter.sarif.SarifReporter.afterAll(SarifReporter.kt:95)
	at org.jmailen.gradle.kotlinter.support.SortedThreadSafeReporterWrapper.afterAll(SortedThreadSafeReporterWrapper.kt:63)
	at org.jmailen.gradle.kotlinter.tasks.lint.LintWorkerAction.execute(LintWorkerAction.kt:60)
	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:264)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:128)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:133)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:840)

Downgrading Sarif4K to 0.5.0 works fine. You probably just need to upgrade your dependency.

Thank you for the report. I don't believe we have a direct dependency on sarif, but get it through com.pinterest.ktlint:ktlint-cli-reporter-sarif:1.2.1. Seems like we should add automated test coverage however.

What's your gradle configuration? Sarif reports work for me using the latest version of kotlinter (4.3.0). Have you bumped the ktlint dependency? I still need to put out a new release supporting 1.3.0.

Hi Jeremy! I had this crash when working on JetBrains/jewel#398, where I initially updated Sarif4k to 0.6.0. I am not declaring the ktlint version explicitly, just getting whatever comes through your plugin

I see. It sounds like maybe the jetbrains compose build plugin for that one requires a later version of the sarif dependency. If you remove the other build plugin, do sarif reports work?

It's an unfortunate challenge that the dependencies are not isolated when it comes to gradle plugins, which you can see from the compatibility matrix described by this plugin which isn't comprehensive. There might be other plugins out there with conflicting dependencies.

I have only tried a simple "roll back the Sarif4k version to 0.5.0" and stopped there, since that fixed the issue. I have a direct dependency on it because I need to merge Sarif reports before uploading to GH Actions; I don't think any 3p plugin in my build uses it — apart maybe from Detekt, but that is not problematic, since it's my direct dependency that causes issues.