jshiell / checkstyle-idea

CheckStyle plug-in for IntelliJ IDEA
https://plugins.jetbrains.com/plugin/1065-checkstyle-idea
Other
884 stars 160 forks source link

IllegalArgumentException: Argument for @NotNull parameter 'checkstyleVersion' of org/infernus/idea/checkstyle/config/PluginConfiguration.<init> must not be null #648

Open remal opened 3 weeks ago

remal commented 3 weeks ago

I have this plugin error in logs:

java.lang.IllegalArgumentException: Argument for @NotNull parameter 'checkstyleVersion' of org/infernus/idea/checkstyle/config/PluginConfiguration.<init> must not be null
    at org.infernus.idea.checkstyle.config.PluginConfiguration.$$$reportNull$$$0(PluginConfiguration.java)
    at org.infernus.idea.checkstyle.config.PluginConfiguration.<init>(PluginConfiguration.java)
    at org.infernus.idea.checkstyle.config.PluginConfigurationBuilder.build(PluginConfigurationBuilder.java:146)
    at org.infernus.idea.checkstyle.config.PluginConfigurationManager.getCurrent(PluginConfigurationManager.java:47)
    at org.infernus.idea.checkstyle.checker.PsiFileValidator.isInSource(PsiFileValidator.java:68)
    at org.infernus.idea.checkstyle.checker.PsiFileValidator.isScannable(PsiFileValidator.java:37)
    at org.infernus.idea.checkstyle.checker.ScannableFile.lambda$createAndValidate$0(ScannableFile.java:79)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
    at java.base/java.util.Collections$2.tryAdvance(Collections.java:5073)
    at java.base/java.util.Collections$2.forEachRemaining(Collections.java:5081)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
    at org.infernus.idea.checkstyle.checker.ScannableFile.lambda$createAndValidate$2(ScannableFile.java:86)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runReadAction(AnyThreadWriteThreadingSupport.kt:228)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runReadAction(AnyThreadWriteThreadingSupport.kt:221)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:857)
    at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:66)
    at org.infernus.idea.checkstyle.checker.ScannableFile.createAndValidate(ScannableFile.java:87)
    at org.infernus.idea.checkstyle.CheckStyleInspection.checkFile(CheckStyleInspection.java:71)
    at com.intellij.codeInspection.LocalInspectionTool$PsiFileElementVisitor.visitFile(LocalInspectionTool.java:159)
    at com.intellij.extapi.psi.PsiFileBase.accept(PsiFileBase.java:59)
    at com.intellij.codeInsight.daemon.impl.InspectionRunner$InspectionProblemHolder.visitElement(InspectionRunner.java:598)
    at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processContext$20(InspectionRunner.java:415)
    at com.intellij.codeInsight.daemon.impl.InspectionVisitorOptimizer.acceptElements(InspectionVisitorOptimizer.java:207)
    at com.intellij.codeInsight.daemon.impl.InspectionRunner.processContext(InspectionRunner.java:413)
    at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$inspect$7(InspectionRunner.java:192)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.tryRunReadAction(AnyThreadWriteThreadingSupport.kt:279)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:965)
    at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$executeInImpatientReadAction$17(InspectionRunner.java:394)
    at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:158)
    at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:150)
    at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$executeInImpatientReadAction$18(InspectionRunner.java:385)
    at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:129)
    at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:118)
    at com.intellij.codeInsight.daemon.impl.InspectionRunner.executeInImpatientReadAction(InspectionRunner.java:385)
    at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$inspect$8(InspectionRunner.java:191)
    at com.intellij.concurrency.JobLauncherImpl$2MyProcessQueueTask.lambda$call$0(JobLauncherImpl.java:494)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
    at com.intellij.concurrency.JobLauncherImpl$2MyProcessQueueTask.call(JobLauncherImpl.java:483)
    at com.intellij.concurrency.JobLauncherImpl$2MyProcessQueueTask.call(JobLauncherImpl.java:471)
    at com.intellij.concurrency.JobLauncherImpl$2.compute(JobLauncherImpl.java:456)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:759)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:676)
    at com.intellij.concurrency.JobLauncherImpl.procInOrderAsync(JobLauncherImpl.java:554)
    at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$inspect$12(InspectionRunner.java:202)
    at com.intellij.codeInspection.InspectionEngine.withSession(InspectionEngine.java:205)
    at com.intellij.codeInsight.daemon.impl.InspectionRunner.inspect(InspectionRunner.java:162)
    at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.collectInformationWithProgress(LocalInspectionsPass.java:140)
    at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:84)
    at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:57)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:418)
    at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.runWithSpanIgnoreThrows(trace.kt:118)
    at com.intellij.platform.diagnostic.telemetry.helpers.TraceUtil.runWithSpanThrows(TraceUtil.java:36)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$3(PassExecutorService.java:413)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.tryRunReadAction(AnyThreadWriteThreadingSupport.kt:291)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:965)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$4(PassExecutorService.java:404)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:403)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:379)
    at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.cacheFileTypesInside(FileTypeManagerImpl.java:802)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$1(PassExecutorService.java:379)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.executeByImpatientReader(AnyThreadWriteThreadingSupport.kt:486)
    at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:179)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:377)
    at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:190)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)

Versions: IntelliJ IDEA: 2024.2.0.2 (Ultimate Edition) CheckStyle-IDEA: 5.93.4

jshiell commented 3 weeks ago

Thanks for the report. This should never be null, which suggest either something is very wrong, or there's a problem with the configuration file that we're not handling.

Could you please attach a dump of your config? (normally .idea/checkstyle-idea.xml)

jshiell commented 2 weeks ago

I've added some extra code to the new release to try and better detect when we get invalid data and fall back upon a default value. Does this help in your scenario?

remal commented 2 weeks ago

Sorry for the late response. This is the content of my .idea/checkstyle-idea.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CheckStyle-IDEA" serialisationVersion="2">
    <scanScope>JavaOnlyWithTests</scanScope>
    <suppressErrors>true</suppressErrors>
    <copyLibs>true</copyLibs>
    <option name="thirdPartyClasspath" />
    <option name="activeLocationIds">
      <option value="9def2c7d-d4fd-424e-98c4-51570869e7b1" />
    </option>
    <option name="locations">
      <list>
        <ConfigurationLocation description="Sun Checks" id="bundled-sun-checks" scope="All" type="BUNDLED">(bundled)</ConfigurationLocation>
        <ConfigurationLocation description="Google Checks" id="bundled-google-checks" scope="All" type="BUNDLED">(bundled)</ConfigurationLocation>
        <ConfigurationLocation id="9def2c7d-d4fd-424e-98c4-51570869e7b1" type="PROJECT_RELATIVE" scope="All" description="Project file - checkstyle.xml">$PROJECT_DIR$/checkstyle.xml</ConfigurationLocation>
      </list>
    </option>
  </component>
</project>

Thanks for adding extra code! I'll check if it works for me as soon as I can.