Thanks All for the feedback.

I continue in my spare time and did analyse some rule that I propose to disable.
Here are my thought : 

* DuplicateStringLiteral :      Not Adapted to OFBiz : String Literal are 
massively entityName. No need to make them constants.
* LineLength : Can be configured : default 120, with 140 configured there are 
654 fix needed, 445 fixes to 150 length configuration (same as Java 
checkstyle). IMO I prefer default config, but we could go with the same as 
checkstyle config ?
* UnnecessaryGetter : Lot of java OFBiz code use getXXX. Applying this rule, 
will lead massive java changes. I prefer to ignore.
 * NoDef : We need to agree to not use def in variable declaration or method 
return type (implies lots of fix). I think that is better to have type defined.
* MethodReturnTypeRequired : same as above
* UnnecessaryReturnKeyword : Not sure that is is wanted, in our dev team it can 
be disturbing, *WDYT* ? 
* UnnecessaryObjectReferences : with method usage to reduce code. Context.with 
{ toto = « toto »}, I was unaware of this, i'd like to keep it if possible.
* CompileStatic : I propose to ignore this rule, not needed IMO
 IfStatementBraces : Do we allow one lined if without braces ? I prefer not, 
but that seems convenient some times, This rule applies also on multiline, and 
for me we should keep it. Since it is not configurable for oneline, i am into 
keeping it.
* DuplicateNumberLiteral : Same as String Literal
* UnnecessarySetter : Same as UnnecessaryGetter

Thanks,

Gil

On 2022/07/04 15:24:43 Gil Portenseigne wrote:
> Hello Devs,
> 
> I would like to continue Codenarc integration in OFBiz (OFBIZ-11167).
> 
> For those who are not aware, Codenarc is an analysis tools for Groovy
> for defects, bad practices, inconsistencies, style issues and more.
> 
> For this purpose we need to agree about the ruleset to put in place.
> 
> I took as a basis the ruleset : 
> https://codenarc.org/StarterRuleSet-AllRulesByCategory.groovy.txt
> 
> And started to fix some in https://github.com/apache/ofbiz-framework/pull/517
> 
> Before doing the complete work, a first rule made me wonder if that is a
> choice that we will be doing as a community : 
> 
> IfStatementBraces - Use braces for if statements, even for a single statement.
> 
> There are 234 occurrences in the project, and I guess that some opinions
> might diverge on this subject.
> 
> Moreover, some rules needs lots of fixes in the project (those with more
> than 200 occurrences) :
> 
> +------------+---------------------------------------------------------------------+
> | Number of  | Rule name and details                                          
>      |
> | occurrence |                                                                
>      |
> +============+=====================================================================+
> | 9883       | UnnecessaryGString  - String objects should be created with 
> single  |
> |            |  quotes, and GString  objects created with double quotes. 
> Creating  |
> |            |  normal String objects with  double quotes is confusing to 
> readers. |
> +------------+---------------------------------------------------------------------+
> | 4569       | DuplicateStringLiteral  - Code containing duplicate String 
> literals |
> |            |  can usually be improved by  declaring the String as a 
> constant     |
> |            | field. The ignoreStrings property ()  can optionally specify a 
>      |
> |            | comma-separated list of Strings to ignore.                     
>      |
> +------------+---------------------------------------------------------------------+
> | 4209       | SpaceAroundMapEntryColon  - Check for configured formatting of 
>      |
> |            | whitespace around colons for  literal Map entries.             
>      |
> |            | The characterBeforeColonRegex and  characterAfterColonRegex    
>      |
> |            | properties specify a regular expression that  must match the   
>      |
> |            | character before/after the colon.                              
>      |
> +------------+---------------------------------------------------------------------+
> | 1448       | LineLength  - Checks the maximum length for each line of       
>      |
> |            | source code. It checks for  number of characters, so lines     
>      |
> |            |  that include tabs may appear longer than  the allowed number  
>      |
> |            |  when viewing the file. The maximum line length can  be        
>      |
> |            | configured by setting the length property, which defaults to 
> 120.   |
> +------------+---------------------------------------------------------------------+
> | 885        | UnnecessaryGetter  - Checks for explicit calls to 
> getter/accessor   |
> |            |  methods which can, for  the most part, be replaced by 
> property     |
> |            |  access. A getter is defined as a  method call that matches    
>      |
> |            | get[A-Z] but not getClass() or get[A-Z][A-Z]  such as 
> getURL().     |
> |            |  Getters do not take method arguments. The  ignoreMethodNames  
>      |
> |            | property (null) can specify method names that should  be 
> ignored    |
> |            | , optionally containing wildcard characters ('*' or '?').      
>      |
> +------------+---------------------------------------------------------------------+
> | 601        | NoDef - def should not be used. You should replace it with     
>      |
> |            | concrete type.                                                 
>      |
> +------------+---------------------------------------------------------------------+
> | 485        | MethodReturnTypeRequired  - Checks that method return types    
>      |
> |            |  are not dynamic, that is they are  explicitly stated and      
>      |
> |            |  different than def.                                           
>      |
> +------------+---------------------------------------------------------------------+
> | 484        | Indentation - Check indentation for class and method           
>      |
> |            | declarations, and initial statements.                          
>      |
> +------------+---------------------------------------------------------------------+
> | 482        | UnnecessaryReturnKeyword  - In Groovy, the return keyword      
>      |
> |            |  is often optional. If a statement is  the last line in a      
>      |
> |            | method or closure then you do not need to have the return 
> keyword.  |
> +------------+---------------------------------------------------------------------+
> | 407        | UnnecessaryObjectReferences  - Violations are triggered when   
>      |
> |            | an excessive set of consecutive  statements all reference      
>      |
> |            | the same variable. This can be made more  readable by using    
>      |
> |            |  a with or identity block.                                     
>      |
> +------------+---------------------------------------------------------------------+
> | 345        | CompileStatic - Check that classes are explicitely annotated   
>      |
> |            | with either @GrailsCompileStatic, @CompileStatic or 
> @CompileDynamic |
> +------------+---------------------------------------------------------------------+
> | 320        | ExplicitCallToEqualsMethod  - This rule detects when the       
>      |
> |            | equals(Object) method is called directly  in code instead      
>      |
> |            |  of using the == or != operator. A groovier way to             
>      |
> |            |  express this: a.equals(b) is this: a == b and a groovier      
>      |
> |            |  way to express :  !a.equals(b) is : a != b                    
>      |
> +------------+---------------------------------------------------------------------+
> | 235        | IfStatementBraces - Use braces for if statements,              
>      |
> |            | even for a single statement.                                   
>      |
> +------------+---------------------------------------------------------------------+
> | 235        | SpaceAroundOperator - Check that there is at least one space   
>      |
> |            | (blank) or whitespace around each binary operator.             
>      |
> +------------+---------------------------------------------------------------------+
> | 211        | NestedBlockDepth - Checks for blocks or closures nested more   
>      |
> |            |  than maxNestedBlockDepth (5) levels deep.                     
>      |
> +------------+---------------------------------------------------------------------+
> | 201        | TrailingWhitespace - Checks that no lines of source code       
>      |
> |            | end with whitespace characters.                                
>      |
> +------------+---------------------------------------------------------------------+
> 
> I think that if someone want to express an opposition about applying one
> of the above rule, i would be great to express it and discuss it here.
> 
> My opinion is that it could be nice to adopt every rules, to respect
> standard best practice. Even if it implies lot of code changes.
> 
> Thanks in advance for your feedback.
> 
> Regards,
> 
> Gil
> 

Reply via email to