jeremymailen / kotlinter-gradle

Painless, fast ktlint plugin for Gradle

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

3.14.0 fails with ruleset error

CharlieTap opened this issue · comments

This could just be me missing something but I can't figure out exactly what I'm doing wrong 🤔 .

I created a branch on my public repo here.

You can see the actual error in the run of this action here

java.lang.NullPointerException: Cannot invoke "com.pinterest.ktlint.core.api.editorconfig.RuleExecution.name()" because "ruleSetExecution" is null
Task :extension:kotlin-serialization:lintKotlinCommonMain FAILED
at com.pinterest.ktlint.core.internal.VisitorProvider.isRuleSetEnabled(VisitorProvider.kt:128)
at com.pinterest.ktlint.core.internal.VisitorProvider.isRuleEnabled(VisitorProvider.kt:123)
at com.pinterest.ktlint.core.internal.VisitorProvider.isEnabled(VisitorProvider.kt:102)
at com.pinterest.ktlint.core.internal.VisitorProvider.visitor$ktlint_core(VisitorProvider.kt:55)
at com.pinterest.ktlint.core.KtLintRuleEngine.lint(KtLint.kt:435)
at org.jmailen.gradle.kotlinter.tasks.lint.LintWorkerAction.execute(LintWorkerAction.kt:48)
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:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
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:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
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:169)
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:249)
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:109)
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:114)
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.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
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:833)

Well, I don't know how to debug your repo exactly. The plugin works across a wide variety of projects.
Off hand, I noticed that the kotlinter plugin is only applied to the root project so you'll need to apply it to subprojects.
Also you seem to be applying kotlinter-conventions and not totally clear what that is, but it seems to be using configuration parameters which were removed in https://github.com/jeremymailen/kotlinter-gradle/releases/tag/3.14.0

Okay so for context it is applied to all subprojects through the use of a convention plugin, the line in the root project just loads the kotlinter jar onto the classpath. The plugin was working before 3.14.0, I've used it for over a year now.

The actual config I used in 3.13 (This is the main branch of my repo) was:

kotlinter {
disabledRules.set(xxxx)
}

and now (in the branch i linked in the OP) is actually empty as I've removed that config and added an editor config file to my repository.

It transpires that none of this is relevant as if you apply the kotlinter plugin directly (avoiding conventions) 3.14.0 and give no config and no editor config it still fails. If the plugin is passing tests it may be that those are not multiplatform projects maybe? theres nothing particularly special about my repository, it has a bog standard gradle configuration.

Whatever the issue is disappears in the latest release, it may well have been that it was an issue in ktlint as opposed to this plugin in particular because I can't see any commits that would have addressed the issue.