[ANN] MetricsReloaded 0.2 released
Announcing the release of MetricsReloaded 0.2, available via the PluginManager.
Changes from 0.1
-
Total and average rows on tables with more than one entry.
Sort arrows on column headers.
Column ordering, sorting, and column widths now persistent to profiles.
Selected profile now persistent to project.
"Explain" action available on metrics display, opening a dialog containing the description of the selected metric.
IDEA progress panel is now used instead of stock Swing progress panel.
"Calculate metrics" action moved to new "Analyze" menu.
Many small UI improvements.
Many small bug fixes.
Source code included in distribution.
New Metrics
-
Num exceptions thrown (method)
Num exceptions caught (method)
Couplng between objects (class, interface)
Number of interfaces implemented (class)
% Classes javadoced (package, module, project)
% Fields javadoced (class, interface package, module, project)
% Methods javadoced (class,interface, package, module, project)
Total cyclomatic complexity (package, module, project)
Average cyclomatic complexity (package, module, project)
True comment ratio (all levels)
Source lines of code (all levels)
Number of expressions (method)
Number of commands (class, interface)
Number of queries (class, interface)
Number of typecast/instanceof expressions (method)
Extended cyclomatic complexity (method)
Essential cyclomatic complexity (method)
Notes:
Contrary to expectations, 0.2 is even more dependent on Pallada than 0.1 is, due to the progress panel and analyze menu changes. Given that, and the speed with which Pallada seems to be nearing completion, I have scrapped any plans for an Aurora release of MetricsReloaded. I've included the source in the distribution for any optimists who want to take a crack at it.
Metrics profiles and snapshots created under 0.1 will not work with 0.2 or later releases. I've gone to a JDOM based persistence layer, instead of stock Java serialization for consistency with the rest of IDEA, so there should be no breaks in the future, but the 0.1 data is no longer readable. You were warned.
Please sign in to leave a comment.
Hi Dave,
Don't know why, but in my Calculate metrics dialog all checkboxes in the
left tree are grayed. Is this a bug or by-design?
Tom
I need to correct me, only the project checkboxes are grayed, not the
package checkboxes.
Tom
The only reason the plugin should grey out checkboxes is if they are inappropriate to the context. For instance, if you run metrics on an individual file, the project, module and package metrics are greyed out. The class, interface and method metrics should never be greyed out. If this is not the case, it's very much a bug.
--Dave Griffith
Ah, I see. Why not hide the inappropriate metrics at all? Grayed but
selectable items look very strange to users.
Tom
You must have selected "Calculate metrics" on a directory in the Project or Package view. To get full project metrics, you need to select "Analyze/Calculate metrics" from the main menu.
--Dave Griffith
Great stuff, exploring the possibilities this plugin is going to cost me
days!
Is there a way to pin a result tab?
Bas
Also I got this exception clicking to the right of the column headers in
the result:
java.lang.IllegalArgumentException: Column index out of range
at javax.swing.JTable.boundColumn(JTable.java:1274)
at javax.swing.JTable.setColumnSelectionInterval(JTable.java:1304)
at
com.siyeh.metrics.ui.table.MetricTableHeaderMouseListener.mouseClicked(MetricTableHeaderMouseListener.java:36)
at
java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)
at java.awt.Component.processMouseEvent(Component.java:5103)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3207)
at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at com.intellij.ide.r.b(r.java:43)
at com.intellij.ide.r.a(r.java:86)
at com.intellij.ide.r.dispatchEvent(r.java:99)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:201)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
And here an exception clicking on the double green arrow button (reload)
java.lang.ArrayIndexOutOfBoundsException: -1
at
com.siyeh.metrics.ui.table.MetricTableModel.getMetricForColumn(Metric
TableModel.java:371)
at
com.siyeh.metrics.ui.MetricsDisplay.setRenderers(MetricsDisplay.java:
274)
at
com.siyeh.metrics.ui.MetricsDisplay.reloadTable(MetricsDisplay.java:1
62)
at
com.siyeh.metrics.ui.MetricsDisplay.reloadMetricsResults(MetricsDispl
ay.java:76)
at
com.siyeh.metrics.MetricsPluginImpl.reloadToolWindow(MetricsPluginImp
l.java:122)
at
com.siyeh.metrics.ReloadAction.actionPerformed(ReloadAction.java:32)
at com.intellij.openapi.f.a.j.a(j.java:69)
at com.intellij.openapi.f.a.j.processMouseEvent(j.java:115)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483
)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at com.intellij.ide.r.b(r.java:43)
at com.intellij.ide.r.a(r.java:86)
at com.intellij.ide.r.dispatchEvent(r.java:99)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:201)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
I got this when starting the calculation before showing the results. The results does not contain the module-metrics.
Ran into this exception when trying to calculate metrics on a class:
java.lang.NullPointerException
at com.siyeh.metrics.utils.LineUtil.containsLineBreak(LineUtil.java:106)
at com.siyeh.metrics.utils.LineUtil.countCommentOnlyLines(LineUtil.java:73)
at
com.siyeh.metrics.classMetrics.SourceLinesOfCodeClassMetric$Listener.beforeComment(SourceLinesOfCodeClassMetric.java:90)
at com.siyeh.metrics.Traversal.visitComment(Traversal.java:49)
at
com.intellij.psi.JavaElementVisitor.visitDocComment(JavaElementVisitor.java:82)
at com.siyeh.metrics.Traversal.visitDocComment(Traversal.java:60)
at com.intellij.psi.impl.source.d.c.accept(c.java:48)
at com.intellij.psi.impl.source.l.acceptChildren(l.java:20)
at
com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:7)
at
com.intellij.psi.JavaElementVisitor.visitClass(JavaElementVisitor.java:50)
at com.siyeh.metrics.Traversal.visitClass(Traversal.java:272)
at com.intellij.psi.impl.source.n.accept(n.java:37)
at com.intellij.psi.impl.source.l.acceptChildren(l.java:20)
at
com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:7)
at
com.intellij.psi.JavaElementVisitor.visitFile(JavaElementVisitor.java:126)
at
com.intellij.psi.JavaElementVisitor.visitJavaFile(JavaElementVisitor.java:312)
at com.siyeh.metrics.Traversal.visitJavaFile(Traversal.java:184)
at com.intellij.psi.impl.source.x.accept(x.java:89)
at com.siyeh.metrics.MetricsManagerImpl$1.run(MetricsManagerImpl.java:84)
at com.intellij.openapi.progress.a.a.runProcess(a.java:55)
at com.intellij.openapi.l.a.c$1a_.run(c$1a_.java:3)
java.lang.NullPointerException
at com.siyeh.metrics.utils.LineUtil.containsLineBreak(LineUtil.java:106)
at com.siyeh.metrics.utils.LineUtil.countCommentOnlyLines(LineUtil.java:73)
at
com.siyeh.metrics.moduleMetrics.SourceLinesOfCodeModuleMetric$Listener.beforeComment(SourceLinesOfCodeModuleMetric.java:86)
at com.siyeh.metrics.Traversal.visitComment(Traversal.java:49)
at com.intellij.psi.JavaElementVisitor.visitDocComment(JavaElementVisitor.java:82)
at com.siyeh.metrics.Traversal.visitDocComment(Traversal.java:60)
at com.intellij.psi.impl.source.javadoc.PsiDocCommentImpl.accept(PsiDocCommentImpl.java:253)
at com.intellij.psi.impl.source.TreeWrapperPsiElement.acceptChildren(TreeWrapperPsiElement.java:69)
at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:7)
at com.intellij.psi.JavaElementVisitor.visitClass(JavaElementVisitor.java:50)
at com.siyeh.metrics.Traversal.visitClass(Traversal.java:272)
at com.intellij.psi.impl.source.PsiClassImpl.accept(PsiClassImpl.java:563)
at com.intellij.psi.impl.source.TreeWrapperPsiElement.acceptChildren(TreeWrapperPsiElement.java:69)
at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:7)
at com.intellij.psi.JavaElementVisitor.visitFile(JavaElementVisitor.java:126)
at com.intellij.psi.JavaElementVisitor.visitJavaFile(JavaElementVisitor.java:312)
at com.siyeh.metrics.Traversal.visitJavaFile(Traversal.java:184)
at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.accept(PsiJavaFileBaseImpl.java:408)
at com.siyeh.metrics.MetricsManagerImpl$1.run(MetricsManagerImpl.java:84)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:134)
at com.intellij.openapi.application.impl.ApplicationImpl$1MyThread.run(ApplicationImpl.java:407)
Ditto here.
I just uploaded 0.2.1, which should fix the problem. Let me know if there is still an issue.
--Dave Griffith
What would pinning a result tab do? There's no way to close tabs, indeed which tabs are open depends entirely on what metrics you selected (if you didn't select any method metrics, the method metrics tab won't be shown) and what files you are calculating metrics for (if you don't have any interfaces, the interface metrics tab won't be shown). I'm not sure what you're trying to suggest.
0.2.1 fixes the exception you posted.
--Dave
0.2.1 should fix this. I've just uploaded it to the plugin manager.
--Dave Griffith
0.2.1 should fix this. I've just uploaded it to the plugin manager.
--Dave Griffith
Yes, it did fix it. Thanks, Jon
Dave Griffith wrote:
There is no way to turn on metrics by pressing Space.
I must use mouse which is inconvenient, when turning
on many metrics.
This issue is on the list, but don't count on a fix anytime soon. My poor Swing skills barely allowed for having checkboxes in trees at all. Getting them working as smoothly as the rest of the trees in IDEA is gonna take some serious learning on my part.
--Dave Griffith
Swing skills barely allowed for having checkboxes in trees at all. Getting
them working as smoothly as the rest of the trees in IDEA is gonna take some
serious learning on my part.
>
Oh, Dave, come on.
We count on you :)
I bet there many expert Swing programmers that
would love to help you with Swing issues (not me,
I am pure server-side guy).
Funny to hear this from someone who wrote some of the best plugins for IDEA :)
I am just wondering what cool plugin interfaces you will come up with when you'll become a Swing guru :)
On 28-04-2004 19:06, Dave Griffith wrote:
indeed which tabs are open depends entirely on what metrics you selected
(if you didn't select any method metrics, the method metrics tab won't
be shown) and what files you are calculating metrics for (if you don't
have any interfaces, the interface metrics tab won't be shown). I'm not
sure what you're trying to suggest.
I'm sorry I wasn't clear. What I would like is to be able to keep the
metric results when I let MetricsReloaded calculate some new metrics.
After the new calculation is finished I want to be able to view both the
new and old results.
Maybe make it more like the Run tool window. Each new calculation opens
in a new tab. If you calculate exactly the same metrics as a previous
one, the result are replaced, except if I pin the tab.
Yes it does, thanks.
However, I have found two more:
java.lang.ArrayIndexOutOfBoundsException: -1
at
com.siyeh.metrics.ui.table.MetricTableModel.getMetricForColumn(MetricTableModel.java:371)
at
com.siyeh.metrics.ui.MetricsDisplay.setRenderers(MetricsDisplay.java:274)
at
com.siyeh.metrics.ui.MetricsDisplay.reloadTable(MetricsDisplay.java:162)
at
com.siyeh.metrics.ui.MetricsDisplay.reloadMetricsResults(MetricsDispl
ay.java:76)
at
com.siyeh.metrics.MetricsPluginImpl.reloadToolWindow(MetricsPluginImp
l.java:122)
at
com.siyeh.metrics.ReloadAction.actionPerformed(ReloadAction.java:32)
at com.intellij.openapi.f.a.j.a(j.java:69)
at com.intellij.openapi.f.a.j.processMouseEvent(j.java:115)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at com.intellij.ide.r.b(r.java:43)
at com.intellij.ide.r.a(r.java:86)
at com.intellij.ide.r.dispatchEvent(r.java:99)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:201)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
java.lang.ArrayIndexOutOfBoundsException: 7
at
com.siyeh.metrics.ui.table.MetricTableModel.sort(MetricTableModel.jav
a:307)
at
com.siyeh.metrics.ui.table.MetricTableModel.]]>(MetricTableModel.j
ava:110)
at
com.siyeh.metrics.ui.MetricsDisplay.loadTable(MetricsDisplay.java:126
)
at
com.siyeh.metrics.ui.MetricsDisplay.setMetricsResults(MetricsDisplay.
java:64)
at
com.siyeh.metrics.MetricsPluginImpl.showToolWindow(MetricsPluginImpl.
java:112)
at
com.siyeh.metrics.ui.MetricsConfigurationPanel$6.actionPerformed(Metr
icsConfigurationPanel.java:345)
at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:17
86)
at
javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Abstra
ctButton.java:1839)
at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:420)
at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258
)
at
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:245)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483
)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at com.intellij.ide.r.b(r.java:43)
at com.intellij.ide.r.a(r.java:86)
at com.intellij.ide.r.dispatchEvent(r.java:99)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:201)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:141)
at java.awt.Dialog$1.run(Dialog.java:540)
at java.awt.Dialog.show(Dialog.java:561)
at com.intellij.openapi.a.b.a$d_.show(a$d_.java:2)
at com.intellij.openapi.a.b.a.show(a.java:90)
at
com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:669)
at
com.siyeh.metrics.ui.MetricsConfigurationPanel.run(MetricsConfigurati
onPanel.java:215)
at
com.siyeh.metrics.MetricsPluginImpl.runReport(MetricsPluginImpl.java:
160)
at
com.siyeh.metrics.ProjectMetricsAction.runFromProjectView(ProjectMetr
icsAction.java:75)
at
com.siyeh.metrics.ProjectMetricsAction.actionPerformed(ProjectMetrics
Action.java:30)
at com.intellij.openapi.f.a.m$b_.actionPerformed(m$b_.java:3)
at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:17
86)
at com.intellij.openapi.f.a.m.fireActionPerformed(m.java:55)
at com.intellij.ui.a.a.h.doClick(h.java:29)
at com.intellij.ui.a.a.h.access$300(h.java:81)
at com.intellij.ui.a.a.h$a_.mouseReleased(h$a_.java:2)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483
)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at com.intellij.ide.r.b(r.java:43)
at com.intellij.ide.r.a(r.java:86)
at com.intellij.ide.r.dispatchEvent(r.java:99)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:201)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
Got it. I'll put multiple tabs on the list. It'll require lots of refactoring I've been putting off, and stretch my Swing skills even farther, so don't expect it for a release or two. Even with multiple tabs, I'm not sure pinning is the right way to go about it. How about a "rerun and show differences" button, which would keep the currently displayed results, rerun the metrics, and show a difference report between the two runs? If the only value to pinning is having two different runs on the same profile and file set taken at different times, I can't help but think that a difference report would be more valuable than flipping tabs.
--Dave Griffith
--Dave
On 29-04-2004 16:00, Dave Griffith wrote:
Excellent! Thanks for considering it.
That sound great. That's two feature requests then:
1. multiple tabs
2. rerun and show differences
Thanks much,
Bas
I'm currently experiencing this error when analyzing my code set:
I'm starting to play with the new Metrics.. Very nice!
More minor suggestions for you:
o the tooltip that I get when hovering over column names,
it would be nice to also have it when hovering over the
columns themselves (no need to go back to the top on a
long table)
o I like explain!
o How about "auto-explain": the explain dialog gets "docked"
into the result pane itself (say, on the far right) and everytime
you select a colum the docked-dialog auto-update itself. Or
maybe it could just track the hovering over the column and
update itself after n milliseconds. That way, I can be see the
explanation without ever having to click :)
o "Explain" should be renamed "Describe" to be consistent with
the metrics selection dialog which has a "description" area, not
an "explanation" area.
o Concerning metrics explanations (or descriptions :) ), I might risk
saying the same thing as what goes for javadocs: starting all of them
with "This metric reports..." seems superfluous. For example
"Total number of packages in the project" looks like a more
straightforward description than "This metric reports the total number
of packages in the project" without the added clutter.
(Now I can't remember, was it you that didn't like malformed sentences
or was it the other Dave?)
o "Analyze -> Calculate Metrics" shouldn't be enabled when no
project is opened (trying to use it will throw exceptions).
Great work.
Vince.
I keep getting these exceptions:
(MetricTableModel.java:110 ) at com.siyeh.metrics.ui.MetricsDisplay.loadTable(MetricsDisplay.java:126) at com.siyeh.metrics.ui.MetricsDisplay.setMetricsResults(MetricsDisplay.java:70 ) at com.siyeh.metrics.MetricsPluginImpl.showToolWindow(MetricsPluginImpl.java:11 2) at com.siyeh.metrics.ui.MetricsConfigurationPanel$6.actionPerformed(MetricsConf igurationPanel.java:345) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButto n.java:1839) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:4 20) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener .java:245) at java.awt.Component.processMouseEvent(Component.java:5100) at java.awt.Component.processEvent(Component.java:4897) at java.awt.Container.processEvent(Container.java:1569) at java.awt.Component.dispatchEventImpl(Component.java:3615) at java.awt.Container.dispatchEventImpl(Container.java:1627) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128) at java.awt.Container.dispatchEventImpl(Container.java:1613) at java.awt.Window.dispatchEventImpl(Window.java:1606) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.EventQueue.dispatchEvent(EventQueue.java:456) at com.intellij.ide.r.b(r.java:43) at com.intellij.ide.r.a(r.java:86) at com.intellij.ide.r.dispatchEvent(r.java:99) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.ja va:201) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java :151) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java :141) at java.awt.Dialog$1.run(Dialog.java:540) at java.awt.Dialog.show(Dialog.java:561) at com.intellij.openapi.a.b.a$d_.show(a$d_.java:2) at com.intellij.openapi.a.b.a.show(a.java:90) at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:669) at com.siyeh.metrics.ui.MetricsConfigurationPanel.run(MetricsConfigurationPanel .java:215) at com.siyeh.metrics.MetricsPluginImpl.runReport(MetricsPluginImpl.java:160) at com.siyeh.metrics.ProjectMetricsAction.runFromMainMenu(ProjectMetricsAction. java:62) at com.siyeh.metrics.ProjectMetricsAction.actionPerformed(ProjectMetricsAction. java:22) at com.intellij.openapi.f.a.m$b_.actionPerformed(m$b_.java:3) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786) at com.intellij.openapi.f.a.m.fireActionPerformed(m.java:55) at com.intellij.ui.a.a.h.doClick(h.java:29) at com.intellij.ui.a.a.h.access$300(h.java:81) at com.intellij.ui.a.a.h$a_.mouseReleased(h$a_.java:2) at java.awt.Component.processMouseEvent(Component.java:5100) at java.awt.Component.processEvent(Component.java:4897) at java.awt.Container.processEvent(Container.java:1569) at java.awt.Component.dispatchEventImpl(Component.java:3615) at java.awt.Container.dispatchEventImpl(Container.java:1627) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128) at java.awt.Container.dispatchEventImpl(Container.java:1613) at java.awt.Window.dispatchEventImpl(Window.java:1606) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.EventQueue.dispatchEvent(EventQueue.java:456) at com.intellij.ide.r.b(r.java:43) at com.intellij.ide.r.a(r.java:86) at com.intellij.ide.r.dispatchEvent(r.java:99) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.ja va:201) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java :151) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) at java.awt.EventDispatchThread.run(EventDispatchThread.java:100) ]]>
Vince.