JavaNCSS Metric Results

[ package ] [ object ] [ method ] [ explanation ]

The following document contains the results of a JavaNCSS metric analysis, using JavaNCSS version 32.53.
JavaNCSS web site.

Packages

[ package ] [ object ] [ method ] [ explanation ]

Packages sorted by NCSS.

Package Classes Methods NCSS Javadocs Javadoc lines Single lines comment Multi lines comment
it.amattioli.guidate.properties 32 137 756 4 41 16 9
it.amattioli.guidate.browsing 22 95 568 0 0 8 20
it.amattioli.guidate.collections 21 75 493 0 0 12 0
it.amattioli.guidate.converters 16 46 421 2 27 8 0
it.amattioli.guidate.editing 16 45 332 0 0 0 0
it.amattioli.guidate.wizard 15 58 229 0 0 1 0
it.amattioli.guidate.browsing.calendar 10 24 201 0 0 0 12
it.amattioli.guidate.validators 7 20 196 1 7 1 0
it.amattioli.guidate.containers 6 21 172 0 0 0 19
it.amattioli.guidate.browsing.tree 7 24 164 0 0 1 0
it.amattioli.guidate.init 8 19 135 0 0 7 0
it.amattioli.guidate.config 3 17 126 0 0 1 0
it.amattioli.guidate.smarttab 5 22 96 0 0 0 0
it.amattioli.guidate.util 5 14 62 0 0 1 0
it.amattioli.guidate.authorization 2 10 56 0 0 0 0
it.amattioli.guidate.btns 1 3 43 1 31 0 0
Classes total Methods total NCSS total Javadocs Javadoc lines Single lines comment Multi lines comment
176 630 4050 8 106 56 60

Objects

[ package ] [ object ] [ method ] [ explanation ]

TOP 30 classes containing the most NCSS.

Object NCSS Methods Classes Javadocs
it.amattioli.guidate.config.GuidateConfig 98 12 0 0
it.amattioli.guidate.properties.PropertyValuesComposer 96 11 0 0
it.amattioli.guidate.browsing.EntitySelectorComposer 93 12 1 0
it.amattioli.guidate.containers.BackBeans 91 9 0 0
it.amattioli.guidate.editing.EditorTreeComposer 73 12 2 0
it.amattioli.guidate.converters.Converters 72 9 0 2
it.amattioli.guidate.properties.PropertyComposer 67 16 0 1
it.amattioli.guidate.browsing.GroupBrowserListboxComposer 61 9 1 0
it.amattioli.guidate.properties.AbstractMultiplePropertyComposer 57 15 0 0
it.amattioli.guidate.browsing.calendar.Navigator 55 4 3 0
it.amattioli.guidate.collections.GroupingPropertyModel 53 11 1 0
it.amattioli.guidate.browsing.tree.BrowserTreeComposer 51 7 2 0
it.amattioli.guidate.wizard.WorkflowWizardState 50 12 0 0
it.amattioli.guidate.editing.ChangeRowComposer 50 7 0 0
it.amattioli.guidate.properties.PropertyNameRetriever 48 4 0 0
it.amattioli.guidate.browsing.BrowserListboxComposer 44 6 1 0
it.amattioli.guidate.collections.GroupPropertyModel 44 10 1 0
it.amattioli.guidate.properties.ShowPropertyComposer 43 11 1 0
it.amattioli.guidate.wizard.AbstractWizardComposer 41 12 0 0
it.amattioli.guidate.collections.PrototypeRowRenderer 41 5 1 0
it.amattioli.guidate.collections.PropertyValuesModel 41 6 1 0
it.amattioli.guidate.collections.PrototypeListItemRenderer 41 5 1 0
it.amattioli.guidate.properties.InputPropertyComposer 41 8 0 1
it.amattioli.guidate.browsing.calendar.IntervalGridComposer 37 5 1 0
it.amattioli.guidate.collections.CollectionPropertyModel 36 6 1 0
it.amattioli.guidate.collections.ItemSelectionComposer 36 5 1 0
it.amattioli.guidate.editing.TreeEditorModel 36 4 1 0
it.amattioli.guidate.authorization.AuthorizateComposer 35 8 0 0
it.amattioli.guidate.converters.EntityConverter 35 7 0 0
it.amattioli.guidate.browsing.BrowsingToolComposer 32 8 0 0

TOP 30 classes containing the most methods.

Object NCSS Methods Classes Javadocs
it.amattioli.guidate.properties.PropertyComposer 67 16 0 1
it.amattioli.guidate.properties.AbstractMultiplePropertyComposer 57 15 0 0
it.amattioli.guidate.browsing.EntitySelectorComposer 93 12 1 0
it.amattioli.guidate.wizard.AbstractWizardComposer 41 12 0 0
it.amattioli.guidate.wizard.WorkflowWizardState 50 12 0 0
it.amattioli.guidate.config.GuidateConfig 98 12 0 0
it.amattioli.guidate.editing.EditorTreeComposer 73 12 2 0
it.amattioli.guidate.collections.GroupingPropertyModel 53 11 1 0
it.amattioli.guidate.properties.ShowPropertyComposer 43 11 1 0
it.amattioli.guidate.properties.PropertyValuesComposer 96 11 0 0
it.amattioli.guidate.collections.GroupPropertyModel 44 10 1 0
it.amattioli.guidate.browsing.BrowserListCell 29 9 0 0
it.amattioli.guidate.browsing.GroupBrowserListboxComposer 61 9 1 0
it.amattioli.guidate.browsing.BrowserColumnComposer 26 9 0 0
it.amattioli.guidate.wizard.SimpleWizardState 25 9 0 0
it.amattioli.guidate.smarttab.SmartTabDescriptor 21 9 0 0
it.amattioli.guidate.containers.BackBeans 91 9 0 0
it.amattioli.guidate.converters.Converters 72 9 0 2
it.amattioli.guidate.browsing.BrowsingToolComposer 32 8 0 0
it.amattioli.guidate.wizard.WizardState 9 8 0 0
it.amattioli.guidate.authorization.AuthorizateComposer 35 8 0 0
it.amattioli.guidate.properties.InputPropertyComposer 41 8 0 1
it.amattioli.guidate.browsing.tree.BrowserTreeComposer 51 7 2 0
it.amattioli.guidate.browsing.BrowserListheaderComposer 22 7 0 0
it.amattioli.guidate.browsing.GroupBrowserModel 20 7 1 0
it.amattioli.guidate.smarttab.IncludedSmartTabDescriptor 21 7 0 0
it.amattioli.guidate.collections.ValueRowRenderer 23 7 0 0
it.amattioli.guidate.collections.ValueItemRenderer 21 7 0 0
it.amattioli.guidate.properties.GroupSpecification 11 7 0 0
it.amattioli.guidate.properties.AvailableComposer 27 7 1 0

Averages.

NCSS average Program NCSS Classes average Methods average Javadocs average
18.06 4,050.00 0.20 3.58 0.05

Methods

[ package ] [ object ] [ method ] [ explanation ]

TOP 30 Methods containing the most NCSS.

Methods NCSS CCN Javadocs
it.amattioli.guidate.properties.PropertyNameRetriever.findPropertyIndex(Component) 29 18 0
it.amattioli.guidate.browsing.EntitySelectorComposer.findEntitySelector(Component) 27 9 0
it.amattioli.guidate.collections.ItemSelectionComposer.selectItem(Component) 22 8 0
it.amattioli.guidate.editing.TreeEditorModel.TreeEditorModel(T) 22 1 0
it.amattioli.guidate.containers.BackBeans.findContainer(Component) 20 16 0
it.amattioli.guidate.containers.BackBeans.backBeanFromString(Component,String) 19 11 0
it.amattioli.guidate.browsing.tree.PrototypeTreeItemRenderer.render(Treeitem,Object) 18 3 0
it.amattioli.guidate.browsing.calendar.Navigator.onCreate(Event) 18 1 0
it.amattioli.guidate.converters.Converters.createFrom(Object) 18 11 1
it.amattioli.guidate.btns.OpenWindowComposer.getArguments(Component) 18 6 0
it.amattioli.guidate.properties.PropertyValuesComposer.onSelect(SelectEvent) 17 9 0
it.amattioli.guidate.editing.TreeEditorModel.TreeEventListener.treeChanged(TreeEvent) 17 4 0
it.amattioli.guidate.converters.EntityConverter.coerceToUi(Object,Component) 16 15 0
it.amattioli.guidate.browsing.GroupBrowserListboxComposer.setBrowserSelectionListener(Listbox) 15 1 0
it.amattioli.guidate.browsing.GroupBrowserListboxComposer.onSelect(SelectEvent) 15 5 0
it.amattioli.guidate.smarttab.SmartTabComposer.createTab(Tabbox,SmartTabDescriptor) 15 1 0
it.amattioli.guidate.properties.CollectionPropertyComposer.implicitPrototypes(Grid) 15 3 0
it.amattioli.guidate.validators.PropertyStateValidatorComposer.onValidateElement(Event) 15 6 0
it.amattioli.guidate.validators.PropertyValidator.validate(Component,Object) 15 7 0
it.amattioli.guidate.browsing.calendar.IntervalGridComposer.onCreate(Event) 14 1 0
it.amattioli.guidate.collections.CollectionPropertyModel.getModelValues() 14 11 0
it.amattioli.guidate.collections.PrototypeRowRenderer.findPrototypeFor(Object) 14 7 0
it.amattioli.guidate.collections.GroupPropertyModel.getModelValues() 14 11 0
it.amattioli.guidate.collections.GroupingPropertyModel.getPropertyValues() 14 11 0
it.amattioli.guidate.collections.PrototypeListItemRenderer.findPrototypeFor(Object) 14 7 0
it.amattioli.guidate.converters.ConverterXmlReader.startElement(String,String,String,Attributes) 14 6 0
it.amattioli.guidate.browsing.BrowserListboxComposer.setBrowserSelectionListener(Listbox) 13 1 0
it.amattioli.guidate.browsing.tree.BrowserTreeComposer.onCreate(Event) 13 4 0
it.amattioli.guidate.browsing.EntitySelectorComposer.setupComponent(Component,EntitySelector) 13 1 0
it.amattioli.guidate.containers.BackBeans.findBackBean(Component) 13 7 0

Averages.

Program NCSS NCSS average CCN average Javadocs average
4,050.00 4.44 2.00 0.00

Explanations

[ package ] [ object ] [ method ] [ explanation ]

Non Commenting Source Statements (NCSS)

Statements for JavaNCSS are not statements as specified in the Java Language Specification but include all kinds of declarations too. Roughly spoken, NCSS is approximately equivalent to counting ';' and '{' characters in Java source files.

Not counted are empty statements, empty blocks or semicolons after closing brackets. Of course, comments don't get counted too. Closing brackets also never get counted, the same applies to blocks in general.

Examples
Package declaration package java.lang;
Import declaration import java.awt.*;
Class declaration
  • public class Foo {
  • public class Foo extends Bla {
Interface declaration public interface Able ; {
Field declaration
  • int a;
  • int a, b, c = 5, d = 6;
Method declaration
  • public void cry();
  • public void gib() throws DeadException {
Constructor declaration public Foo() {
Constructor invocation
  • this();
  • super();
Statement declaration
  • i = 0;
  • if (ok)
  • if (exit) {
  • if (3 == 4);
  • if (4 == 4) { ;
  • } else {
Label declaration fine :

In some cases consecutive semicolons are illegal according to the JLS but JavaNCSS still tolerates them (thought JavaNCSS is still more strict as 'javac'). Nevertheless they are never counted as two statements.

Cyclomatic Complexity Number (CCN)

CCN is also know as McCabe Metric. There exists a much hyped theory behind it based on graph theory, but it all comes down to simply counting 'if', 'for', 'while' statements etc. in a method. Whenever the control flow of a method splits, the "CCN counter" gets incremented by one.

Each method has a minimum value of 1 per default. For each of the following Java keywords/statements this value gets incremented by one:

  • if
  • for
  • while
  • case
  • catch

Also if the control flow of a method returns abortively the CCNvalue will be incremented by one:

  • if
  • for

An ordinary return at the end of method will not be counted.

Note that 'else', 'default', and 'finally' don't increment the CCN value any further. On the other hand, a simple method with a 'switch' statement and a huge block of 'case' statements can have a surprisingly high CCN value (still it has the same value when converting a 'switch' block to an equivalent sequence of 'if' statements).