xdev-software/intellij-plugin-save-actions

exception saying No display name found for inspection

xqfz opened this issue · 7 comments

xqfz commented

When I saved Java code, I got IDE internal error “Exception in plugin Save Actions- XDEV Edition (1.0.2)”.
Below is partial of stacktrace.txt:
java.lang.AssertionError: No display name found for inspection
at com.siyeh.ig.GroupDisplayNameUtil.getGroupDisplayName(GroupDisplayNameUtil.java:69)
at com.siyeh.ig.BaseInspection.getGroupDisplayName(BaseInspection.java:67)
at com.intellij.codeInspection.InspectionProfileEntry.getGroupPath(InspectionProfileEntry.java:284)
at com.intellij.codeInspection.ex.InspectionToolWrapper.getGroupPath(InspectionToolWrapper.java:163)
at org.jetbrains.qodana.staticAnalysis.stat.InspectionInfoQodanaReporterService$InspectionInfo.(InspectionInfoQodanaReporterService.kt:99)
...
By debugging using then source code,I found that "CustomAccessCanBeTightenedInspection" cause this warning. Compare to "CustomUnqualifiedStaticUsageInspection", "CustomAccessCanBeTightenedInspection" has not override "getDisplayName" method. After making up this method the warning disappeared.

Can confirm the problem, but only when https://plugins.jetbrains.com/plugin/16938-qodana (in most IDEs built-in) is enabled.
As a workaround you may disable this plugin if you don't use it.

Thank you for the report.
This will be fixed in the next release :)

We are facing the same issue. Do you have an ETA on the fix or an issue I can track?

We are facing the same issue. Do you have an ETA on the fix or an issue I can track?

This was already fixed and released 3 weeks ago :)

For some reason 1.0.3 was not loaded until I upgraded from 2023.2 to 2023.2.2. Not sure if that was an issue on my clients part but it seems to be fixed now. Thank you

I am using 1.0.4 on Mac with IJ 2023.2.4 and I am getting the same stacktrace. Is this a new problem or a regression?

Andreas

java.lang.AssertionError: No display name found for inspection
	at com.siyeh.ig.GroupDisplayNameUtil.getGroupDisplayName(GroupDisplayNameUtil.java:69)
	at com.siyeh.ig.BaseInspection.getGroupDisplayName(BaseInspection.java:67)
	at com.intellij.codeInspection.InspectionProfileEntry.getGroupPath(InspectionProfileEntry.java:284)
	at com.intellij.codeInspection.ex.InspectionToolWrapper.getGroupPath(InspectionToolWrapper.java:163)
	at org.jetbrains.qodana.staticAnalysis.stat.InspectionInfoQodanaReporterService$InspectionInfo.<init>(InspectionInfoQodanaReporterService.kt:99)
	at org.jetbrains.qodana.staticAnalysis.stat.InspectionInfoQodanaReporterService$addInspectionFinishedEvent$1.apply(InspectionInfoQodanaReporterService.kt:175)
	at org.jetbrains.qodana.staticAnalysis.stat.InspectionInfoQodanaReporterService$addInspectionFinishedEvent$1.apply(InspectionInfoQodanaReporterService.kt:173)
	at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1955)
	at org.jetbrains.qodana.staticAnalysis.stat.InspectionInfoQodanaReporterService.addInspectionFinishedEvent(InspectionInfoQodanaReporterService.kt:173)
	at org.jetbrains.qodana.staticAnalysis.stat.InspectionEventsListener.inspectionFinished(InspectionEventsListener.kt:23)
	at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:699)
	at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:659)
	at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:422)
	at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:401)
	at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1)
	at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:460)
	at jdk.proxy1/jdk.proxy1.$Proxy263.inspectionFinished(Unknown Source)
	at com.intellij.codeInspection.InspectionEngine.lambda$inspectElements$8(InspectionEngine.java:288)
	at com.intellij.concurrency.JobLauncherImpl.lambda$processImmediatelyIfTooFew$2(JobLauncherImpl.java:144)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
	at com.intellij.concurrency.JobLauncherImpl.lambda$processImmediatelyIfTooFew$3(JobLauncherImpl.java:140)
	at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:895)
	at com.intellij.concurrency.JobLauncherImpl.processImmediatelyIfTooFew(JobLauncherImpl.java:151)
	at com.intellij.concurrency.JobLauncherImpl.invokeConcurrentlyUnderProgress(JobLauncherImpl.java:47)
	at com.intellij.concurrency.JobLauncher.invokeConcurrentlyUnderProgress(JobLauncher.java:51)
	at com.intellij.codeInspection.InspectionEngine.lambda$inspectElements$9(InspectionEngine.java:302)
	at com.intellij.codeInspection.InspectionEngine.withSession(InspectionEngine.java:227)
	at com.intellij.codeInspection.InspectionEngine.inspectElements(InspectionEngine.java:243)
	at com.intellij.codeInspection.InspectionEngine.inspectElements(InspectionEngine.java:216)
	at com.intellij.codeInspection.InspectionEngine.inspectEx(InspectionEngine.java:122)
	at com.intellij.codeInspection.InspectionEngine.lambda$runInspectionOnFile$10(InspectionEngine.java:319)
	at com.intellij.codeInspection.reference.RefManagerImpl.runInsideInspectionReadAction(RefManagerImpl.java:508)
	at com.intellij.codeInspection.InspectionEngine.runInspectionOnFile(InspectionEngine.java:315)
	at software.xdev.saveactions.processors.java.InspectionRunnable.getProblemDescriptors(InspectionRunnable.java:54)
	at software.xdev.saveactions.processors.java.InspectionRunnable.lambda$run$0(InspectionRunnable.java:47)
	at java.base/java.lang.Iterable.forEach(Iterable.java:75)
	at software.xdev.saveactions.processors.java.InspectionRunnable.run(InspectionRunnable.java:47)
	at software.xdev.saveactions.processors.SaveWriteCommand.lambda$execute$0(SaveWriteCommand.java:27)
	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$1(WriteCommandAction.java:149)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:992)
	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$2(WriteCommandAction.java:147)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:219)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:184)
	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.doRunWriteCommandAction(WriteCommandAction.java:156)
	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.run(WriteCommandAction.java:123)
	at software.xdev.saveactions.processors.SaveWriteCommand.execute(SaveWriteCommand.java:27)
	at software.xdev.saveactions.core.component.Engine.lambda$processPsiFiles$6(Engine.java:94)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$15$1.accept(ReferencePipeline.java:541)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:720)
	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.AbstractPipeline.evaluate(AbstractPipeline.java:575)
	at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
	at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
	at software.xdev.saveactions.core.component.Engine.processPsiFiles(Engine.java:95)
	at software.xdev.saveactions.core.component.Engine.processPsiFilesIfNecessary(Engine.java:73)
	at software.xdev.saveactions.core.service.impl.AbstractSaveActionsService.guardedProcessPsiFiles(AbstractSaveActionsService.java:68)
	at software.xdev.saveactions.core.service.impl.SaveActionsJavaService.guardedProcessPsiFiles(SaveActionsJavaService.java:22)
	at software.xdev.saveactions.core.listener.SaveActionsDocumentManagerListener.beforeDocumentsSaving(SaveActionsDocumentManagerListener.java:55)
	at software.xdev.saveactions.core.listener.SaveActionsDocumentManagerListener.beforeAllDocumentsSaving(SaveActionsDocumentManagerListener.java:41)
	at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:696)
	at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:659)
	at com.intellij.util.messages.impl.MessageBusImplKt.executeOrAddToQueue(MessageBusImpl.kt:491)
	at com.intellij.util.messages.impl.ToDirectChildrenMessagePublisher.publish$intellij_platform_core(CompositeMessageBus.kt:310)
	at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:448)
	at jdk.proxy1/jdk.proxy1.$Proxy27.beforeAllDocumentsSaving(Unknown Source)
	at jdk.internal.reflect.GeneratedMethodAccessor322.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.multiCast(FileDocumentManagerImpl.java:176)
	at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.lambda$new$0(FileDocumentManagerImpl.java:132)
	at jdk.proxy1/jdk.proxy1.$Proxy27.beforeAllDocumentsSaving(Unknown Source)
	at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.saveDocuments(FileDocumentManagerImpl.java:281)
	at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.saveAllDocuments(FileDocumentManagerImpl.java:269)
	at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.saveAllDocuments(FileDocumentManagerImpl.java:262)
	at com.intellij.ide.actions.SaveAllAction.actionPerformed(SaveAllAction.kt:25)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.java:339)
	at com.intellij.openapi.keymap.impl.ActionProcessor.performAction(ActionProcessor.java:47)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$myActionProcessor$1.performAction(IdeKeyEventDispatcher.kt:502)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcherKt.doPerformActionInner$lambda$5$lambda$4(IdeKeyEventDispatcher.kt:865)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
	at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcherKt.doPerformActionInner$lambda$5(IdeKeyEventDispatcher.kt:865)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:362)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcherKt.doPerformActionInner(IdeKeyEventDispatcher.kt:863)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcherKt.access$doPerformActionInner(IdeKeyEventDispatcher.kt:1)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction$intellij_platform_ide_impl(IdeKeyEventDispatcher.kt:587)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.kt:513)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processActionOrWaitSecondStroke(IdeKeyEventDispatcher.kt:454)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.kt:447)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.kt:309)
	at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.kt:622)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:591)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:997)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:997)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

I can reproduce the problem when "Add class qualifier to static member access outside declaring class" is enabled.

The exception is caused by CustomUnqualifiedStaticUsageInspection because it extends from com.siyeh.ig.BaseInspection which itself overrides getGroupDisplayName in a way that the last part of the package name of the current class is used for looking up the group display name. As the package name isn't matching anything inside GroupDisplayNameUtil it throws that error.