Categories
|
Apache
Code ExplorerProducts: IntelliJ IDEA Vendor: HandyEdit Email: Website: http://plugins.intellij.net/plugin/?id=3739 SourceCode: CodeExplorer_3739.zip Description:
CodeExplorer helps to analyze Java code: find all method call chains to the method and what methods called from the method.
Analysis results (methods and calls between them) are shown on a handy diagram in the CodeExplorer tool window.
Execute plugin commands from Analyze menu (Method structure, Methods and calls in, Method call chains to), and plugin will show analysis results on the diagram. You can add more nodes to the opened diagram by double-clicking on diagram nodes or executing commands from the context menu for diagram nodes. See usage instructions, FAQ and demo for more information about plugin features.
6 updates are hidden
show all updates
Recent change notes:CodeExplorer helps to analyze Java code: find all method call chains to the method and what methods called from the method. Analysis results (methods and calls between them) are shown on a handy diagram in the CodeExplorer tool window.Execute plugin commands from Analyze menu (Method structure, Methods and calls in, Method call chains to), and plugin will show analysis results on the diagram. You can add more nodes to the opened diagram by double-clicking on diagram nodes or executing commands from the context menu for diagram nodes. See usage instructions, FAQ and demo for more information about plugin features. Version 1.3.2
Version 1.3.1
Version 1.3
Version 1.2.1
Version 1.2
Version 1.1
General usage instructions:Execute Analyze menu command and see results on opened CodeExplorer diagram:- Method structure: selected method and method calls from it within class - Method and calls in...: methods and calls between them in class, package, module or project - Method call chains to this...: all method call chains to this method (inside its class, package, module or project) - Method call chains to this from...: all method call chains to this method from selected class, package or module The diagram contains method nodes and edges for calls or usages between methods. You can double click on method nodes to add calls from the method or its usages to the diagram depending on value selected in the "Show on doubleclick" combobox. Also you can add more nodes to the opened diagram executing actions from the node context menu. Hints: - Move mouse over a method node to see method signature and body in the node tooltip - To see method source: choose "Jump to source" in the node context menu or select a node and press F4 - There are several Code explorer settings (in graph toolbar): graph orientation, autoscroll to method source on node selection, show class names as camel words, show method body in tooltip Installation: Open Settings > Plugins Find the CodeExplorer in the available plugins list, right click on it and choose install Note: the plugin needs Idea 8, because it uses Graph API. |
||||||||||||||||||||||||||||
Comments:
requires graph components from enterprise
update failed for AnAction with ID=CodeExplorer.ShowMethodStructure: com/intellij/openapi/graph/base/Graph
java.lang.NoClassDefFoundError: com/intellij/openapi/graph/base/Graph
at com.handyedit.codeexplorer.ui.action.analyze.BaseAnalyzeAction.getContext(BaseAnalyzeAction.java:80)
at com.handyedit.codeexplorer.ui.action.analyze.MethodStructureAction.update(MethodStructureAction.java:27)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareUpdate(ActionUtil.java:98)
at com.intellij.openapi.actionSystem.impl.Utils.doUpdate(Utils.java:143)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:109)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:122)
at com.intellij.openapi.actionSystem.impl.Utils.fillMenu(Utils.java:216)
at com.intellij.openapi.actionSystem.impl.ActionMenu.fillMenu(ActionMenu.java:235)
at com.intellij.openapi.actionSystem.impl.ActionMenu.access$400(ActionMenu.java:39)
at com.intellij.openapi.actionSystem.impl.ActionMenu$MenuListenerImpl.menuSelected(ActionMenu.java:199)
at javax.swing.JMenu.fireMenuSelected(JMenu.java:1028)
at javax.swing.JMenu$MenuChangeListener.stateChanged(JMenu.java:1107)
at javax.swing.DefaultButtonModel.fireStateChanged(DefaultButtonModel.java:333)
at javax.swing.DefaultButtonModel.setSelected(DefaultButtonModel.java:215)
at javax.swing.JMenu.setSelected(JMenu.java:294)
at javax.swing.JMenu.menuSelectionChanged(JMenu.java:1175)
at com.intellij.openapi.actionSystem.impl.ActionMenu.menuSelectionChanged(ActionMenu.java:167)
at javax.swing.MenuSelectionManager.setSelectedPath(MenuSelectionManager.java:100)
at javax.swing.plaf.basic.BasicMenuUI$Handler.mouseEntered(BasicMenuUI.java:509)
at java.awt.Component.processMouseEvent(Component.java:6272)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.trackMouseEnterExit(Container.java:4363)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:610)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:496)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:368)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: com.intellij.openapi.graph.base.Graph
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:70)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
... 43 more
You can install / update it from Idea plugins manager (Plugins section in the Idea settings)
Error during dispatching of java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.SystemEventQueueUtilities$ComponentWorkRequest@62572f,notifier=null,catchExceptions=false,when=1244769495635] on sun.awt.windows.WToolkit@179b3e6
java.lang.NullPointerException
at com.handyedit.codeexplorer.util.PsiUtils.asString(PsiUtils.java:125)
at com.handyedit.codeexplorer.util.PsiUtils.asString(PsiUtils.java:115)
at com.handyedit.codeexplorer.model.MethodNode.getName(MethodNode.java:32)
at com.handyedit.codeexplorer.ui.graph.MethodRenderer.getNodeName(MethodRenderer.java:35)
at com.handyedit.codeexplorer.ui.graph.MethodRenderer.getNodeName(MethodRenderer.java:18)
at com.intellij.openapi.graph.builder.renderer.BasicGraphNodeRenderer.getLabelPanel(BasicGraphNodeRenderer.java:65)
at com.intellij.openapi.graph.builder.renderer.BasicGraphNodeRenderer.tuneNode(BasicGraphNodeRenderer.java:53)
at com.intellij.openapi.graph.builder.renderer.AbstractColoredNodeCellRenderer.getRendererComponent(AbstractColoredNodeCellRenderer.java:33)
at com.intellij.openapi.graph.builder.renderer.BasicNodeCellRenderer.getNodeCellRendererComponent(BasicNodeCellRenderer.java:32)
at com.intellij.openapi.graph.impl.GraphBase$NodeCellRendererProxy.getNodeCellRendererComponent(GraphBase.java:4)
at a.j.l.a(Unknown Source)
at a.j.l.a(Unknown Source)
at a.j.k.a(Unknown Source)
at a.j.kc.d(Unknown Source)
at a.j.y.a(Unknown Source)
at a.j.y$c_.a(Unknown Source)
at a.j.a.i.b(Unknown Source)
at a.j.a.i.a(Unknown Source)
at a.j.y.a(Unknown Source)
at a.j.fe.f(Unknown Source)
at a.j.fe.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(JComponent.java:1027)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:564)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:564)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5129)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1472)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1403)
at javax.swing.RepaintManager.paint(RepaintManager.java:1217)
at javax.swing.JComponent.paint(JComponent.java:1013)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1780)
at com.intellij.openapi.wm.impl.IdeFrameImpl.paint(IdeFrameImpl.java:71)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at com.intellij.ide.IdeEventQueue.c(IdeEventQueue.java:35)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:99)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:217)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
I have recently installed Code Explorer 1.3 for IDEA 8.1.2. I think it is a very USEFUL and POWERFUL tool which will help me to analyze a complex (10000+ lines) Java project.
I have just one question. If I have a file which contains multiple classes, for example...
public class Top {
Bottom b = new Bottom(this);
public void method2() {
//...
}
}
class Bottom {
Top t;
//constructor
public Bottom(Top t) { this.t = t; }
public void method1() {
t.method2();
}
}
If I select "Bottom" in the Project Explorer, and choose "Analyze methods and calls in class", then Code Explorer shows "Top" in the diagram window and not "Bottom"?
If I separate the two classes into two separate files then it works perfectly.
Is it possible to force Code Explorer to Analyze one of the other classes in a file (for example "Bottom")?
Or is the best way to separate each class into its own file?
THANK YOU FOR YOUR TIME,
Best regards,
James C.
com.intellij.psi.impl.source.tree.java.PsiForeachStatementImpl cannot be cast to com.intellij.psi.PsiMethod: com.intellij.psi.impl.source.tree.java.PsiForeachStatementImpl cannot be cast to com.intellij.psi.PsiMethod
java.lang.ClassCastException: com.intellij.psi.impl.source.tree.java.PsiForeachStatementImpl cannot be cast to com.intellij.psi.PsiMethod
at com.handyedit.ast.AstParameter.getPsiMethod(AstParameter.java:22)
at com.handyedit.ast.AstParameter.getIndex(AstParameter.java:18)
at com.handyedit.codeexplorer.explore.Dataflow.addMethodConstraint(Dataflow.java:101)
at com.handyedit.codeexplorer.explore.Dataflow.visitCall(Dataflow.java:90)
at com.handyedit.codeexplorer.explore.Dataflow.stop(Dataflow.java:31)
at com.handyedit.codeexplorer.explore.CallChainStopCondition.stop(CallChainStopCondition.java:20)
at com.handyedit.codeexplorer.explore.CallChainStopCondition.stop(CallChainStopCondition.java:6)
at com.handyedit.codeexplorer.math.GraphWalker.walkAll(GraphWalker.java:81)
at com.handyedit.codeexplorer.math.GraphWalker.walk(GraphWalker.java:57)
at com.handyedit.codeexplorer.explore.MethodExplorer.getCallChains(MethodExplorer.java:118)
at com.handyedit.codeexplorer.explore.MethodExplorer.getCallChains(MethodExplorer.java:108)
at com.handyedit.codeexplorer.ui.action.analyze.MethodCallChainsInAction.getCallChains(MethodCallChainsInAction.java:61)
at com.handyedit.codeexplorer.ui.action.analyze.MethodCallChainsInAction.access$000(MethodCallChainsInAction.java:22)
at com.handyedit.codeexplorer.ui.action.analyze.MethodCallChainsInAction$1.run(MethodCallChainsInAction.java:36)
at com.handyedit.codeexplorer.ui.action.analyze.MethodCallChainsInAction$1.run(MethodCallChainsInAction.java:34)
at com.handyedit.codeexplorer.util.ProgressUtils$1.run(ProgressUtils.java:14)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$3.run(ProgressManagerImpl.java:1)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:3)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$4.run(ProgressManagerImpl.java:1)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:5)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:13)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:101)
at com.intellij.openapi.application.impl.ApplicationImpl$7$1.run(ApplicationImpl.java:3)
at com.intellij.openapi.application.impl.ApplicationImpl$5.run(ApplicationImpl.java:8)
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 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:619)
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:5)
Please uninstall previous:
- from user plugins list (IDE settings > plugins)
- delete the plugin from the idea_home/plugin directory (system plugins)
- then restart Idea and try to install this version
action with the ID "CodeExplorer.ShowMethodStructure" was already registered. Action being registered is com.intellij.openapi.actionSystem.ActionStub@1349b1; Registered action is com.intellij.openapi.actionSystem.ActionStub@5b6e3a Plugin: Code Explorer [Plugin: Code Explorer]: action with the ID "CodeExplorer.ShowMethodStructure" was already registered. Action being registered is com.intellij.openapi.actionSystem.ActionStub@1349b1; Registered action is com.intellij.openapi.actionSystem.ActionStub@5b6e3a Plugin: Code Explorer [Plugin: Code Explorer]
com.intellij.diagnostic.PluginException: action with the ID "CodeExplorer.ShowMethodStructure" was already registered. Action being registered is com.intellij.openapi.actionSystem.ActionStub@1349b1; Registered action is com.intellij.openapi.actionSystem.ActionStub@5b6e3a Plugin: Code Explorer [Plugin: Code Explorer]
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:288)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerAction(ActionManagerImpl.java:114)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:52)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.b(ActionManagerImpl.java:502)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:146)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:208)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.readExternal(ActionManagerImpl.java:126)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl.a(ComponentStoreImpl.java:158)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl.initJdomExternalizable(ComponentStoreImpl.java:75)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl$1.run(ComponentStoreImpl.java:1)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:314)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl.initComponent(ComponentStoreImpl.java:151)
at com.intellij.openapi.components.impl.ComponentManagerImpl.a(ComponentManagerImpl.java:141)
at com.intellij.openapi.components.impl.ComponentManagerImpl.access$1100(ComponentManagerImpl.java:20)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter$1.getComponentInstance(ComponentManagerImpl.java:8)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:10)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:230)
at com.intellij.util.pico.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:217)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:199)
at org.picocontainer.alternatives.AbstractDelegatingMutablePicoContainer.getComponentInstance(AbstractDelegatingMutablePicoContainer.java:75)
at com.intellij.openapi.components.impl.ComponentManagerImpl.a(ComponentManagerImpl.java:16)
at com.intellij.openapi.components.impl.ComponentManagerImpl.a(ComponentManagerImpl.java:69)
at com.intellij.openapi.components.impl.ComponentManagerImpl.initComponents(ComponentManagerImpl.java:107)
at com.intellij.openapi.components.impl.stores.ApplicationStoreImpl.load(ApplicationStoreImpl.java:7)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:135)
at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:41)
at com.intellij.idea.MainImpl$3.run(MainImpl.java:1)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at com.intellij.ide.IdeEventQueue.c(IdeEventQueue.java:35)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:99)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:217)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
1. I have seen large trees get clipped on the canvas, such that some items are even outside the range of the scroll bars.
2. There is no support for side-to-side scrolling using the mouse wheel (e.g., on an Apple Mighty Mouse).
3. The English is a little rough, so some trial and error is needed to figure out which option I want to select for a given diagram. Over time I'm sure I'll learn them and this will become less of an issue.
Try 8.0.1 version
P.S. I'm trying to figure out why Open API class on Mac doesn't contain the not deprecated public method