[ANN] CodeExplorer 1.2, code analysis plugin
CodeExplorer helps to analyze Java code: find all method call chains to the method, what methods called from the method, and other. 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.
What's new:
- 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
Attachment(s):
codeexplorer.png
Please sign in to leave a comment.
Hi, I have just got the following exception trace when I tried to cancel project loading:
No message
java.lang.NullPointerException
at com.handyedit.codeexplorer.CodeExplorerPlugin.projectClosed(Unknown Source)
at com.intellij.openapi.project.impl.ProjectImpl.d(ProjectImpl.java:94)
at com.intellij.openapi.project.impl.ProjectImpl.access$400(ProjectImpl.java:32)
at com.intellij.openapi.project.impl.ProjectImpl$MyProjectManagerListener.projectClosed(ProjectImpl.java:2)
at com.intellij.openapi.project.impl.ProjectManagerImpl$2.projectClosed(ProjectManagerImpl.java:2)
at com.intellij.openapi.project.impl.ProjectManagerImpl.e(ProjectManagerImpl.java:125)
at com.intellij.openapi.project.impl.ProjectManagerImpl.a(ProjectManagerImpl.java:286)
at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:153)
at com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:146)
at com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:116)
at com.intellij.ide.impl.ProjectUtil.openProject(ProjectUtil.java:53)
at com.intellij.ide.RecentProjectsManager.doOpenProject(RecentProjectsManager.java:5)
at com.intellij.ide.RecentProjectsManagerBase$MyAppLifecycleListener.appStarting(RecentProjectsManagerBase.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:101)
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:182)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:174)
at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:166)
at com.intellij.util.messages.impl.MessageBusImpl.access$000(MessageBusImpl.java:40)
at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(MessageBusImpl.java:106)
at $Proxy35.appStarting(Unknown Source)
at com.intellij.idea.IdeaApplication.b(IdeaApplication.java:48)
at com.intellij.idea.IdeaApplication.access$400(IdeaApplication.java:9)
at com.intellij.idea.IdeaApplication$IdeStarter$3.run(IdeaApplication.java:12)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:27)
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:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)