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.applicate.browsing 26 336 1498 80 527 16 98
it.amattioli.applicate.commands 36 239 1009 23 170 16 73
it.amattioli.applicate.commands.tree 9 114 384 4 22 0 0
it.amattioli.applicate.context.hibernate 4 32 267 0 0 10 0
it.amattioli.applicate.properties 11 25 188 0 0 6 6
it.amattioli.applicate.sessions 13 37 153 5 39 2 0
it.amattioli.applicate.commands.executors 6 20 95 5 31 3 0
it.amattioli.applicate.selection 4 10 40 13 88 0 0
it.amattioli.applicate.util 1 2 9 0 0 0 0
Classes total Methods total NCSS total Javadocs Javadoc lines Single lines comment Multi lines comment
110 815 3643 130 877 53 177

Objects

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

TOP 30 classes containing the most NCSS.

Object NCSS Methods Classes Javadocs
it.amattioli.applicate.browsing.ListBrowserImpl 241 55 2 6
it.amattioli.applicate.browsing.ObjectBrowserImpl 227 47 2 1
it.amattioli.applicate.browsing.EntitySelector 195 29 4 0
it.amattioli.applicate.commands.BeanEditorImpl 175 33 1 0
it.amattioli.applicate.browsing.DefaultTreeBrowser 151 35 0 0
it.amattioli.applicate.browsing.PagedListBrowserImpl 133 25 0 0
it.amattioli.applicate.commands.tree.DefaultTreeEditor 118 31 0 0
it.amattioli.applicate.browsing.DefaultGroupBrowser 112 30 0 0
it.amattioli.applicate.context.hibernate.TransactionalCommandContext 100 10 0 0
it.amattioli.applicate.commands.TransactionalCommandContext 87 8 0 0
it.amattioli.applicate.commands.ListEditorImpl 79 23 1 0
it.amattioli.applicate.commands.CommandDecorator 76 18 1 0
it.amattioli.applicate.commands.HibernateEntityEditor 70 17 0 0
it.amattioli.applicate.commands.tree.DefaultTreeManager 67 11 0 0
it.amattioli.applicate.context.hibernate.LongRunningContext 66 12 0 0
it.amattioli.applicate.commands.tree.TreeEditorCommand 54 25 0 0
it.amattioli.applicate.browsing.TreePath 50 11 0 0
it.amattioli.applicate.commands.CollectionEditor 45 16 0 0
it.amattioli.applicate.browsing.MultiBrowser 44 8 0 0
it.amattioli.applicate.properties.PropertyClassRetrieverImpl 42 2 0 0
it.amattioli.applicate.commands.CommandEventSupport 42 7 0 0
it.amattioli.applicate.commands.AbstractBeanEditor 40 9 1 1
it.amattioli.applicate.browsing.GroupBrowser 36 17 1 18
it.amattioli.applicate.commands.RepositoryEditor 36 7 1 0
it.amattioli.applicate.context.hibernate.ThreadLocalContext 32 8 0 0
it.amattioli.applicate.commands.executors.UndoableExecutor 29 7 1 0
it.amattioli.applicate.commands.tree.AbstractTreeManager 28 8 0 0
it.amattioli.applicate.sessions.ApplicateSession 27 10 0 0
it.amattioli.applicate.commands.NullListEditor 27 15 0 0
it.amattioli.applicate.browsing.ContentChangeSupport 26 6 0 7

TOP 30 classes containing the most methods.

Object NCSS Methods Classes Javadocs
it.amattioli.applicate.browsing.ListBrowserImpl 241 55 2 6
it.amattioli.applicate.browsing.ObjectBrowserImpl 227 47 2 1
it.amattioli.applicate.browsing.DefaultTreeBrowser 151 35 0 0
it.amattioli.applicate.commands.BeanEditorImpl 175 33 1 0
it.amattioli.applicate.commands.tree.DefaultTreeEditor 118 31 0 0
it.amattioli.applicate.browsing.DefaultGroupBrowser 112 30 0 0
it.amattioli.applicate.browsing.EntitySelector 195 29 4 0
it.amattioli.applicate.browsing.PagedListBrowserImpl 133 25 0 0
it.amattioli.applicate.commands.tree.TreeEditorCommand 54 25 0 0
it.amattioli.applicate.browsing.ListBrowser 25 24 0 25
it.amattioli.applicate.commands.ListEditorImpl 79 23 1 0
it.amattioli.applicate.commands.tree.TreeEditor 21 20 0 0
it.amattioli.applicate.commands.CommandDecorator 76 18 1 0
it.amattioli.applicate.browsing.GroupBrowser 36 17 1 18
it.amattioli.applicate.commands.HibernateEntityEditor 70 17 0 0
it.amattioli.applicate.commands.CollectionEditor 45 16 0 0
it.amattioli.applicate.commands.NullListEditor 27 15 0 0
it.amattioli.applicate.browsing.TreeBrowser 13 12 0 10
it.amattioli.applicate.context.hibernate.LongRunningContext 66 12 0 0
it.amattioli.applicate.browsing.TreePath 50 11 0 0
it.amattioli.applicate.browsing.PagedListBrowser 12 11 0 0
it.amattioli.applicate.commands.tree.DefaultTreeManager 67 11 0 0
it.amattioli.applicate.commands.ListEditor 12 11 0 11
it.amattioli.applicate.sessions.ApplicateSession 27 10 0 0
it.amattioli.applicate.context.hibernate.TransactionalCommandContext 100 10 0 0
it.amattioli.applicate.commands.tree.TreeManager 11 10 0 0
it.amattioli.applicate.commands.AbstractCommand 22 9 0 1
it.amattioli.applicate.commands.AbstractBeanEditor 40 9 1 1
it.amattioli.applicate.browsing.MultiBrowser 44 8 0 0
it.amattioli.applicate.context.hibernate.ThreadLocalContext 32 8 0 0

Averages.

NCSS average Program NCSS Classes average Methods average Javadocs average
28.87 3,643.00 0.15 7.41 1.18

Methods

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

TOP 30 Methods containing the most NCSS.

Methods NCSS CCN Javadocs
it.amattioli.applicate.properties.PropertyClassRetrieverImpl.retrievePropertyClass(String) 38 24 0
it.amattioli.applicate.context.hibernate.TransactionalCommandContext.doCommand(Command) 37 11 0
it.amattioli.applicate.browsing.EntitySelector.bindTo(Object,String) 34 9 0
it.amattioli.applicate.commands.TransactionalCommandContext.doCommand(Command) 34 11 0
it.amattioli.applicate.browsing.EntitySelector.setSearchValue(String) 29 7 0
it.amattioli.applicate.context.hibernate.TransactionalCommandContext.perform(Object,Method,Object[],MethodProxy) 22 14 0
it.amattioli.applicate.commands.TransactionalCommandContext.perform(Object,Method,Object[],MethodProxy) 22 14 0
it.amattioli.applicate.browsing.ListBrowserImpl.newObjectBrowser() 20 12 0
it.amattioli.applicate.commands.BeanEditorImpl.setEditingBean(T) 19 3 0
it.amattioli.applicate.browsing.DefaultGroupBrowser.select(int,int) 17 8 0
it.amattioli.applicate.browsing.EntitySelector.setEntityBrowser(T) 16 2 0
it.amattioli.applicate.properties.PropertyAvailabilityRetrieverImpl.isPropertyAvailable(String) 16 16 0
it.amattioli.applicate.properties.PropertyWritabilityRetrieverImpl.isPropertyWritable(String) 16 16 0
it.amattioli.applicate.browsing.BrowserFactory.createBrowser(E,E) 15 12 0
it.amattioli.applicate.browsing.TreePath.equals(Object) 15 12 0
it.amattioli.applicate.browsing.EntitySelector.setSelectedObjectId(I) 15 4 0
it.amattioli.applicate.browsing.ListBrowserImpl.addOrder(String,boolean) 15 7 0
it.amattioli.applicate.browsing.PagedListBrowserImpl.getListAll() 14 2 0
it.amattioli.applicate.browsing.MultiBrowser.select(Integer) 14 4 0
it.amattioli.applicate.browsing.ObjectBrowserImpl.getDetailsRepository(String,E) 13 9 0
it.amattioli.applicate.browsing.PagedListBrowserImpl.newPage(int) 13 5 0
it.amattioli.applicate.properties.ValuesListerImpl.getPropertyValues(String) 13 10 0
it.amattioli.applicate.context.hibernate.LongRunningContext.setDependenciesContextOn(Object,Object) 13 11 0
it.amattioli.applicate.commands.BeanEditorImpl.set(String,Object) 13 5 0
it.amattioli.applicate.browsing.ObjectBrowserImpl.propertyChange(PropertyChangeEvent) 12 3 0
it.amattioli.applicate.browsing.ObjectBrowserImpl.customGet(String) 12 12 0
it.amattioli.applicate.browsing.EntitySelector.createSpecification(String,ComparisonType) 12 3 0
it.amattioli.applicate.browsing.ListBrowserImpl.setOrder(String,boolean) 12 5 0
it.amattioli.applicate.commands.tree.DefaultTreeManager.remove(T) 12 8 0
it.amattioli.applicate.commands.BeanEditorImpl.customGet(String) 12 12 0

Averages.

Program NCSS NCSS average CCN average Javadocs average
3,643.00 3.44 1.78 0.13

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).