JavaNCSS Metric Results

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

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

Packages

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

Packages sorted by NCSS.

PackageClassesMethodsNCSSJavadocsJavadoc linesSingle lines commentMulti lines comment
org.sirius.client.web.core7137145118721143
org.sirius.client.web.select563626414331
org.sirius.client.web.classes11782103516710285
org.sirius.client.web2481187380330
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
2532624056429124689

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
org.sirius.client.web.core.WebCorePortBindingStub10873500
org.sirius.client.web.select.WebSelectPortBindingStub4731700
org.sirius.client.web.core.WebCoreProxy1383400
org.sirius.client.web.WebClientCoreProxy924403
org.sirius.client.web.select.WebSelectProxy701700
org.sirius.client.web.core.Dimension621107
org.sirius.client.web.core.Point621107
org.sirius.client.web.core.WebCoreServiceLocator611504
org.sirius.client.web.select.WebSelectServiceLocator611504
org.sirius.client.web.classes.WebControl471905
org.sirius.client.web.core.WebCore292800
org.sirius.client.web.classes.WebPopupList271303
org.sirius.client.web.classes.Frame261104
org.sirius.client.web.classes.Page18903
org.sirius.client.web.WebClient16404
org.sirius.client.web.select.WebSelect121100
org.sirius.client.web.classes.Form11502
org.sirius.client.web.classes.WebButton10303
org.sirius.client.web.classes.WebRadioButton10403
org.sirius.client.web.classes.WebEdit9403
org.sirius.client.web.classes.WebImage9403
org.sirius.client.web.classes.WebCheckBox8303
org.sirius.client.web.classes.WebLink7303
org.sirius.client.web.core.WebCoreService4300
org.sirius.client.web.select.WebSelectService4300

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
org.sirius.client.web.WebClientCoreProxy924403
org.sirius.client.web.core.WebCorePortBindingStub10873500
org.sirius.client.web.core.WebCoreProxy1383400
org.sirius.client.web.core.WebCore292800
org.sirius.client.web.classes.WebControl471905
org.sirius.client.web.select.WebSelectPortBindingStub4731700
org.sirius.client.web.select.WebSelectProxy701700
org.sirius.client.web.core.WebCoreServiceLocator611504
org.sirius.client.web.select.WebSelectServiceLocator611504
org.sirius.client.web.classes.WebPopupList271303
org.sirius.client.web.classes.Frame261104
org.sirius.client.web.core.Dimension621107
org.sirius.client.web.core.Point621107
org.sirius.client.web.select.WebSelect121100
org.sirius.client.web.classes.Page18903
org.sirius.client.web.classes.Form11502
org.sirius.client.web.classes.WebEdit9403
org.sirius.client.web.classes.WebImage9403
org.sirius.client.web.classes.WebRadioButton10403
org.sirius.client.web.WebClient16404
org.sirius.client.web.classes.WebButton10303
org.sirius.client.web.classes.WebCheckBox8303
org.sirius.client.web.classes.WebLink7303
org.sirius.client.web.core.WebCoreService4300
org.sirius.client.web.select.WebSelectService4300

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
94.122,405.000.0013.042.56

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
org.sirius.client.web.select.WebSelectPortBindingStub._initOperationDesc1()17510
org.sirius.client.web.core.WebCorePortBindingStub._initOperationDesc3()13210
org.sirius.client.web.core.WebCorePortBindingStub._initOperationDesc1()13110
org.sirius.client.web.core.WebCorePortBindingStub._initOperationDesc2()12410
org.sirius.client.web.core.WebCorePortBindingStub.createCall()37150
org.sirius.client.web.core.WebCorePortBindingStub.WebCorePortBindingStub(javax.xml.rpc.Service)3120
org.sirius.client.web.core.WebCorePortBindingStub.getCssValue(java.lang.String,java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.isDisplayed(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.getWindowHandle(java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.getPageSource(java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.getLocation(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.getURL(java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.start(java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.getSize(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.getTitle(java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.isEnabled(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.getText(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.isSelected(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.getAttribute(java.lang.String,java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.core.WebCorePortBindingStub.getTagName(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.select.WebSelectPortBindingStub.isMultiple(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.select.WebSelectPortBindingStub.getAllOptions(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.select.WebSelectPortBindingStub.getAllSelectedOptions(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.select.WebSelectPortBindingStub.getFirstSelectedOption(java.lang.String,java.lang.String,java.lang.String)24100
org.sirius.client.web.select.WebSelectPortBindingStub.createCall()21110
org.sirius.client.web.core.WebCorePortBindingStub.forward(java.lang.String)2070
org.sirius.client.web.core.WebCorePortBindingStub.sendKeys(java.lang.String,java.lang.String,java.lang.String,java.lang.String)2070
org.sirius.client.web.core.WebCorePortBindingStub.selectWindow(java.lang.String,java.lang.String)2070
org.sirius.client.web.core.WebCorePortBindingStub.selectAlert(java.lang.String)2070
org.sirius.client.web.core.WebCorePortBindingStub.selectFrameByName(java.lang.String,java.lang.String)2070

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
2,405.006.892.300.16

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 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 {
Label declarationfine :

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