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.apache.commons.codec.language14121123697823127246
org.apache.commons.codec.binary121198161261357135410
org.apache.commons.codec.language.bm311147154547080162
org.apache.commons.codec.net658477586209129
org.apache.commons.codec.digest1389239387016
org.apache.commons.codec101764252561256
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
74467340039039133521219

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
org.apache.commons.codec.language.DoubleMetaphone57644146
org.apache.commons.codec.language.bm.Rule267191410
org.apache.commons.codec.language.Metaphone2111208
org.apache.commons.codec.language.bm.PhoneticEngine18510319
org.apache.commons.codec.binary.Base6418226027
org.apache.commons.codec.binary.Base32179809
org.apache.commons.codec.language.ColognePhonetic143633
org.apache.commons.codec.binary.BaseNCodec12423022
org.apache.commons.codec.net.QCodec11513011
org.apache.commons.codec.net.URLCodec11114015
org.apache.commons.codec.net.QuotedPrintableCodec10214015
org.apache.commons.codec.language.bm.Languages100543
org.apache.commons.codec.digest.DigestUtils8538039
org.apache.commons.codec.binary.BinaryCodec7811012
org.apache.commons.codec.language.bm.Lang71515
org.apache.commons.codec.language.Caverphone266102
org.apache.commons.codec.language.Caverphone163102
org.apache.commons.codec.binary.Hex6114015
org.apache.commons.codec.language.Soundex6012013
org.apache.commons.codec.net.BCodec511109
org.apache.commons.codec.binary.BaseNCodecOutputStream45606
org.apache.commons.codec.net.RFC1522Codec45506
org.apache.commons.codec.language.RefinedSoundex43809
org.apache.commons.codec.language.DoubleMetaphone.DoubleMetaphoneResult421200
org.apache.commons.codec.binary.BaseNCodecInputStream41404
org.apache.commons.codec.binary.StringUtils3915015
org.apache.commons.codec.language.bm.PhoneticEngine.RulesApplication35501
org.apache.commons.codec.language.bm.Languages.SomeLanguages30800
org.apache.commons.codec.language.bm.PhoneticEngine.PhonemeBuilder28605
org.apache.commons.codec.language.bm.Rule.Phoneme27610

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
org.apache.commons.codec.language.DoubleMetaphone57644146
org.apache.commons.codec.digest.DigestUtils8538039
org.apache.commons.codec.binary.Base6418226027
org.apache.commons.codec.binary.BaseNCodec12423022
org.apache.commons.codec.language.bm.Rule267191410
org.apache.commons.codec.binary.StringUtils3915015
org.apache.commons.codec.binary.Hex6114015
org.apache.commons.codec.net.QuotedPrintableCodec10214015
org.apache.commons.codec.net.URLCodec11114015
org.apache.commons.codec.net.QCodec11513011
org.apache.commons.codec.language.DoubleMetaphone.DoubleMetaphoneResult421200
org.apache.commons.codec.language.Metaphone2111208
org.apache.commons.codec.language.Soundex6012013
org.apache.commons.codec.binary.BinaryCodec7811012
org.apache.commons.codec.net.BCodec511109
org.apache.commons.codec.language.bm.PhoneticEngine18510319
org.apache.commons.codec.binary.Base32179809
org.apache.commons.codec.language.bm.BeiderMorseEncoder22807
org.apache.commons.codec.language.bm.Languages.SomeLanguages30800
org.apache.commons.codec.language.RefinedSoundex43809
org.apache.commons.codec.binary.BaseNCodecOutputStream45606
org.apache.commons.codec.language.bm.Languages.LanguageSet8600
org.apache.commons.codec.language.bm.Languages.LanguageSet12600
org.apache.commons.codec.language.bm.Languages.LanguageSet12600
org.apache.commons.codec.language.bm.PhoneticEngine.PhonemeBuilder28605
org.apache.commons.codec.language.bm.Rule.Phoneme27610
org.apache.commons.codec.language.ColognePhonetic143633
org.apache.commons.codec.language.ColognePhonetic.CologneInputBuffer18600
org.apache.commons.codec.language.bm.Lang71515
org.apache.commons.codec.language.bm.Languages100543

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
47.583,400.000.366.315.35

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
org.apache.commons.codec.language.Metaphone.metaphone(String)172931
org.apache.commons.codec.language.DoubleMetaphone.doubleMetaphone(String,boolean)96421
org.apache.commons.codec.binary.Base32.encode(Override[],int,int)76181
org.apache.commons.codec.language.ColognePhonetic.colognePhonetic(String)76381
org.apache.commons.codec.language.Caverphone2.encode(String)6441
org.apache.commons.codec.language.Caverphone1.encode(String)6141
org.apache.commons.codec.language.bm.Rule.pattern(String)58281
org.apache.commons.codec.binary.Base32.decode(Override[],int,int)56181
org.apache.commons.codec.language.bm.PhoneticEngine.encode(String,Languages.LanguageSet)53181
org.apache.commons.codec.language.bm.Rule.parseRules(Scanner,String)52120
org.apache.commons.codec.binary.Base64.encode(Override[],int,int)46181
org.apache.commons.codec.language.DoubleMetaphone.handleC(String,DoubleMetaphoneResult,int)43181
org.apache.commons.codec.language.DoubleMetaphone.handleG(String,DoubleMetaphoneResult,int,boolean)43261
org.apache.commons.codec.language.DoubleMetaphone.handleS(String,DoubleMetaphoneResult,int,boolean)35171
org.apache.commons.codec.binary.Base64.decode(Override[],int,int)33141
org.apache.commons.codec.language.bm.Lang.loadFromResource(String,Languages)33101
org.apache.commons.codec.net.RFC1522Codec.decodeText(String)25141
org.apache.commons.codec.binary.BaseNCodecInputStream.read(byte[],int,int)24151
org.apache.commons.codec.language.DoubleMetaphone.handleJ(String,DoubleMetaphoneResult,int,boolean)24171
org.apache.commons.codec.language.DoubleMetaphone.handleGH(String,DoubleMetaphoneResult,int)22161
org.apache.commons.codec.language.DoubleMetaphone.handleW(String,DoubleMetaphoneResult,int)22111
org.apache.commons.codec.binary.Base32.Base32(int,int[],boolean)2181
org.apache.commons.codec.language.bm.Languages.getInstance(String)2180
org.apache.commons.codec.language.DoubleMetaphone.handleCH(String,DoubleMetaphoneResult,int)21101
org.apache.commons.codec.net.URLCodec.encodeUrl(BitSet,BitSet[])2181
org.apache.commons.codec.language.DoubleMetaphone.handleT(String,DoubleMetaphoneResult,int)1991
org.apache.commons.codec.language.RefinedSoundex.soundex(String)1981
org.apache.commons.codec.binary.Base64.Base64(int,int[],boolean)1871
org.apache.commons.codec.language.bm.PhoneticEngine.applyFinalRules(PhonemeBuilder,Rule)1881
org.apache.commons.codec.language.DoubleMetaphone.handleSC(String,DoubleMetaphoneResult,int)1881

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
3,400.006.313.190.73

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