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 <[email protected]> wrote: > +1 for 120. > > On Thu, Oct 2, 2014 at 1:15 PM, Sajith Kariyawasam <[email protected]> > 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 <[email protected]> >> wrote: >> >>> +1 for 120. >>> >>> On Thu, Oct 2, 2014 at 11:19 AM, Isuru Perera <[email protected]> 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 <[email protected]> >>>> 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 < >>>>> [email protected]> wrote: >>>>> >>>>>> Guys, >>>>>> >>>>>> Did you all manage to create the formatter profiles? >>>>>> >>>>>> On Tue, Sep 23, 2014 at 11:59 AM, Nirmal Fernando < >>>>>> [email protected]> 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 <[email protected]> >>>>>>> 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 < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> On Mon, Sep 22, 2014 at 4:39 PM, Isuru Perera <[email protected]> >>>>>>>>> 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 < >>>>>>>>> [email protected]> >>>>>>>>> > 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: [email protected] 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*
