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.graphing5101113826138101129
org.diyefi.openlogviewer174348213512857
org.diyefi.openlogviewer.decoder4414171911515969
org.diyefi.openlogviewer.optionpanel1240411003022
org.diyefi.openlogviewer.propertypanel84733215444
org.diyefi.openlogviewer.genericlog34525815882444
org.diyefi.openlogviewer.filefilters618100000132
org.diyefi.openlogviewer.coloring2178014149
org.diyefi.openlogviewer.utils242827044
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
59356324677408347590

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
org.diyefi.openlogviewer.graphing.EntireGraphingPanel40150015
org.diyefi.openlogviewer.optionpanel.OptionFrameV2382760
org.diyefi.openlogviewer.graphing.SingleGraphPanel2981909
org.diyefi.openlogviewer.OpenLogViewer2761762
org.diyefi.openlogviewer.propertypanel.PropertiesPane2421450
org.diyefi.openlogviewer.decoder.FreeEMSBin2311009
org.diyefi.openlogviewer.graphing.GraphPositionPanel2051101
org.diyefi.openlogviewer.PlayBarPanel15411911
org.diyefi.openlogviewer.genericlog.GenericDataElement1253107
org.diyefi.openlogviewer.genericlog.GenericLog1151328
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.graphing.MultiGraphLayeredPane821101
org.diyefi.openlogviewer.propertypanel.PropertiesPane.PropertyPanel79710
org.diyefi.openlogviewer.decoder.CSVTypeLog60403
org.diyefi.openlogviewer.propertypanel.SingleProperty531701
org.diyefi.openlogviewer.coloring.MarkedColor401301
org.diyefi.openlogviewer.coloring.InitialLineColoring33400
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ActiveHeaderLabel.MouseListener33500
org.diyefi.openlogviewer.OpenLogViewer.Runnable22100
org.diyefi.openlogviewer.filefilters.MSTypeFileFilter21300
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.MouseMotionAdapter18100
org.diyefi.openlogviewer.decoder.AbstractDecoder16607
org.diyefi.openlogviewer.utils.MathUtils16201
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.EntireGraphingPanel40150015
org.diyefi.openlogviewer.genericlog.GenericDataElement1253107
org.diyefi.openlogviewer.decoder.LogField892110
org.diyefi.openlogviewer.graphing.SingleGraphPanel2981909
org.diyefi.openlogviewer.OpenLogViewer2761762
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.GenericLog1151328
org.diyefi.openlogviewer.graphing.GraphPositionPanel2051101
org.diyefi.openlogviewer.graphing.MultiGraphLayeredPane821101
org.diyefi.openlogviewer.PlayBarPanel15411911
org.diyefi.openlogviewer.decoder.FreeEMSBin2311009
org.diyefi.openlogviewer.graphing.InfoPanel931000
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
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ContainerListener14200

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
58.153,246.000.596.031.31

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
org.diyefi.openlogviewer.PlayBarPanel.initComponents()10311
org.diyefi.openlogviewer.graphing.SingleGraphPanel.initGraphZoomedOut()93241
org.diyefi.openlogviewer.decoder.FreeEMSBin.run()90181
org.diyefi.openlogviewer.graphing.EntireGraphingPanel.keyPressed(KeyEvent)79290
org.diyefi.openlogviewer.OpenLogViewer.OpenLogViewer()6610
org.diyefi.openlogviewer.graphing.SingleGraphPanel.paintDataPointsAndTraces(Graphics)64250
org.diyefi.openlogviewer.graphing.InfoPanel.paint(Graphics)58130
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.GraphPositionPanel.paintPositionData(Graphics2D,boolean)41130
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.updateFromLog(GenericLog)3870
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.ModifyGraphPane.ModifyGraphPane()3510
org.diyefi.openlogviewer.graphing.GraphPositionPanel.paintPositionBar(Graphics2D,boolean)34120
org.diyefi.openlogviewer.genericlog.GenericLog.incrementPosition()3350
org.diyefi.openlogviewer.optionpanel.OptionFrameV2.remActiveHeaderPanel(ActionEvent)32120
org.diyefi.openlogviewer.graphing.EntireGraphingPanel.init()3110
org.diyefi.openlogviewer.graphing.GraphPositionPanel.roundDecimalsOnlyToTwoSignificantFigures(BigDecimal)30101
org.diyefi.openlogviewer.graphing.SingleGraphPanel.getMouseInfoZoomedOut(int)2691
org.diyefi.openlogviewer.graphing.EntireGraphingPanel.mouseWheelMoved(MouseWheelEvent)24110
org.diyefi.openlogviewer.OpenLogViewer.main(String[])2411
org.diyefi.openlogviewer.graphing.SingleGraphPanel.initGraphZoomed()2271
org.diyefi.openlogviewer.OpenLogViewer.Runnable.run()2260
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.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

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
3,246.007.822.550.20

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