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.opendrive 33 62 2025 98 674 87 299
org.opentrafficsim.road.network.factory.xml 27 60 2000 89 657 69 166
org.opentrafficsim.graphs 15 171 1442 212 947 86 43
org.opentrafficsim.road.gtu.lane.tactical 8 55 1424 63 538 235 86
org.opentrafficsim.road.network.factory 9 47 1318 74 555 110 152
org.opentrafficsim.road.network.lane 20 163 1078 187 1155 56 126
org.opentrafficsim.road.gtu.lane 9 91 1000 128 649 117 94
org.opentrafficsim.road.gtu.lane.tactical.following 13 119 524 119 597 51 65
org.opentrafficsim.road.test 8 46 510 76 262 16 19
org.opentrafficsim.road.gtu.lane.perception 7 105 477 112 573 27 46
org.opentrafficsim.road.gtu.generator 6 44 453 51 325 46 67
org.opentrafficsim.road.network.factory.osm.output 3 20 434 22 122 36 43
org.opentrafficsim.road.network.factory.osm 7 81 427 88 437 7 26
org.opentrafficsim.road.gtu.lane.object 9 44 321 63 256 14 26
org.opentrafficsim.road.network.factory.opendrive.communicationRTI 7 29 319 36 148 26 26
org.opentrafficsim.road.gtu.lane.tactical.lmrs 12 24 228 33 195 43 44
org.opentrafficsim.road.network.factory.opendrive.data 6 71 216 77 248 25 0
org.opentrafficsim.road.network.factory.osm.input 2 15 186 17 76 5 10
org.opentrafficsim.road.network.animation 4 11 168 15 92 8 31
org.opentrafficsim.road.gtu.lane.tactical.lanechangemobil 6 19 148 25 152 24 31
org.opentrafficsim.road.gtu.lane.plan.operational 2 12 120 14 146 7 16
org.opentrafficsim.road.gtu.lane.tactical.directedlanechange 6 18 115 24 148 9 30
org.opentrafficsim.road.gtu.lane.object.animation 4 14 109 18 90 2 15
org.opentrafficsim.road.network.factory.xml.units 1 5 101 6 31 1 0
org.opentrafficsim.road.gtu.strategical.route 1 8 86 9 31 32 13
org.opentrafficsim.road.gtu.animation 2 6 85 8 48 4 15
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 16
org.opentrafficsim.road.network.factory.vissim 1 3 53 4 29 85 15
org.opentrafficsim.road.gtu.lane.driver 1 9 45 10 41 0 18
org.opentrafficsim.road.gtu.strategical 3 11 41 14 53 0 11
org.opentrafficsim.road.object.lane 1 4 11 5 31 0 11
org.opentrafficsim.road.gtu.lane.tactical.fourwaystop 0 0 1 0 0 0 4
org.opentrafficsim.road.gtu.strategical.od 0 0 1 0 0 0 11
Classes total Methods total NCSS total Javadocs Javadoc lines Single lines comment Multi lines comment
242 1380 15609 1743 9617 1228 1638

Objects

Objects

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

TOP 30 classes containing the most NCSS.

Object NCSS Methods Classes Javadocs
org.opentrafficsim.road.network.factory.opendrive.RoadTag 432 6 0 7
org.opentrafficsim.road.network.factory.osm.output.Convert 354 12 0 13
org.opentrafficsim.road.network.factory.xml.Links 353 5 1 8
org.opentrafficsim.road.network.lane.Lane 348 44 1 49
org.opentrafficsim.road.gtu.lane.AbstractLaneBasedGTU 311 26 0 27
org.opentrafficsim.road.gtu.lane.CopyOfAbstractLaneBasedGTU 306 26 0 27
org.opentrafficsim.road.gtu.lane.perception.AbstractLanePerception 295 48 0 49
org.opentrafficsim.graphs.ContourPlot 290 33 1 35
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedCFLCTacticalPlanner 284 11 0 12
org.opentrafficsim.road.gtu.lane.tactical.AbstractLaneBasedTacticalPlanner 251 10 0 11
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedGTUFollowingLaneChangeTacticalPlanner2 247 7 0 8
org.opentrafficsim.road.network.factory.TestOpenDriveParserNoRTINew 215 7 2 15
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedGTUFollowingLaneChangeTacticalPlanner 208 7 0 8
org.opentrafficsim.road.network.factory.TestOpenDriveParserSV 205 7 2 12
org.opentrafficsim.graphs.TrajectoryPlot 203 25 2 36
org.opentrafficsim.road.network.factory.TestOpenDriveParserNoRTI 203 7 2 12
org.opentrafficsim.road.network.factory.TestOpenDriveParserNASA 200 7 2 12
org.opentrafficsim.graphs.FundamentalDiagram 194 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 178 23 0 24
org.opentrafficsim.road.network.lane.CrossSectionElement 171 26 0 27
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedGTUFollowingChange0TacticalPlanner 165 8 0 9
org.opentrafficsim.road.network.factory.opendrive.PlanViewTag 160 6 0 7
org.opentrafficsim.road.network.factory.osm.OSMNetwork 139 22 0 23
org.opentrafficsim.road.network.factory.xml.LinkTag 131 3 0 4
org.opentrafficsim.road.gtu.lane.LaneBasedIndividualGTU 122 6 1 35
org.opentrafficsim.road.gtu.lane.tactical.lmrs.LMRS 122 9 3 7
org.opentrafficsim.road.network.factory.osm.OSMLink 113 18 0 19
org.opentrafficsim.road.network.factory.xml.GeneratorTag 113 3 0 4

TOP 30 classes containing the most methods.

Object NCSS Methods Classes Javadocs
org.opentrafficsim.road.gtu.lane.perception.AbstractLanePerception 295 48 0 49
org.opentrafficsim.road.network.lane.Lane 348 44 1 49
org.opentrafficsim.graphs.ContourPlot 290 33 1 35
org.opentrafficsim.road.gtu.lane.perception.LanePerception 34 33 0 34
org.opentrafficsim.graphs.FundamentalDiagram 194 29 4 38
org.opentrafficsim.graphs.FundamentalDiagramLane 189 28 3 36
org.opentrafficsim.road.gtu.lane.object.AbstractTrafficLight 112 27 2 38
org.opentrafficsim.road.gtu.lane.AbstractLaneBasedGTU 311 26 0 27
org.opentrafficsim.road.gtu.lane.CopyOfAbstractLaneBasedGTU 306 26 0 27
org.opentrafficsim.road.network.lane.CrossSectionElement 171 26 0 27
org.opentrafficsim.graphs.TrajectoryPlot 203 25 2 36
org.opentrafficsim.road.gtu.generator.AbstractGTUGenerator 178 23 0 24
org.opentrafficsim.road.network.factory.osm.OSMNetwork 139 22 0 23
org.opentrafficsim.road.network.factory.opendrive.data.RTIToOTSData 53 20 0 21
org.opentrafficsim.road.network.factory.opendrive.data.OTSToRTIData 71 19 0 20
org.opentrafficsim.road.network.factory.osm.OSMLink 113 18 0 19
org.opentrafficsim.road.network.factory.osm.OSMNode 72 18 0 19
org.opentrafficsim.road.gtu.lane.tactical.following.AbstractCarFollowingModel 42 17 0 5
org.opentrafficsim.road.gtu.lane.LaneBasedGTU 17 16 0 17
org.opentrafficsim.graphs.Axis 51 15 0 16
org.opentrafficsim.road.gtu.lane.tactical.following.GTUFollowingModelOld 16 15 0 16
org.opentrafficsim.road.network.factory.opendrive.communicationRTI.SubjectiveCar 39 14 0 15
org.opentrafficsim.road.gtu.lane.perception.LaneStructureRecord 49 13 0 14
org.opentrafficsim.road.gtu.lane.tactical.following.SequentialFixedAccelerationModel 45 13 0 14
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.gtu.lane.tactical.LaneBasedCFLCTacticalPlanner 284 11 0 12
org.opentrafficsim.road.gtu.generator.LaneBasedGTUGenerator 87 10 1 12
org.opentrafficsim.road.gtu.lane.tactical.AbstractLaneBasedTacticalPlanner 251 10 0 11
org.opentrafficsim.road.gtu.lane.tactical.following.FixedAccelerationModel 24 10 0 11

Averages.

NCSS average Program NCSS Classes average Methods average Javadocs average
51.44 15,609.00 0.26 5.70 7.20

Methods

Methods

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

TOP 30 Methods containing the most NCSS.

Methods NCSS CCN Javadocs
org.opentrafficsim.road.network.factory.opendrive.RoadTag.generateRegularRoads(RoadTag,OTSDEVSSimulatorInterface,OpenDriveNetworkLaneParser) 215 36 1
org.opentrafficsim.road.network.factory.TestOpenDriveParserSV.TestOpenDriveModel.constructModel(OTSSimTimeDouble) 176 46 1
org.opentrafficsim.road.network.factory.TestOpenDriveParserNoRTI.TestOpenDriveModel.constructModel(OTSSimTimeDouble) 174 45 1
org.opentrafficsim.road.network.factory.TestOpenDriveParserNASA.TestOpenDriveModel.constructModel(OTSSimTimeDouble) 171 46 1
org.opentrafficsim.road.network.factory.xml.Links.applyRoadTypeToLink(LinkTag,XmlNetworkLaneParser,OTSDEVSSimulatorInterface) 155 65 1
org.opentrafficsim.road.network.factory.osm.output.Convert.makeStructure(OSMLink,WarningListener) 139 69 1
org.opentrafficsim.road.network.factory.xml.Links.calculateNodeCoordinates(LinkTag,XmlNetworkLaneParser) 110 25 1
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedGTUFollowingLaneChangeTacticalPlanner2.generateOperationalPlan(GTU,Time.Abs,DirectedPoint) 103 42 1
org.opentrafficsim.road.network.factory.opendrive.LinkTag.parseLink(NodeList,OpenDriveNetworkLaneParser,RoadTag) 99 51 1
org.opentrafficsim.road.network.factory.TestOpenDriveParserNoRTINew.TestOpenDriveModel.constructModel(OTSSimTimeDouble) 93 9 1
org.opentrafficsim.road.network.factory.opendrive.RoadTag.buildSubLinks(RoadTag,OTSDEVSSimulatorInterface,OpenDriveNetworkLaneParser) 88 34 1
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedCFLCTacticalPlanner.generateOperationalPlan(GTU,Time.Abs,DirectedPoint) 83 33 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) 82 47 1
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedCFLCTacticalPlanner.suitability(Lane,Length.Rel,LaneBasedGTU,Time.Rel) 78 43 1
org.opentrafficsim.road.gtu.lane.tactical.lmrs.LMRS.generateOperationalPlan(GTU,Abs,DirectedPoint) 78 41 0
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedGTUFollowingChange0TacticalPlanner.generateOperationalPlan(GTU,Time.Abs,DirectedPoint) 76 38 1
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedGTUFollowingLaneChangeTacticalPlanner.makeLaneChangePlanMobil(LaneBasedGTU,LanePerception,LanePathInfo,LateralDirectionality) 74 27 1
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedGTUFollowingLaneChangeTacticalPlanner2.makeLaneChangePlanMobil(LaneBasedGTU,LanePerception,LanePathInfo,LateralDirectionality) 74 27 1
org.opentrafficsim.road.gtu.lane.tactical.AbstractLaneBasedTacticalPlanner.determineNextSplit(LaneBasedGTU,Length.Rel) 73 30 1
org.opentrafficsim.road.network.factory.xml.FillTag.parseFill(Node,XmlNetworkLaneParser,LinkTag) 68 42 1
org.opentrafficsim.road.gtu.lane.tactical.LaneBasedGTUFollowingLaneChangeTacticalPlanner.generateOperationalPlan(GTU,Time.Abs,DirectedPoint) 67 33 1
org.opentrafficsim.road.network.factory.xml.units.LaneAttributes.parseOvertakingConditions(String,XmlNetworkLaneParser) 67 52 1
org.opentrafficsim.road.gtu.lane.tactical.AbstractLaneBasedTacticalPlanner.buildLanePathInfo(LaneBasedGTU,Length.Rel,Lane,double,GTUDirectionality) 65 23 1
org.opentrafficsim.road.gtu.lane.AbstractLaneBasedGTU.scheduleTriggers() 64 24 1
org.opentrafficsim.road.gtu.lane.CopyOfAbstractLaneBasedGTU.scheduleTriggers() 64 24 1
org.opentrafficsim.graphs.ContourPlot.createChart(JFrame) 63 3 1
org.opentrafficsim.road.network.factory.opendrive.Controller.unBlock() 60 26 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

Averages.

Program NCSS NCSS average CCN average Javadocs average
15,609.00 7.51 3.25 0.97

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