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.jsefa.xml.lowlevel1082741522599226
org.jsefa.xml866627332040123
org.jsefa.xml.annotation4405499712634
org.jsefa.rbf54843033179183
org.jsefa.common.converter1362409583330276
org.jsefa.common.validator1559319412150256
org.jsefa.common.annotation934314382822256
org.jsefa.common.mapping1360308563420260
org.jsefa.xml.mapping1749297463290313
org.jsefa.common.validator.traversal528285626075
org.jsefa.csv.lowlevel62524218102096
org.jsefa.rbf.annotation32623712770101
org.jsefa.rbf.lowlevel43721836151060
org.jsefa.common.lowlevel.io21718318101347
org.jsefa.xml.namespace525179211720106
org.jsefa.common.config521171221280139
org.jsefa.flr62013119129198
org.jsefa.csv61912119134293
org.jsefa.csv.annotation251085340221
org.jsefa.flr.annotation251085330234
org.jsefa.rbf.mapping1122108241600201
org.jsefa72999331730118
org.jsefa.common.util313991074088
org.jsefa.flr.lowlevel71593181050117
org.jsefa.common.accessor511861586078
org.jsefa.xml.lowlevel.model102682351860171
org.jsefa.csv.lowlevel.config4138115750123
org.jsefa.csv.config2187718102069
org.jsefa.xml.config216771690057
org.jsefa.xml.lowlevel.config29631157051
org.jsefa.common.lowlevel6185723126093
org.jsefa.common.validator.provider1954746015
org.jsefa.common.converter.provider11045965015
org.jsefa.common.lowlevel.filter48421154074
org.jsefa.flr.config2840845048
org.jsefa.rbf.lowlevel.config28381157038
org.jsefa.rbf.config112331155023
org.jsefa.xml.mapping.support2525634045
org.jsefa.flr.mapping1524638015
org.jsefa.common.lowlevel.config2522845036
org.jsefa.csv.mapping1316427015
org.jsefa.flr.lowlevel.config2315420033
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
21899472538505021205220

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
org.jsefa.xml.annotation.XmlTypeMappingFactory2873504
org.jsefa.xml.XmlDeserializerImpl2012506
org.jsefa.rbf.annotation.RbfTypeMappingFactory1702105
org.jsefa.xml.lowlevel.XmlPullBasedXmlLowLevelSerializer1701502
org.jsefa.rbf.RbfDeserializerImpl16619011
org.jsefa.xml.XmlSerializerImpl1631816
org.jsefa.common.lowlevel.io.LineSegmentReader15412112
org.jsefa.xml.lowlevel.StaxBasedXmlLowLevelDeserializer14914011
org.jsefa.xml.lowlevel.StaxBasedXmlLowLevelSerializer14115012
org.jsefa.xml.lowlevel.XmlPullBasedXmlLowLevelDeserializer1381402
org.jsefa.rbf.lowlevel.RbfLowLevelDeserializerImpl13319017
org.jsefa.csv.lowlevel.CsvLowLevelDeserializerImpl111703
org.jsefa.rbf.RbfSerializerImpl1061509
org.jsefa.xml.namespace.NamespaceManager10013010
org.jsefa.common.config.Configuration9116117
org.jsefa.common.annotation.TypeMappingFactory8920121
org.jsefa.xml.XmlReaderFactory88713
org.jsefa.common.validator.traversal.TraversingComplexValueValidator811001
org.jsefa.common.util.ReflectionUtil801208
org.jsefa.common.annotation.ValidatorFactory78433
org.jsefa.rbf.RbfIOFactory781209
org.jsefa.csv.lowlevel.CsvLowLevelSerializerImpl76903
org.jsefa.common.validator.traversal.TraversingValidatorFactory73713
org.jsefa.common.mapping.ComplexTypeMapping701006
org.jsefa.common.converter.XmlDateTimeConverter69717
org.jsefa.common.converter.SimpleListConverter55704
org.jsefa.csv.config.CsvConfiguration5318117
org.jsefa.xml.config.XmlConfiguration5316115
org.jsefa.csv.lowlevel.config.CsvLowLevelConfiguration5213114
org.jsefa.xml.mapping.ElementDescriptor52805

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
org.jsefa.xml.annotation.XmlTypeMappingFactory2873504
org.jsefa.xml.XmlDeserializerImpl2012506
org.jsefa.rbf.annotation.RbfTypeMappingFactory1702105
org.jsefa.common.annotation.TypeMappingFactory8920121
org.jsefa.rbf.lowlevel.RbfLowLevelDeserializerImpl13319017
org.jsefa.rbf.RbfDeserializerImpl16619011
org.jsefa.csv.config.CsvConfiguration5318117
org.jsefa.xml.XmlSerializerImpl1631816
org.jsefa.common.config.Configuration9116117
org.jsefa.xml.config.XmlConfiguration5316115
org.jsefa.rbf.RbfSerializerImpl1061509
org.jsefa.xml.lowlevel.StaxBasedXmlLowLevelSerializer14115012
org.jsefa.xml.lowlevel.XmlPullBasedXmlLowLevelSerializer1701502
org.jsefa.xml.lowlevel.StaxBasedXmlLowLevelDeserializer14914011
org.jsefa.xml.lowlevel.XmlPullBasedXmlLowLevelDeserializer1381402
org.jsefa.csv.lowlevel.config.CsvLowLevelConfiguration5213114
org.jsefa.rbf.lowlevel.RbfLowLevelSerializerImpl4813012
org.jsefa.xml.namespace.NamespaceManager10013010
org.jsefa.common.lowlevel.io.LineSegmentReader15412112
org.jsefa.common.util.ReflectionUtil801208
org.jsefa.rbf.config.RbfConfiguration2712011
org.jsefa.rbf.RbfIOFactory781209
org.jsefa.common.converter.provider.SimpleTypeConverterProvider371009
org.jsefa.common.mapping.ComplexTypeMapping701006
org.jsefa.common.validator.traversal.TraversingComplexValueValidator811001
org.jsefa.common.validator.provider.ValidatorProvider44907
org.jsefa.csv.lowlevel.CsvLowLevelSerializerImpl76903
org.jsefa.xml.lowlevel.config.XmlLowLevelConfiguration409110
org.jsefa.common.mapping.MapTypeMapping34805
org.jsefa.DeserializationException36808

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
26.087,253.000.104.563.90

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
org.jsefa.common.lowlevel.io.LineSegmentReader.read(int,int)56281
org.jsefa.xml.XmlDeserializerImpl.deserializeComplexElement(XmlComplexTypeMapping)49190
org.jsefa.rbf.RbfDeserializerImpl.readSubRecords(Object,RbfComplexTypeMapping)44200
org.jsefa.xml.lowlevel.XmlPullBasedXmlLowLevelSerializer.writeStartElement(QName,QName)38150
org.jsefa.rbf.lowlevel.RbfLowLevelDeserializerImpl.applyFilter()36180
org.jsefa.xml.lowlevel.StaxBasedXmlLowLevelSerializer.writeStartElement(QName,QName)35121
org.jsefa.xml.lowlevel.StaxBasedXmlLowLevelDeserializer.moveToNext()34121
org.jsefa.xml.lowlevel.XmlPullBasedXmlLowLevelDeserializer.moveToNext()34130
org.jsefa.rbf.annotation.RbfTypeMappingFactory.createRecordMappings(Class)3290
org.jsefa.xml.lowlevel.StaxBasedXmlLowLevelDeserializer.current()32131
org.jsefa.xml.XmlSerializerImpl.serializeComplexElement(Object,ElementMapping,XmlComplexTypeMapping)31130
org.jsefa.csv.lowlevel.CsvLowLevelDeserializerImpl.readStringValueUsingEscapeCharacter()30110
org.jsefa.csv.lowlevel.CsvLowLevelDeserializerImpl.readStringValueUsingQuotes(char,char,char)28120
org.jsefa.common.annotation.ValidatorFactory.createContextualValidator(Class,Field,Annotation,Class)27120
org.jsefa.xml.annotation.XmlTypeMappingFactory.createElementMappings(Class,NamespaceManager)2790
org.jsefa.common.converter.XmlDateTimeConverter.toGregorianCalendar(XMLGregorianCalendar)2691
org.jsefa.rbf.annotation.RbfTypeMappingFactory.createFieldMappings(Class)2670
org.jsefa.common.lowlevel.io.LineSegmentReader.fill()2560
org.jsefa.rbf.RbfIOFactory.RbfIOFactory(C)2550
org.jsefa.xml.lowlevel.XmlPullBasedXmlLowLevelSerializer.writeDocTypeDeclaration(QName,String,String)24110
org.jsefa.xml.namespace.QNameParser.parse(String,boolean,NamespaceManager)24141
org.jsefa.common.annotation.TypeMappingFactory.createSimpleTypeConverter(Class,Field,Annotation)2390
org.jsefa.flr.lowlevel.FlrLowLevelDeserializerImpl.trim(String,Align,char)22160
org.jsefa.common.config.Configuration.Defaults.OnDemandObjectProvider$1.get()2030
org.jsefa.xml.lowlevel.StaxBasedXmlLowLevelSerializer.writeDocTypeDeclaration(QName,String,String)2071
org.jsefa.common.validator.traversal.TraversingComplexValueValidator.validate(Object)19111
org.jsefa.rbf.RbfSerializerImpl.writeSubRecords(Object,RbfComplexTypeMapping)1960
org.jsefa.xml.annotation.XmlTypeMappingFactory.createComplexTypeMappingIfAbsent(Class)1950
org.jsefa.xml.mapping.ElementDescriptor.equals(Object)19150
org.jsefa.xml.namespace.NamespaceManager.registerPrefix(String,String)19161

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
7,253.004.882.490.62

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