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.

PackageClassesMethodsNCSSJavadocsJavadoc linesSingle lines commentMulti lines comment
org.fest.assertions59890313283148655780
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
59890313283148655780

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
org.fest.assertions.ListAssert15135031
org.fest.assertions.FileAssert11527024
org.fest.assertions.StringAssert11529028
org.fest.assertions.DoubleAssert11233132
org.fest.assertions.FloatAssert11233132
org.fest.assertions.MapAssert10727124
org.fest.assertions.ImageAssert10525019
org.fest.assertions.ObjectArrayAssert10128028
org.fest.assertions.Assertions8139039
org.fest.assertions.DoubleArrayAssert8123022
org.fest.assertions.CharAssert7924025
org.fest.assertions.ByteAssert7826026
org.fest.assertions.ShortAssert7826026
org.fest.assertions.IntAssert7625026
org.fest.assertions.LongAssert7625026
org.fest.assertions.CollectionAssert7325026
org.fest.assertions.ObjectAssert7020018
org.fest.assertions.ThrowableAssert7019020
org.fest.assertions.BigDecimalAssert6925026
org.fest.assertions.GenericAssert6831026
org.fest.assertions.FileContentComparator63311
org.fest.assertions.BooleanArrayAssert6220021
org.fest.assertions.ByteArrayAssert6220021
org.fest.assertions.CharArrayAssert6220021
org.fest.assertions.FloatArrayAssert6220021
org.fest.assertions.IntArrayAssert6220021
org.fest.assertions.LongArrayAssert6220021
org.fest.assertions.ShortArrayAssert6220021
org.fest.assertions.ItemGroupAssert6113010
org.fest.assertions.Fail6016016

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
org.fest.assertions.Assertions8139039
org.fest.assertions.ListAssert15135031
org.fest.assertions.DoubleAssert11233132
org.fest.assertions.FloatAssert11233132
org.fest.assertions.GenericAssert6831026
org.fest.assertions.StringAssert11529028
org.fest.assertions.ObjectArrayAssert10128028
org.fest.assertions.FileAssert11527024
org.fest.assertions.MapAssert10727124
org.fest.assertions.ByteAssert7826026
org.fest.assertions.ShortAssert7826026
org.fest.assertions.BigDecimalAssert6925026
org.fest.assertions.CollectionAssert7325026
org.fest.assertions.ImageAssert10525019
org.fest.assertions.IntAssert7625026
org.fest.assertions.LongAssert7625026
org.fest.assertions.CharAssert7924025
org.fest.assertions.DoubleArrayAssert8123022
org.fest.assertions.BooleanArrayAssert6220021
org.fest.assertions.BooleanAssert5320021
org.fest.assertions.ByteArrayAssert6220021
org.fest.assertions.CharArrayAssert6220021
org.fest.assertions.FloatArrayAssert6220021
org.fest.assertions.IntArrayAssert6220021
org.fest.assertions.LongArrayAssert6220021
org.fest.assertions.ObjectAssert7020018
org.fest.assertions.ShortArrayAssert6220021
org.fest.assertions.ThrowableAssert7019020
org.fest.assertions.Fail6016016
org.fest.assertions.Assert3114015

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
50.273,132.000.0815.0814.10

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
org.fest.assertions.FileContentComparator.verifyEqualContent(LineNumberReader,LineNumberReader)17110
org.fest.assertions.ListAssert.containsSequence(Object)1771
org.fest.assertions.ListAssert.endsWith(Object)1791
org.fest.assertions.ToString.toStringOf(Object)16160
org.fest.assertions.ListAssert.startsWith(Object)1591
org.fest.assertions.FileContentComparator.LineDiff.equals(Object)13110
org.fest.assertions.ObjectArrayAssert.hasAtLeastOneElementOfType(Class)1361
org.fest.assertions.DoubleArrayAssert.isEqualTo(DoubleArrayAssert[],Delta)1291
org.fest.assertions.ListAssert.contains(Object,Index)1261
org.fest.assertions.FileAssert.hasSameContentAs(File)1151
org.fest.assertions.DoubleAssert.isEqualTo(Double,double)1090
org.fest.assertions.FileContentComparator.compareContents(File,File)1020
org.fest.assertions.FloatAssert.isEqualTo(Float,float)1090
org.fest.assertions.ImageAssert.isNotEqualTo(BufferedImage)1081
org.fest.assertions.ItemGroupAssert.assertContainsOnly(Object)1061
org.fest.assertions.MapAssert.includes(Entry)1041
org.fest.assertions.MapAssert.excludes(Entry)1041
org.fest.assertions.ConstructorInvoker.newInstance(String,Class[],Object[])930
org.fest.assertions.ObjectArrayAssert.hasAllElementsOfType(Class)931
org.fest.assertions.PropertySupport.propertyValues(String,Collection)961
org.fest.assertions.ComparisonFailureFactory.newComparisonFailure(String,Object,Object)830
org.fest.assertions.DoubleAssert.isEqualTo(Double)871
org.fest.assertions.FloatAssert.isEqualTo(Float)871
org.fest.assertions.ImageAssert.hasEqualColor(BufferedImage)850
org.fest.assertions.ItemGroupAssert.notFoundInCopy(Object,Object)830
org.fest.assertions.ItemGroupAssert.assertExcludes(Object)841
org.fest.assertions.ObjectAssert.isInstanceOf(Class)841
org.fest.assertions.StringAssert.isEqualToIgnoringCase(String)871
org.fest.assertions.ThrowableAssert.isExactlyInstanceOf(Class)841
org.fest.assertions.ArrayInspection.copy(Object,T)740

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
3,132.003.161.580.87

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