JavaNCSS Metric Results

[ package ] [ object ] [ function ] [ explanation ]

The following document contains the results of a JavaNCSS metric analysis.
JavaNCSS web site.

Packages

[ package ] [ object ] [ function ] [ explanation ]

Packages sorted by NCSS.

PackageClassesFunctionsNCSSJavadocsJavadoc linesSingle lines commentMulti lines comment
siouxsie.desktop.impl10714539461796
siouxsie.desktop.commands.impl115845011653777
siouxsie.desktop.option.impl6433117401139
siouxsie.hivemind6282375251410
siouxsie.desktop.commands861160146701
siouxsie.desktop13501202310300
siouxsie.desktop.option72257167400
siouxsie.desktop.events6144984900
siouxsie.desktop.prefs.impl163017012
siouxsie.desktop.events.impl12101508
siouxsie.desktop.prefs1251500
Classes totalFunctions totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
7035718829648679243

Objects

[ package ] [ object ] [ function ] [ explanation ]

TOP 30 classes containing the most NCSS.

ObjectNCSSFunctionsClassesJavadocs
siouxsie.desktop.commands.impl.CommandsHandler2351822
siouxsie.desktop.option.impl.PreferencesRenderer891122
siouxsie.desktop.impl.DesktopUIProvider851411
siouxsie.hivemind.SpringObjectProvider78600
siouxsie.desktop.commands.Face692700
siouxsie.desktop.option.impl.ListPreferencesRenderer611021
siouxsie.desktop.option.impl.PreferencesDisplay591321
siouxsie.desktop.impl.ApplicationRegistry43902
siouxsie.desktop.impl.JXTaskPaneListApplications43411
siouxsie.hivemind.IconObjectProvider39201
siouxsie.desktop.impl.CardLayoutViewHandler38602
siouxsie.desktop.commands.Group361400
siouxsie.hivemind.PropertyFileSymbolSource31401
siouxsie.desktop.impl.FormLayoutStatusBar29701
siouxsie.desktop.impl.StatusBar27701
siouxsie.desktop.commands.CommandDescription261001
siouxsie.desktop.impl.DesktopRunner26501
siouxsie.hivemind.ApplicationContextDesc251001
siouxsie.desktop.commands.impl.SiouxsieActionCommand24611
siouxsie.desktop.commands.impl.SiouxsieToggleCommand24611
siouxsie.desktop.prefs.impl.PreferencesService23601
siouxsie.desktop.impl.Application21800
siouxsie.desktop.impl.ApplicationCategory21800
siouxsie.desktop.ViewContribution21801
siouxsie.desktop.impl.LAFStarter19300
siouxsie.desktop.commands.impl.StatusBarHoverListener18401
siouxsie.desktop.events.DesktopBus17602
siouxsie.desktop.ApplicationDescription16601
siouxsie.desktop.CategoryDescription16601
siouxsie.desktop.commands.impl.ExceptionHandler16500

TOP 30 classes containing the most functions.

ObjectNCSSFunctionsClassesJavadocs
siouxsie.desktop.commands.Face692700
siouxsie.desktop.commands.impl.CommandsHandler2351822
siouxsie.desktop.commands.Group361400
siouxsie.desktop.impl.DesktopUIProvider851411
siouxsie.desktop.option.impl.PreferencesDisplay591321
siouxsie.desktop.option.impl.PreferencesRenderer891122
siouxsie.desktop.commands.CommandDescription261001
siouxsie.desktop.option.impl.ListPreferencesRenderer611021
siouxsie.hivemind.ApplicationContextDesc251001
siouxsie.desktop.impl.ApplicationRegistry43902
siouxsie.desktop.impl.Application21800
siouxsie.desktop.impl.ApplicationCategory21800
siouxsie.desktop.ViewContribution21801
siouxsie.desktop.impl.FormLayoutStatusBar29701
siouxsie.desktop.impl.StatusBar27701
siouxsie.desktop.ApplicationDescription16601
siouxsie.desktop.CategoryDescription16601
siouxsie.desktop.commands.impl.SiouxsieActionCommand24611
siouxsie.desktop.commands.impl.SiouxsieToggleCommand24611
siouxsie.desktop.events.DesktopBus17602
siouxsie.desktop.impl.CardLayoutViewHandler38602
siouxsie.desktop.IStatusBar7607
siouxsie.desktop.option.OptionPaneDescription16601
siouxsie.desktop.prefs.impl.PreferencesService23601
siouxsie.hivemind.SpringObjectProvider78600
siouxsie.desktop.commands.ICommand8506
siouxsie.desktop.commands.impl.AbstractToggleCommand15501
siouxsie.desktop.commands.impl.ExceptionHandler16500
siouxsie.desktop.impl.DesktopRunner26501
siouxsie.desktop.option.CategoryDescription13501
Averages.
NCSS averageProgram NCSSClasses averageFunctions averageJavadocs average
21.661,882.000.175.101.37

Functions

[ package ] [ object ] [ function ] [ explanation ]

TOP 30 functions containing the most NCSS.

FunctionsNCSSCCNJavadocs
siouxsie.desktop.commands.impl.CommandsHandler.init()113390
siouxsie.desktop.option.impl.PreferencesRenderer.init()6180
siouxsie.desktop.option.impl.ListPreferencesRenderer.init()3550
siouxsie.hivemind.SpringObjectProvider.init()27110
siouxsie.desktop.impl.DesktopUIProvider.init()2630
siouxsie.desktop.commands.impl.CommandsHandler.CommandFactory.createCommand(CommandDescription)2470
siouxsie.desktop.impl.JXTaskPaneListApplications.init()2260
siouxsie.desktop.impl.ApplicationRegistry.init()2191
siouxsie.desktop.impl.CardLayoutViewHandler.init()2171
siouxsie.hivemind.PropertyFileSymbolSource.init()2180
siouxsie.hivemind.IconObjectProvider.createImage(String,String)1970
siouxsie.hivemind.SpringObjectProvider.initAppContext(ApplicationContextDesc)1850
siouxsie.desktop.impl.DesktopRunner.start()1460
siouxsie.desktop.impl.DesktopUIProvider.handle(DesktopEvent)1430
siouxsie.hivemind.IconObjectProvider.provideObject(Module,java.lang.Class,java.lang.String,Location)1450
siouxsie.desktop.commands.impl.CommandsHandler.createIcon(String,String)1350
siouxsie.desktop.impl.LAFStarter.start(Map)1240
siouxsie.hivemind.SpringObjectProvider.loadApplicationContext(String,ApplicationContext)1220
siouxsie.desktop.impl.DesktopUIProvider.WindowsClosingListener.windowClosing(WindowEvent)1120
siouxsie.desktop.commands.impl.CommandsHandler.ApplicationMenuBarContainer.constructCommandGroup(Group,String)920
siouxsie.desktop.option.impl.PreferencesRenderer.MouseAdapter$2.mousePressed(MouseEvent)930
siouxsie.desktop.impl.FormLayoutStatusBar.FormLayoutStatusBar()810
siouxsie.desktop.option.impl.PreferencesDisplay.init()810
siouxsie.desktop.prefs.impl.PreferencesService.registryDidShutdown()730
siouxsie.hivemind.SpringObjectProvider.provideObject(Module,java.lang.Class,java.lang.String,Location)730
siouxsie.desktop.commands.impl.StatusBarHoverListener.hoverEnded(HoverEvent)640
siouxsie.desktop.commands.impl.StatusBarHoverListener.hoverStarted(HoverEvent)640
siouxsie.desktop.impl.StatusBar.StatusBar()610
siouxsie.desktop.option.impl.PreferencesRenderer.DefaultTreeCellRenderer$1.getTreeCellRendererComponent(JTree,Object,boolean,boolean,boolean,int,boolean)620
siouxsie.hivemind.SpringObjectProvider.loadBeanFactory(String)610

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
1,882.003.401.440.10

Explanations

[ package ] [ object ] [ function ] [ 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.

ExamplesComments
Package declarationpackage java.lang;
Import declarationimport java.awt.*;
Class declaration
  • public class Foo {
  • public class Foo extends Bla {
Interface declarationpublic interface Able ; {
Field declaration
  • int a;
  • int a, b, c = 5, d = 6;
Method declaration
  • public void cry();
  • public void gib() throws DeadException {
Constructor declarationpublic Foo() {
Constructor invocation
  • this();
  • super();
Statement declaration
  • i = 0;
  • if (ok)
  • if (exit) {
  • if (3 == 4);
  • if (4 == 4) { ;
  • } else {
expression, if, else, while, do, for, switch, break, continue, return, throw, synchronized, catch, finally
Label declarationfine :normal, case, default
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 (no matter if it's a function or a procedure) will not be counted.Note that else, default, and finallydon't increment the CCN value any further. On the other hand, a simple method with a switchstatement and a huge block of casestatements can have a surprisingly high CCN value (still it has the same value when converting a switchblock to an equivalent sequence of ifstatements).The first article about this trivial software metric is one of the most cited papers in computer science. Sometimes you just must be the first to point out some basic shit and you are history. It seems just like a wonder that nobody was able to package Lines of Code in a more scientific manner. Now it's too late to label someone's name on it :).