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.myfaces.tobago.facelets56127140433139534
org.apache.myfaces.tobago.facelets.extension17805113313306
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
73207191566242840

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
org.apache.myfaces.tobago.facelets.AttributeHandler2171100
org.apache.myfaces.tobago.facelets.GridLayoutConstraintHandler188200
org.apache.myfaces.tobago.facelets.extension.TobagoLabelExtensionHandler1391500
org.apache.myfaces.tobago.facelets.GridLayoutRule78180
org.apache.myfaces.tobago.facelets.FlowLayoutRule60160
org.apache.myfaces.tobago.facelets.TobagoComponentHandler58500
org.apache.myfaces.tobago.facelets.extension.TobagoMenuExtensionHandler50901
org.apache.myfaces.tobago.facelets.TagMethodExpression431201
org.apache.myfaces.tobago.facelets.Resource42311
org.apache.myfaces.tobago.facelets.extension.SeparatorExtensionHandler37400
org.apache.myfaces.tobago.facelets.TabChangeListenerHandler35200
org.apache.myfaces.tobago.facelets.extension.DateExtensionHandler30500
org.apache.myfaces.tobago.facelets.PositionRule28120
org.apache.myfaces.tobago.facelets.DeprecatedDimensionRule28120
org.apache.myfaces.tobago.facelets.ConverterHandler26200
org.apache.myfaces.tobago.facelets.extension.SelectBooleanCheckboxExtensionHandler20400
org.apache.myfaces.tobago.facelets.ResetInputActionListenerHandler19200
org.apache.myfaces.tobago.facelets.SupportsRenderedPartiallyRule18110
org.apache.myfaces.tobago.facelets.MetaInfResourcesClasspathResourceResolver17201
org.apache.myfaces.tobago.facelets.SupportsMarkupRule17110
org.apache.myfaces.tobago.facelets.SheetStateChangeSourceRule16110
org.apache.myfaces.tobago.facelets.Resource.URLStreamHandler16110
org.apache.myfaces.tobago.facelets.SortActionSourceRule16110
org.apache.myfaces.tobago.facelets.PopupReferenceHandler16200
org.apache.myfaces.tobago.facelets.DataAttributeHandler14200
org.apache.myfaces.tobago.facelets.SuggestMethodRule14110
org.apache.myfaces.tobago.facelets.TabChangeSourceRule14110
org.apache.myfaces.tobago.facelets.WizardComponentHandler13200
org.apache.myfaces.tobago.facelets.Resource.URLStreamHandler.URLConnection13200
org.apache.myfaces.tobago.facelets.ScriptHandler13300

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
org.apache.myfaces.tobago.facelets.extension.TobagoLabelExtensionHandler1391500
org.apache.myfaces.tobago.facelets.TagMethodExpression431201
org.apache.myfaces.tobago.facelets.AttributeHandler2171100
org.apache.myfaces.tobago.facelets.extension.TobagoMenuExtensionHandler50901
org.apache.myfaces.tobago.facelets.TobagoComponentHandler58500
org.apache.myfaces.tobago.facelets.extension.DateExtensionHandler30500
org.apache.myfaces.tobago.facelets.extension.SeparatorExtensionHandler37400
org.apache.myfaces.tobago.facelets.extension.SelectBooleanCheckboxExtensionHandler20400
org.apache.myfaces.tobago.facelets.extension.SelectManyCheckboxExtensionHandler9400
org.apache.myfaces.tobago.facelets.extension.SelectManyListboxExtensionHandler9400
org.apache.myfaces.tobago.facelets.extension.SelectManyShuttleExtensionHandler9400
org.apache.myfaces.tobago.facelets.extension.TextareaExtensionHandler9400
org.apache.myfaces.tobago.facelets.extension.SelectOneListboxExtensionHandler9400
org.apache.myfaces.tobago.facelets.extension.MenuRadioExtensionHandler9401
org.apache.myfaces.tobago.facelets.extension.MenuCheckboxExtensionHandler9401
org.apache.myfaces.tobago.facelets.Resource42311
org.apache.myfaces.tobago.facelets.ScriptHandler13300
org.apache.myfaces.tobago.facelets.extension.FileExtensionHandler7300
org.apache.myfaces.tobago.facelets.extension.TimeExtensionHandler7300
org.apache.myfaces.tobago.facelets.extension.SelectOneRadioExtensionHandler7300
org.apache.myfaces.tobago.facelets.extension.SelectOneChoiceExtensionHandler7300
org.apache.myfaces.tobago.facelets.extension.InExtensionHandler7300
org.apache.myfaces.tobago.facelets.FixCharacterEncodingFilter7300
org.apache.myfaces.tobago.facelets.StyleHandler13300
org.apache.myfaces.tobago.facelets.DefaultResourceResolver9300
org.apache.myfaces.tobago.facelets.WizardComponentHandler13200
org.apache.myfaces.tobago.facelets.SheetStateChangeSourceRule.SheetStateChangeListenerMapper7200
org.apache.myfaces.tobago.facelets.DataAttributeHandler14200
org.apache.myfaces.tobago.facelets.TabChangeListenerHandler35200
org.apache.myfaces.tobago.facelets.PositionRule.LeftMapper10200

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
22.561,915.000.372.840.08

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
org.apache.myfaces.tobago.facelets.AttributeHandler.apply(FaceletContext,UIComponent)165610
org.apache.myfaces.tobago.facelets.GridLayoutConstraintHandler.apply(FaceletContext,UIComponent)140620
org.apache.myfaces.tobago.facelets.extension.TobagoLabelExtensionHandler.addLabel(FaceletContext,UIPanel,UIViewRoot)2890
org.apache.myfaces.tobago.facelets.GridLayoutConstraintHandler.GridLayoutConstraintHandler(TagConfig)2410
org.apache.myfaces.tobago.facelets.TobagoComponentHandler.createMetaRuleset(Class)23110
org.apache.myfaces.tobago.facelets.TabChangeListenerHandler.apply(FaceletContext,UIComponent)21100
org.apache.myfaces.tobago.facelets.GridLayoutRule.applyRule(String,TagAttribute,MetadataTarget)20190
org.apache.myfaces.tobago.facelets.Resource.getUrlForResourceAsStream(ExternalContext,String)1910
org.apache.myfaces.tobago.facelets.ConverterHandler.apply(FaceletContext,UIComponent)19100
org.apache.myfaces.tobago.facelets.TobagoComponentHandler.addDefaultValidators(FacesContext,EditableValueHolder)1980
org.apache.myfaces.tobago.facelets.extension.TobagoLabelExtensionHandler.addGridLayout(FaceletContext,UIComponent,UIViewRoot)1950
org.apache.myfaces.tobago.facelets.extension.TobagoLabelExtensionHandler.onComponentCreated(FaceletContext,UIComponent,UIComponent)1840
org.apache.myfaces.tobago.facelets.extension.DateExtensionHandler.onComponentPopulated(FaceletContext,UIComponent,UIComponent)1750
org.apache.myfaces.tobago.facelets.Resource.URLStreamHandler.openConnection(URL)1610
org.apache.myfaces.tobago.facelets.FlowLayoutRule.applyRule(String,TagAttribute,MetadataTarget)16150
org.apache.myfaces.tobago.facelets.extension.TobagoLabelExtensionHandler.applyNextHandler(FaceletContext,UIComponent)1640
org.apache.myfaces.tobago.facelets.ResetInputActionListenerHandler.apply(FaceletContext,UIComponent)1460
org.apache.myfaces.tobago.facelets.extension.SeparatorExtensionHandler.onComponentCreated(FaceletContext,UIComponent,UIComponent)1430
org.apache.myfaces.tobago.facelets.extension.TobagoMenuExtensionHandler.onComponentCreated(FaceletContext,UIComponent,UIComponent)1320
org.apache.myfaces.tobago.facelets.Resource.resourceExist(ExternalContext,String)1270
org.apache.myfaces.tobago.facelets.Resource.URLStreamHandler.URLConnection.getInputStream()1280
org.apache.myfaces.tobago.facelets.MetaInfResourcesClasspathResourceResolver.resolveUrl(String)1250
org.apache.myfaces.tobago.facelets.extension.SeparatorExtensionHandler.createMetaRuleset(Class)1140
org.apache.myfaces.tobago.facelets.extension.SelectBooleanCheckboxExtensionHandler.enrichInput(FaceletContext,UIComponent)1130
org.apache.myfaces.tobago.facelets.PopupReferenceHandler.apply(FaceletContext,UIComponent)1150
org.apache.myfaces.tobago.facelets.TabChangeListenerHandler.TabChangeListenerHandler(TagConfig)1060
org.apache.myfaces.tobago.facelets.AttributeHandler.getMethodExpression(FaceletContext,Class,Class[])1050
org.apache.myfaces.tobago.facelets.Resource.getResourceUrl(FacesContext,String)941
org.apache.myfaces.tobago.facelets.extension.TobagoLabelExtensionHandler.createSubComponentMetaRuleset(Class)930
org.apache.myfaces.tobago.facelets.WizardComponentHandler.onComponentCreated(FaceletContext,UIComponent,UIComponent)830

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
1,915.006.172.710.00

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