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.language1613414811131055184293
org.apache.commons.codec.binary131288661351453144451
org.apache.commons.codec.language.bm311177274848056162
org.apache.commons.codec.digest78557783895120290
org.apache.commons.codec.net669505696979128
org.apache.commons.codec111977282948293
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
84552423347648745211617

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
org.apache.commons.codec.language.DoubleMetaphone56438140
org.apache.commons.codec.language.bm.Rule268191410
org.apache.commons.codec.language.Metaphone2131208
org.apache.commons.codec.language.bm.PhoneticEngine19712321
org.apache.commons.codec.binary.Base6418926027
org.apache.commons.codec.binary.Base32184809
org.apache.commons.codec.digest.UnixCrypt1611205
org.apache.commons.codec.language.ColognePhonetic152634
org.apache.commons.codec.digest.Sha2Crypt144506
org.apache.commons.codec.language.MatchRatingApproachEncoder14011012
org.apache.commons.codec.binary.BaseNCodec12722123
org.apache.commons.codec.net.QCodec12316014
org.apache.commons.codec.digest.DigestUtils11954055
org.apache.commons.codec.net.URLCodec11114015
org.apache.commons.codec.net.QuotedPrintableCodec10518019
org.apache.commons.codec.language.bm.Languages98543
org.apache.commons.codec.language.Nysiis98809
org.apache.commons.codec.digest.Md5Crypt82708
org.apache.commons.codec.binary.BinaryCodec7811012
org.apache.commons.codec.language.bm.Lang68515
org.apache.commons.codec.language.Caverphone266102
org.apache.commons.codec.language.Caverphone163102
org.apache.commons.codec.binary.Hex6216017
org.apache.commons.codec.binary.BaseNCodecInputStream60808
org.apache.commons.codec.language.Soundex6012013
org.apache.commons.codec.net.BCodec5814012
org.apache.commons.codec.net.RFC1522Codec49607
org.apache.commons.codec.binary.BaseNCodecOutputStream46606
org.apache.commons.codec.binary.StringUtils4517017
org.apache.commons.codec.language.RefinedSoundex43809

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
org.apache.commons.codec.digest.DigestUtils11954055
org.apache.commons.codec.language.DoubleMetaphone56438140
org.apache.commons.codec.binary.Base6418926027
org.apache.commons.codec.binary.BaseNCodec12722123
org.apache.commons.codec.language.bm.Rule268191410
org.apache.commons.codec.net.QuotedPrintableCodec10518019
org.apache.commons.codec.binary.StringUtils4517017
org.apache.commons.codec.binary.Hex6216017
org.apache.commons.codec.net.QCodec12316014
org.apache.commons.codec.net.BCodec5814012
org.apache.commons.codec.net.URLCodec11114015
org.apache.commons.codec.digest.UnixCrypt1611205
org.apache.commons.codec.language.bm.PhoneticEngine19712321
org.apache.commons.codec.language.DoubleMetaphone.DoubleMetaphoneResult421200
org.apache.commons.codec.language.Metaphone2131208
org.apache.commons.codec.language.Soundex6012013
org.apache.commons.codec.binary.BinaryCodec7811012
org.apache.commons.codec.language.MatchRatingApproachEncoder14011012
org.apache.commons.codec.language.bm.BeiderMorseEncoder24908
org.apache.commons.codec.binary.Base32184809
org.apache.commons.codec.binary.BaseNCodecInputStream60808
org.apache.commons.codec.language.bm.Languages.SomeLanguages30800
org.apache.commons.codec.language.Nysiis98809
org.apache.commons.codec.language.RefinedSoundex43809
org.apache.commons.codec.digest.Md5Crypt82708
org.apache.commons.codec.binary.BaseNCodecOutputStream46606
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.PhonemeBuilder32605

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
51.464,233.000.336.575.75

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
org.apache.commons.codec.language.Metaphone.metaphone(String)174931
org.apache.commons.codec.digest.Sha2Crypt.sha2Crypt(String[],String,String,int,String)122211
org.apache.commons.codec.language.DoubleMetaphone.doubleMetaphone(String,boolean)96421
org.apache.commons.codec.binary.Base32.encode(Override[],int,int,Context)80201
org.apache.commons.codec.language.ColognePhonetic.colognePhonetic(String)76381
org.apache.commons.codec.language.Caverphone2.encode(String)6441
org.apache.commons.codec.digest.Md5Crypt.md5Crypt(String[],String,String)63141
org.apache.commons.codec.language.Caverphone1.encode(String)6141
org.apache.commons.codec.binary.Base32.decode(Override[],int,int,Context)58191
org.apache.commons.codec.language.bm.Rule.pattern(String)58281
org.apache.commons.codec.language.bm.PhoneticEngine.encode(String,Languages.LanguageSet)53181
org.apache.commons.codec.language.bm.Rule.parseRules(Scanner,String)51140
org.apache.commons.codec.binary.Base64.encode(Override[],int,int,Context)50201
org.apache.commons.codec.digest.UnixCrypt.crypt(String[],String)43111
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.digest.UnixCrypt.desSetKey(byte[])3830
org.apache.commons.codec.binary.Base64.decode(Override[],int,int,Context)37161
org.apache.commons.codec.language.Nysiis.nysiis(String)37161
org.apache.commons.codec.language.DoubleMetaphone.handleS(String,DoubleMetaphoneResult,int,boolean)35171
org.apache.commons.codec.digest.UnixCrypt.body(int[],int,int)3430
org.apache.commons.codec.language.bm.Lang.loadFromResource(String,Languages)31111
org.apache.commons.codec.language.MatchRatingApproachEncoder.leftToRightThenRightToLeftProcessing(String,String)2871
org.apache.commons.codec.language.MatchRatingApproachEncoder.isEncodeEquals(String,String)27161
org.apache.commons.codec.language.Nysiis.transcodeRemaining(char,char,char,char)27301
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

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
4,233.006.613.180.75

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