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
fr.paris.lutece.plugins.digglike.business91907502096246411583102
fr.paris.lutece.plugins.digglike.web1014534471531102143335
fr.paris.lutece.plugins.digglike.utils5728867243843124
fr.paris.lutece.plugins.digglike.service1910068011550382638
fr.paris.lutece.plugins.digglike.business.rss5375194219023230
fr.paris.lutece.plugins.digglike.web.action7484183713713234
fr.paris.lutece.plugins.digglike.service.subscription229291291441069
fr.paris.lutece.plugins.digglike.service.search1913910513133
fr.paris.lutece.plugins.digglike.service.digglikesearch4911713526132
fr.paris.lutece.plugins.digglike.business.attribute3106813620144
fr.paris.lutece.plugins.digglike.service.publication2347523066
Classes totalMethods totalNCSS totalJavadocsJavadoc linesSingle lines commentMulti lines comment
149136911632145173435095107

Objects

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

TOP 30 classes containing the most NCSS.

ObjectNCSSMethodsClassesJavadocs
fr.paris.lutece.plugins.digglike.web.DiggJspBean165667066
fr.paris.lutece.plugins.digglike.web.DiggApp80731032
fr.paris.lutece.plugins.digglike.utils.DiggUtils62652053
fr.paris.lutece.plugins.digglike.business.DiggSubmitDAO44412013
fr.paris.lutece.plugins.digglike.business.rss.DiggResourceRss36513014
fr.paris.lutece.plugins.digglike.business.Digg3631320133
fr.paris.lutece.plugins.digglike.business.DiggDAO289809
fr.paris.lutece.plugins.digglike.business.CommentSubmitDAO21811012
fr.paris.lutece.plugins.digglike.business.EntryDAO20412013
fr.paris.lutece.plugins.digglike.web.ExportFormatJspBean19111012
fr.paris.lutece.plugins.digglike.business.DiggSubmit18054055
fr.paris.lutece.plugins.digglike.utils.ProcessBBCode17211217
fr.paris.lutece.plugins.digglike.service.DiggSubmitService16118018
fr.paris.lutece.plugins.digglike.service.subscription.DiggSubscribersNotificationDaemon15310011
fr.paris.lutece.plugins.digglike.business.SubmitFilter14350051
fr.paris.lutece.plugins.digglike.business.ResponseDAO143607
fr.paris.lutece.plugins.digglike.web.DiggSubmitTypeJspBean1429010
fr.paris.lutece.plugins.digglike.business.EntryTypeVideo139607
fr.paris.lutece.plugins.digglike.web.CategoryJspBean1339010
fr.paris.lutece.plugins.digglike.business.Entry12940040
fr.paris.lutece.plugins.digglike.web.DefaultMessageJspBean114304
fr.paris.lutece.plugins.digglike.business.DiggSubmitTypeDAO11411012
fr.paris.lutece.plugins.digglike.business.CategoryDAO10210010
fr.paris.lutece.plugins.digglike.service.search.DigglikeIndexer1009010
fr.paris.lutece.plugins.digglike.business.EntryTypeText9510011
fr.paris.lutece.plugins.digglike.business.EntryTypeUrl939010
fr.paris.lutece.plugins.digglike.business.DiggHome899010
fr.paris.lutece.plugins.digglike.service.subscription.DigglikeSubscriptionProviderService8519018
fr.paris.lutece.plugins.digglike.web.action.ExportDiggSubmitAction84607
fr.paris.lutece.plugins.digglike.business.EntryTypeTextArea82708

TOP 30 classes containing the most methods.

ObjectNCSSMethodsClassesJavadocs
fr.paris.lutece.plugins.digglike.business.Digg3631320133
fr.paris.lutece.plugins.digglike.web.DiggJspBean165667066
fr.paris.lutece.plugins.digglike.business.DiggSubmit18054055
fr.paris.lutece.plugins.digglike.utils.DiggUtils62652053
fr.paris.lutece.plugins.digglike.business.SubmitFilter14350051
fr.paris.lutece.plugins.digglike.business.Entry12940040
fr.paris.lutece.plugins.digglike.business.IEntry4140041
fr.paris.lutece.plugins.digglike.web.DiggApp80731032
fr.paris.lutece.plugins.digglike.business.DefaultMessage5622023
fr.paris.lutece.plugins.digglike.business.CommentSubmit6921022
fr.paris.lutece.plugins.digglike.service.subscription.DigglikeSubscriptionProviderService8519018
fr.paris.lutece.plugins.digglike.web.action.DigglikeAdminSearchFields471801
fr.paris.lutece.plugins.digglike.service.DiggSubmitService16118018
fr.paris.lutece.plugins.digglike.business.DiggSubmitType4617018
fr.paris.lutece.plugins.digglike.service.IDiggSubmitService1817017
fr.paris.lutece.plugins.digglike.business.DiggAction3815016
fr.paris.lutece.plugins.digglike.business.SearchFields371400
fr.paris.lutece.plugins.digglike.business.DiggUserInfo481402
fr.paris.lutece.plugins.digglike.business.rss.DiggResourceRss36513014
fr.paris.lutece.plugins.digglike.business.Response4113014
fr.paris.lutece.plugins.digglike.business.DiggFilter3312013
fr.paris.lutece.plugins.digglike.business.DiggSubmitDAO44412013
fr.paris.lutece.plugins.digglike.business.DiggSubmitHome7812013
fr.paris.lutece.plugins.digglike.business.ExportFormat3112013
fr.paris.lutece.plugins.digglike.business.EntryHome5612013
fr.paris.lutece.plugins.digglike.business.EntryDAO20412013
fr.paris.lutece.plugins.digglike.web.ExportFormatJspBean19111012
fr.paris.lutece.plugins.digglike.business.DiggSubmitTypeDAO11411012
fr.paris.lutece.plugins.digglike.business.CommentSubmitDAO21811012
fr.paris.lutece.plugins.digglike.utils.ProcessBBCode17211217

Averages.

NCSS averageProgram NCSSClasses averageMethods averageJavadocs average
69.3411,632.000.019.199.79

Methods

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

TOP 30 Methods containing the most NCSS.

MethodsNCSSCCNJavadocs
fr.paris.lutece.plugins.digglike.web.DiggJspBean.getDiggData(MultipartHttpServletRequest,Digg)196761
fr.paris.lutece.plugins.digglike.business.rss.DiggResourceRss.getFeed()97101
fr.paris.lutece.plugins.digglike.web.DiggJspBean.getStatistics(HttpServletRequest)91211
fr.paris.lutece.plugins.digglike.business.DiggDAO.selectDiggList(DiggFilter,Plugin)82101
fr.paris.lutece.plugins.digglike.web.DiggJspBean.getManageDiggSubmit(HttpServletRequest,HttpServletResponse)80191
fr.paris.lutece.plugins.digglike.web.DiggJspBean.getModifyDigg(HttpServletRequest)8091
fr.paris.lutece.plugins.digglike.utils.ProcessBBCode.processNestedTags(StringBuffer,String,String,String,String,String,String,boolean,boolean,boolean)76231
fr.paris.lutece.plugins.digglike.business.rss.DiggResourceRss.createHtmlRss()75101
fr.paris.lutece.plugins.digglike.business.DiggSubmitDAO.selectIdListByFilter(SubmitFilter,Plugin)71271
fr.paris.lutece.plugins.digglike.business.EntryTypeVideo.getRequestData(HttpServletRequest,Locale)70151
fr.paris.lutece.plugins.digglike.business.DiggSubmitDAO.selectCountByFilter(SubmitFilter,Plugin)68261
fr.paris.lutece.plugins.digglike.business.DiggSubmitDAO.selectListByFilter(SubmitFilter,Plugin)67251
fr.paris.lutece.plugins.digglike.web.DefaultMessageJspBean.getDefaultMessageData(HttpServletRequest,DefaultMessage)64191
fr.paris.lutece.plugins.digglike.web.DiggJspBean.getManageCommentSubmit(HttpServletRequest)61121
fr.paris.lutece.plugins.digglike.web.action.ExportDiggSubmitAction.process(HttpServletRequest,HttpServletResponse,AdminUser,DigglikeAdminSearchFields)57111
fr.paris.lutece.plugins.digglike.business.DiggDAO.load(int,Plugin)5721
fr.paris.lutece.plugins.digglike.web.DiggApp.getPage(HttpServletRequest,int,Plugin)55181
fr.paris.lutece.plugins.digglike.service.subscription.DiggSubscribersNotificationDaemon.run()55311
fr.paris.lutece.plugins.digglike.business.EntryTypeTextArea.getRequestData(HttpServletRequest,Locale)53171
fr.paris.lutece.plugins.digglike.business.DiggDAO.insert(Digg,Plugin)5211
fr.paris.lutece.plugins.digglike.business.ResponseDAO.selectListByFilter(SubmitFilter,Plugin)52121
fr.paris.lutece.plugins.digglike.business.DiggDAO.store(Digg,Plugin)5111
fr.paris.lutece.plugins.digglike.business.DiggSubmitDAO.getOrderBy(Integer)50171
fr.paris.lutece.plugins.digglike.web.DiggJspBean.getManageDigg(HttpServletRequest)4971
fr.paris.lutece.plugins.digglike.web.DiggApp.addDiggPageFrameset(String,HttpServletRequest,XPage,Digg,Object,SearchFields,LuteceUser)4971
fr.paris.lutece.plugins.digglike.business.EntryTypeVideo.getResponseData(int,HttpServletRequest,Response,Locale,Plugin)48111
fr.paris.lutece.plugins.digglike.business.CommentSubmitDAO.selectListByFilter(SubmitFilter,Integer,Plugin)47131
fr.paris.lutece.plugins.digglike.business.EntryTypeUrl.getRequestData(HttpServletRequest,Locale)45151
fr.paris.lutece.plugins.digglike.business.EntryTypeText.getRequestData(HttpServletRequest,Locale)45151
fr.paris.lutece.plugins.digglike.business.EntryDAO.selectEntryListByFilter(EntryFilter,Plugin)43101

Averages.

Program NCSSNCSS averageCCN averageJavadocs average
11,632.006.432.180.96

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