[Codenarc-user] @Grab and IntelliJ IDEA
Brought to you by:
chrismair
From: Cédric C. <ced...@gm...> - 2011-03-01 09:06:07
|
Hi, I'm having hard days working around this bug : https://github.com/melix/codenarc-idea/issues#issue/1 First IntelliJ seems to do some dark magic swallowing my exceptions : |try { final List<Violation> list = rule.applyTo(code); } catch (Throwable e) { ... // never gets executed oO, but should according to the stack trace } | doesn't work oO, but that's not directly related to CodeNarc. What is related is that it complains about a missing Ivy dependency, because of the @Grab annotation in the source file. That said, I think it's dangerous for CodeNarc to trigger the @Grab resolving process, because if the inspection is configured as a runtime inspection in the IDE, then CodeNarc would download the dependency where one would have expected it to be downloaded at execution time only. What do you think ? Do you have any workaround for this ? Here's the stacktrace from IntelliJ IDEA : |[1140420] ERROR - m.intellij.concurrency.JobUtil - org/apache/ivy/core/report/ResolveReport java.lang.NoClassDefFoundError: org/apache/ivy/core/report/ResolveReport at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) at java.lang.Class.getDeclaredMethods(Class.java:1791) at org.codehaus.groovy.reflection.CachedClass$3$1.run(CachedClass.java:83) at java.security.AccessController.doPrivileged(Native Method) at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:80) at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:78) at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46) at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33) at org.codehaus.groovy.reflection.CachedClass.getMethods(CachedClass.java:249) at groovy.lang.MetaClassImpl.populateMethods(MetaClassImpl.java:341) at groovy.lang.MetaClassImpl.fillMethodIndex(MetaClassImpl.java:291) at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:2914) at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:166) at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:182) at groovy.grape.GrapeIvy.$getStaticMetaClass(GrapeIvy.groovy) at groovy.grape.GrapeIvy.<init>(GrapeIvy.groovy:59) at sun.reflect.GeneratedConstructorAccessor82.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at groovy.grape.Grape.getInstance(Grape.java:103) at groovy.grape.Grape.grab(Grape.java:138) at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:260) at org.codehaus.groovy.transform.ASTTransformationVisitor$3.call(ASTTransformationVisitor.java:302) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:813) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:511) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:487) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:464) at sun.reflect.GeneratedMethodAccessor261.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codenarc.source.AbstractSourceCode.getAst(AbstractSourceCode.groovy:71) at sun.reflect.GeneratedMethodAccessor117.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:1600) at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:3305) at org.codenarc.source.AbstractSourceCode.getProperty(AbstractSourceCode.groovy) at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:237) at org.codenarc.rule.AbstractAstVisitorRule.applyTo(AbstractAstVisitorRule.groovy:77) at org.codenarc.rule.AbstractAstVisitorRule$applyTo$0.callCurrent(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44) at org.codenarc.rule.AbstractAstVisitorRule$applyTo$0.callCurrent(Unknown Source) at org.codenarc.rule.AbstractRule.applyTo(AbstractRule.groovy:126) *at org.codenarc.idea.CodeNarcInspectionTool$2.compute(CodeNarcInspectionTool.java:163)* *// final List<Violation> list = rule.applyTo(code);* at org.codenarc.idea.CodeNarcInspectionTool$2.compute(CodeNarcInspectionTool.java:150) at com.intellij.psi.impl.PsiParameterizedCachedValue.doCompute(PsiParameterizedCachedValue.java:52) at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:191) at com.intellij.psi.impl.PsiParameterizedCachedValue.getValue(PsiParameterizedCachedValue.java:43) at org.codenarc.idea.CodeNarcInspectionTool.checkFile(CodeNarcInspectionTool.java:185) at com.intellij.codeInspection.LocalInspectionTool$1.visitFile(LocalInspectionTool.java:128) at com.intellij.extapi.psi.PsiFileBase.accept(PsiFileBase.java:70) at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.a(LocalInspectionsPass.java:309) at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.access$100(LocalInspectionsPass.java:76) at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass$1.process(LocalInspectionsPass.java:274) at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass$1.process(LocalInspectionsPass.java:258) at com.intellij.concurrency.JobUtil$2$1.run(JobUtil.java:116) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:233) at com.intellij.concurrency.JobUtil$2.process(JobUtil.java:114) at com.intellij.concurrency.JobUtil$1.run(JobUtil.java:57) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at com.intellij.concurrency.PrioritizedFutureTask.access$101(PrioritizedFutureTask.java:31) at com.intellij.concurrency.PrioritizedFutureTask$1.run(PrioritizedFutureTask.java:70) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1016) at com.intellij.concurrency.PrioritizedFutureTask.run(PrioritizedFutureTask.java:97) at com.intellij.concurrency.JobSchedulerImpl.stealAndRunTask(JobSchedulerImpl.java:65) at com.intellij.concurrency.JobImpl.scheduleAndWaitForResults(JobImpl.java:126) at com.intellij.concurrency.JobUtil.a(JobUtil.java:71) at com.intellij.concurrency.JobUtil.invokeConcurrentlyUnderProgress(JobUtil.java:111) at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.a(LocalInspectionsPass.java:258) at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.a(LocalInspectionsPass.java:225) at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.collectInformationWithProgress(LocalInspectionsPass.java:122) at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:57) at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:58) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1$1.run(PassExecutorService.java:348) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1016) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1.run(PassExecutorService.java:340) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:233) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.a(PassExecutorService.java:338) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:314) at com.intellij.concurrency.JobUtil$3.call(JobUtil.java:133) at com.intellij.concurrency.JobUtil$3.call(JobUtil.java:130) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at com.intellij.concurrency.PrioritizedFutureTask.access$101(PrioritizedFutureTask.java:31) at com.intellij.concurrency.PrioritizedFutureTask$1.run(PrioritizedFutureTask.java:70) at com.intellij.concurrency.PrioritizedFutureTask.run(PrioritizedFutureTask.java:113) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.ClassNotFoundException: org.apache.ivy.core.report.ResolveReport at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:71) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at com.intellij.util.lang.UrlClassLoader.loadClass(UrlClassLoader.java:84) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) ... 100 more | |