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
net.sourceforge.jeuclid.elements.presentation.table61378322110988607
net.sourceforge.jeuclid.elements.presentation.script131387642616812483
net.sourceforge.jeuclid.elements.presentation.general131356683019231549
net.sourceforge.jeuclid.elements711762727217116509
org.w3c.dom.mathml54401527455380401111
net.sourceforge.jeuclid.elements.presentation.token9995011812424421
net.sourceforge.jeuclid.dom612140914983269
net.sourceforge.jeuclid9564082119924608
net.sourceforge.jeuclid.elements.support.attributes734396191289339
net.sourceforge.jeuclid.swing3553121914013225
net.sourceforge.jeuclid.converter10333052213913294
net.sourceforge.jeuclid.elements.support.text21317831816154
net.sourceforge.jeuclid.elements.support.operatordict3111757448190
net.sourceforge.jeuclid.parser21115743512124
net.sourceforge.jeuclid.elements.generic225804250105
net.sourceforge.jeuclid.ant110782136105
net.sourceforge.jeuclid.app1370212140
net.sourceforge.jeuclid.font213706728126
net.sourceforge.jeuclid.elements.support313656416127
net.sourceforge.jeuclid.content.semantic21661424276
net.sourceforge.jeuclid.app.support1250216154
net.sourceforge.jeuclid.awt1948319570
net.sourceforge.jeuclid.elements.presentation11437213052
net.sourceforge.jeuclid.elements.presentation.enlivening1735213048
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
1591473685371956633986686

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
net.sourceforge.jeuclid.elements.presentation.table.Mtable60083311
net.sourceforge.jeuclid.elements.AbstractJEuclidElement3947005
net.sourceforge.jeuclid.elements.presentation.script.Mmultiscripts2523102
net.sourceforge.jeuclid.elements.presentation.token.Mo2504502
net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper234903
net.sourceforge.jeuclid.elements.presentation.script.AbstractUnderOver1742312
net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary146812
net.sourceforge.jeuclid.elements.support.text.StringUtil135911
net.sourceforge.jeuclid.elements.presentation.general.Mstyle1254402
net.sourceforge.jeuclid.dom.AbstractPartialNodeImpl1163512
net.sourceforge.jeuclid.swing.JMathComponent11538015
net.sourceforge.jeuclid.dom.AbstractPartialElementImpl1112423
net.sourceforge.jeuclid.parser.Parser103821
net.sourceforge.jeuclid.elements.presentation.general.Mfrac952002
net.sourceforge.jeuclid.swing.MathComponentUI941202
net.sourceforge.jeuclid.elements.presentation.general.Menclose85546
net.sourceforge.jeuclid.MathBase771502
net.sourceforge.jeuclid.DOMBuilder76302
net.sourceforge.jeuclid.ant.MathMLConverter691002
net.sourceforge.jeuclid.dom.AbstractPartialDocumentImpl673302
net.sourceforge.jeuclid.elements.JEuclidElementFactory67302
net.sourceforge.jeuclid.elements.presentation.general.Mfenced65902
net.sourceforge.jeuclid.elements.presentation.general.AbstractRoot64902
net.sourceforge.jeuclid.app.Mml2xxx61302
net.sourceforge.jeuclid.elements.presentation.table.Maligngroup581002
net.sourceforge.jeuclid.elements.support.attributes.MathVariant58502
net.sourceforge.jeuclid.swing.JMathComponentBeanInfo54502
net.sourceforge.jeuclid.elements.presentation.script.ScriptSupport53602
net.sourceforge.jeuclid.elements.presentation.table.Mtr531802
net.sourceforge.jeuclid.converter.Converter52703

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
net.sourceforge.jeuclid.elements.presentation.table.Mtable60083311
net.sourceforge.jeuclid.elements.AbstractJEuclidElement3947005
net.sourceforge.jeuclid.elements.presentation.token.Mo2504502
net.sourceforge.jeuclid.elements.presentation.general.Mstyle1254402
org.w3c.dom.mathml.MathMLTableElement4544045
net.sourceforge.jeuclid.swing.JMathComponent11538015
org.w3c.dom.mathml.MathMLStyleElement3938039
net.sourceforge.jeuclid.dom.AbstractPartialNodeImpl1163512
net.sourceforge.jeuclid.dom.AbstractPartialDocumentImpl673302
net.sourceforge.jeuclid.elements.presentation.script.Mmultiscripts2523102
net.sourceforge.jeuclid.dom.AbstractPartialElementImpl1112423
org.w3c.dom.mathml.MathMLOperatorElement2524025
net.sourceforge.jeuclid.elements.presentation.script.AbstractUnderOver1742312
org.w3c.dom.mathml.MathMLMultiScriptsElement2322023
net.sourceforge.jeuclid.elements.JEuclidElement222104
net.sourceforge.jeuclid.elements.presentation.general.Mfrac952002
net.sourceforge.jeuclid.dom.PartialTextImpl391802
net.sourceforge.jeuclid.elements.presentation.table.Mtr531802
net.sourceforge.jeuclid.elements.generic.DocumentElement451802
net.sourceforge.jeuclid.elements.presentation.table.Mtd441702
net.sourceforge.jeuclid.MathBase771502
net.sourceforge.jeuclid.elements.presentation.token.Mspace381402
net.sourceforge.jeuclid.elements.presentation.script.Msup411402
net.sourceforge.jeuclid.elements.presentation.script.Msub401402
net.sourceforge.jeuclid.elements.presentation.script.Msubsup421402
net.sourceforge.jeuclid.elements.presentation.AbstractContainer291402
org.w3c.dom.mathml.MathMLDeclareElement1514015
org.w3c.dom.mathml.MathMLContentContainer1514015
net.sourceforge.jeuclid.SAXBuilder361304
org.w3c.dom.mathml.MathMLContainer1413014

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
37.146,853.000.109.264.52

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
net.sourceforge.jeuclid.elements.presentation.table.Mtable.calculateAlignmentGroups(Graphics2D)111380
net.sourceforge.jeuclid.elements.presentation.table.Mtable.paint(Graphics2D,float,float)70200
net.sourceforge.jeuclid.DOMBuilder.traverse(Node,Node,Mtd)51210
net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper.convertSizeToPt(String,JEuclidNode,String)37111
net.sourceforge.jeuclid.elements.presentation.script.Mmultiscripts.parseChildren()3390
net.sourceforge.jeuclid.elements.presentation.general.Mfenced.createDelegates()3350
net.sourceforge.jeuclid.elements.presentation.script.Mmultiscripts.calculateSpecs(Graphics2D)3250
net.sourceforge.jeuclid.elements.presentation.general.Menclose.createDelegates()31100
net.sourceforge.jeuclid.app.Mml2xxx.main(String[])30111
net.sourceforge.jeuclid.elements.presentation.script.AbstractUnderOver.calculateOffsets(Graphics2D)2940
net.sourceforge.jeuclid.app.support.CommandLineParser.parseCommandLine(String[])2890
net.sourceforge.jeuclid.elements.presentation.table.Maligngroup.getElementsOfAlignGroup(JEuclidElement)2870
net.sourceforge.jeuclid.elements.presentation.general.AbstractRoot.paint(Graphics2D,float,float)2810
net.sourceforge.jeuclid.app.Mml2xxx.showUsage()2730
net.sourceforge.jeuclid.elements.presentation.general.Mstyle.getAbsoluteScriptLevel()2670
net.sourceforge.jeuclid.elements.presentation.table.Mtable.AlignmentType.parseAlignmentType(String)2581
net.sourceforge.jeuclid.elements.presentation.general.Mfrac.paint(Graphics2D,float,float)2520
net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary.DictionaryReader.startElement(String,String,String,Attributes)2580
net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper.parseWithHash(String)25100
net.sourceforge.jeuclid.ant.MathMLConverter.execute()24120
net.sourceforge.jeuclid.elements.support.text.StringUtil.initializeVariantToStandardMapping()2410
net.sourceforge.jeuclid.elements.support.text.StringUtil.mapVariantsToStandardCodepoints(CodePointAndVariant)2370
net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper.colorTOsRGBString(Color)2380
net.sourceforge.jeuclid.parser.Parser.parseStreamSource(StreamSource)2070
net.sourceforge.jeuclid.converter.FreeHepInternalDetector.actuallyDetectConversionPlugins(ConverterRegistry)2091
net.sourceforge.jeuclid.elements.presentation.token.Mo.changeHook()2060
net.sourceforge.jeuclid.elements.presentation.table.Mtable.Mtable(MathBase)2011
net.sourceforge.jeuclid.elements.support.text.StringUtil.convertStringtoAttributedString(String,MathVariant,float,MathBase)2050
net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper.stringToColor(String,Color)2080
net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper.parseCommaSeparatedString(String,int,int)2050

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
6,853.003.381.610.37

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