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.slasoi.infrastructure.monitoring.jpa.entities.metrics3225619680065992
org.slasoi.infrastructure.monitoring.jpa.controller8801151000248
org.slasoi.infrastructure.monitoring.pubsub.messages353411036000648
org.slasoi.infrastructure.monitoring.jpa.entities92006570012279
org.slasoi.infrastructure.monitoring.pubsub.handlers321583004093
org.slasoi.infrastructure.monitoring.reporting322540005562
org.slasoi.infrastructure.monitoring.monitors.tashisensor5465380012124
org.slasoi.infrastructure.monitoring.jpa.managers9495170025248
org.slasoi.infrastructure.monitoring.computation5163340014124
org.slasoi.infrastructure.monitoring.pubsub15107319000217
org.slasoi.infrastructure.monitoring.qos224313201243486
org.slasoi.infrastructure.monitoring.monitors.ganglia21223526462
org.slasoi.infrastructure.monitoring.monitors.data661213000186
org.slasoi.infrastructure.monitoring22418100262
org.slasoi.infrastructure.monitoring.jpa.enums1632162000465
org.slasoi.infrastructure.monitoring.pubsub.listeners2415600262
org.slasoi.infrastructure.monitoring.utils91715500093
org.slasoi.infrastructure.monitoring.monitors22710000062
org.slasoi.infrastructure.monitoring.qos.events1196800031
org.slasoi.infrastructure.monitoring.pubsub.messages.events2145600062
org.slasoi.infrastructure.monitoring.pubsub.notifiers123600031
org.slasoi.infrastructure.monitoring.jpa.controller.exceptions362500093
org.slasoi.infrastructure.monitoring.exceptions6624000186
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
17813869367221302654516

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
org.slasoi.infrastructure.monitoring.reporting.ServiceSummaryReport4831910
org.slasoi.infrastructure.monitoring.pubsub.handlers.MonitoringDataRequestHandler4191300
org.slasoi.infrastructure.monitoring.jpa.controller.MetricJpaController2591000
org.slasoi.infrastructure.monitoring.monitors.tashisensor.TashiSensorHandler2471000
org.slasoi.infrastructure.monitoring.qos.MonitoringFeaturesBuilder22020020
org.slasoi.infrastructure.monitoring.computation.MetricsComputationHelper202400
org.slasoi.infrastructure.monitoring.monitors.ganglia.GangliaMonitoringEngine1871001
org.slasoi.infrastructure.monitoring.pubsub.SysInfoResponse171980
org.slasoi.infrastructure.monitoring.jpa.controller.ServiceJpaController1591000
org.slasoi.infrastructure.monitoring.jpa.managers.ViolationManager1451110
org.slasoi.infrastructure.monitoring.jpa.managers.MetricValueHistoryManager1421000
org.slasoi.infrastructure.monitoring.jpa.controller.VmJpaController1351000
org.slasoi.infrastructure.monitoring.pubsub.messages.GetHostsInfoResponse134520
org.slasoi.infrastructure.monitoring.jpa.entities.Metric1294200
org.slasoi.infrastructure.monitoring.jpa.controller.MetricTypeJpaController1251000
org.slasoi.infrastructure.monitoring.jpa.controller.MetricValueJpaController1201000
org.slasoi.infrastructure.monitoring.pubsub.messages.GetServiceViolationsResponse1201030
org.slasoi.infrastructure.monitoring.InfrastructureMonitoringAgent1132100
org.slasoi.infrastructure.monitoring.pubsub.handlers.ConfigureMonitoringHandler113700
org.slasoi.infrastructure.monitoring.pubsub.messages.RegisterServiceRequest1071520
org.slasoi.infrastructure.monitoring.monitors.tashisensor.TashiSensorMonitor1062600
org.slasoi.infrastructure.monitoring.jpa.controller.MetricValueHistoryJpaController1051000
org.slasoi.infrastructure.monitoring.pubsub.messages.GetServicesInfoResponse103620
org.slasoi.infrastructure.monitoring.pubsub.messages.GetServiceSLASummaryResponse991130
org.slasoi.infrastructure.monitoring.jpa.controller.ViolationJpaController971000
org.slasoi.infrastructure.monitoring.utils.JsonUtils91360
org.slasoi.infrastructure.monitoring.jpa.entities.MetricType833020
org.slasoi.infrastructure.monitoring.jpa.entities.Service782100
org.slasoi.infrastructure.monitoring.pubsub.listeners.MonitoringDataRequestListener78200
org.slasoi.infrastructure.monitoring.jpa.controller.AuditRecordJpaController741000

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
org.slasoi.infrastructure.monitoring.jpa.entities.Metric1294200
org.slasoi.infrastructure.monitoring.jpa.entities.MetricType833020
org.slasoi.infrastructure.monitoring.monitors.tashisensor.TashiSensorMonitor1062600
org.slasoi.infrastructure.monitoring.pubsub.messages.GetHostsInfoResponse.Vm612400
org.slasoi.infrastructure.monitoring.pubsub.messages.GetHostsInfoResponse.Host582300
org.slasoi.infrastructure.monitoring.jpa.entities.MetricValue592200
org.slasoi.infrastructure.monitoring.jpa.entities.Violation642200
org.slasoi.infrastructure.monitoring.InfrastructureMonitoringAgent1132100
org.slasoi.infrastructure.monitoring.jpa.entities.Service782100
org.slasoi.infrastructure.monitoring.jpa.entities.Vm602100
org.slasoi.infrastructure.monitoring.pubsub.messages.GetMetricHistoryResponse632010
org.slasoi.infrastructure.monitoring.qos.MonitoringFeaturesBuilder22020020
org.slasoi.infrastructure.monitoring.qos.events.ViolationEvent631900
org.slasoi.infrastructure.monitoring.reporting.ServiceSummaryReport4831910
org.slasoi.infrastructure.monitoring.pubsub.messages.GetServicesInfoResponse.ServiceInfo451800
org.slasoi.infrastructure.monitoring.pubsub.messages.GetServiceViolationsResponse.Violation461800
org.slasoi.infrastructure.monitoring.jpa.entities.AuditRecord481700
org.slasoi.infrastructure.monitoring.jpa.entities.MetricValueHistory451600
org.slasoi.infrastructure.monitoring.pubsub.messages.GetServicesInfoResponse.ResourceInfo411600
org.slasoi.infrastructure.monitoring.pubsub.messages.GetMetricHistoryRequest391500
org.slasoi.infrastructure.monitoring.pubsub.messages.RegisterServiceRequest1071520
org.slasoi.infrastructure.monitoring.monitors.GangliaTashiMonitor681400
org.slasoi.infrastructure.monitoring.pubsub.messages.GetServiceSLASummaryResponse.QoSTermInfo361400
org.slasoi.infrastructure.monitoring.pubsub.PubSubResponse381410
org.slasoi.infrastructure.monitoring.pubsub.SysInfoResponse.MetricInfo401400
org.slasoi.infrastructure.monitoring.monitors.data.MonitoringData371300
org.slasoi.infrastructure.monitoring.monitors.IMonitoringEngine151310
org.slasoi.infrastructure.monitoring.pubsub.handlers.MonitoringDataRequestHandler4191300
org.slasoi.infrastructure.monitoring.pubsub.messages.events.EventMessage431300
org.slasoi.infrastructure.monitoring.pubsub.messages.RegisterServiceRequest.AgreementTerm371300

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
49.819,367.000.227.790.12

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
org.slasoi.infrastructure.monitoring.jpa.controller.MetricJpaController.edit(Metric)111480
org.slasoi.infrastructure.monitoring.pubsub.handlers.MonitoringDataRequestHandler.processRequest(PubSubRequest)76220
org.slasoi.infrastructure.monitoring.monitors.tashisensor.TashiSensorHandler.processClusterConfigurationMessage(Document)7120
org.slasoi.infrastructure.monitoring.pubsub.listeners.MonitoringDataRequestListener.processMessage(MessageEvent)71190
org.slasoi.infrastructure.monitoring.jpa.controller.MetricJpaController.create(Metric)69190
org.slasoi.infrastructure.monitoring.pubsub.handlers.MonitoringDataRequestHandler.processRequest(SysInfoRequest)66110
org.slasoi.infrastructure.monitoring.reporting.ServiceSummaryReport.addMttxChart(Metric,Section)65100
org.slasoi.infrastructure.monitoring.monitors.ganglia.GangliaMonitoringEngine.parseHostData(Node,ClusterData,MonitoringData)64130
org.slasoi.infrastructure.monitoring.jpa.controller.ServiceJpaController.edit(Service)61250
org.slasoi.infrastructure.monitoring.qos.MonitoringFeaturesBuilder.getMonitoringFeatures()6011
org.slasoi.infrastructure.monitoring.computation.MetricsComputationHelper.computeMttf(Metric,ReportingPeriod)58180
org.slasoi.infrastructure.monitoring.computation.MetricsComputationHelper.computeMttv(Metric,ReportingPeriod)58180
org.slasoi.infrastructure.monitoring.computation.MetricsComputationHelper.computeMttr(Metric,ReportingPeriod)53150
org.slasoi.infrastructure.monitoring.jpa.controller.VmJpaController.edit(Vm)48200
org.slasoi.infrastructure.monitoring.jpa.managers.ViolationManager.getServiceViolationsFrequency(Service)45130
org.slasoi.infrastructure.monitoring.reporting.ServiceSummaryReport.addViolationsHistoryTable(ViolationType,String)45120
org.slasoi.infrastructure.monitoring.jpa.controller.MetricJpaController.destroy(Integer)44150
org.slasoi.infrastructure.monitoring.jpa.managers.MetricValueHistoryManager.getMetricHistory(Metric,Date,Date,Integer)44100
org.slasoi.infrastructure.monitoring.reporting.ServiceSummaryReport.createServiceAvailabilityChart(Metric)4450
org.slasoi.infrastructure.monitoring.reporting.ServiceSummaryReport.addViolationsChapter()4340
org.slasoi.infrastructure.monitoring.pubsub.handlers.MonitoringDataRequestHandler.processRequest(GetServicesInfoRequest)4260
org.slasoi.infrastructure.monitoring.jpa.controller.MetricTypeJpaController.edit(MetricType)41180
org.slasoi.infrastructure.monitoring.pubsub.listeners.ConfigurationChannelListener.processMessage(MessageEvent)40110
org.slasoi.infrastructure.monitoring.jpa.entities.metrics.AcceptableServiceViolations.compute(IMonitoringEngine)38140
org.slasoi.infrastructure.monitoring.pubsub.handlers.ConfigureMonitoringHandler.registerService(RegisterServiceRequest)3860
org.slasoi.infrastructure.monitoring.jpa.controller.MetricValueJpaController.edit(MetricValue)37190
org.slasoi.infrastructure.monitoring.jpa.controller.ServiceJpaController.create(Service)37100
org.slasoi.infrastructure.monitoring.jpa.entities.metrics.VmCpuSpeedAvailable.compute(IMonitoringEngine)3790
org.slasoi.infrastructure.monitoring.jpa.entities.metrics.ServiceSlaCompliance.compute(IMonitoringEngine)36180
org.slasoi.infrastructure.monitoring.monitors.tashisensor.TashiSensorHandler.createLayoutXml(Document)3630

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
9,367.005.401.970.01

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