ExcessiveClassLength rule is already there in PMD [1] , but its not activated. I'm not sure whether we can activate
[1] https://analysis.apache.org/rules_configuration/index/49?commit=Search&rule_activation=INACTIVE&searchtext=ExcessiveClassLength&sort_by=SORT_BY_RULE_NAME On Mon, Oct 6, 2014 at 12:12 PM, Reka Thirunavukkarasu <r...@wso2.com> wrote: > Hi all, > > I found [1] which has few recommended lines of code for the java as well. > When we increase the no of lines in a class/method, then we will also > increase the responsibility [2] of that class/method. Can we propose a > convention about line of codes in a method/class as well? > > [1] http://www.aivosto.com/project/help/pm-loc.html > [2] http://en.wikipedia.org/wiki/Single_responsibility_principle > > Thanks, > Reka > > On Fri, Oct 3, 2014 at 2:48 PM, Chamila De Alwis <chami...@wso2.com> > wrote: > >> +120 columns. >> >> In most used screen sizes, it would be easier to continue down without >> additionally scrolling horizontally. And if a particular line is longer >> than 120, it would be either too compact or can easily be broken to >> multiple lines. >> >> >> Regards, >> Chamila de Alwis >> Software Engineer | WSO2 | +94772207163 >> Blog: code.chamiladealwis.com >> >> >> >> On Fri, Oct 3, 2014 at 1:53 PM, Sajith Kariyawasam <saj...@wso2.com> >> wrote: >> >>> It seems that Stratos code in Sonar are checked via "Sonar way with >>> FindBugs" profiles, and includes CheckStyle, PMD, and FindBugs, [1] >>> therefore better we mention in our coding standards guide to use Sonar in >>> developers' IDEs with those plugins installed, rather than mentioning >>> to "Run FindBugs on your code" >>> >>> I will come up with some contents on how to install and use those >>> plugins, thereafter we can review and update the document. >>> >>> [1] https://analysis.apache.org/profiles/permalinks/49 >>> >>> >>> On Thu, Oct 2, 2014 at 1:19 PM, Reka Thirunavukkarasu <r...@wso2.com> >>> wrote: >>> >>>> +1 for 120. >>>> >>>> On Thu, Oct 2, 2014 at 1:15 PM, Sajith Kariyawasam <saj...@wso2.com> >>>> wrote: >>>> >>>>> +1 for 120, >>>>> >>>>> Also, introducing a Code Template can be useful, specially to maintain >>>>> the license headers etc >>>>> >>>>> Thanks, >>>>> Sajith >>>>> >>>>> On Thu, Oct 2, 2014 at 11:28 AM, Lahiru Sandaruwan <lahi...@wso2.com> >>>>> wrote: >>>>> >>>>>> +1 for 120. >>>>>> >>>>>> On Thu, Oct 2, 2014 at 11:19 AM, Isuru Perera <isu...@wso2.com> >>>>>> wrote: >>>>>> >>>>>>> Hi Nirmal, >>>>>>> >>>>>>> Sorry for the delay! I needed some time to go through the coding >>>>>>> guidelines in WSO2 and other Apache project. >>>>>>> >>>>>>> All, >>>>>>> >>>>>>> Since everyone agrees on 4 spaces, we will configure that >>>>>>> accordingly. My next concern is that 100 columns for a line is too >>>>>>> short. >>>>>>> >>>>>>> Most of other projects use 120 columns for the line width. >>>>>>> >>>>>>> For example: >>>>>>> http://maven.apache.org/developers/conventions/code.html >>>>>>> https://airavata.apache.org/development/source.html >>>>>>> http://onami.apache.org/committers/codestyle.html >>>>>>> >>>>>>> However I think it's better if we can have at least 160 columns for >>>>>>> a line. >>>>>>> >>>>>>> There are some projects, which use 160 columns. :) >>>>>>> https://accumulo.apache.org/source.html >>>>>>> >>>>>>> So, WDYT? >>>>>>> >>>>>>> >>>>>>> On Wed, Oct 1, 2014 at 5:15 PM, Sajith Kariyawasam <saj...@wso2.com> >>>>>>> wrote: >>>>>>> >>>>>>>> I came up with the attached code format profile for Eclipse. This >>>>>>>> is based on the Eclipse (built in) profile, and I modified lineSplit >>>>>>>> from >>>>>>>> 80 to 100 and 4 Space indentation. Other default settings seems OK to >>>>>>>> me. >>>>>>>> >>>>>>>> Please share your thoughts >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Sajith >>>>>>>> >>>>>>>> On Wed, Oct 1, 2014 at 4:47 PM, Nirmal Fernando < >>>>>>>> nirmal070...@gmail.com> wrote: >>>>>>>> >>>>>>>>> Guys, >>>>>>>>> >>>>>>>>> Did you all manage to create the formatter profiles? >>>>>>>>> >>>>>>>>> On Tue, Sep 23, 2014 at 11:59 AM, Nirmal Fernando < >>>>>>>>> nirmal070...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> Thanks for the reminder Imesh. I've created a Jira for this >>>>>>>>>> https://issues.apache.org/jira/browse/STRATOS-813 >>>>>>>>>> >>>>>>>>>> On Tue, Sep 23, 2014 at 10:31 AM, Imesh Gunaratne < >>>>>>>>>> im...@apache.org> wrote: >>>>>>>>>> >>>>>>>>>>> It's nice to see everyone is focusing on $subject. I just went >>>>>>>>>>> through the latest Sonar findings and seems like there are nearly >>>>>>>>>>> 270 >>>>>>>>>>> critical issues: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> https://analysis.apache.org/drilldown/issues/org.apache.stratos:stratos-parent?severity=CRITICAL >>>>>>>>>>> >>>>>>>>>>> We can go through the list and fix these issues, on the next >>>>>>>>>>> build Sonar listing will get updated. >>>>>>>>>>> >>>>>>>>>>> On Mon, Sep 22, 2014 at 7:32 AM, Akila Ravihansa Perera < >>>>>>>>>>> raviha...@wso2.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> On Mon, Sep 22, 2014 at 4:39 PM, Isuru Perera <isu...@wso2.com> >>>>>>>>>>>> wrote: >>>>>>>>>>>> > Hi everyone, >>>>>>>>>>>> > >>>>>>>>>>>> > I think we should agree on whether we should use tabs or >>>>>>>>>>>> spaces for the >>>>>>>>>>>> > indentation. >>>>>>>>>>>> > >>>>>>>>>>>> > I'm suggesting that we should use 4 spaces for the >>>>>>>>>>>> indentation and >>>>>>>>>>>> > completely avoid tabs in our code. >>>>>>>>>>>> >>>>>>>>>>>> +1 >>>>>>>>>>>> >>>>>>>>>>>> Tabs can mess up the code when working with different developer >>>>>>>>>>>> environments. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> > >>>>>>>>>>>> > I can help to come up with an Eclipse Formatter profile. We >>>>>>>>>>>> should also >>>>>>>>>>>> > format the entire code base in a single commit after we agree >>>>>>>>>>>> on our coding >>>>>>>>>>>> > standards. >>>>>>>>>>>> >>>>>>>>>>>> Great! I can work on a IntelliJ Idea Formatting profile. >>>>>>>>>>>> >>>>>>>>>>>> > >>>>>>>>>>>> > WDYT? >>>>>>>>>>>> > >>>>>>>>>>>> > Thanks! >>>>>>>>>>>> > >>>>>>>>>>>> > Best Regards, >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > On Tue, Sep 16, 2014 at 11:52 AM, Lakmal Warusawithana < >>>>>>>>>>>> lak...@wso2.com> >>>>>>>>>>>> > wrote: >>>>>>>>>>>> >> >>>>>>>>>>>> >> Hi, >>>>>>>>>>>> >> >>>>>>>>>>>> >> This is the guideline we used in WSO2, shall we have a look >>>>>>>>>>>> and see >>>>>>>>>>>> >> whether we can use the same. Please share your thoughts. >>>>>>>>>>>> After we finalised >>>>>>>>>>>> >> will put this into wiki and make it as common guide line. >>>>>>>>>>>> >> >>>>>>>>>>>> >> Comments >>>>>>>>>>>> >> >>>>>>>>>>>> >> Doc comments >>>>>>>>>>>> >> >>>>>>>>>>>> >> All classes and all methods/functions MUST have doc comments >>>>>>>>>>>> >> >>>>>>>>>>>> >> Explain each parameter, return type and assumptions made >>>>>>>>>>>> >> >>>>>>>>>>>> >> Line comments >>>>>>>>>>>> >> >>>>>>>>>>>> >> In case you have complex logic, explain any genius logic, >>>>>>>>>>>> rationale for >>>>>>>>>>>> >> doing something >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> Logging >>>>>>>>>>>> >> >>>>>>>>>>>> >> Log then and there >>>>>>>>>>>> >> >>>>>>>>>>>> >> With ample local information and context >>>>>>>>>>>> >> >>>>>>>>>>>> >> Remember logs are for users. Make them meaningful, readable >>>>>>>>>>>> and also make >>>>>>>>>>>> >> sure you spell check (ispell) >>>>>>>>>>>> >> >>>>>>>>>>>> >> Use correct log level, e.g do not log errors as warnings or >>>>>>>>>>>> vice versa >>>>>>>>>>>> >> >>>>>>>>>>>> >> Remember to log the error before throwing an exception >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> Logic >>>>>>>>>>>> >> >>>>>>>>>>>> >> Make your genius code readable >>>>>>>>>>>> >> >>>>>>>>>>>> >> Use meaningful variable names. Remember, compilers can >>>>>>>>>>>> handle long >>>>>>>>>>>> >> variable names >>>>>>>>>>>> >> >>>>>>>>>>>> >> ________________________________ >>>>>>>>>>>> >> >>>>>>>>>>>> >> Variables declared in locality, as an when required >>>>>>>>>>>> >> >>>>>>>>>>>> >> The underscore character should be used only when declaring >>>>>>>>>>>> constants, and >>>>>>>>>>>> >> should not be used anywhere else in Java code >>>>>>>>>>>> >> >>>>>>>>>>>> >> Make sure the function/method names are self descriptive >>>>>>>>>>>> >> >>>>>>>>>>>> >> One should be able explain a function/method using a single >>>>>>>>>>>> sentence >>>>>>>>>>>> >> without conjunctions (that is no and/or in description) >>>>>>>>>>>> >> >>>>>>>>>>>> >> Have proper separation of concerns >>>>>>>>>>>> >> >>>>>>>>>>>> >> Check if you do multiple things in a function >>>>>>>>>>>> >> >>>>>>>>>>>> >> Too many parameters are smelly, indicates that something is >>>>>>>>>>>> wrong >>>>>>>>>>>> >> >>>>>>>>>>>> >> Use variables to capture status and return at the end >>>>>>>>>>>> whenever possible >>>>>>>>>>>> >> >>>>>>>>>>>> >> Avoid status returning from multiple places, that makes code >>>>>>>>>>>> less readable >>>>>>>>>>>> >> >>>>>>>>>>>> >> Be consistent in managing state e.g. Initialize to FALSE and >>>>>>>>>>>> set to TRUE >>>>>>>>>>>> >> everywhere else >>>>>>>>>>>> >> >>>>>>>>>>>> >> Where does that if block end, or what block did you end >>>>>>>>>>>> right now? Have a >>>>>>>>>>>> >> comment at end of a block at } >>>>>>>>>>>> >> >>>>>>>>>>>> >> Use if statements rationally, ensure the behavior is >>>>>>>>>>>> homogeneous >>>>>>>>>>>> >> >>>>>>>>>>>> >> In case of returning a collection, must return an empty >>>>>>>>>>>> collection and not >>>>>>>>>>>> >> null (or NULL) >>>>>>>>>>>> >> >>>>>>>>>>>> >> Do not use interfaces to declare constants. Use a final >>>>>>>>>>>> class with public >>>>>>>>>>>> >> static final attributes and a private constructor. >>>>>>>>>>>> >> >>>>>>>>>>>> >> Always use braces to surround code blocks ({}) even if it is >>>>>>>>>>>> a single >>>>>>>>>>>> >> line. >>>>>>>>>>>> >> >>>>>>>>>>>> >> Break code into multiple lines if it exceeds 100 columns >>>>>>>>>>>> >> >>>>>>>>>>>> >> Align method parameters, exception etc. in order to improve >>>>>>>>>>>> readability. >>>>>>>>>>>> >> Use the settings in your IDE to do this. >>>>>>>>>>>> >> >>>>>>>>>>>> >> Be sure to define, who should catch an exception when >>>>>>>>>>>> throwing one >>>>>>>>>>>> >> >>>>>>>>>>>> >> Be sure to catch those exceptions that you can handle >>>>>>>>>>>> >> >>>>>>>>>>>> >> Do not use string literals in the code, instead declare >>>>>>>>>>>> constants and use >>>>>>>>>>>> >> them, constant names should be self descriptive >>>>>>>>>>>> >> >>>>>>>>>>>> >> Use constants already defined whenever possible, check to >>>>>>>>>>>> see if someone >>>>>>>>>>>> >> already declared one, specially in base libs, like Axis2 >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> Java Specific >>>>>>>>>>>> >> >>>>>>>>>>>> >> Coding conventions - >>>>>>>>>>>> >> http://www.oracle.com/technetwork/java/codeconv-138413.html >>>>>>>>>>>> >> >>>>>>>>>>>> >> Only exception is line length, we use 100 >>>>>>>>>>>> >> >>>>>>>>>>>> >> Run FindBugs on your code - http://findbugs.sourceforge.net/ >>>>>>>>>>>> >> >>>>>>>>>>>> >> Use CONSTANT_VALUE.equals(variable_name) to avoid null >>>>>>>>>>>> pointer exceptions >>>>>>>>>>>> >> >>>>>>>>>>>> >> IMPORTANT >>>>>>>>>>>> >> >>>>>>>>>>>> >> You should run FindBugs on your new code or modified code, >>>>>>>>>>>> and commit only >>>>>>>>>>>> >> after fixing any bugs reported by FindBugs. It is >>>>>>>>>>>> recommended to use the >>>>>>>>>>>> >> IntellijIDEA (FindBugs-IDEA) or Eclipse FindBugs plugin to >>>>>>>>>>>> do this. >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> -- >>>>>>>>>>>> >> Lakmal Warusawithana >>>>>>>>>>>> >> Vice President, Apache Stratos >>>>>>>>>>>> >> Director - Cloud Architecture; WSO2 Inc. >>>>>>>>>>>> >> Mobile : +94714289692 >>>>>>>>>>>> >> Blog : http://lakmalsview.blogspot.com/ >>>>>>>>>>>> >> >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > -- >>>>>>>>>>>> > Isuru Perera >>>>>>>>>>>> > Senior Software Engineer | WSO2, Inc. | http://wso2.com/ >>>>>>>>>>>> > Lean . Enterprise . Middleware >>>>>>>>>>>> > >>>>>>>>>>>> > about.me/chrishantha >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Akila Ravihansa Perera >>>>>>>>>>>> Software Engineer, WSO2 >>>>>>>>>>>> >>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Imesh Gunaratne >>>>>>>>>>> >>>>>>>>>>> Technical Lead, WSO2 >>>>>>>>>>> Committer & PMC Member, Apache Stratos >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Best Regards, >>>>>>>>>> Nirmal >>>>>>>>>> >>>>>>>>>> Nirmal Fernando. >>>>>>>>>> PPMC Member & Committer of Apache Stratos, >>>>>>>>>> Senior Software Engineer, WSO2 Inc. >>>>>>>>>> >>>>>>>>>> Blog: http://nirmalfdo.blogspot.com/ >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Best Regards, >>>>>>>>> Nirmal >>>>>>>>> >>>>>>>>> Nirmal Fernando. >>>>>>>>> PPMC Member & Committer of Apache Stratos, >>>>>>>>> Senior Software Engineer, WSO2 Inc. >>>>>>>>> >>>>>>>>> Blog: http://nirmalfdo.blogspot.com/ >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> *Sajith Kariyawasam* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *Committer and PMC member, Apache Stratos,WSO2 Inc., >>>>>>>> http://wso2.com <http://wso2.com>AMIE (SL)Mobile: +94772269575-- Isuru >>>>>>>> PereraSenior Software Engineer | WSO2, Inc. | http://wso2.com/ >>>>>>>> <http://wso2.com/>Lean . Enterprise . Middlewareabout.me/chrishantha >>>>>>>> <http://about.me/chrishantha> * >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> -- >>>>>> Lahiru Sandaruwan >>>>>> Committer and PMC member, Apache Stratos, >>>>>> Senior Software Engineer, >>>>>> WSO2 Inc., http://wso2.com >>>>>> lean.enterprise.middleware >>>>>> >>>>>> email: lahi...@wso2.com cell: (+94) 773 325 954 >>>>>> blog: http://lahiruwrites.blogspot.com/ >>>>>> twitter: http://twitter.com/lahirus >>>>>> linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146 >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> *Sajith Kariyawasam* >>>>> >>>>> >>>>> *Committer and PMC member, Apache Stratos,WSO2 Inc., http://wso2.com >>>>> <http://wso2.com>AMIE (SL)Mobile: +94772269575* >>>>> >>>> >>>> >>>> >>>> -- >>>> Reka Thirunavukkarasu >>>> Senior Software Engineer, >>>> WSO2, Inc.:http://wso2.com, >>>> Mobile: +94776442007 >>>> >>>> >>>> >>> >>> >>> -- >>> *Sajith Kariyawasam* >>> >>> >>> *Committer and PMC member, Apache Stratos,WSO2 Inc., http://wso2.com >>> <http://wso2.com>AMIE (SL)Mobile: +94772269575* >>> >> >> > > > -- > Reka Thirunavukkarasu > Senior Software Engineer, > WSO2, Inc.:http://wso2.com, > Mobile: +94776442007 > > > -- *Sajith Kariyawasam* *Committer and PMC member, Apache Stratos,WSO2 Inc., http://wso2.com <http://wso2.com>AMIE (SL)Mobile: +94772269575*