detekt: Custom ruleset Exception after recent commit

Hi, first of all thank you for making such a wonderful library!

I’ve been making custom rules for my repo, and it’s been working great but after this commit https://github.com/Affirm/detekt/commit/4ab010a5aa25ae7f338bddff88a7076abfa11cff whenever I run gradle detektCheck with my custom rule, I would get this error (using the default detekt-sample-ruleset to demo here):

Analyzing 491 kotlin files: Exception in thread "main" java.util.concurrent.CompletionException: java.lang.NoSuchMethodError: io.gitlab.arturbosch.detekt.api.Issue.<init>(Ljava/lang/String;Lio/gitlab/arturbosch/detekt/api/Severity;Ljava/lang/String;Lio/gitlab/arturbosch/detekt/api/Debt;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
        at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
        at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1592)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodError: io.gitlab.arturbosch.detekt.api.Issue.<init>(Ljava/lang/String;Lio/gitlab/arturbosch/detekt/api/Severity;Ljava/lang/String;Lio/gitlab/arturbosch/detekt/api/Debt;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
        at io.gitlab.arturbosch.detekt.sampleruleset.TooManyFunctions.<init>(TooManyFunctions.kt:16)
        at io.gitlab.arturbosch.detekt.sampleruleset.SampleProvider.instance(SampleProvider.kt:13)
        at io.gitlab.arturbosch.detekt.api.RuleSetProvider$DefaultImpls.buildRuleset(RuleSetProvider.kt:28)
        at io.gitlab.arturbosch.detekt.sampleruleset.SampleProvider.buildRuleset(SampleProvider.kt:10)
        at io.gitlab.arturbosch.detekt.core.Detektor.analyze(Detektor.kt:48)
        at io.gitlab.arturbosch.detekt.core.Detektor.access$analyze(Detektor.kt:11)
        at io.gitlab.arturbosch.detekt.core.Detektor$run$1$$special$$inlined$map$lambda$1.invoke(Detektor.kt:26)
        at io.gitlab.arturbosch.detekt.core.Detektor$run$1$$special$$inlined$map$lambda$1.invoke(Detektor.kt:11)
        at io.gitlab.arturbosch.detekt.core.TasksKt$runAsync$1.invoke(Tasks.kt:20)
        at io.gitlab.arturbosch.detekt.core.TasksKt$task$1.get(Tasks.kt:24)
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
        ... 3 more

Any thoughts/ideas why this happens are appreciated, thank you again!

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 16 (14 by maintainers)

Commits related to this issue

Most upvoted comments

Works like magic! Thank you so much!

I assume you haven’t added custom dependencies? If yes you have to build a fatjar.

You have to point detekt to a custom jar with the ruleSets = "path/to/ruleset.jar" parameter inside a profile.

Edit: Ok, using a custom rule set inside the gradle plugin indeed throws an exception. WIll try to fix that tomorrow and release a new bug fix version. Thx for reporting and trying out custom rule sets! 😄