JavaNCSS Metric Results

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

The following document contains the results of a JavaNCSS metric analysis, using JavaNCSS version 33.54.
JavaNCSS web site.

Packages

Packages

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

Packages sorted by NCSS.

Package Classes Methods NCSS Javadocs Javadoc lines Single lines comment Multi lines comment
org.apache.myfaces.tobago.internal.renderkit.renderer 84 266 5501 11 57 295 1601
org.apache.myfaces.tobago.internal.util 27 173 1937 56 289 128 522
org.apache.myfaces.tobago.internal.component 69 300 1794 92 324 63 1315
org.apache.myfaces.tobago.internal.taglib.component 74 164 1273 224 1029 32 1383
org.apache.myfaces.tobago.internal.config 12 137 1137 6 25 21 228
org.apache.myfaces.tobago.util 17 145 1129 24 111 29 347
org.apache.myfaces.tobago.renderkit.css 11 123 1083 11 41 28 304
org.apache.myfaces.tobago.facelets 22 67 1030 9 82 51 405
org.apache.myfaces.tobago.context 17 109 818 20 93 7 400
org.apache.myfaces.tobago.model 20 171 719 32 152 12 393
org.apache.myfaces.tobago.event 29 137 547 15 46 8 543
org.apache.myfaces.tobago.internal.webapp 8 112 516 0 0 8 150
org.apache.myfaces.tobago.internal.behavior 4 51 487 10 197 50 132
org.apache.myfaces.tobago.component 18 60 386 11 39 21 438
org.apache.myfaces.tobago.layout 20 64 356 4 12 3 430
org.apache.myfaces.tobago.internal.taglib.declaration 62 64 319 62 313 1 1116
org.apache.myfaces.tobago.webapp 5 41 225 23 78 7 90
org.apache.myfaces.tobago.internal.renderkit 3 39 211 5 26 4 54
org.apache.myfaces.tobago.internal.ajax 3 19 186 3 12 3 55
org.apache.myfaces.tobago.renderkit 4 19 175 1 4 3 72
org.apache.myfaces.tobago.internal.layout 6 42 172 7 31 6 111
org.apache.myfaces.tobago.convert 5 11 166 2 6 0 90
org.apache.myfaces.tobago.validator 3 24 165 3 12 5 54
org.apache.myfaces.tobago.servlet 2 8 121 3 34 3 36
org.apache.myfaces.tobago.el 2 15 89 0 0 0 36
org.apache.myfaces.tobago.internal.context 2 10 75 0 0 1 18
org.apache.myfaces.tobago.renderkit.html 9 21 72 0 0 1 276
org.apache.myfaces.tobago.sanitizer 4 9 66 2 6 0 72
org.apache.myfaces.tobago.config 1 16 30 1 4 0 18
org.apache.myfaces.tobago.application 2 6 23 0 0 0 39
org.apache.myfaces.tobago.lifecycle 1 3 20 0 0 0 18
org.apache.myfaces.tobago.portlet 1 2 13 2 9 1 18
org.apache.myfaces.tobago.internal 0 0 1 0 0 0 25
Classes total Methods total NCSS total Javadocs Javadoc lines Single lines comment Multi lines comment
547 2428 20842 639 3032 791 10789

Objects

Objects

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

TOP 30 classes containing the most NCSS.

Object NCSS Methods Classes Javadocs
org.apache.myfaces.tobago.renderkit.css.Style 747 86 0 3
org.apache.myfaces.tobago.internal.renderkit.renderer.SheetRenderer 682 21 0 0
org.apache.myfaces.tobago.util.ComponentUtils 447 59 0 17
org.apache.myfaces.tobago.internal.renderkit.renderer.SelectManyRendererBase 348 10 2 4
org.apache.myfaces.tobago.internal.config.TobagoConfigParser 317 12 0 0
org.apache.myfaces.tobago.internal.behavior.DeltaStateHelper 304 20 3 4
org.apache.myfaces.tobago.internal.util.StringUtils 293 29 0 20
org.apache.myfaces.tobago.internal.component.AbstractUISheet 289 43 0 11
org.apache.myfaces.tobago.internal.renderkit.renderer.PageRenderer 232 6 1 1
org.apache.myfaces.tobago.context.Markup 211 15 0 2
org.apache.myfaces.tobago.facelets.AttributeHandler 210 11 0 0
org.apache.myfaces.tobago.internal.config.TobagoConfigImpl 206 35 0 4
org.apache.myfaces.tobago.internal.util.JsonUtils 180 15 0 0
org.apache.myfaces.tobago.internal.webapp.TobagoResponseWriterBase 176 36 1 0
org.apache.myfaces.tobago.internal.config.TobagoConfigSorter 174 13 1 0
org.apache.myfaces.tobago.internal.renderkit.renderer.TabGroupRenderer 174 7 0 0
org.apache.myfaces.tobago.context.ThemeImpl 169 29 0 1
org.apache.myfaces.tobago.internal.util.RenderUtils 160 12 0 5
org.apache.myfaces.tobago.model.TreeNodeDataModel 150 23 1 3
org.apache.myfaces.tobago.context.UserAgent 141 14 2 6
org.apache.myfaces.tobago.internal.util.SelectItemUtils 139 2 2 3
org.apache.myfaces.tobago.internal.behavior.EventBehavior 131 26 1 4
org.apache.myfaces.tobago.internal.util.HtmlRendererUtils 130 14 0 4
org.apache.myfaces.tobago.internal.component.AbstractUIData 127 22 0 8
org.apache.myfaces.tobago.internal.renderkit.Command 127 26 0 1
org.apache.myfaces.tobago.internal.renderkit.renderer.CommandRendererBase 127 10 0 0
org.apache.myfaces.tobago.internal.renderkit.renderer.LabelLayoutRendererBase 127 10 0 1
org.apache.myfaces.tobago.component.Sorter 117 7 0 1
org.apache.myfaces.tobago.internal.component.AbstractUITabGroup 116 23 0 4
org.apache.myfaces.tobago.internal.renderkit.renderer.StyleRenderer 113 2 0 0

TOP 30 classes containing the most methods.

Object NCSS Methods Classes Javadocs
org.apache.myfaces.tobago.renderkit.css.Style 747 86 0 3
org.apache.myfaces.tobago.util.ComponentUtils 447 59 0 17
org.apache.myfaces.tobago.internal.component.AbstractUISheet 289 43 0 11
org.apache.myfaces.tobago.internal.config.TobagoConfigFragment 100 38 0 0
org.apache.myfaces.tobago.internal.webapp.TobagoResponseWriterBase 176 36 1 0
org.apache.myfaces.tobago.internal.config.TobagoConfigImpl 206 35 0 4
org.apache.myfaces.tobago.webapp.TobagoResponseWriter 82 31 0 20
org.apache.myfaces.tobago.context.ThemeImpl 169 29 0 1
org.apache.myfaces.tobago.internal.util.StringUtils 293 29 0 20
org.apache.myfaces.tobago.internal.component.AbstractUIStyle 50 28 0 1
org.apache.myfaces.tobago.internal.taglib.component.StyleTagDeclaration 28 27 0 28
org.apache.myfaces.tobago.internal.behavior.EventBehavior 131 26 1 4
org.apache.myfaces.tobago.internal.renderkit.Command 127 26 0 1
org.apache.myfaces.tobago.internal.component.AbstractUITabGroup 116 23 0 4
org.apache.myfaces.tobago.model.SheetState 89 23 0 0
org.apache.myfaces.tobago.model.TreeNodeDataModel 150 23 1 3
org.apache.myfaces.tobago.internal.component.AbstractUIData 127 22 0 8
org.apache.myfaces.tobago.internal.webapp.DebugResponseWriterWrapper 90 22 0 0
org.apache.myfaces.tobago.internal.webapp.TobagoResponseWriterWrapper 47 22 0 0
org.apache.myfaces.tobago.internal.renderkit.renderer.SheetRenderer 682 21 0 0
org.apache.myfaces.tobago.internal.behavior.DeltaStateHelper 304 20 3 4
org.apache.myfaces.tobago.component.MethodBindingToMethodExpression 110 18 3 5
org.apache.myfaces.tobago.model.TreeDataModel 19 18 0 1
org.apache.myfaces.tobago.internal.util.HttpPartWrapper 45 17 0 0
org.apache.myfaces.tobago.layout.LayoutTokens 72 17 0 0
org.apache.myfaces.tobago.model.ExpandedState 88 17 0 18
org.apache.myfaces.tobago.model.SelectItem 41 17 0 2
org.apache.myfaces.tobago.config.TobagoConfig 20 16 0 1
org.apache.myfaces.tobago.internal.taglib.component.SheetTagDeclaration 17 16 0 17
org.apache.myfaces.tobago.context.Markup 211 15 0 2

Averages.

NCSS average Program NCSS Classes average Methods average Javadocs average
29.66 20,842.00 0.09 4.44 1.17

Methods

Methods

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

TOP 30 Methods containing the most NCSS.

Methods NCSS CCN Javadocs
org.apache.myfaces.tobago.internal.renderkit.renderer.SheetRenderer.encodeEnd(FacesContext,UIComponent) 173 35 0
org.apache.myfaces.tobago.facelets.AttributeHandler.apply(FaceletContext,UIComponent) 158 59 0
org.apache.myfaces.tobago.renderkit.css.Style.encodeJson() 136 28 0
org.apache.myfaces.tobago.internal.renderkit.renderer.PageRenderer.encodeBegin(FacesContext,UIComponent) 132 39 0
org.apache.myfaces.tobago.internal.renderkit.renderer.SheetRenderer.encodeTableBody(FacesContext,UISheet,TobagoResponseWriter,String,Selectable,Integer,Integer,AbstractUIColumnBase,boolean,StringBuilder) 130 49 0
org.apache.myfaces.tobago.internal.config.TobagoConfigParser.endElement(String,String,String) 124 48 0
org.apache.myfaces.tobago.renderkit.css.Style.encode() 114 28 0
org.apache.myfaces.tobago.internal.renderkit.renderer.SheetRenderer.encodeHeaderRows(FacesContext,UISheet,TobagoResponseWriter,AbstractUIColumnBase) 106 29 0
org.apache.myfaces.tobago.internal.renderkit.renderer.StyleRenderer.encodeBegin(FacesContext,UIComponent) 97 51 0
org.apache.myfaces.tobago.internal.config.TobagoConfigParser.startElement(String,String,String,Attributes) 83 40 0
org.apache.myfaces.tobago.component.Sorter.perform(AbstractUISheet) 82 38 0
org.apache.myfaces.tobago.internal.renderkit.renderer.SelectManyRendererBase.getConvertedUISelectManyValue(FacesContext,UISelectMany,String[],boolean) 80 40 1
org.apache.myfaces.tobago.internal.renderkit.renderer.SelectManyRendererBase.SelectItemsIterator.hasNext() 75 36 0
org.apache.myfaces.tobago.internal.renderkit.renderer.SelectManyShuttleRenderer.encodeBeginField(FacesContext,UIComponent) 75 7 0
org.apache.myfaces.tobago.internal.renderkit.renderer.InRenderer.encodeBeginField(FacesContext,UIComponent) 70 20 0
org.apache.myfaces.tobago.internal.renderkit.renderer.SelectOneRadioRenderer.encodeBeginField(FacesContext,UIComponent) 68 15 0
org.apache.myfaces.tobago.internal.renderkit.renderer.SelectManyCheckboxRenderer.encodeBeginField(FacesContext,UIComponent) 67 15 0
org.apache.myfaces.tobago.internal.util.SelectItemUtils.SelectItemsIterator.hasNext() 65 30 0
org.apache.myfaces.tobago.internal.renderkit.renderer.TabGroupRenderer.encodeHeader(FacesContext,TobagoResponseWriter,UITabGroup,int,SwitchType) 63 20 0
org.apache.myfaces.tobago.internal.renderkit.renderer.TextareaRenderer.encodeBeginField(FacesContext,UIComponent) 63 19 0
org.apache.myfaces.tobago.internal.renderkit.renderer.CommandRendererBase.encodeBegin(FacesContext,UIComponent) 62 18 0
org.apache.myfaces.tobago.internal.renderkit.renderer.TreeRenderer.encodeEnd(FacesContext,UIComponent) 59 11 0
org.apache.myfaces.tobago.internal.renderkit.renderer.LabelLayoutRendererBase.encodeBeginSurroundingLabel(FacesContext,UIComponent) 55 23 0
org.apache.myfaces.tobago.context.UserAgent.getInstance(String) 54 36 0
org.apache.myfaces.tobago.internal.renderkit.renderer.MessageLayoutRendererBase.getTitle(FacesMessage) 54 20 0
org.apache.myfaces.tobago.internal.renderkit.renderer.TreeListboxRenderer.encodeEnd(FacesContext,UIComponent) 53 7 0
org.apache.myfaces.tobago.internal.util.StringUtils.split(String,String) 53 20 1
org.apache.myfaces.tobago.internal.renderkit.renderer.FileRenderer.encodeBeginField(FacesContext,UIComponent) 52 6 0
org.apache.myfaces.tobago.internal.util.HtmlRendererUtils.renderSelectItems(UIInput,TobagoClass,SelectItem,Object[],String[],Boolean,TobagoResponseWriter,FacesContext) 51 20 0
org.apache.myfaces.tobago.internal.component.AbstractUISheet.performPaging(PageActionEvent) 50 19 0

Averages.

Program NCSS NCSS average CCN average Javadocs average
20,842.00 5.77 2.62 0.17

Explanations

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 declaration package java.lang;
Import declaration import java.awt.*;
Class declaration
  • public class Foo {
  • public class Foo extends Bla {
Interface declaration public interface Able ; {
Field declaration
  • int a;
  • int a, b, c = 5, d = 6;
Method declaration
  • public void cry();
  • public void gib() throws DeadException {
Constructor declaration public Foo() {
Constructor invocation
  • this();
  • super();
Statement declaration
  • i = 0;
  • if (ok)
  • if (exit) {
  • if (3 == 4);
  • if (4 == 4) { ;
  • } else {
Label declaration fine :

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