JavaNCSS Metric Results

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

The following document contains the results of a JavaNCSS metric analysis.
JavaNCSS web site.

Packages

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

Packages sorted by NCSS.

Package Classes Methods NCSS Javadocs Javadoc lines Single lines comment Multi lines comment
com.atlassian.jira.web.action.issue 20 192 1334 86 365 169 182
com.atlassian.jira.plugin.report.workload 15 130 1014 80 327 68 65
com.atlassian.jira.issue.worklog 7 100 661 49 279 25 104
com.atlassian.jira.plugin.report.provider 18 108 496 82 394 14 114
com.atlassian.jira.issue.customfields.impl 9 63 485 30 146 50 0
com.atlassian.jira.util 6 56 459 14 80 40 37
com.atlassian.jira.servlet 7 102 448 13 63 105 42
com.atlassian.jira.util.entities 9 71 424 54 194 15 64
com.atlassian.jira.jelly.tag.issue 4 49 383 0 0 30 12
com.atlassian.jira.portal.portlets 4 21 370 12 65 36 18
com.atlassian.jira.web.action.admin.link.scheme 11 78 353 11 75 4 9
com.atlassian.jira.project 7 90 337 53 220 19 106
com.atlassian.jira.web.action.admin.entities 6 79 334 25 91 55 0
com.atlassian.jira.workflow.function 10 54 331 19 90 9 18
com.atlassian.jira.jelly.tag 10 54 316 26 85 18 6
com.atlassian.jira.workflow.validator 9 31 300 19 103 15 1
com.atlassian.jira.issue.link 9 63 295 31 121 15 0
com.atlassian.jira.export 6 36 283 25 101 24 21
com.atlassian.jira.workflow.condition 10 15 258 13 82 4 22
com.atlassian.jira.upgrade 5 44 248 32 174 43 17
com.atlassian.cache.servlet.resolver 2 8 246 5 15 8 17
com.atlassian.jira.plugin.report.workload.provider 5 13 229 16 57 5 10
com.atlassian.jira.bc.issue.worklog 1 28 228 24 117 13 9
com.atlassian.jira.plugin.report.issue 2 17 225 6 20 73 2
com.atlassian.jira.portal 10 22 215 25 112 2 40
com.atlassian.jira.web.action.admin.worklogtypes 4 45 207 2 2 12 3
com.atlassian.jira.workflow 5 17 203 10 59 5 3
com.atlassian.jira.workflow.transition 4 22 201 11 60 18 19
com.atlassian.jira.group 7 79 200 17 50 16 52
com.atlassian.jira.config 5 29 196 0 0 5 6
com.atlassian.jira.service 4 25 173 21 91 11 22
fr.kaamelot.reporter 6 58 167 30 125 3 69
com.atlassian.jira.plugin.report 2 34 156 7 37 5 22
com.atlassian.jira.service.services.export 1 9 150 10 48 5 2
com.atlassian.jira.web.dwr 3 16 149 11 83 7 5
com.atlassian.jira.plugin.issuetabpanel 2 21 145 3 16 3 0
com.atlassian.jira.issue.workers 2 24 137 11 49 9 64
com.atlassian.jira.referentiel.entities 4 28 126 19 68 20 16
com.atlassian.jira.plugin 4 15 125 7 35 3 3
com.atlassian.jira.project.impl 3 14 122 9 49 6 17
com.atlassian.jira.plugin.report.stats 1 13 121 6 23 1 4
com.atlassian.jira.plugins.projectpanel.admin 1 14 121 4 17 1 18
com.atlassian.jira.event.issue 3 24 119 3 9 10 0
com.atlassian.jira.plugin.issueoperation 4 18 119 8 43 0 0
com.atlassian.jira.web.action.admin.translation 2 12 118 4 23 4 1
com.atlassian.jira.service.export 1 12 108 8 35 9 16
com.atlassian.jira.workflow.transition.summary 2 31 100 6 34 1 0
com.atlassian.jira.config.settings.managers 6 34 93 13 40 3 0
com.atlassian.servlet 1 8 93 4 32 42 1
com.atlassian.jira.web.action.admin.plugins.settings 3 15 87 2 8 9 2
com.atlassian.jira.jelly 2 15 85 1 3 6 3
com.atlassian.jira.web.bean 3 21 81 2 9 2 2
com.atlassian.jira.values 6 9 77 13 50 0 19
com.atlassian.jira.bc.manageable.search 3 10 75 9 32 20 0
com.atlassian.jira.imports 3 12 69 6 32 0 4
com.atlassian.jira.workflow.function.issue 3 5 69 8 52 0 6
com.atlassian.jira.workflow.condition.group 5 10 67 5 34 2 58
com.atlassian.jira.config.settings.providers 4 17 64 4 20 4 0
com.atlassian.jira.migrate 2 17 62 12 37 3 18
com.atlassian.jira.issue.action 2 13 60 2 14 6 0
com.atlassian.jira.issue.search.parameters.filter 2 8 59 8 39 2 11
com.atlassian.jira.issue.search 4 9 57 4 28 167 0
com.atlassian.jira.web.actions 1 9 56 2 15 1 16
com.atlassian.jira.plugin.webfragment.conditions 3 11 55 10 42 0 0
com.atlassian.jira.group.impl 4 16 54 10 26 0 40
com.atlassian.jira.issue.worklogtype 3 22 54 0 0 20 0
com.atlassian.jira.bc.user.search 2 4 52 4 19 2 14
com.atlassian.jira.workflow.transition.step 2 23 48 0 0 9 0
com.atlassian.jira.function.issue 1 6 47 4 10 2 10
com.atlassian.jira.upgrade.tasks 1 5 44 1 6 0 0
com.atlassian.jira.web.action.admin 1 3 41 0 0 0 0
com.atlassian.jira.issue.status 1 20 40 1 7 11 0
com.atlassian.jira.web.action.admin.user 1 7 37 1 6 0 1
com.atlassian.jira.config.settings.directory 2 10 34 0 0 0 0
com.atlassian.jira.web.action.admin.manageable 2 8 34 1 7 0 2
com.atlassian.jira.plugin.webfragment.contextproviders 2 7 31 2 13 0 0
com.atlassian.jira.bc 2 8 27 6 20 0 0
com.atlassian.jira.issue.operations 1 3 27 2 13 0 5
com.atlassian.jira.config.settings 1 8 26 0 0 7 0
com.atlassian.jira.plugin.workflow 1 6 25 0 0 0 0
com.atlassian.jira.web.action.util.portal 1 6 23 2 13 0 11
com.atlassian.jira.issue.managers 1 3 22 3 17 0 0
com.atlassian.jira.jelly.tag.project 1 3 21 0 0 3 3
com.atlassian.jira.permission 1 4 19 2 11 23 0
com.atlassian.jira.web.action.project 1 16 18 1 10 4 0
com.atlassian.jira.security 1 1 17 0 0 0 5
com.atlassian.jira.issue.helper 1 1 15 2 13 0 0
fr.kaamelot.reporter.exception 1 5 15 6 25 4 4
com.atlassian.jira.issue.search.parameters.lucene 1 3 13 1 7 0 5
com.atlassian.jira.web.action.admin.group 1 2 11 0 0 0 1
fr.kaamelot.addon 1 3 11 4 11 0 2
com.atlassian.jira.bc.search 1 3 7 3 18 0 0
com.atlassian.jira.scheme 2 2 7 2 14 0 0
com.atlassian.jira.issue.customfields 1 2 6 1 6 0 0
com.atlassian.jira.web.action.admin.kaamelot 1 1 6 0 0 0 1
com.atlassian.jira.scheduler 1 1 5 2 5 0 2
com.atlassian.jira.addon.config.properties 1 0 4 1 7 2 8
com.atlassian.jira.config.settings.validators 1 2 4 0 0 0 0
com.atlassian.jira.issue 1 1 4 2 12 0 0
com.atlassian.jira.i18n 1 0 2 1 3 0 0
. 0 0 0 0 0 0 0
Classes total Methods total NCSS total Javadocs Javadoc lines Single lines comment Multi lines comment
373 2522 15595 1127 5118 1367 1512

Objects

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

TOP 30 classes containing the most NCSS.

Object NCSS Methods Classes Javadocs
com.atlassian.jira.issue.worklog.WorklogHelper 432 65 1 43
com.atlassian.jira.util.entities.EntitiesHelper 229 28 0 14
com.atlassian.jira.plugin.report.workload.WorkloadHelper 225 14 2 12
com.atlassian.jira.util.RelativeDatetools 195 20 0 0
com.atlassian.cache.servlet.resolver.DwrPluginContentResolver 188 4 3 5
com.atlassian.jira.bc.issue.worklog.ExtendedWorklogService 185 28 0 24
com.atlassian.jira.plugin.report.issue.AIssueReport 173 14 3 6
com.atlassian.jira.util.DateTools 173 25 0 5
com.atlassian.jira.plugin.report.workload.AWorkloadNameTranslator 164 17 0 8
com.atlassian.jira.servlet.DWRServlet 159 9 3 3
com.atlassian.jira.jelly.tag.issue.TransitionWorkflowExtended 157 16 0 0
com.atlassian.jira.upgrade.AAddOnUpgradeManager 151 25 0 23
com.atlassian.jira.portal.portlets.FastWorklogPortlet 148 7 0 6
com.atlassian.jira.project.AAdminProjectManager 145 25 1 8
com.atlassian.jira.workflow.function.ATransitionFunction 141 26 0 4
com.atlassian.jira.web.action.issue.EditIssueWorkLog 127 31 0 16
com.atlassian.jira.plugin.report.AbstractIssueBeanHelper 122 33 0 5
com.atlassian.jira.service.services.export.RollOverExportService 121 9 2 10
com.atlassian.jira.web.action.issue.CreateAndLinkIssue 119 22 0 1
fr.kaamelot.reporter.AGroupData 119 36 0 21
com.atlassian.jira.plugin.report.workload.WorkloadProjectGroupData 117 17 1 25
com.atlassian.jira.plugin.report.provider.ReportElementOnCustomField 112 20 0 11
com.atlassian.jira.web.action.admin.entities.AbstractDeleteEntity 106 27 0 7
com.atlassian.jira.web.action.admin.link.scheme.EditLinkSchemeEntities 106 22 0 1
com.atlassian.jira.issue.link.DefaultLinkSchemeManager 104 23 0 20
com.atlassian.jira.web.action.issue.ActionWorklogHelperForAjax 103 16 0 8
com.atlassian.jira.workflow.ExtendedWorkflowManager 100 9 0 4
com.atlassian.jira.servlet.EmptyRequest 98 50 0 1
com.atlassian.jira.plugins.projectpanel.admin.ProjectGroupAdminTabPanel 95 14 1 4
com.atlassian.jira.plugin.report.workload.AWorkloadReport 94 14 0 5

TOP 30 classes containing the most methods.

Object NCSS Methods Classes Javadocs
com.atlassian.jira.issue.worklog.WorklogHelper 432 65 1 43
com.atlassian.jira.servlet.EmptyRequest 98 50 0 1
fr.kaamelot.reporter.AGroupData 119 36 0 21
com.atlassian.jira.plugin.report.AbstractIssueBeanHelper 122 33 0 5
com.atlassian.jira.web.action.issue.EditIssueWorkLog 127 31 0 16
com.atlassian.jira.servlet.EmptyResponse 42 30 0 0
com.atlassian.jira.bc.issue.worklog.ExtendedWorklogService 185 28 0 24
com.atlassian.jira.util.entities.EntitiesHelper 229 28 0 14
com.atlassian.jira.web.action.admin.entities.AbstractDeleteEntity 106 27 0 7
com.atlassian.jira.project.IManageableAsProject 27 26 0 26
com.atlassian.jira.workflow.function.ATransitionFunction 141 26 0 4
com.atlassian.jira.group.AGroupProvider 73 25 0 8
com.atlassian.jira.project.AAdminProjectManager 145 25 1 8
com.atlassian.jira.upgrade.AAddOnUpgradeManager 151 25 0 23
com.atlassian.jira.util.DateTools 173 25 0 5
com.atlassian.jira.issue.link.DefaultLinkSchemeManager 104 23 0 20
com.atlassian.jira.plugin.report.workload.WorkloadByWorklogTypeGroupData 84 22 0 7
com.atlassian.jira.web.action.admin.entities.AbstractEntityBrowser 66 22 0 12
com.atlassian.jira.web.action.admin.link.scheme.EditLinkSchemeEntities 106 22 0 1
com.atlassian.jira.web.action.issue.CreateAndLinkIssue 119 22 0 1
com.atlassian.jira.issue.worklogtype.NotDefinedWorklogType 37 21 0 0
com.atlassian.jira.issue.status.RemovedStatusImpl 35 20 0 1
com.atlassian.jira.issue.worklog.WorklogAttributes 75 20 0 2
com.atlassian.jira.plugin.report.provider.ReportElementOnCustomField 112 20 0 11
com.atlassian.jira.util.RelativeDatetools 195 20 0 0
com.atlassian.jira.group.IGroupProvider 20 19 0 1
com.atlassian.jira.web.action.admin.entities.AbstractViewEntity 51 19 0 2
com.atlassian.jira.workflow.transition.summary.TransitionSummary 51 18 0 5
com.atlassian.jira.plugin.report.workload.AWorkloadNameTranslator 164 17 0 8
com.atlassian.jira.plugin.report.workload.WorkloadProjectGroupData 117 17 1 25

Averages.

NCSS average Program NCSS Classes average Methods average Javadocs average
32.52 15,595.00 0.06 6.76 3.02

Methods

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

TOP 30 Methods containing the most NCSS.

Methods NCSS CCN Javadocs
com.atlassian.jira.util.RelativeDatetools.parseRelativeDate(Calendar,String) 64 22 0
com.atlassian.jira.plugin.report.workload.AWorkloadNameTranslator.translate(String,AGroupData) 63 20 1
com.atlassian.jira.plugin.report.issue.AIssueReport.configureAgregation(AGroupData,List,int) 50 1 1
com.atlassian.jira.export.RequestExportManager.writeData(Issue) 49 22 0
com.atlassian.jira.plugin.report.issue.AIssueReport.generateReportHtml(ProjectActionSupport,Map) 47 7 0
com.atlassian.jira.plugin.report.workload.AWorkloadReport.generateReport(ProjectActionSupport,Map,boolean) 45 9 1
com.atlassian.jira.portal.portlets.FastWorklogPortlet.getVelocityDedicatedPortletParams(PortletConfiguration) 41 7 0
com.atlassian.jira.plugin.report.workload.WorkloadHelper.getAddedExpr(ReportElement,Map,Map) 40 12 1
com.atlassian.jira.web.action.issue.ExtendedUpdateWorklogForAjax.correctWorklog(String,String,String,String,String,String,String,String,String,boolean) 38 12 0
com.atlassian.jira.portal.portlets.FastWorklogPortlet.getVelocityParams(PortletConfiguration) 37 6 1
com.atlassian.jira.service.services.export.RollOverExportService.removeOldBackup() 37 9 1
com.atlassian.jira.util.entities.EntitiesHelper.addCustomFields(String,String,String,String,String,List,List,boolean) 37 5 0
com.atlassian.jira.issue.worklog.WorklogHelper.updateWorklog(IssueWorklog,Map,User) 35 14 0
com.atlassian.jira.plugin.report.workload.WorkloadHelper.getFilteredWorkLogs(User,ReportDefinition,Map,Map) 35 9 0
com.atlassian.jira.plugin.report.workload.WorkloadHelper.getPathProvider(ReportDefinition) 34 1 0
com.atlassian.jira.plugin.issuetabpanel.WorklogTabPanel.getVelocityParameters(Issue) 32 2 0
com.atlassian.jira.workflow.ExtendedWorkflowManager.isDeletable(Issue) 30 11 1
com.atlassian.jira.workflow.transition.DefaultTransitionManager.getStatusChanges(Issue,Timestamp) 30 3 1
com.atlassian.jira.issue.worklog.WorklogHelper.getWorklogsOnIssues(User,Date,List) 29 8 0
com.atlassian.jira.workflow.validator.RegExpCustomFieldValidator.validateShownFields(Map,Map,PropertySet) 29 10 1
com.atlassian.jira.issue.worklog.WorklogHelper.getWorklogs(Map) 28 8 1
com.atlassian.jira.workflow.condition.ActivityCondition.passesCondition(Map,Map,PropertySet) 27 11 0
com.atlassian.jira.bc.issue.worklog.ExtendedWorklogService.isWorklogUpdatable(Worklog) 26 7 1
com.atlassian.jira.jelly.tag.issue.TransitionWorkflowExtended.getTransitionParameters(Issue) 26 12 0
com.atlassian.jira.plugin.report.workload.provider.WorkloadReportDefinitionProvider.initReports() 26 1 1
com.atlassian.jira.util.DateTools.getDurationWDHMS(long,int,int) 26 6 0
com.atlassian.jira.web.action.admin.IconPickerAddOn.getIssueConstants() 26 9 0
com.atlassian.jira.web.action.issue.ExtendedCreateWorklogForAjax.addWorklog(String,String,String,String,String,String,String,String) 26 8 0
com.atlassian.jira.portal.portlets.FastWorklogPortlet.getWorkedIssues(User,long,String,boolean) 25 6 1
com.atlassian.jira.portal.portlets.FastWorklogPortletOnRequest.getVelocityDedicatedPortletParams(PortletConfiguration) 25 5 0

Averages.

Program NCSS NCSS average CCN average Javadocs average
15,595.00 4.00 1.64 0.32

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