Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[IntelliJ plugin] Platform error if configuration file is removed #42

Closed
kajsa opened this issue Aug 27, 2019 · 2 comments
Closed

[IntelliJ plugin] Platform error if configuration file is removed #42

kajsa opened this issue Aug 27, 2019 · 2 comments
Labels
bug Something isn't working good first issue Good for newcomers
Milestone

Comments

@kajsa
Copy link

kajsa commented Aug 27, 2019

Expected Behavior

A missing config file should generate a warning, ideally with a link to the setting page to update the config file location.

Observed Behavior

IDE fatal error occurs, with this stacktrace:

ExternalToolPass:

com.intellij.diagnostic.PluginException: annotator: io.gitlab.arturbosch.detekt.DetektAnnotator@250bd26b (class io.gitlab.arturbosch.detekt.DetektAnnotator) [Plugin: detekt]
	at com.intellij.ide.plugins.PluginManagerCore.createPluginException(PluginManagerCore.java:403)
	at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:12)
	at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:72)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass.process(ExternalToolPass.java:253)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:206)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass.access$500(ExternalToolPass.java:39)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.lambda$run$1(ExternalToolPass.java:179)
	at com.intellij.openapi.progress.util.BackgroundTaskUtil.lambda$runUnderDisposeAwareIndicator$11(BackgroundTaskUtil.java:244)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$3(CoreProgressManager.java:185)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:169)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:591)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:537)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:59)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:156)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:185)
	at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:264)
	at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:243)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.run(ExternalToolPass.java:178)
	at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:324)
	at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:314)
	at com.intellij.util.ui.update.MergingUpdateQueue.lambda$flush$1(MergingUpdateQueue.java:264)
	at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:278)
	at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:233)
	at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:231)
	at com.intellij.util.Alarm$Request.runSafely(Alarm.java:368)
	at com.intellij.util.Alarm$Request.run(Alarm.java:355)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:224)
	at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:207)
	at com.intellij.util.concurrency.BoundedTaskExecutor.access$100(BoundedTaskExecutor.java:29)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.lambda$run$0(BoundedTaskExecutor.java:185)
	at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:208)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:181)
	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)
Caused by: com.beust.jcommander.ParameterException: Provided path '/Users/kanderson/git/cweos/detekt/default-detekt-config.yml' does not exist!
	at io.gitlab.arturbosch.detekt.cli.ExistingPathConverter.convert(PathConverters.kt:17)
	at io.gitlab.arturbosch.detekt.cli.ExistingPathConverter.convert(PathConverters.kt:13)
	at io.gitlab.arturbosch.detekt.cli.DetektInputPathConverter$convert$2.invoke(PathConverters.kt:34)
	at io.gitlab.arturbosch.detekt.cli.DetektInputPathConverter$convert$2.invoke(PathConverters.kt:29)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:172)
	at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:702)
	at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:732)
	at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:723)
	at io.gitlab.arturbosch.detekt.cli.DetektInputPathConverter$DefaultImpls.convert(PathConverters.kt:35)
	at io.gitlab.arturbosch.detekt.cli.MultipleExistingPathConverter.convert(PathConverters.kt:44)
	at io.gitlab.arturbosch.detekt.cli.ConfigurationsKt.parsePathConfig(Configurations.kt:54)
	at io.gitlab.arturbosch.detekt.cli.ConfigurationsKt.loadConfiguration(Configurations.kt:22)
	at io.gitlab.arturbosch.detekt.DetektAnnotator.processingSettings(DetektAnnotator.kt:89)
	at io.gitlab.arturbosch.detekt.DetektAnnotator.runDetekt(DetektAnnotator.kt:55)
	at io.gitlab.arturbosch.detekt.DetektAnnotator.doAnnotate(DetektAnnotator.kt:45)
	at io.gitlab.arturbosch.detekt.DetektAnnotator.doAnnotate(DetektAnnotator.kt:28)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:203)
	... 32 more

Steps to Reproduce

  1. install detekt IntelliJ plugin
  2. Under Project Settings -> Tools -> detekt, point to a valid detekt configuration file
  3. Move the configuration file elsewhere in the filesystem
  4. IDE Fatal Error occurs

Context

In the course of setting up a project at a new employer, I had cloned the project to 2 different locations. Once I got the project set up properly, I removed the "bad" clone, but I had accidentally pointed to that location when configuring the detekt plugin. A missing configuration file shouldn't result in an IDE level fatal error, it should be handled more gracefully, ideally by directing the idiot user (me, in this case) where in Project Settings to change the configuration file location.

Your Environment

  • Version of detekt used: 1.0.0RC12
  • Version of detekt IntelliJ plugin: 0.3.1
  • Version of Gradle used (if applicable): 5.6
  • Version of IntelliJ used: 2019.2.1
  • Operating System and version: macOS 10.14.6
  • Link to your project (if it's a public repository):
@arturbosch arturbosch transferred this issue from detekt/detekt Aug 28, 2019
@arturbosch arturbosch added bug Something isn't working good first issue Good for newcomers labels Aug 28, 2019
@schalkms
Copy link
Member

Very much related to #22

@arturbosch
Copy link
Member

Should be fixed by #45

@arturbosch arturbosch added this to the 0.3.2 milestone Oct 17, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

3 participants