Authors:
Alexei
Apache

Code Explorer

Vendor: HandyEdit

Email:

Website: http://plugins.intel....net/plugin/?id=3739

SourceCode: link

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.

Downloads: 8187
Rating:
Participated in rating: 10
Version Since Build Until Build File/URL Size (Kb) Date Dependency
1.3.2. 93.13. . Download 153.74. 2010-04-20 22:54:54 .
1.3.1. 80.8664. . Download 153.74. 2009-06-15 23:24:10 .
1.3. 80.8664. . Download 154.06. 2009-03-18 09:29:36 .
1.2.1. 80.8664. . Download 108.91. 2008-12-23 22:20:03 .
1.2. 80.8664. . Download 107.74. 2008-12-11 09:10:16 .
1.1. 80.8664. . Download 70.78. 2008-11-17 16:33:30 .
1.0.1. 80.8664. . Download 45.15. 2008-11-07 13:53:39 .
1.0. 80.8664. . Download 35.19. 2008-11-04 16:42:32 .
. .
Code Explorer
Code Explorer

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

  • Idea 9 version

Version 1.3.1

  • Fix ClassCastException on foreach
  • Fix exception on method delete
  • Fix exception on project close

Version 1.3

  • Improvements in code chains search
  • If jump to source on node selection is enabled (CodeExplorer toolbar) then highlight in selected method source: calls shown on graph from the method
  • Code chains search: progress dialog fixes
  • Graph scrolling and layout fixes

Version 1.2.1

  • Idea EAP compatibility

Version 1.2

  • Plugin is multitabbed now: Analyze command results are opened in a new tab
  • Diagram node for interface method: methods that implement it are shown on diagram instead method calls from it
  • Added method filters that used when perform analysis: the plugin doesn't analyze these methods and doesn't show them on diagram (configure filters in CodeExplorer settings)
  • Long operations are called with progress dialog. So UI doesn't freeze and you can cancel long operation
  • Can perform analysis for selected diagram nodes using context or Analyze menu to add more nodes to the opened diagram
  • Changed method structure command: added all calls from the method within class
  • Fixes: unit analysis
  • UI enhancements: click mode combo, inner class method name
  • Node tooltip: more info, toolbar button "Show method body in tooltip" (with method icon)
  • Added Jump to source action (F4) to the context menu

Version 1.1

  • new menu item: method call chains to specified method from class, package or module
  • Method calls in class menu item replaced by method and calls in... (shows methods from class, package, module or project)
  • added method tooltip: method sigrature and colored source
  • can delete selected nodes from diagram
  • save / load diagram from file
  • synchronize diagram with current sources
  • changed display option: show class names as camel words instead hiding

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:

Alexei
Rated: noRate
2010-04-21 11:31:11
Idea 9 version is available
You can install / update it from Idea plugins manager (Plugins section in the Idea settings)
.
Anonymous
Rated: noRate
2010-02-22 00:48:44
please update it to idea-9
.
Alexei
Rated: noRate
2009-06-15 23:26:50
CodeExplorer 1.3.1 contains fixes for the exceptions below
.
Anonymous
Rated: noRate
2009-06-12 05:20:04
The following exception happens if i try to delete a method thats mentioned in an open trace in code explorer:

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)
.
Anonymous
Rated: noRate
2009-06-11 23:02:32
Would be nice to see support of GWT RPC interfaces (right now its missing the client server traces)
.
Anonymous
Rated:
2009-06-11 22:00:13
Hi Alexei,

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.
.
Anonymous
Rated: noRate
2009-04-27 15:02:17
Exception during method chain call

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)
.
Anonymous
Rated: noRate
2009-03-18 22:19:43
Seems, the previous version of the plugin is installed.

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
.
Anonymous
Rated: noRate
2009-03-18 18:25:57
Exception when starting IDEA 8.1 (Code Explorer 1.3):

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)
.
Queequeg
Rated:
2009-02-13 21:49:36
In general, this is great, and I wish I had it years ago. I have only three complaints:

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.
.
Alexei
Rated: noRate
2008-12-18 19:11:07
Maybe, the problem with this build (refactoring) or Mac version
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
.
AlexLin
Rated: noRate
2008-12-18 07:04:36
I got some errors on IDEA 8.1 EAP build 9572.
===================================
IntelliJ IDEA (Diana) #9572 Build #9572
JDK: 1.5.0_1
OS: Mac OS X
Last Action: CodeExplorer.ShowMethodStructure

Error during dispatching of java.awt.event.ActionEvent[ACTION_PERFORMED,cmd=Methods and calls in class,when=1229572308962,modifiers=] on menuitem1
java.lang.NoSuchMethodError: com.intellij.ui.content.ContentManager.setSelectedContent(Lcom/intellij/ui/content/Content;)V
at com.handyedit.codeexplorer.CodeExplorerPlugin.createDiagram(Unknown Source)
at com.handyedit.codeexplorer.CodeExplorerPlugin.addDiagram(Unknown Source)
at com.handyedit.codeexplorer.CodeExplorerPlugin.openGraph(Unknown Source)
at com.handyedit.codeexplorer.ui.action.analyze.BaseAnalyzeAction.openGraph(Unknown Source)
at com.handyedit.codeexplorer.ui.action.analyze.MethodCallsInAction.actionPerformed(Unknown Source)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:17)
.
Alexei
Rated: noRate
2008-12-15 20:01:27
BTW, it's a good question about sequence diagram :)
I'll add to FAQ
.
Alexei
Rated: noRate
2008-12-15 19:58:17
The main purpose of the plugin is code analysis of current sources instead diagram creation by hands. So the layout is a less important task in this case (sure I can add sequence graph layout in the future - it works in simple cases only).
The CodeExplorer diagram is a method dependencies diagram rather. It can contain more that 1 root (sequence diagram contains only one root) and more suitable for many nodes.
.
Alexei
Rated: noRate
2008-12-15 19:13:20
.
Anonymous
Rated:
2008-12-15 17:26:19
So you invented new type of diagram?
Do you know about UML Sequence diagrams?
.
Alexei
Rated: noRate
2008-12-15 09:51:31
About command pattern:
the latest version 1.2 traces calls through interface if the interface and its implementations are in sources.
Try method call chains to this... and method structure and clicking on interface nodes
.
Alexei
Rated: noRate
2008-12-15 09:43:31
You can find filters in the CodeExplorer settings: Settings > CodeExplorer
The method isn't analyzed and isn't added to the diagram if there is a filter for it.
.
Alexei
Rated: noRate
2008-12-15 09:39:08
You can exclude the test classes by package (the best choise) or by name prefix 'test'

Command pattern will be treated in the next version (command flow)
.
Anonymous
Rated: noRate
2008-12-14 21:22:02
And second thing (this was my message right below): it find many test classes that I might not care about, is there a way to exclude a specific name pattern? That'd be useful.
Just noticed other people already commented on interface usages.
Alex.
.
Anonymous
Rated: noRate
2008-12-14 21:20:25
And second thing (this was my message right below): it find many test classes that I might not care about, is there a way to exclude a specific name pattern? That'd be useful.
Alex.
.
Anonymous
Rated:
2008-12-14 21:16:01
A small vice, which is kinda important: if I have strategy/state pattern and try to find out usages of strategy or state implementations, it doesn't show them (because the abstract class or interface is being used). Hopefully this is gonna be fixed in next versions.
.
Alexei
Rated: noRate
2008-11-25 21:19:12
It's Idea 8 plugin (uses Graph API)
.
Anonymous
Rated: noRate
2008-11-25 14:19:43
Is this plugin supported on IntelliJ 6!?
-Ashok Rajkumar
.
Alexei
Rated: noRate
2008-11-24 22:20:00
Current version doesn't treat well calls through interfaces / usages of methods that implement some interface.
The next version will do this.
.
Anonymous
Rated: noRate
2008-11-23 15:56:32
How does this plugin treat interface calls?
.
Anonymous
Rated: noRate
2008-11-23 15:55:30
How does this plugin treat interface calls?
.
Anonymous
Rated: noRate
2008-11-19 18:02:56
If you're looking for something for Eclipse, check out nWire.


It's a new Eclipse plugin which analyzes the code and allows you to quickly navigate through the different components. It also has a visualizer to present the information in a graphical representation.

It's is much more than just call-hierarchy. It recognizes every possible association in your code. It's the ultimate way for exploring your code.

Check out the demo at:
http://www.nwiresoftware.com/
.
Anonymous
Rated:
2008-11-18 22:43:51
Wonderful plugin. Thank you very much!!!

It would be great if inner classes names would be prefixed by the outer class.

InnerClass1.method1 -> OuterClass1.InnerClass1.method1

same for anonymous classes

AnonymousClass$.method1 -> OuterClass1.AnonymousClass$.method1
.
Anonymous
Rated:
2008-11-18 22:43:02
Wonderful plugin. Thank you very much!!!

It would be great if inner classes names would be prefixed by the outer class.

InnerClass1.method1 -> OuterClass1.InnerClass1.method1

same for anonymous classes

AnonymousClass$.method1 -> OuterClass1.AnonymousClass$.method1

.
Anonymous
Rated:
2008-11-18 15:30:39
Many thanks.
It works for latest IDEA 8 now.
This is a fantastic plugin !
On my must-have IDEA plugins list now.
.
Anonymous
Rated:
2008-11-09 18:17:29
Useful tool for developers and software architects!
.
Alexei
Rated: noRate
2008-11-07 13:54:45
Compiled for JDK 1.5 and replaced the jar
Please download again and try again
.
Anonymous
Rated: noRate
2008-11-07 01:24:03
getting this error with latest RELEASED idea 8 :
Bad version number in .class file [Plugin: CodeExplorer]
com.intellij.diagnostic.PluginException: Bad version number in .class file [Plugin: CodeExplorer]
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry
.a(ComponentManagerImpl.java:15)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry
.a(ComponentManagerImpl.java:40)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry
.access$100(ComponentManagerImpl.java:70)
at com.intellij.openapi.components.impl.ComponentManagerImpl
.a(ComponentManagerImpl.java:156)
at com.intellij.openapi.components.impl.ComponentManagerImpl
.initComponents(ComponentManagerImpl.java:71)
at com.intellij.openapi.components.impl.ComponentManagerImpl
.init(ComponentManagerImpl.java:106)
at com.intellij.openapi.project.impl.ProjectImpl.init(ProjectImpl.java:73)
at com.intellij.openapi.project.impl.ProjectManagerImpl.a(ProjectManagerImpl.java:231)
at com.intellij.openapi.project.impl.ProjectManagerImpl.a(ProjectManagerImpl.java:4)
at com.intellij.openapi.project.impl.ProjectManagerImpl.access$200(ProjectManagerImpl.java:271)
at com.intellij.openapi.project.impl.ProjectManagerImpl$4.run(ProjectManagerImpl.java:13)
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:0)
at com.intellij.openapi.application.impl.ApplicationImpl$5.run(ApplicationImpl.java:2)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:613)
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:10)
Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
at java.lang.ClassLoader.defineClass(ClassLoader.java:520)
at com.intellij.util.lang.UrlClassLoader._defineClass(UrlClassLoader.java:119)
at com.intellij.util.lang.UrlClassLoader.defineClass(UrlClassLoader.java:115)
at com.intellij.util.lang.UrlClassLoader._findClass(UrlClassLoader.java:91)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClassInsideSelf(PluginClassLoader.java:78)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:41)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry
.a(ComponentManagerImpl.java:3)
... 25 more

.
Anonymous
Rated:
2008-11-06 00:13:54
.
Anonymous
Rated: noRate
2008-11-05 17:35:28
This is a plugin for Idea 8 (the plugin uses Idea 8 graph component).
Please try Idea 8 Milestone 1 or latest Idea build:
http://www.jetbrains.net/confluence/display/IDEADEV/Diana+EAP
.
Anonymous
Rated: noRate
2008-11-05 13:36:02
Tried to install but failed with message \"Plugin is incompatible with current IntelliJ Idea installation\"

My current Idea is 7.0.4 buld #7941
.
Alexei
Rated: noRate
2008-11-04 22:16:02
Installation is simple: copy downloaded jar file to the plugins Idea folder and restart IDE.
.
Anonymous
Rated: noRate
2008-11-04 21:33:25
Looks useful but can you please provide step by step installation steps or how to configure the IntelliJIDEA to find it.
.
Anonymous
Rated:
2008-11-04 19:04:58
cool one, I use method usage so frequently and this plugin is cool one.
.