[Ann] CodeDependency 1.1
We are pleased to announce the release of CodeDependency 1.1, a full-feature dependency diagram exploration tool for IntellIJ IDEA 6.0.
Blog entry:
http://sixthandredriver.typepad.com/river_of_code/2006/10/ship_it_part_11.html
Product details:
http://www.sixthandredriver.com/codedependency.html
Sixth and Red River Software
"Code with Grace and Verve"
Please sign in to leave a comment.
Hello Sixth and Red River Software,
That should be http://www.sixthandredriver.com/codedependency.html
Thanks
hi,
good work...
what is about minor improvements?
1. dbl click to node -> navigate to source (editNode() method in GraphPresentationModel
class)
2. print graph -> PrintPreviewAction and PrintGraphAction (just try them)
3. group classes in packages(hierichy) -> it's new feature, wait for new eap
4. add tip for edges
5. ... don't know... should play with CodeDependency
Serega
+
1. dbl click to node -> navigate to source (editNode() method in GraphPresentationModel
class)
2. print graph -> PrintPreviewAction and PrintGraphAction (just try them)
+
We wanted these, but didn't know how. Perils of working with an undocumented API. They will be in the next release.
+
3. group classes in packages(hierichy) -> it's new feature, wait for new eap
+
We've got a lot of grouping ideas, just as soon as you guys release the API for it.
4. add tip for edges
Already in plan.
Sixth and Red River Software
"Code with Grace and Verve"
Bravo, for this new plugin.
I would like to propose these improvements:
- make the dependence window not modal.
- allow to set the window in fullscreen.
- allow to select an element and go directly to the code and vice-versa.
These elements are very important for usability with a dual screen configuration.
Very nice plugin. Minor feature request: it would be great if actions taking a long time could be cancelled. Also, see below for an exception I encountered.
Bas
java.lang.NullPointerException
at com.sixrr.codedependency.classelementsgraph.f.visitCallExpression(f.java:2)
at com.intellij.psi.JavaElementVisitor.visitMethodCallExpression(JavaElementVisitor.java:204)
at com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl.accept(PsiMethodCallExpressionImpl.java:17)
at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:93)
at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:37)
at com.intellij.psi.JavaElementVisitor.visitStatement(JavaElementVisitor.java:292)
at com.intellij.psi.JavaElementVisitor.visitForeachStatement(JavaElementVisitor.java:148)
at com.intellij.psi.impl.source.tree.java.PsiForeachStatementImpl.accept(PsiForeachStatementImpl.java:44)
at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:93)
at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:37)
at com.intellij.psi.JavaElementVisitor.visitCodeBlock(JavaElementVisitor.java:76)
at com.intellij.psi.impl.source.tree.java.PsiCodeBlockImpl.accept(PsiCodeBlockImpl.java:60)
at com.intellij.psi.impl.source.TreeWrapperPsiElement.acceptChildren(TreeWrapperPsiElement.java:41)
at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:37)
at com.intellij.psi.JavaElementVisitor.visitClassInitializer(JavaElementVisitor.java:68)
at com.intellij.psi.impl.source.PsiClassInitializerImpl.accept(PsiClassInitializerImpl.java:16)
at com.intellij.psi.impl.source.TreeWrapperPsiElement.acceptChildren(TreeWrapperPsiElement.java:41)
at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:37)
at com.intellij.psi.JavaElementVisitor.visitClass(JavaElementVisitor.java:64)
at com.intellij.psi.impl.source.PsiClassImpl.accept(PsiClassImpl.java:380)
at com.intellij.psi.impl.source.TreeWrapperPsiElement.acceptChildren(TreeWrapperPsiElement.java:41)
at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:37)
at com.intellij.psi.JavaElementVisitor.visitFile(JavaElementVisitor.java:140)
at com.intellij.psi.JavaElementVisitor.visitJavaFile(JavaElementVisitor.java:348)
at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.accept(PsiJavaFileBaseImpl.java:75)
at com.sixrr.codedependency.classelementsgraph.a.buildGraph(a.java:45)
at com.intellij.openapi.graph.builder.CachedGraphDataModel.checkUpdate(CachedGraphDataModel.java:83)
at com.intellij.openapi.graph.builder.CachedGraphDataModel.getNodes(CachedGraphDataModel.java:47)
at com.intellij.openapi.graph.impl.builder.GraphBuilderImpl.createDataModel(GraphBuilderImpl.java:168)
at com.intellij.openapi.graph.impl.builder.GraphBuilderImpl.buildModel(GraphBuilderImpl.java:11)
at com.intellij.openapi.graph.impl.builder.GraphBuilderImpl.initialize(GraphBuilderImpl.java:206)
at com.intellij.openapi.graph.builder.components.BasicGraphComponent.(BasicGraphComponent.java:47) at com.sixrr.codedependency.classelementsgraph.b.]]>(b.java:1)
at com.sixrr.codedependency.classelementsgraph.g.a(g.java:24)
at com.sixrr.codedependency.classelementsgraph.g.createCustomComponent(g.java:23)
at com.intellij.util.xml.ui.PerspectiveFileEditor.selectNotify(PerspectiveFileEditor.java:201)
at com.intellij.util.xml.ui.PerspectiveFileEditor$2.selectionChanged(PerspectiveFileEditor.java:64)
at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.util.EventDispatcher.dispatch(EventDispatcher.java:72)
at com.intellij.util.EventDispatcher.access$100(EventDispatcher.java:20)
at com.intellij.util.EventDispatcher$1.invoke(EventDispatcher.java:51)
at $Proxy31.selectionChanged(Unknown Source)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$MyEditorManagerListener.a(FileEditorManagerImpl.java:0)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$MyEditorManagerListener.selectionChanged(FileEditorManagerImpl.java:13)
at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.util.EventDispatcher.dispatch(EventDispatcher.java:72)
at com.intellij.util.EventDispatcher.access$100(EventDispatcher.java:20)
at com.intellij.util.EventDispatcher$1.invoke(EventDispatcher.java:51)
at $Proxy31.selectionChanged(Unknown Source)
at com.intellij.openapi.fileEditor.impl.EditorComposite.a(EditorComposite.java:7)
at com.intellij.openapi.fileEditor.impl.EditorComposite.access$300(EditorComposite.java:10)
at com.intellij.openapi.fileEditor.impl.EditorComposite$MyChangeListener.stateChanged(EditorComposite.java:7)
at javax.swing.JTabbedPane.fireStateChanged(JTabbedPane.java:400)
at javax.swing.JTabbedPane$ModelListener.stateChanged(JTabbedPane.java:253)
at javax.swing.DefaultSingleSelectionModel.fireStateChanged(DefaultSingleSelectionModel.java:116)
at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(DefaultSingleSelectionModel.java:50)
at javax.swing.JTabbedPane.setSelectedIndexImpl(JTabbedPane.java:599)
at javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:574)
at com.intellij.ui.TabbedPaneWrapper$TabbedPane.setSelectedIndex(TabbedPaneWrapper.java)
at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.mousePressed(BasicTabbedPaneUI.java:3606)
at javax.swing.plaf.basic.BasicTabbedPaneUI$MouseHandler.mousePressed(BasicTabbedPaneUI.java:3760)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:262)
at java.awt.Component.processMouseEvent(Component.java:6035)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3983)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:133)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:18)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:80)
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)
And I noticed a memory leak:
***********************************************************************************************
M E M O R Y L E A K S D E T E C T E D ***
***********************************************************************************************
***
The following objects were not disposed:
com.sixrr.codedependency.classelementsgraph.b@6ea77c of class class com.sixrr.codedependency.classelementsgraph.b
com.sixrr.codedependency.classelementsgraph.b@b36b22 of class class com.sixrr.codedependency.classelementsgraph.b
***
***********************************************************************************************
Possibly caused by the NPE, but I thought I'd report it anyway.
Bas
These are fixed in the 1.2 release, probably tommorrow.
Sixth and Red River Software
"Code with Grace and Verve"
Great. Now I've got your attention, Refactor-J for Demetra needs some loving too. Several of the refactorings always fail with the followng exception:
java.lang.NoClassDefFoundError: com/intellij/openapi/module/impl/ModuleUtil
at com.sixrr.rpp.introduceparameterobject.d.a(d.java:106)
at com.sixrr.rpp.introduceparameterobject.d.performRefactoring(d.java:95
)
at com.intellij.refactoring.BaseRefactoringProcessor$5.run(BaseRefactori
ngProcessor.java:8)
at com.intellij.openapi.application.impl.ApplicationImpl$9.compute(Appli
cationImpl.java:2)
at com.intellij.psi.impl.source.PostprocessReformattingAspect.postponeFo
rmattingInside(PostprocessReformattingAspect.java:115)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(
ApplicationImpl.java:355)
at com.intellij.refactoring.BaseRefactoringProcessor.a(BaseRefactoringPr
ocessor.java:173)
at com.intellij.refactoring.BaseRefactoringProcessor.access$000(BaseRefa
ctoringProcessor.java:128)
at com.intellij.refactoring.BaseRefactoringProcessor$3$1.run(BaseRefacto
ringProcessor.java:2)
at com.intellij.openapi.application.impl.ApplicationImpl$9.compute(Appli
cationImpl.java:2)
at com.intellij.psi.impl.source.PostprocessReformattingAspect.postponeFo
rmattingInside(PostprocessReformattingAspect.java:115)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(
ApplicationImpl.java:355)
at com.intellij.refactoring.BaseRefactoringProcessor$3.run(BaseRefactori
ngProcessor.java:2)
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand
(CommandProcessorImpl.java:115)
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand
(CommandProcessorImpl.java:111)
at com.intellij.refactoring.BaseRefactoringProcessor.execute(BaseRefacto
ringProcessor.java:3)
at com.intellij.refactoring.BaseRefactoringProcessor.doRun(BaseRefactori
ngProcessor.java:163)
at com.intellij.refactoring.BaseRefactoringProcessor.run(BaseRefactoring
Processor.java:102)
at com.sixrr.rpp.introduceparameterobject.t.run(t.java:2)
at com.intellij.openapi.application.impl.ApplicationImpl$9.compute(Appli
cationImpl.java:2)
at com.intellij.psi.impl.source.PostprocessReformattingAspect.postponeFo
rmattingInside(PostprocessReformattingAspect.java:115)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(
ApplicationImpl.java:355)
at com.sixrr.rpp.introduceparameterobject.s.run(s.java:2)
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand
(CommandProcessorImpl.java:132)
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand
(CommandProcessorImpl.java:111)
at com.sixrr.rpp.introduceparameterobject.r.a(r.java:42)
at com.sixrr.rpp.introduceparameterobject.r.invoke(r.java:31)
at com.intellij.refactoring.actions.BaseRefactoringAction.actionPerforme
d(BaseRefactoringAction.java:32)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitt
er.actionPerformed(ActionMenuItem.java:4)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:19
95)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerfo
rmed(ActionMenuItem.java:30)
at com.intellij.ui.plaf.beg.BegMenuItemUI.a(BegMenuItemUI.java:94)
at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:
213)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseRelea
sed(BegMenuItemUI.java:7)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
Hello Sixth and Red River Software,
TO DO = it is useful when user double click edge of a dependency , plugin
highlight usage(s) in file
TO DO = mouse wheel not support, like IDEA zoom in and scroll
TO DO = getter / setter and constructor may be marked by a color or icon
TO DO = abstract methods more marked
TO DO = i very like when double click on jave file , instead go to Text Tab
, go to internal dependencies Tab
TO DO = graph not list used fields/methods in order of thier occurance in
method
TO DO = dependency a class to its parent may marked by color or icon (not
same with others)
TO DO = graph dialogs no has max/min/restore buttons
=============
very thanks
WBR,
Ali Reza Sharghi
mailto:a_sharghi@hotmail.com
S> We are pleased to announce the release of CodeDependency 1.1, a
S> full-feature dependency diagram exploration tool for IntellIJ IDEA
S> 6.0.
S>
S> Blog entry:
S>
S> http://sixthandredriver.typepad.com/river_of_code/2006/10/ship_it_par
S> t_11.html
S>
S> Product details:
S>
S> http://www.sixthandredriver.com/codedependency.com
S>
S> Sixth and Red River Software
S> "Code with Grace and Verve"