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.opentrafficsim.road.network.factory.xml 26 58 1903 86 642 52 155
org.opentrafficsim.graphs 15 171 1402 212 943 74 56
org.opentrafficsim.road.gtu.lane 7 183 1028 188 679 137 113
org.opentrafficsim.road.network.lane 15 121 762 140 783 25 116
org.opentrafficsim.road.network.factory.osm.output 3 20 430 22 120 35 41
org.opentrafficsim.road.network.factory.osm 7 81 427 88 437 7 25
org.opentrafficsim.road.gtu.following 9 67 309 76 370 41 76
org.opentrafficsim.road.gtu.generator 3 32 293 35 204 25 62
org.opentrafficsim.road.network.factory.opendrive 5 7 277 12 96 9 70
org.opentrafficsim.road.car 2 14 240 52 296 11 52
org.opentrafficsim.road.network.route 6 15 237 25 143 33 33
org.opentrafficsim.road.network.factory 5 26 216 37 201 8 13
org.opentrafficsim.road.network.factory.osm.input 2 15 186 17 76 5 9
org.opentrafficsim.road.network.animation 4 11 164 15 90 11 29
org.opentrafficsim.road.gtu.animation 5 16 161 24 124 2 26
org.opentrafficsim.road.gtu.lane.changing 6 19 134 25 155 20 54
org.opentrafficsim.road.network.factory.xml.units 1 5 101 6 31 1 0
org.opentrafficsim.road.network.lane.changing 3 1 85 28 215 0 63
org.opentrafficsim.road.network.factory.osm.events 6 12 58 18 96 0 15
Classes total Methods total NCSS total Javadocs Javadoc lines Single lines comment Multi lines comment
130 874 8413 1106 5701 496 1008

Objects

Objects

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

TOP 30 classes containing the most NCSS.

Object NCSS Methods Classes Javadocs
org.opentrafficsim.road.gtu.lane.AbstractLaneBasedGTU 530 56 0 56
org.opentrafficsim.road.network.factory.osm.output.Convert 354 12 0 13
org.opentrafficsim.road.network.factory.xml.Links 297 5 1 8
org.opentrafficsim.graphs.ContourPlot 288 33 1 35
org.opentrafficsim.road.network.lane.Lane 282 37 1 42
org.opentrafficsim.graphs.TrajectoryPlot 200 25 2 36
org.opentrafficsim.graphs.FundamentalDiagram 192 29 4 38
org.opentrafficsim.graphs.FundamentalDiagramLane 189 28 3 36
org.opentrafficsim.road.network.factory.xml.CrossSectionElementTag 185 5 2 6
org.opentrafficsim.road.gtu.generator.AbstractGTUGenerator 157 24 0 25
org.opentrafficsim.road.gtu.lane.AbstractTrafficLight 149 44 0 45
org.opentrafficsim.road.network.factory.osm.OSMNetwork 139 22 0 23
org.opentrafficsim.road.car.LaneBasedIndividualCar 129 7 1 36
org.opentrafficsim.road.gtu.lane.LaneBlock 125 42 0 43
org.opentrafficsim.road.network.route.CompleteLaneBasedRouteNavigator 123 7 0 8
org.opentrafficsim.road.network.factory.xml.LinkTag 121 2 0 3
org.opentrafficsim.road.network.factory.opendrive.LinkTag 118 1 2 2
org.opentrafficsim.road.network.factory.osm.OSMLink 113 18 0 19
org.opentrafficsim.road.network.lane.CrossSectionElement 113 23 0 24
org.opentrafficsim.road.network.factory.xml.GeneratorTag 111 3 0 4
org.opentrafficsim.road.network.factory.osm.input.OSMParser 109 10 0 11
org.opentrafficsim.road.network.factory.xml.units.LaneAttributes 91 5 0 6
org.opentrafficsim.road.network.factory.xml.FillTag 86 2 0 3
org.opentrafficsim.road.network.animation.StripeAnimation 84 4 1 5
org.opentrafficsim.road.network.lane.AbstractSensor 81 12 0 13
org.opentrafficsim.road.network.lane.changing.OvertakingConditions 74 1 10 28
org.opentrafficsim.road.network.factory.osm.OSMNode 72 18 0 19
org.opentrafficsim.road.network.factory.xml.XmlNetworkLaneParser 69 3 0 4
org.opentrafficsim.road.gtu.following.AbstractGTUFollowingModel 68 4 0 5
org.opentrafficsim.road.car.LaneBasedTemplateCar 66 7 1 16

TOP 30 classes containing the most methods.

Object NCSS Methods Classes Javadocs
org.opentrafficsim.road.gtu.lane.AbstractLaneBasedGTU 530 56 0 56
org.opentrafficsim.road.gtu.lane.AbstractTrafficLight 149 44 0 45
org.opentrafficsim.road.gtu.lane.LaneBlock 125 42 0 43
org.opentrafficsim.road.network.lane.Lane 282 37 1 42
org.opentrafficsim.graphs.ContourPlot 288 33 1 35
org.opentrafficsim.graphs.FundamentalDiagram 192 29 4 38
org.opentrafficsim.graphs.FundamentalDiagramLane 189 28 3 36
org.opentrafficsim.road.gtu.lane.LaneBasedGTU 28 27 0 28
org.opentrafficsim.graphs.TrajectoryPlot 200 25 2 36
org.opentrafficsim.road.gtu.generator.AbstractGTUGenerator 157 24 0 25
org.opentrafficsim.road.network.lane.CrossSectionElement 113 23 0 24
org.opentrafficsim.road.network.factory.osm.OSMNetwork 139 22 0 23
org.opentrafficsim.road.network.factory.osm.OSMLink 113 18 0 19
org.opentrafficsim.road.network.factory.osm.OSMNode 72 18 0 19
org.opentrafficsim.graphs.Axis 51 15 0 16
org.opentrafficsim.road.gtu.following.SequentialFixedAccelerationModel 41 12 0 13
org.opentrafficsim.road.network.factory.osm.output.Convert 354 12 0 13
org.opentrafficsim.road.network.lane.AbstractSensor 81 12 0 13
org.opentrafficsim.road.network.factory.osm.input.OSMParser 109 10 0 11
org.opentrafficsim.road.gtu.following.FixedAccelerationModel 22 9 0 10
org.opentrafficsim.road.gtu.following.GTUFollowingModel 10 9 0 10
org.opentrafficsim.road.network.factory.osm.OSMRelation 27 9 0 10
org.opentrafficsim.road.network.factory.osm.OSMWay 28 9 0 10
org.opentrafficsim.graphs.PointerHandler 29 8 0 9
org.opentrafficsim.road.gtu.following.DualAccelerationStep 20 8 0 9
org.opentrafficsim.road.gtu.following.IDM 47 8 0 9
org.opentrafficsim.road.gtu.following.IDMPlus 43 8 0 9
org.opentrafficsim.road.network.factory.osm.output.LaneAttributes 33 8 0 9
org.opentrafficsim.road.network.lane.Sensor 9 8 0 9
org.opentrafficsim.road.car.LaneBasedIndividualCar 129 7 1 36

Averages.

NCSS average Program NCSS Classes average Methods average Javadocs average
53.67 8,413.00 0.29 6.72 8.51

Methods

Methods

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

TOP 30 Methods containing the most NCSS.

Methods NCSS CCN Javadocs
org.opentrafficsim.road.network.factory.xml.Links.applyRoadTypeToLink(LinkTag,XmlNetworkLaneParser,OTSDEVSSimulatorInterface) 143 60 1
org.opentrafficsim.road.network.factory.osm.output.Convert.makeStructure(OSMLink,WarningListener) 139 69 1
org.opentrafficsim.road.network.factory.opendrive.LinkTag.parseLink(NodeList,OpenDriveNetworkLaneParser,RoadTag) 105 53 1
org.opentrafficsim.road.network.factory.xml.Links.calculateNodeCoordinates(LinkTag,XmlNetworkLaneParser) 97 20 1
org.opentrafficsim.road.network.route.CompleteLaneBasedRouteNavigator.suitability(Lane,Length.Rel,GTUType,Time.Rel) 87 50 1
org.opentrafficsim.road.network.factory.xml.GeneratorTag.parseGenerator(Node,XmlNetworkLaneParser,LinkTag) 82 50 1
org.opentrafficsim.road.network.factory.xml.LinkTag.parseLinks(NodeList,XmlNetworkLaneParser) 75 43 1
org.opentrafficsim.road.network.factory.xml.FillTag.parseFill(Node,XmlNetworkLaneParser,LinkTag) 68 42 1
org.opentrafficsim.road.gtu.lane.AbstractLaneBasedGTU.move() 67 27 1
org.opentrafficsim.road.network.factory.xml.units.LaneAttributes.parseOvertakingConditions(String,XmlNetworkLaneParser) 67 52 1
org.opentrafficsim.graphs.ContourPlot.createChart(JFrame) 63 3 1
org.opentrafficsim.road.network.factory.xml.CrossSectionElementTag.parseLane(Node,XmlNetworkLaneParser,RoadTypeTag) 60 26 1
org.opentrafficsim.road.network.factory.osm.input.OSMParser.process(EntityContainer) 59 27 1
org.opentrafficsim.graphs.ContourPlot.addData(AbstractLaneBasedGTU,Lane) 55 19 1
org.opentrafficsim.road.network.factory.osm.OSMLink.OSMLink(OSMNode,OSMNode,OSMTag,double,WarningListener) 54 25 1
org.opentrafficsim.road.gtu.lane.changing.AbstractLaneChangeModel.computeLaneChangeAndAcceleration(LaneBasedGTU,HeadwayGTU,HeadwayGTU,HeadwayGTU,Speed.Abs,Acceleration.Rel,Acceleration.Rel,Acceleration.Rel) 47 31 1
org.opentrafficsim.road.network.animation.StripeAnimation.makePoints(Stripe,TYPE) 47 22 1
org.opentrafficsim.road.network.factory.xml.ListGeneratorTag.parseListGenerator(Node,XmlNetworkLaneParser,LinkTag) 44 31 1
org.opentrafficsim.road.network.factory.xml.XmlNetworkLaneParser.build(URL) 42 17 1
org.opentrafficsim.road.network.factory.xml.SensorTag.parseSensor(Node,XmlNetworkLaneParser,LinkTag) 41 25 1
org.opentrafficsim.graphs.FundamentalDiagram.FundamentalDiagram(String,Time.Rel,Lane,Length.Rel) 40 3 1
org.opentrafficsim.graphs.TrajectoryPlot.createChart(JFrame) 40 1 1
org.opentrafficsim.road.network.factory.osm.OSMNetwork.redundancyCheck() 40 24 1
org.opentrafficsim.graphs.FundamentalDiagramLane.FundamentalDiagramLane(String,Time.Rel,Lane,OTSDEVSSimulatorInterface) 37 3 1
org.opentrafficsim.road.gtu.generator.AbstractGTUGenerator.generate() 37 10 1
org.opentrafficsim.road.network.factory.xml.RoadTypeTag.parseRoadType(Node,XmlNetworkLaneParser) 37 15 1
org.opentrafficsim.road.network.factory.xml.TrafficLightTag.parseTrafficLight(Node,XmlNetworkLaneParser,LinkTag) 37 23 1
org.opentrafficsim.road.network.factory.osm.output.Convert.laneWidth(LaneAttributes,OSMLink,WarningListener) 36 18 1
org.opentrafficsim.road.network.factory.osm.output.Convert.makeLanes(OSMLink,OTSDEVSSimulatorInterface,WarningListener) 36 13 1
org.opentrafficsim.road.network.factory.xml.GTUTag.parseGTUs(NodeList,XmlNetworkLaneParser) 35 18 1

Averages.

Program NCSS NCSS average CCN average Javadocs average
8,413.00 6.53 3.16 0.99

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