Giter Club home page Giter Club logo

shit-cleaner's Introduction

Shit Cleaner (Code Cleaner)

Shit Cleaner (or Code Cleaner for Intellij IDEA plugin - they don't allow the "Shit" in their plugin's name xD) is an IDE plugin which uses Code Climate CLI to analyze your source code and display Code Smells/Duplications right in your IDE.

Shit Cleaner

Installation

You need Code Climate CLI in your machine to run the plugin. Please follow this document to install.

After installing Code Climate CLI you can download the plugin in the Jetbrains plugin store

FAQs

1. Do I need Code Climate subscription to use the plugin?

No, you don't need any subscription to use the plugin, all you need is the Code Climate CLI installed in your local machine.

2. Can I use it with my private repositories?

Yes, you can use it with public/private repositories

3. Does the plugin send my source code to anywhere?

HELL NO, all processes run on your local machine only, the plugin does not send your source-code/data to anywhere.

4. How many programing languages are supported?

Currently the plugin supports: Ruby, Python, PHP, JavaScript, Java, TypeScript, GoLang, Swift, Scala, Kotlin and C#

Contribution

PRs are welcomed to this project. If you want to improve the plugin, add functionality or improve the docs please feel free to submit a PR.

Sponsors

If you want to become a sponsor please let me know.

You can buy me a beer via Paypal or Patreon.

Thanks in advance!

Copyright

See LICENSE

shit-cleaner's People

Contributors

nhat-phan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

shit-cleaner's Issues

Gets stuck right in the beginning at "Analyze Project..."

After installing the plugin and clicking the Play button code cleaner never gets finished

image

Tried on Mac and Linux, must be connected to the project structure or something.

2 errors are present:

com.intellij.diagnostic.PluginException: net.ntworld.intellijCodeCleaner.AnalyzeMenuAction (net.ntworld.intellijCodeCleaner.AnalyzeMenuAction): group with id "AnalyzeMenu" isn't registered; action will be added to the "Other" group [Plugin: com.github.nhat-phan.codecleaner]
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.reportActionError(ActionManagerImpl.java:416)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.reportActionError(ActionManagerImpl.java:411)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getParentGroup(ActionManagerImpl.java:927)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processAddToGroupNode(ActionManagerImpl.java:893)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processActionElement(ActionManagerImpl.java:663)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processActionsChildElement(ActionManagerImpl.java:1106)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerPluginActions(ActionManagerImpl.java:529)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.<init>(ActionManagerImpl.java:166)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:47)
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClassWithConstructorInjection(ComponentManagerImpl.kt:664)
	at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:49)
	at com.intellij.serviceContainer.ServiceComponentAdapter.access$createAndInitialize(ServiceComponentAdapter.kt:13)
	at com.intellij.serviceContainer.ServiceComponentAdapter$doCreateInstance$1.run(ServiceComponentAdapter.kt:43)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:629)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:581)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:192)
	at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:42)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:113)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:67)
	at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:413)
	at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:395)
	at com.intellij.openapi.actionSystem.ActionManager.getInstance(ActionManager.java:28)
	at com.intellij.openapi.actionSystem.impl.ActionPreloader.preload(ActionPreloader.java:15)
	at com.intellij.openapi.application.Preloader.lambda$preload$0(Preloader.java:84)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:170)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:629)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:581)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:157)
	at com.intellij.openapi.application.Preloader.lambda$preload$1(Preloader.java:74)
	at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:215)
	at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:26)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:194)
	at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:207)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:183)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:834)

and

kotlinx.serialization.SerializationException: Issue is not registered for polymorphic serialization in the scope of class net.ntworld.codeCleaner.codeClimate.AnalyzedResult
	at kotlinx.serialization.PolymorphicKt.throwSubtypeNotRegistered(Polymorphic.kt:149)
	at kotlinx.serialization.PolymorphicKt.access$throwSubtypeNotRegistered(Polymorphic.kt:1)
	at kotlinx.serialization.PolymorphicSerializer.findPolymorphicSerializer(Polymorphic.kt:134)
	at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:40)
	at kotlinx.serialization.json.internal.StreamingJsonInput.decodeSerializableValue(StreamingJsonInput.kt:29)
	at kotlinx.serialization.ElementValueDecoder.decodeSerializableElement(ElementWise.kt:142)
	at kotlinx.serialization.internal.ListLikeSerializer.readItem(CollectionSerializers.kt:98)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.readItem$default(CollectionSerializers.kt:70)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.patch(CollectionSerializers.kt:51)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:61)
	at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:33)
	at kotlinx.serialization.json.internal.StreamingJsonInput.decodeSerializableValue(StreamingJsonInput.kt:29)
	at kotlinx.serialization.CoreKt.decode(Core.kt:79)
	at kotlinx.serialization.json.Json.parse(Json.kt:152)
	at net.ntworld.codeCleaner.Serializer.parse(Serializer.kt:30)
	at net.ntworld.codeCleaner.Serializer.parseIssues(Serializer.kt:39)
	at net.ntworld.codeCleaner.quality.CodeQualityParser.parse(CodeQualityParser.kt:19)
	at net.ntworld.codeCleaner.CodeQualityManager.create(CodeQualityManager.kt:17)
	at net.ntworld.codeCleaner.commandHandler.CreateCodeQualityCommandHandler.handle(CreateCodeQualityCommandHandler.kt:11)
	at net.ntworld.codeCleaner.commandHandler.CreateCodeQualityCommandHandler.handle(CreateCodeQualityCommandHandler.kt:9)
	at net.ntworld.foundation.cqrs.CommandHandler$DefaultImpls.execute(CommandHandler.kt:10)
	at net.ntworld.codeCleaner.commandHandler.CreateCodeQualityCommandHandler.execute(CreateCodeQualityCommandHandler.kt:9)
	at net.ntworld.codeCleaner.LocalCommandBus.process(LocalCommandBus.kt:34)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler$handle$1.invoke(CreateAnalyzeProcessCommandHandler.kt:48)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler$handle$1.invoke(CreateAnalyzeProcessCommandHandler.kt:20)
	at net.ntworld.foundation.Infrastructure$DefaultImpls.invoke(Infrastructure.kt:55)
	at net.ntworld.foundation.InfrastructureResolver.invoke(InfrastructureResolver.kt:12)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler.handle(CreateAnalyzeProcessCommandHandler.kt:27)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler.handle(CreateAnalyzeProcessCommandHandler.kt:20)
	at net.ntworld.foundation.cqrs.CommandHandler$DefaultImpls.execute(CommandHandler.kt:10)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler.execute(CreateAnalyzeProcessCommandHandler.kt:20)
	at net.ntworld.codeCleaner.LocalCommandBus.process(LocalCommandBus.kt:34)
	at net.ntworld.intellijCodeCleaner.task.AnalyzeTask$run$1.invoke(AnalyzeTask.kt:23)
	at net.ntworld.intellijCodeCleaner.task.AnalyzeTask$run$1.invoke(AnalyzeTask.kt:13)
	at net.ntworld.foundation.Infrastructure$DefaultImpls.invoke(Infrastructure.kt:55)
	at net.ntworld.foundation.InfrastructureWrapper.invoke(InfrastructureWrapper.kt:11)
	at net.ntworld.intellijCodeCleaner.task.AnalyzeTask.run(AnalyzeTask.kt:22)
	at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:935)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsync$5(CoreProgressManager.java:442)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:235)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:170)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:629)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:581)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:157)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:235)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:834)

NPE in the background

Hi,

I started using this plugin some time ago and found it very useful. The only issue I have found so far is a NPE thrown sometimes in the background (not sure what triggers it).

Please find the stacktrace below:

java.lang.NullPointerException
	at java.base/java.util.Hashtable.put(Hashtable.java:480)
	at java.desktop/javax.swing.tree.VariableHeightLayoutCache.addMapping(VariableHeightLayoutCache.java:678)
	at java.desktop/javax.swing.tree.VariableHeightLayoutCache.rebuild(VariableHeightLayoutCache.java:722)
	at java.desktop/javax.swing.tree.VariableHeightLayoutCache.treeStructureChanged(VariableHeightLayoutCache.java:629)
	at java.desktop/javax.swing.plaf.basic.BasicTreeUI$Handler.treeStructureChanged(BasicTreeUI.java:4324)
	at java.desktop/javax.swing.tree.DefaultTreeModel.fireTreeStructureChanged(DefaultTreeModel.java:607)
	at java.desktop/javax.swing.tree.DefaultTreeModel.nodeStructureChanged(DefaultTreeModel.java:391)
	at java.desktop/javax.swing.tree.DefaultTreeModel.setRoot(DefaultTreeModel.java:141)
	at net.ntworld.intellijCodeCleaner.component.issue.IssueTree.updateBy(IssueTree.kt:34)
	at net.ntworld.intellijCodeCleaner.component.issue.AbstractIssueTab.updateComponents(AbstractIssueTab.kt:113)
	at net.ntworld.intellijCodeCleaner.component.issue.AbstractIssueTab$createPanel$2.invoke(AbstractIssueTab.kt:54)
	at net.ntworld.intellijCodeCleaner.component.issue.AbstractIssueTab$createPanel$2.invoke(AbstractIssueTab.kt:27)
	at net.ntworld.redux.StoreBase.triggerListeners(StoreBase.kt:19)
	at net.ntworld.redux.StoreBase.reduce(StoreBase.kt:48)
	at net.ntworld.redux.Dispatcher$DefaultImpls.dispatch(Dispatcher.kt:9)
	at net.ntworld.intellijCodeCleaner.DefaultDispatcher.dispatch(DefaultDispatcher.kt:6)
	at net.ntworld.intellijCodeCleaner.eventHandler.AnalyzeProcessStartedEventHandler.handle(AnalyzeProcessStartedEventHandler.kt:15)
	at net.ntworld.intellijCodeCleaner.eventHandler.AnalyzeProcessStartedEventHandler.handle(AnalyzeProcessStartedEventHandler.kt:10)
	at net.ntworld.foundation.EventHandler$DefaultImpls.execute(EventHandler.kt:36)
	at net.ntworld.intellijCodeCleaner.eventHandler.AnalyzeProcessStartedEventHandler.execute(AnalyzeProcessStartedEventHandler.kt:10)
	at net.ntworld.codeCleaner.components.LocalEventBus.process(LocalEventBus.kt:33)
	at net.ntworld.codeCleaner.components.LocalEventBus.publish(LocalEventBus.kt:27)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler$handle$1.invoke(CreateAnalyzeProcessCommandHandler.kt:36)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler$handle$1.invoke(CreateAnalyzeProcessCommandHandler.kt:20)
	at net.ntworld.foundation.Infrastructure$DefaultImpls.invoke(Infrastructure.kt:55)
	at net.ntworld.foundation.InfrastructureResolver.invoke(InfrastructureResolver.kt:12)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler.handle(CreateAnalyzeProcessCommandHandler.kt:27)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler.handle(CreateAnalyzeProcessCommandHandler.kt:20)
	at net.ntworld.foundation.cqrs.CommandHandler$DefaultImpls.execute(CommandHandler.kt:10)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler.execute(CreateAnalyzeProcessCommandHandler.kt:20)
	at net.ntworld.codeCleaner.LocalCommandBus.process(LocalCommandBus.kt:34)
	at net.ntworld.intellijCodeCleaner.task.AnalyzeTask$run$1.invoke(AnalyzeTask.kt:23)
	at net.ntworld.intellijCodeCleaner.task.AnalyzeTask$run$1.invoke(AnalyzeTask.kt:13)
	at net.ntworld.foundation.Infrastructure$DefaultImpls.invoke(Infrastructure.kt:55)
	at net.ntworld.foundation.InfrastructureWrapper.invoke(InfrastructureWrapper.kt:11)
	at net.ntworld.intellijCodeCleaner.task.AnalyzeTask.run(AnalyzeTask.kt:22)
	at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:932)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsync$5(CoreProgressManager.java:434)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$null$3(ProgressRunner.java:233)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:166)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:627)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:572)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:153)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:233)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

Using version 2019.2.1 it on:

IntelliJ IDEA 2020.1.2 (Ultimate Edition)
Build #IU-201.7846.76, built on June 1, 2020
Runtime version: 11.0.7+10-b765.53 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Linux 5.3.0-59-generic
GC: ParNew, ConcurrentMarkSweep
Memory: 951M
Cores: 8
Non-Bundled Plugins: String Manipulation, CheckStyle-IDEA, Lombook Plugin, org.jetbrains.kotlin, com.intellij.plugins.html.instantEditing, com.github.nhat-phan.codecleaner
Current Desktop: KDE

If you could take a look, it would be appreciated!

Thanks,
nagyesta

KotlinNullPointerException on DefaultAnnotationManager.attachProvidersToEditor()

Happened when I've tried to run the scan. And then I couldn't stop it. Had to restart IntelliJ. Also, the docker started to hang and take 100% of the CPU. Had to restart docker too.

Using the latest IDEA and Docker as of today's date.

kotlin.KotlinNullPointerException
	at net.ntworld.intellijCodeCleaner.component.annotation.DefaultAnnotationManager.attachProvidersToEditor(DefaultAnnotationManager.kt:69)
	at net.ntworld.intellijCodeCleaner.component.annotation.DefaultAnnotationManager.attach(DefaultAnnotationManager.kt:35)
	at net.ntworld.intellijCodeCleaner.component.annotation.EditorListener.selectionChanged(EditorListener.kt:22)
	at jdk.internal.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:102)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:446)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:406)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:395)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:379)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:372)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$1(MessageBusImpl.java:242)
	at com.sun.proxy.$Proxy107.selectionChanged(Unknown Source)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.lambda$fireSelectionChanged$20(FileEditorManagerImpl.java:1602)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$5$1.run(FileEditorManagerImpl.java:1051)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.lambda$doWhenFocusSettlesDown$3(FocusManagerImpl.java:170)
	at com.intellij.util.ui.UIUtil.invokeLaterIfNeeded(UIUtil.java:2464)
	at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.java:222)
	at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.java:174)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:161)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:167)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.lambda$null$2(FocusManagerImpl.java:175)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:312)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:433)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:416)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:399)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:878)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:827)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:466)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:704)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:465)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

CodeClimate not found

I installed:

  • the plugin in AppCode 2020.3 on a Macbook M1
  • and CodeClimate CLI using brew for MacOS (it is in the path so I can launch an analysis using the terminal)

However when clicking on the analysis icon (which displays an empty tooltip BTW), the error bash: codeclimate: command not found shows up.

Can't understand why. Could you help?

Allow specifying the configuration format

The plugin currently has an undocumented requirement for the JSON configuration, so if a project has an existing YAML config, that's silently ignored. Allowing this to be specified, or at least making the requirement clear in the docs, would help adoption for projects that require excluded files/directories.

MissingFieldException: Field 'other_locations' when analyze with sonar-java plugin

Nice work with this intellij plugin nhat phan !
When a launch analyze with sonar-java plugin, i got the exception below.

kotlinx.serialization.MissingFieldException: Field 'other_locations' is required, but it was missing
	at net.ntworld.codeCleaner.codeClimate.internal.AnalyzedIssueImpl.<init>(AnalyzedIssueImpl.kt)
	at net.ntworld.codeCleaner.codeClimate.internal.AnalyzedIssueImpl$$serializer.deserialize(AnalyzedIssueImpl.kt)
	at net.ntworld.codeCleaner.codeClimate.internal.AnalyzedIssueImpl$$serializer.deserialize(AnalyzedIssueImpl.kt:9)
	at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:33)
	at kotlinx.serialization.json.internal.AbstractJsonTreeInput.decodeSerializableValue(TreeJsonInput.kt:43)
	at kotlinx.serialization.CoreKt.decode(Core.kt:79)
	at kotlinx.serialization.json.internal.TreeJsonInputKt.readJson(TreeJsonInput.kt:22)
	at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:41)
	at kotlinx.serialization.json.internal.StreamingJsonInput.decodeSerializableValue(StreamingJsonInput.kt:29)
	at kotlinx.serialization.ElementValueDecoder.decodeSerializableElement(ElementWise.kt:142)
	at kotlinx.serialization.internal.ListLikeSerializer.readItem(CollectionSerializers.kt:98)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.readItem$default(CollectionSerializers.kt:70)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.patch(CollectionSerializers.kt:51)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:61)
	at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:33)
	at kotlinx.serialization.json.internal.StreamingJsonInput.decodeSerializableValue(StreamingJsonInput.kt:29)
	at kotlinx.serialization.CoreKt.decode(Core.kt:79)
	at kotlinx.serialization.json.Json.parse(Json.kt:152)
	at net.ntworld.codeCleaner.Serializer.parse(Serializer.kt:30)
	at net.ntworld.codeCleaner.Serializer.parseIssues(Serializer.kt:39)
	at net.ntworld.codeCleaner.quality.CodeQualityParser.parse(CodeQualityParser.kt:19)
	at net.ntworld.codeCleaner.CodeQualityManager.create(CodeQualityManager.kt:17)
	at net.ntworld.codeCleaner.commandHandler.CreateCodeQualityCommandHandler.handle(CreateCodeQualityCommandHandler.kt:11)
	at net.ntworld.codeCleaner.commandHandler.CreateCodeQualityCommandHandler.handle(CreateCodeQualityCommandHandler.kt:9)
	at net.ntworld.foundation.cqrs.CommandHandler$DefaultImpls.execute(CommandHandler.kt:10)
	at net.ntworld.codeCleaner.commandHandler.CreateCodeQualityCommandHandler.execute(CreateCodeQualityCommandHandler.kt:9)
	at net.ntworld.codeCleaner.LocalCommandBus.process(LocalCommandBus.kt:34)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler$handle$1.invoke(CreateAnalyzeProcessCommandHandler.kt:48)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler$handle$1.invoke(CreateAnalyzeProcessCommandHandler.kt:20)
	at net.ntworld.foundation.Infrastructure$DefaultImpls.invoke(Infrastructure.kt:55)
	at net.ntworld.foundation.InfrastructureResolver.invoke(InfrastructureResolver.kt:12)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler.handle(CreateAnalyzeProcessCommandHandler.kt:27)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler.handle(CreateAnalyzeProcessCommandHandler.kt:20)
	at net.ntworld.foundation.cqrs.CommandHandler$DefaultImpls.execute(CommandHandler.kt:10)
	at net.ntworld.codeCleaner.commandHandler.CreateAnalyzeProcessCommandHandler.execute(CreateAnalyzeProcessCommandHandler.kt:20)
	at net.ntworld.codeCleaner.LocalCommandBus.process(LocalCommandBus.kt:34)
	at net.ntworld.intellijCodeCleaner.task.AnalyzeTask$run$1.invoke(AnalyzeTask.kt:23)
	at net.ntworld.intellijCodeCleaner.task.AnalyzeTask$run$1.invoke(AnalyzeTask.kt:13)
	at net.ntworld.foundation.Infrastructure$DefaultImpls.invoke(Infrastructure.kt:55)
	at net.ntworld.foundation.InfrastructureWrapper.invoke(InfrastructureWrapper.kt:11)
	at net.ntworld.intellijCodeCleaner.task.AnalyzeTask.run(AnalyzeTask.kt:22)
	at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:888)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:163)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:585)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:531)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:59)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:150)
	at com.intellij.openapi.progress.impl.CoreProgressManager$4.lambda$run$0(CoreProgressManager.java:402)
	at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:221)
	at com.intellij.openapi.progress.impl.CoreProgressManager$4.run(CoreProgressManager.java:402)
	at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:238)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

Here my .codeclimate.yml file.

version: "2"
checks:
  argument-count:
    enabled: false
    config:
      threshold: 4
  complex-logic:
    enabled: false
    config:
      threshold: 4
  file-lines:
    enabled: false
    config:
      threshold: 250
  method-complexity:
    enabled: false
    config:
      threshold: 5
  method-count:
    enabled: false
    config:
      threshold: 20
  method-lines:
    enabled: false
    config:
      threshold: 25
  nested-control-flow:
    enabled: false
    config:
      threshold: 4
  return-statements:
    enabled: false
    config:
      threshold: 4
  similar-code:
    enabled: false
    config:
      threshold: #language-specific defaults. overrides affect all languages.
  identical-code:
    enabled: false
    config:
      threshold: #language-specific defaults. overrides affect all languages.
plugins:
  sonar-java:
    enabled: true
    config:
      sonar.java.source: "8"
exclude_patterns:
  - "config/"
  - "db/"
  - "dist/"
  - "features/"
  - "**/node_modules/"
  - "script/"
  - "**/spec/"
  - "**/test/"
  - "**/tests/"
  - "**/vendor/"
  - "**/*.d.ts"
  - "**/*.min.js"
  - "**/*.min.css"
  - "apache/"
  - "bdd/"
  - "mysql/"
  - "web/src/main/resources/"
  - "**/target/"
  - "!**/target/site/jacoco/jacoco.xml"

Issue found in RubyMine

See exception from Rubymine

com.intellij.diagnostic.PluginException: net.ntworld.intellijCodeCleaner.AnalyzeMenuAction (net.ntworld.intellijCodeCleaner.AnalyzeMenuAction): group with id "AnalyzeMenu" isn't registered; action will be added to the "Other" group [Plugin: com.github.nhat-phan.codecleaner]
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.reportActionError(ActionManagerImpl.java:389)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getParentGroup(ActionManagerImpl.java:963)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processAddToGroupNode(ActionManagerImpl.java:929)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processActionElement(ActionManagerImpl.java:677)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerPluginActions(ActionManagerImpl.java:514)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerActions(ActionManagerImpl.java:197)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.(ActionManagerImpl.java:174)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:47)
at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClassWithConstructorInjection(ComponentManagerImpl.kt:771)
at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:49)
at com.intellij.serviceContainer.ServiceComponentAdapter.access$createAndInitialize(ServiceComponentAdapter.kt:13)
at com.intellij.serviceContainer.ServiceComponentAdapter$doCreateInstance$1.run(ServiceComponentAdapter.kt:43)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:688)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:634)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:64)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:218)
at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:42)
at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:110)
at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:64)
at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:488)
at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:471)
at com.intellij.openapi.actionSystem.ActionManager.getInstance(ActionManager.java:30)
at com.intellij.openapi.actionSystem.impl.ActionPreloader.preload(ActionPreloader.java:14)
at com.intellij.openapi.application.Preloader.lambda$preload$0(Preloader.java:84)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:178)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:688)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:634)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:64)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:165)
at com.intellij.openapi.application.Preloader.lambda$preload$1(Preloader.java:74)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:216)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:27)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:195)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:213)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:184)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
at java.base/java.lang.Thread.run(Thread.java:834)

Notes for Windows 10 with WSL2

With win10 Subsystem Linux 2, we can take the advantage of docker desktop WSL2 based engine to run this plugin.
Here share the steps:

  1. you must activate and install Ubuntu 18.04, follow the link to enable it:
    https://docs.docker.com/docker-for-windows/wsl/
    If you can turn on the option like below screenshot then move to next step.
    image

  2. Login the Ubuntu (make sure it's running in wsl2 mode) as root
    wsl sudo su

  3. Pull codelimate and download all necessary engines.
    https://github.com/codeclimate/codeclimate
    Run below command to download engines (Either cmd window or wsl is ok):
    docker_run codeclimate/codeclimate engines:install

  4. Download, unzip and copy the codeclimate command line wrapper of linux to /usr/local/bin with Ubuntu, see attached file.
    codeclimate.zip

  5. Go back to Idea or pycharm to enjoy code cleaner :)

Exception: group with id "AnalyzeMenu" isn't registered; action will be added to the "Other" group

This is just on startup in IDEA Ultimate 2020.3.2. As far as I can tell it just, as it says, puts this menu item in the Other group, which is a bit ugly, but not a show stopper.

com.intellij.diagnostic.PluginException: net.ntworld.intellijCodeCleaner.AnalyzeMenuAction (net.ntworld.intellijCodeCleaner.AnalyzeMenuAction): group with id "AnalyzeMenu" isn't registered; action will be added to the "Other" group [Plugin: com.github.nhat-phan.codecleaner]
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.reportActionError(ActionManagerImpl.java:390)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getParentGroup(ActionManagerImpl.java:982)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processAddToGroupNode(ActionManagerImpl.java:948)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.processActionElement(ActionManagerImpl.java:696)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerPluginActions(ActionManagerImpl.java:533)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerActions(ActionManagerImpl.java:198)
	at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.<init>(ActionManagerImpl.java:175)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
	at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:47)
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClassWithConstructorInjection(ComponentManagerImpl.kt:733)
	at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:49)
	at com.intellij.serviceContainer.ServiceComponentAdapter.access$createAndInitialize(ServiceComponentAdapter.kt:13)
	at com.intellij.serviceContainer.ServiceComponentAdapter$doCreateInstance$1.run(ServiceComponentAdapter.kt:43)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:658)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:610)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:65)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:218)
	at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:42)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:113)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:67)
	at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:457)
	at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:440)
	at com.intellij.openapi.actionSystem.ActionManager.getInstance(ActionManager.java:29)
	at com.intellij.openapi.actionSystem.impl.ActionPreloader.preload(ActionPreloader.java:15)
	at com.intellij.openapi.application.Preloader.lambda$preload$0(Preloader.java:84)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:178)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:658)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:610)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:65)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:165)
	at com.intellij.openapi.application.Preloader.lambda$preload$1(Preloader.java:74)
	at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:216)
	at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:27)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:195)
	at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:208)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:184)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:832)

Findings of CLI not displayed because filtered out by contentRoots

The display of results seems to be broken in 19.3. The plugin showed 0 issues, although the CLI listed over 20. I also got a PluginException, but I do not know whether it is related.
com.intellij.diagnostic.PluginException: net.ntworld.intellijCodeCleaner.AnalyzeMenuAction (net.ntworld.intellijCodeCleaner.AnalyzeMenuAction): group with id "AnalyzeMenu" isn't registered; action will be added to the "Other" group [Plugin: com.github.nhat-phan.codecleaner]

Clojure support

Hi, tried installing the kibit engine and then analyzing my project with Code Cleaner but doesn't seem to work, will Clojure be supported?
Thank you

java.lang.IllegalStateException if there is no icon for the file/type of file

Stacktrace

java.lang.IllegalStateException: psiFile.getIcon(Iconable.ICON_FLAG_READ_STATUS) must not be null
	at net.ntworld.intellijCodeCleaner.component.issue.node.FileNode.findIcon(FileNode.kt:25)
	at net.ntworld.intellijCodeCleaner.component.issue.node.FileNode.createPresentation(FileNode.kt:30)
	at com.intellij.ide.util.treeView.PresentableNodeDescriptor.getTemplatePresentation(PresentableNodeDescriptor.java:129)
	at com.intellij.ide.util.treeView.PresentableNodeDescriptor.getPresentation(PresentableNodeDescriptor.java:123)
	at com.intellij.ide.util.treeView.NodeRenderer.getPresentation(NodeRenderer.java:114)
	at com.intellij.ide.util.treeView.NodeRenderer.customizeCellRenderer(NodeRenderer.java:46)
	at com.intellij.ui.ColoredTreeCellRenderer.rendererComponentInner(ColoredTreeCellRenderer.java:117)
	at com.intellij.ui.ColoredTreeCellRenderer.getTreeCellRendererComponent(ColoredTreeCellRenderer.java:52)
	at net.ntworld.intellijCodeCleaner.component.issue.IssueTree.getTreeCellRendererComponent(IssueTree.kt:82)
	at com.intellij.ui.tree.ui.DefaultTreeUI.getRenderer(DefaultTreeUI.java:135)
	at com.intellij.ui.tree.ui.DefaultTreeUI.paint(DefaultTreeUI.java:226)
	at java.desktop/javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
	at java.desktop/javax.swing.JComponent.paintComponent(JComponent.java:797)
	at com.intellij.ui.treeStructure.Tree.paintComponent(Tree.java:331)
	at java.desktop/javax.swing.JComponent.paint(JComponent.java:1074)
	at com.intellij.ui.treeStructure.Tree.paint(Tree.java:245)
	at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)
	at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)
	at java.desktop/javax.swing.JViewport.paint(JViewport.java:737)
	at com.intellij.ui.components.JBViewport.paint(JBViewport.java:234)
	at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5255)
	at java.desktop/javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:246)
	at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1333)
	at java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5203)
	at java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5013)
	at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:868)
	at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:851)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:851)
	at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:826)
	at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:775)
	at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1901)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:878)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:827)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:466)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:704)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:465)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.