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.fosstrak.epcis.queryclient89216435634868612
org.fosstrak.epcis.soap148326700059
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
2217519105634868671

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
org.fosstrak.epcis.queryclient.QueryClientGui97822819
org.fosstrak.epcis.queryclient.QueryClientGuiHelper28818013
org.fosstrak.epcis.queryclient.QueryControlClient13021010
org.fosstrak.epcis.queryclient.Query291102
org.fosstrak.epcis.queryclient.QueryCallbackClient26605
org.fosstrak.epcis.soap.EPCglobalEPCISService18400
org.fosstrak.epcis.soap.DuplicateSubscriptionExceptionResponse17600
org.fosstrak.epcis.soap.ImplementationExceptionResponse17600
org.fosstrak.epcis.soap.InvalidURIExceptionResponse17600
org.fosstrak.epcis.soap.NoSuchNameExceptionResponse17600
org.fosstrak.epcis.soap.NoSuchSubscriptionExceptionResponse17600
org.fosstrak.epcis.soap.QueryParameterExceptionResponse17600
org.fosstrak.epcis.soap.QueryTooComplexExceptionResponse17600
org.fosstrak.epcis.soap.QueryTooLargeExceptionResponse17600
org.fosstrak.epcis.soap.SecurityExceptionResponse17600
org.fosstrak.epcis.soap.SubscribeNotPermittedExceptionResponse17600
org.fosstrak.epcis.soap.SubscriptionControlsExceptionResponse17600
org.fosstrak.epcis.soap.ValidationExceptionResponse17600
org.fosstrak.epcis.queryclient.QueryClientNotConfiguredException10401
org.fosstrak.epcis.queryclient.QueryControlInterface8702
org.fosstrak.epcis.soap.EPCISServicePortType8700
org.fosstrak.epcis.queryclient.QueryCallbackInterface4304

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
org.fosstrak.epcis.queryclient.QueryClientGui97822819
org.fosstrak.epcis.queryclient.QueryControlClient13021010
org.fosstrak.epcis.queryclient.QueryClientGuiHelper28818013
org.fosstrak.epcis.queryclient.Query291102
org.fosstrak.epcis.queryclient.QueryControlInterface8702
org.fosstrak.epcis.soap.EPCISServicePortType8700
org.fosstrak.epcis.queryclient.QueryCallbackClient26605
org.fosstrak.epcis.soap.DuplicateSubscriptionExceptionResponse17600
org.fosstrak.epcis.soap.ImplementationExceptionResponse17600
org.fosstrak.epcis.soap.InvalidURIExceptionResponse17600
org.fosstrak.epcis.soap.NoSuchNameExceptionResponse17600
org.fosstrak.epcis.soap.NoSuchSubscriptionExceptionResponse17600
org.fosstrak.epcis.soap.QueryParameterExceptionResponse17600
org.fosstrak.epcis.soap.QueryTooComplexExceptionResponse17600
org.fosstrak.epcis.soap.QueryTooLargeExceptionResponse17600
org.fosstrak.epcis.soap.SecurityExceptionResponse17600
org.fosstrak.epcis.soap.SubscribeNotPermittedExceptionResponse17600
org.fosstrak.epcis.soap.SubscriptionControlsExceptionResponse17600
org.fosstrak.epcis.soap.ValidationExceptionResponse17600
org.fosstrak.epcis.queryclient.QueryClientNotConfiguredException10401
org.fosstrak.epcis.soap.EPCglobalEPCISService18400
org.fosstrak.epcis.queryclient.QueryCallbackInterface4304

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
77.411,910.000.367.952.55

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
org.fosstrak.epcis.queryclient.QueryClientGui.createMainWindow(String)27120
org.fosstrak.epcis.queryclient.QueryClientGui.generateParamHashMap()20020
org.fosstrak.epcis.queryclient.QueryClientGuiHelper.processEvents(List)170300
org.fosstrak.epcis.queryclient.QueryClientGui.mwQueryButtonPressed()96171
org.fosstrak.epcis.queryclient.QueryClientGui.ExampleQueries.ExampleQueries()7211
org.fosstrak.epcis.queryclient.QueryClientGui.actionPerformed(ActionEvent)44210
org.fosstrak.epcis.queryclient.QueryControlClient.configureService(URL,Object[])39131
org.fosstrak.epcis.queryclient.QueryClientGui.createExampleWindow()3240
org.fosstrak.epcis.queryclient.QueryClientGui.examplesChanged()2351
org.fosstrak.epcis.queryclient.QueryClientGui.removeArgumentRow(int)2021
org.fosstrak.epcis.queryclient.QueryClientGuiHelper.runQuery()2070
org.fosstrak.epcis.queryclient.QueryClientGui.addArgumentRow(int)1810
org.fosstrak.epcis.queryclient.QueryClientGui.mwInfoButtonPressed()1730
org.fosstrak.epcis.queryclient.QueryClientGui.ActionListener$4.actionPerformed(ActionEvent)1520
org.fosstrak.epcis.queryclient.QueryClientGuiHelper.querySubscriptionIDs()1540
org.fosstrak.epcis.queryclient.QueryClientGui.createDebugWindow()1410
org.fosstrak.epcis.queryclient.QueryClientGui.createResultsWindow()1210
org.fosstrak.epcis.queryclient.QueryClientGui.QueryClientGui(String)1121
org.fosstrak.epcis.queryclient.QueryClientGuiHelper.loadProperties()1131
org.fosstrak.epcis.queryclient.QueryClientGuiHelper.unsubscribeQuery(String)1031
org.fosstrak.epcis.queryclient.QueryControlClient.poll(InputStream)1040
org.fosstrak.epcis.queryclient.QueryControlClient.subscribe(InputStream)1030
org.fosstrak.epcis.queryclient.QueryControlClient.unsubscribe(InputStream)1030
org.fosstrak.epcis.queryclient.QueryClientGui.ActionListener$2.actionPerformed(ActionEvent)920
org.fosstrak.epcis.queryclient.QueryClientGui.mwQuerySelectComboBoxesChanged(int)951
org.fosstrak.epcis.queryclient.QueryClientGuiHelper.subscribeQuery(Subscribe)921
org.fosstrak.epcis.queryclient.QueryCallbackClient.doPost(HttpServletRequest,HttpServletResponse)830
org.fosstrak.epcis.queryclient.QueryClientGui.main(String[])841
org.fosstrak.epcis.queryclient.QueryClientGuiHelper.QueryClientGuiHelper(QueryClientGui)821
org.fosstrak.epcis.queryclient.QueryControlClient.setUpBus()710

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
1,910.008.011.750.23

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