Fork me on GitHub

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
fr.paris.lutece.portal.business.user.attribute 23 280 1634 303 1327 105 759
fr.paris.lutece.portal.web.user 6 68 1631 74 434 99 201
fr.paris.lutece.portal.service.admin 6 75 1066 81 444 63 207
fr.paris.lutece.portal.business.user 5 207 1051 211 877 14 165
fr.paris.lutece.portal.web.admin 7 54 997 61 345 71 240
fr.paris.lutece.portal.business.portlet 17 199 969 216 1044 62 562
fr.paris.lutece.portal.service.plugin 6 191 841 197 893 27 198
fr.paris.lutece.portal.service.search 16 103 752 121 556 38 528
fr.paris.lutece.portal.business.style 16 150 698 166 758 28 546
fr.paris.lutece.portal.service.mail 9 82 676 91 757 44 297
fr.paris.lutece.portal.service.portal 6 67 658 72 415 56 201
fr.paris.lutece.portal.business.page 5 106 643 111 507 24 180
fr.paris.lutece.portal.service.page 12 78 605 90 484 48 404
fr.paris.lutece.portal.service.daemon 10 64 594 74 330 27 334
fr.paris.lutece.portal.business.right 12 108 553 120 573 33 396
fr.paris.lutece.util.sql 4 82 513 86 509 17 141
fr.paris.lutece.portal.web.system 6 37 512 43 215 41 199
fr.paris.lutece.portal.web.style 4 29 495 33 170 42 170
fr.paris.lutece.portal.service.security 14 110 476 124 575 13 471
fr.paris.lutece.portal.web.rbac 1 21 473 22 176 40 39
fr.paris.lutece.portal.business.dashboard 11 95 470 106 468 8 363
fr.paris.lutece.portal.service.util 10 70 436 80 434 33 338
fr.paris.lutece.portal.service.message 7 75 429 82 570 9 241
fr.paris.lutece.portal.web.features 3 26 409 29 151 29 99
fr.paris.lutece.portal.service.cache 6 77 404 83 335 22 198
fr.paris.lutece.util.pool.service 8 76 385 84 381 14 274
fr.paris.lutece.portal.web 4 26 364 30 184 19 132
fr.paris.lutece.util.datatable 8 74 352 80 411 13 288
fr.paris.lutece.portal.business.mailinglist 8 71 337 79 392 14 264
fr.paris.lutece.portal.business.rbac 8 67 335 75 354 10 264
fr.paris.lutece.portal.web.user.attribute 2 17 335 19 93 23 72
fr.paris.lutece.portal.web.upload 8 44 324 56 245 28 264
fr.paris.lutece.portal.business.user.authentication 6 54 317 67 278 19 209
fr.paris.lutece.portal.web.search 4 11 289 15 76 16 142
fr.paris.lutece.portal.service.csv 3 28 279 30 284 2 108
fr.paris.lutece.portal.web.includes 6 11 277 17 92 16 198
fr.paris.lutece.portal.service.dashboard 5 57 273 62 268 16 170
fr.paris.lutece.portal.web.workgroup 1 12 272 13 70 23 39
fr.paris.lutece.portal.web.stylesheet 2 16 269 18 81 24 81
fr.paris.lutece.portal.business.workgroup 5 58 268 63 276 7 165
fr.paris.lutece.util.html 6 61 266 67 304 16 202
fr.paris.lutece.portal.web.xsl 1 12 263 13 78 24 39
fr.paris.lutece.portal.service.user.attribute 5 43 255 48 242 12 165
fr.paris.lutece.portal.service.content 6 58 250 64 322 8 198
fr.paris.lutece.portal.web.xpages 7 43 247 49 250 12 237
fr.paris.lutece.portal.util.mvc.xpage 1 35 245 36 219 13 33
fr.paris.lutece.portal.service.filter 6 50 244 56 247 18 198
fr.paris.lutece.portal.web.portlet 2 17 238 19 115 29 66
fr.paris.lutece.portal.service.init 10 23 235 33 117 35 334
fr.paris.lutece.portal.business.rss 10 117 226 127 542 1 330
fr.paris.lutece.portal.web.mailinglist 1 12 225 13 71 13 33
fr.paris.lutece.portal.service.i18n 4 22 221 20 116 6 132
fr.paris.lutece.portal.service.datastore 7 40 214 45 211 2 231
fr.paris.lutece.util.xml 2 17 208 19 116 4 66
fr.paris.lutece.portal.business.xsl 4 35 205 39 165 5 141
fr.paris.lutece.portal.web.dashboard 2 10 202 12 57 21 66
fr.paris.lutece.portal.business.stylesheet 4 39 196 43 218 10 132
fr.paris.lutece.portal.service.workflow 3 44 195 47 386 4 99
fr.paris.lutece.portal.business.indexeraction 5 38 187 43 186 5 171
fr.paris.lutece.portal.service.rbac 8 43 179 51 237 4 265
fr.paris.lutece.portal.service.html 9 36 178 45 207 5 307
fr.paris.lutece.util.mail 4 23 169 33 159 20 158
fr.paris.lutece.util.http 2 15 161 17 97 13 66
fr.paris.lutece.util 5 32 160 37 191 2 168
fr.paris.lutece.portal.service.resource 9 37 158 46 245 4 312
fr.paris.lutece.portal.util.mvc.utils 3 37 157 40 139 0 99
fr.paris.lutece.portal.service.database 4 24 153 29 125 2 139
fr.paris.lutece.portal.service.servlet 5 33 153 38 165 5 165
fr.paris.lutece.util.beanvalidation 6 32 153 38 166 7 201
fr.paris.lutece.portal.business.mail 4 22 151 26 100 4 132
fr.paris.lutece.portal.business.role 4 30 151 34 151 8 132
fr.paris.lutece.portal.util.mvc.admin 1 23 151 24 137 7 33
fr.paris.lutece.portal.service.jpa 5 16 143 21 87 1 166
fr.paris.lutece.util.jpa 5 28 136 33 129 1 165
fr.paris.lutece.portal.service.prefs 8 45 135 52 204 0 264
fr.paris.lutece.portal.service.dashboard.admin 3 13 134 16 75 10 102
fr.paris.lutece.portal.business.file 4 27 131 31 144 5 132
fr.paris.lutece.portal.service.template 4 23 128 24 138 8 132
fr.paris.lutece.util.parser 1 3 126 12 69 7 33
fr.paris.lutece.util.date 1 19 124 20 123 7 34
fr.paris.lutece.portal.service.spring 1 12 122 15 81 15 33
fr.paris.lutece.portal.service.insert 3 27 119 30 145 6 100
fr.paris.lutece.portal.web.constants 3 3 118 6 12 9 110
fr.paris.lutece.portal.web.insert 3 8 118 11 59 10 106
fr.paris.lutece.portal.web.documentation 1 4 115 5 30 19 33
fr.paris.lutece.portal.business.prefs 4 21 114 25 101 0 132
fr.paris.lutece.portal.web.role 1 8 113 9 41 13 39
fr.paris.lutece.portal.service.editor 3 9 102 12 53 4 101
fr.paris.lutece.portal.service.portlet 5 19 100 24 102 1 165
fr.paris.lutece.util.jpa.transaction 2 22 100 24 95 1 66
fr.paris.lutece.portal.service.image 4 14 96 18 87 5 133
fr.paris.lutece.util.pool 1 10 95 11 58 2 33
fr.paris.lutece.portal.business.datastore 4 22 92 26 104 7 132
fr.paris.lutece.portal.web.globalmanagement 3 13 89 16 58 0 105
fr.paris.lutece.util.filesystem 5 11 89 16 80 16 168
fr.paris.lutece.portal.business.portalcomponent 4 20 87 24 102 4 132
fr.paris.lutece.portal.service.globalmanagement 5 13 87 18 70 0 165
fr.paris.lutece.portal.business.physicalfile 4 19 84 23 102 5 132
fr.paris.lutece.util.annotation 3 12 84 16 63 2 103
fr.paris.lutece.util.password 3 12 84 15 76 10 99
fr.paris.lutece.util.string 1 13 81 14 93 6 33
fr.paris.lutece.portal.service.mailinglist 2 10 75 12 53 6 66
fr.paris.lutece.portal.business.editor 2 24 72 26 115 2 66
fr.paris.lutece.portal.business.user.log 4 15 69 19 86 6 132
fr.paris.lutece.portal.business.search 3 13 68 16 56 1 99
fr.paris.lutece.util.sort 1 5 67 6 29 1 33
fr.paris.lutece.portal.service.includes 3 16 66 19 93 2 99
fr.paris.lutece.portal.web.util 2 15 61 17 76 0 66
fr.paris.lutece.portal.service.xsl 2 5 60 7 31 0 66
fr.paris.lutece.portal.service.regularexpression 3 17 58 20 91 0 99
fr.paris.lutece.portal.web.pluginaction 5 21 58 26 157 3 165
fr.paris.lutece.portal.service.captcha 3 18 56 21 77 2 99
fr.paris.lutece.portal.business.resourceenhancer 3 17 55 20 114 3 99
fr.paris.lutece.portal.web.xss 3 6 54 9 37 1 99
fr.paris.lutece.util.json 4 9 54 13 58 1 132
fr.paris.lutece.util.url 2 12 54 14 65 11 66
fr.paris.lutece.util.method 1 6 52 7 73 0 33
fr.paris.lutece.portal.business.globalmanagement 4 11 51 15 55 0 132
fr.paris.lutece.portal.service.panel 2 15 49 19 77 0 66
fr.paris.lutece.portal.web.resource 3 3 48 6 39 4 102
fr.paris.lutece.portal.service.site.properties 4 11 45 15 48 0 132
fr.paris.lutece.util.bean 1 4 44 5 20 1 33
fr.paris.lutece.portal.service.scheduler 1 5 41 6 20 0 33
fr.paris.lutece.portal.service.workgroup 2 7 40 9 41 0 66
fr.paris.lutece.portal.business.regularexpression 1 14 38 15 61 0 33
fr.paris.lutece.portal.service.sessionlistener 3 7 38 10 39 1 99
fr.paris.lutece.portal.business.template 3 7 34 10 42 1 99
fr.paris.lutece.portal.web.l10n 1 4 34 5 21 0 33
fr.paris.lutece.util.ldap 1 5 34 6 39 1 33
fr.paris.lutece.portal.web.encoding 2 5 33 7 31 21 66
fr.paris.lutece.portal.service.user 1 3 32 4 17 0 33
fr.paris.lutece.portal.business 1 2 31 3 16 6 33
fr.paris.lutece.portal.business.user.parameter 2 5 31 7 31 2 66
fr.paris.lutece.portal.business.event 2 12 30 14 60 0 66
fr.paris.lutece.portal.service.fileimage 1 6 30 7 27 0 33
fr.paris.lutece.util.file 1 4 26 5 23 0 33
fr.paris.lutece.portal.service.event 1 5 21 6 25 0 33
fr.paris.lutece.portal.util.mvc.commons.annotations 0 0 19 0 0 0 81
fr.paris.lutece.portal.service.fileupload 1 2 14 3 11 0 33
fr.paris.lutece.portal.util.mvc.admin.annotations 0 0 14 0 0 0 54
fr.paris.lutece.portal.util.mvc.xpage.annotations 0 0 13 0 0 0 51
fr.paris.lutece.portal.service.role 1 2 8 3 10 0 33
Classes total Methods total NCSS total Javadocs Javadoc lines Single lines comment Multi lines comment
626 4993 33980 5634 27458 1806 21240

Objects

Objects

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

TOP 30 classes containing the most NCSS.

Object NCSS Methods Classes Javadocs
fr.paris.lutece.portal.web.user.AdminUserJspBean 1123 44 0 45
fr.paris.lutece.portal.business.user.AdminUserDAO 624 49 0 50
fr.paris.lutece.portal.service.admin.AdminUserService 605 39 0 40
fr.paris.lutece.portal.web.rbac.RoleManagementJspBean 434 21 0 22
fr.paris.lutece.portal.business.page.PageDAO 391 21 0 22
fr.paris.lutece.portal.service.plugin.Plugin 370 89 0 90
fr.paris.lutece.portal.service.page.PageService 361 35 0 36
fr.paris.lutece.portal.web.admin.AdminPageJspBean 308 16 0 17
fr.paris.lutece.util.sql.DAOUtil 296 50 0 51
fr.paris.lutece.portal.business.user.attribute.AdminUserFieldDAO 274 11 0 12
fr.paris.lutece.portal.business.portlet.PortletDAO 262 17 0 18
fr.paris.lutece.portal.service.portal.PortalService 241 24 0 25
fr.paris.lutece.portal.web.workgroup.AdminWorkgroupJspBean 236 12 0 13
fr.paris.lutece.portal.service.plugin.PluginFile 234 78 0 79
fr.paris.lutece.portal.service.mail.MailUtil 222 15 1 16
fr.paris.lutece.portal.web.xsl.XslExportJspBean 221 12 0 13
fr.paris.lutece.portal.web.user.AdminLoginJspBean 221 9 0 10
fr.paris.lutece.portal.web.admin.AdminMenuJspBean 219 13 0 14
fr.paris.lutece.portal.service.admin.ImportAdminUserService 217 6 0 7
fr.paris.lutece.portal.service.csv.CSVReaderService 212 17 0 18
fr.paris.lutece.portal.web.PortalJspBean 208 17 0 18
fr.paris.lutece.portal.util.mvc.xpage.MVCApplication 205 35 0 36
fr.paris.lutece.portal.web.mailinglist.MailingListJspBean 192 12 0 13
fr.paris.lutece.portal.web.stylesheet.StyleSheetJspBean 191 12 0 13
fr.paris.lutece.util.datatable.DataTableManager 190 32 0 33
fr.paris.lutece.portal.service.search.IndexationService 187 23 1 26
fr.paris.lutece.portal.business.user.attribute.AttributeDAO 181 10 0 11
fr.paris.lutece.portal.business.portlet.Portlet 174 47 0 48
fr.paris.lutece.portal.service.util.AppPathService 171 28 0 29
fr.paris.lutece.portal.service.cache.CacheService 170 22 0 23

TOP 30 classes containing the most methods.

Object NCSS Methods Classes Javadocs
fr.paris.lutece.portal.service.plugin.Plugin 370 89 0 90
fr.paris.lutece.portal.service.plugin.PluginFile 234 78 0 79
fr.paris.lutece.util.sql.DAOUtil 296 50 0 51
fr.paris.lutece.portal.business.user.AdminUser 138 49 0 49
fr.paris.lutece.portal.business.user.AdminUserDAO 624 49 0 50
fr.paris.lutece.portal.business.user.AdminUserHome 95 47 0 48
fr.paris.lutece.portal.business.user.IAdminUserDAO 48 47 0 48
fr.paris.lutece.portal.business.portlet.Portlet 174 47 0 48
fr.paris.lutece.portal.business.page.Page 137 46 0 47
fr.paris.lutece.portal.web.user.AdminUserJspBean 1123 44 0 45
fr.paris.lutece.portal.service.admin.AdminUserService 605 39 0 40
fr.paris.lutece.portal.business.user.attribute.IAttribute 38 37 0 38
fr.paris.lutece.portal.util.mvc.xpage.MVCApplication 205 35 0 36
fr.paris.lutece.portal.service.page.PageService 361 35 0 36
fr.paris.lutece.portal.service.content.PageData 87 34 0 35
fr.paris.lutece.util.datatable.DataTableManager 190 32 0 33
fr.paris.lutece.portal.business.portlet.PortletType 82 32 0 33
fr.paris.lutece.portal.business.user.attribute.AbstractAttribute 100 31 0 32
fr.paris.lutece.portal.service.security.SecurityService 134 31 0 32
fr.paris.lutece.portal.service.security.LuteceAuthentication 30 29 0 30
fr.paris.lutece.portal.service.util.AppPathService 171 28 0 29
fr.paris.lutece.portal.business.right.Right 75 26 0 27
fr.paris.lutece.portal.service.mail.MailItem 72 26 0 27
fr.paris.lutece.portal.service.workflow.WorkflowService 140 26 0 27
fr.paris.lutece.portal.util.mvc.utils.MVCMessageBox 70 25 0 26
fr.paris.lutece.portal.business.rss.IResourceRss 26 25 0 26
fr.paris.lutece.portal.service.security.LuteceUser 154 25 0 26
fr.paris.lutece.portal.service.admin.AdminAuthenticationService 114 24 0 25
fr.paris.lutece.portal.service.cache.AbstractCacheableService 69 24 0 25
fr.paris.lutece.portal.service.daemon.DaemonEntry 61 24 0 25

Averages.

NCSS average Program NCSS Classes average Methods average Javadocs average
46.85 33,980.00 0.03 7.98 9.00

Methods

Methods

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

TOP 30 Methods containing the most NCSS.

Methods NCSS CCN Javadocs
fr.paris.lutece.portal.service.admin.ImportAdminUserService.readLineOfCSVFile(String[],int,Locale,String) 156 38 1
fr.paris.lutece.portal.service.daemon.AccountLifeTimeDaemon.run() 135 34 1
fr.paris.lutece.portal.service.csv.CSVReaderService.readCSVFile(Reader,CSVReader,int,boolean,boolean,boolean,Locale,String) 112 43 1
fr.paris.lutece.portal.web.user.AdminUserJspBean.doModifyAdminUser(HttpServletRequest) 81 36 1
fr.paris.lutece.portal.service.search.LuceneSearchEngine.getSearchResults(String,HttpServletRequest) 81 26 1
fr.paris.lutece.util.parser.BbcodeUtil.processNestedTags(StringBuffer,String,String,String,String,String,String,boolean,boolean,boolean) 77 23 1
fr.paris.lutece.portal.web.user.AdminUserJspBean.doCreateAdminUser(HttpServletRequest) 75 31 1
fr.paris.lutece.portal.business.user.attribute.AdminUserFieldDAO.selectByFilter(AdminUserFieldFilter) 75 15 1
fr.paris.lutece.portal.service.mail.MailSenderDaemon.run() 63 11 1
fr.paris.lutece.portal.service.admin.AdminUserService.getXmlFromUser(AdminUser,boolean,boolean,boolean,boolean,IAttribute) 61 15 1
fr.paris.lutece.portal.web.search.SearchApp.getPage(HttpServletRequest,int,Plugin) 60 16 1
fr.paris.lutece.portal.web.features.RightJspBean.getAssignUsers(HttpServletRequest) 59 19 1
fr.paris.lutece.portal.web.workgroup.AdminWorkgroupJspBean.getAssignUsers(HttpServletRequest) 57 18 1
fr.paris.lutece.portal.web.rbac.RoleManagementJspBean.getAssignUsers(HttpServletRequest) 56 16 1
fr.paris.lutece.portal.service.page.PageService.getPortletContent(HttpServletRequest,Portlet,String,int) 55 32 1
fr.paris.lutece.portal.service.portal.PortalMenuService.buildMenuContent(int,int,int,HttpServletRequest) 54 13 1
fr.paris.lutece.portal.web.portlet.PortletJspBean.setPortletCommonData(HttpServletRequest,Portlet) 53 20 1
fr.paris.lutece.util.datatable.DataTableManager.filterSortAndPaginate(HttpServletRequest,T) 52 23 1
fr.paris.lutece.portal.web.PortalJspBean.sendResource(HttpServletRequest) 52 17 1
fr.paris.lutece.portal.service.page.PageService.getPage(String,int,HttpServletRequest) 52 18 1
fr.paris.lutece.portal.web.rbac.RoleManagementJspBean.doSelectResourcesFromIdsList(HttpServletRequest) 51 7 1
fr.paris.lutece.portal.web.includes.TreeMenuInclude.buildTreeMenuContent(int,int,HttpServletRequest) 51 10 1
fr.paris.lutece.portal.business.user.attribute.AdminUserFieldDAO.load(int) 51 6 1
fr.paris.lutece.portal.service.jpa.JPAStartupService.process() 51 3 1
fr.paris.lutece.portal.service.plugin.Plugin.load(PluginFile) 50 6 1
fr.paris.lutece.portal.web.user.AdminUserJspBean.getManageAdminUsers(HttpServletRequest) 49 10 1
fr.paris.lutece.portal.web.user.AdminUserJspBean.getCreateAdminUser(HttpServletRequest) 49 8 1
fr.paris.lutece.portal.web.user.AdminUserJspBean.getModifyAccountLifeTimeEmails(HttpServletRequest) 49 8 1
fr.paris.lutece.portal.web.user.AdminUserJspBean.doExportUsers(HttpServletRequest,HttpServletResponse) 48 11 1
fr.paris.lutece.portal.web.system.SystemJspBean.getManageFilesSystemDir(HttpServletRequest) 46 10 1

Averages.

Program NCSS NCSS average CCN average Javadocs average
33,980.00 4.92 1.89 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).