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.diyefi.openlogviewer.graphing5969612513776113
org.diyefi.openlogviewer174348313512957
org.diyefi.openlogviewer.decoder5524562012017091
org.diyefi.openlogviewer.optionpanel1240410003022
org.diyefi.openlogviewer.propertypanel84733215444
org.diyefi.openlogviewer.genericlog34526015882444
org.diyefi.openlogviewer.filefilters618100000132
org.diyefi.openlogviewer.coloring2178014149
org.diyefi.openlogviewer.utils121113022
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
59360309376408334574

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
org.diyefi.openlogviewer.optionpanel.OptionFrameV2382760
org.diyefi.openlogviewer.graphing.EntireGraphingPanel36846015
org.diyefi.openlogviewer.OpenLogViewer2771762
org.diyefi.openlogviewer.propertypanel.PropertiesPane2421450
org.diyefi.openlogviewer.decoder.FreeEMSBin2311009
org.diyefi.openlogviewer.graphing.SingleGraphPanel1921909
org.diyefi.openlogviewer.graphing.GraphPositionPanel1781101
org.diyefi.openlogviewer.PlayBarPanel15411911
org.diyefi.openlogviewer.genericlog.GenericDataElement1253107
org.diyefi.openlogviewer.genericlog.GenericLog1171318
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ActiveHeaderLabel991610
org.diyefi.openlogviewer.graphing.InfoPanel931000
org.diyefi.openlogviewer.decoder.LogField892110
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ModifyGraphPane84340
org.diyefi.openlogviewer.propertypanel.PropertiesPane.PropertyPanel79710
org.diyefi.openlogviewer.graphing.MultiGraphLayeredPane751000
org.diyefi.openlogviewer.decoder.CSVTypeLog60403
org.diyefi.openlogviewer.propertypanel.SingleProperty531701
org.diyefi.openlogviewer.coloring.MarkedColor401301
org.diyefi.openlogviewer.decoder.FreeEmsPacket381101
org.diyefi.openlogviewer.coloring.InitialLineColoring33400
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ActiveHeaderLabel.MouseListener33500
org.diyefi.openlogviewer.OpenLogViewer.Runnable24100
org.diyefi.openlogviewer.filefilters.MSTypeFileFilter21300
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.MouseMotionAdapter18100
org.diyefi.openlogviewer.decoder.AbstractDecoder16607
org.diyefi.openlogviewer.filefilters.FreeEMSFileFilter15300
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ContainerListener14200
org.diyefi.openlogviewer.genericlog.GenericLog.PropertyChangeListener11100
org.diyefi.openlogviewer.filefilters.CSVFileFilter10300

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
org.diyefi.openlogviewer.graphing.EntireGraphingPanel36846015
org.diyefi.openlogviewer.genericlog.GenericDataElement1253107
org.diyefi.openlogviewer.decoder.LogField892110
org.diyefi.openlogviewer.graphing.SingleGraphPanel1921909
org.diyefi.openlogviewer.OpenLogViewer2771762
org.diyefi.openlogviewer.propertypanel.SingleProperty531701
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ActiveHeaderLabel991610
org.diyefi.openlogviewer.propertypanel.PropertiesPane2421450
org.diyefi.openlogviewer.coloring.MarkedColor401301
org.diyefi.openlogviewer.genericlog.GenericLog1171318
org.diyefi.openlogviewer.decoder.FreeEmsPacket381101
org.diyefi.openlogviewer.graphing.GraphPositionPanel1781101
org.diyefi.openlogviewer.PlayBarPanel15411911
org.diyefi.openlogviewer.decoder.FreeEMSBin2311009
org.diyefi.openlogviewer.graphing.InfoPanel931000
org.diyefi.openlogviewer.graphing.MultiGraphLayeredPane751000
org.diyefi.openlogviewer.optionpanel.OptionFrameV2382760
org.diyefi.openlogviewer.propertypanel.PropertiesPane.PropertyPanel79710
org.diyefi.openlogviewer.decoder.AbstractDecoder16607
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ActiveHeaderLabel.MouseListener33500
org.diyefi.openlogviewer.propertypanel.PropertiesPane.PropertyPanel.MouseListener8500
org.diyefi.openlogviewer.coloring.InitialLineColoring33400
org.diyefi.openlogviewer.decoder.CSVTypeLog60403
org.diyefi.openlogviewer.filefilters.CSVFileFilter10300
org.diyefi.openlogviewer.filefilters.FreeEMSBinFileFilter10300
org.diyefi.openlogviewer.filefilters.FreeEMSFileFilter15300
org.diyefi.openlogviewer.filefilters.FreeEMSLAFileFilter10300
org.diyefi.openlogviewer.filefilters.LogFileFilter10300
org.diyefi.openlogviewer.filefilters.MSTypeFileFilter21300
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ModifyGraphPane84340

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
55.683,093.000.586.101.29

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
org.diyefi.openlogviewer.PlayBarPanel.initComponents()10311
org.diyefi.openlogviewer.decoder.FreeEMSBin.run()90181
org.diyefi.openlogviewer.graphing.EntireGraphingPanel.keyPressed(KeyEvent)79310
org.diyefi.openlogviewer.OpenLogViewer.OpenLogViewer()6510
org.diyefi.openlogviewer.graphing.InfoPanel.paint(Graphics)58140
org.diyefi.openlogviewer.decoder.FreeEMSBin.decodeBasicLogPacket(boolean[])56211
org.diyefi.openlogviewer.OpenLogViewer.openFile()54170
org.diyefi.openlogviewer.propertypanel.PropertiesPane.PropertyPanel.PropertyPanel(SingleProperty)4920
org.diyefi.openlogviewer.graphing.SingleGraphPanel.paintDataPointsAndTraces(Graphics)45160
org.diyefi.openlogviewer.graphing.SingleGraphPanel.initGraphZoomedOut()41121
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.updateFromLog(GenericLog)3870
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ModifyGraphPane.ModifyGraphPane()3510
org.diyefi.openlogviewer.genericlog.GenericLog.incrementPosition()3350
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.remActiveHeaderPanel(ActionEvent)32120
org.diyefi.openlogviewer.graphing.GraphPositionPanel.roundDecimalsOnlyToTwoSignificantFigures(BigDecimal)30101
org.diyefi.openlogviewer.graphing.EntireGraphingPanel.init()2710
org.diyefi.openlogviewer.graphing.GraphPositionPanel.paintPositionData(Graphics2D,boolean)2760
org.diyefi.openlogviewer.OpenLogViewer.main(String[])2611
org.diyefi.openlogviewer.graphing.EntireGraphingPanel.mouseWheelMoved(MouseWheelEvent)24110
org.diyefi.openlogviewer.OpenLogViewer.Runnable.run()2460
org.diyefi.openlogviewer.graphing.GraphPositionPanel.getBestSnappingPosition(int)2270
org.diyefi.openlogviewer.decoder.CSVTypeLog.decodeLog()2171
org.diyefi.openlogviewer.decoder.FreeEMSBin.FreeEMSBin(File)2161
org.diyefi.openlogviewer.genericlog.GenericLog.GenericLog(String[],int,int)2131
org.diyefi.openlogviewer.graphing.GraphPositionPanel.paintPositionBar(Graphics2D,boolean)2150
org.diyefi.openlogviewer.OpenLogViewer.openAppWideProps(Properties)21100
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.addActiveHeaderPanel()2140
org.diyefi.openlogviewer.propertypanel.PropertiesPane.setupForLoad()21100
org.diyefi.openlogviewer.decoder.LogField.LogField(String,types,String[])20180
org.diyefi.openlogviewer.graphing.GraphPositionPanel.paint(Graphics)2070

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
3,093.007.332.410.19

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