[jira] [Comment Edited] (OFBIZ-11167) Use Codenarc to test Groovy code

2023-07-19 Thread Paul Foxworthy (Jira)


[ 
https://issues.apache.org/jira/browse/OFBIZ-11167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17561935#comment-17561935
 ] 

Paul Foxworthy edited comment on OFBIZ-11167 at 7/19/23 10:35 PM:
--

I wrote a little script to extract the rules in order of occurrence. I will 
launch an email to the dev list to discuss about the rules to be respected, and 
the implied changes.

There are the results :
||Number of occurence||Rule name and details||
|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.|
|190|DuplicateNumberLiteral - Code containing number String literals can 
usually be improved by declaring the number as a constant field. The 
ignoreNumbers property (0,1) can optionally specify a comma-separated list of 
numbers to ignore.|
|190|NoWildcardImports - Wildcard imports, static or otherwise, should not be 
used.|
|173|TrailingComma - Check whether list and map literals contain optional 
trailing comma.|
|167|InvertedCondition - An inverted condition is one where a constant 
expression is used on the left hand side of the equals comparision. Such 
conditions can be confusing especially when used in assertions where the 
expected value is by convention placed on the right hand side of the 
comparision.|
|167|JavadocEmptyReturnTag - Checks for empty @return tags within javadoc.|
|164|UnnecessarySetter - Checks for explicit calls to setter methods which can, 
for the most part, be replaced by assignment to property. A setter is defined 
as a method call that matches set[A-Z] but not set[A-Z][A-Z] such as setURL(). 
Setters take one method argument.|
|146|CouldBeElvis - Catch an if block that could be written as an elvis 
expression.|
|142|UnusedImport - Imports for a class that is never referenced within the 
source file is unnecessary.|
|141|AbcMetric - Checks the ABC size metric for methods/classes. A method (or 
"closure field") with an ABC score greater than the maxMethodAbcScore property 
(60) causes a 

[jira] [Comment Edited] (OFBIZ-11167) Use Codenarc to test Groovy code

2023-07-19 Thread Paul Foxworthy (Jira)


[ 
https://issues.apache.org/jira/browse/OFBIZ-11167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17561935#comment-17561935
 ] 

Paul Foxworthy edited comment on OFBIZ-11167 at 7/19/23 10:32 PM:
--

I wrote a little script to extract the rules in order of occurrence. I will 
launch an email to the dev list to discuss about the rules to be respected, and 
the implied changes.

There are the results :
||Number of occurence||Rule name and details||
|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.|
|190|DuplicateNumberLiteral - Code containing number String literals can 
usually be improved by declaring the number as a constant field. The 
ignoreNumbers property (0,1) can optionally specify a comma-separated list of 
numbers to ignore.|
|190|NoWildcardImports - Wildcard imports, static or otherwise, should not be 
used.|
|173|TrailingComma - Check whether list and map literals contain optional 
trailing comma.|
|167|InvertedCondition - An inverted condition is one where a constant 
expression is used on the left hand side of the equals comparision. Such 
conditions can be confusing especially when used in assertions where the 
expected value is by convention placed on the right hand side of the 
comparision.|
|167|JavadocEmptyReturnTag - Checks for empty @return tags within javadoc.|
|164|UnnecessarySetter - Checks for explicit calls to setter methods which can, 
for the most part, be replaced by assignment to property. A setter is defined 
as a method call that matches set[A-Z] but not set[A-Z][A-Z] such as setURL(). 
Setters take one method argument.|
|146|CouldBeElvis - Catch an if block that could be written as an elvis 
expression.|
|142|UnusedImport - Imports for a class that is never referenced within the 
source file is unnecessary.|
|141|AbcMetric - Checks the ABC size metric for methods/classes. A method (or 
"closure field") with an ABC score greater than the maxMethodAbcScore property 
(60) causes a 

[jira] [Comment Edited] (OFBIZ-11167) Use Codenarc to test Groovy code

2019-11-04 Thread Jacques Le Roux (Jira)


[ 
https://issues.apache.org/jira/browse/OFBIZ-11167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16962501#comment-16962501
 ] 

Jacques Le Roux edited comment on OFBIZ-11167 at 11/4/19 10:57 AM:
---

Hello [~jleroux] , [~mthl] and others

I did play a bit with codenarc and got a first step integration.

You can find attached the gradle integration and a custom rule file with all of 
the provided rules fount here : 
[http://codenarc.sourceforge.net/StarterRuleSet-AllRulesByCategory.groovy.txt] 
(i needed to remove some rules that where not recognized, since codenarc last 
revision is provided with upcoming gradle 6).

I attached the results against trunk, each file described every rule violations 
with the rule references at the bottom of the page.

I will take a look more closely in the next days/week, to clean up rules for 
OFBiz :)

Regards


was (Author: gil portenseigne):
Hello [~jleroux] , [~mthl] and others

I did play a bit with codenarc and got a first step integration.

You can find attached the gradle integration and a custom rule file with all of 
the provided rules fount here : 
[http://codenarc.sourceforge.net/StarterRuleSet-AllRulesByCategory.groovy.txt] 
(i needed to remove some rules that where not recognized, since codenarc last 
revision is provided with upcoming gradle 6).

I attached the results against trunk, each file described every rule violations 
with the rule references at the bottom of the page.

I will take a look more closely in the next days/week, to clean up rules for 
OFBiz :)

Regards

 

 

 

> Use Codenarc to test Groovy code
> 
>
> Key: OFBIZ-11167
> URL: https://issues.apache.org/jira/browse/OFBIZ-11167
> Project: OFBiz
>  Issue Type: New Feature
>  Components: framework
>Reporter: Jacques Le Roux
>Assignee: Gil Portenseigne
>Priority: Minor
> Attachments: OFBIZ-11167.patch, main.html, test.html
>
>
> Now that we use Groovy more and more, I think we should really have a look a 
> Codenarc
> https://docs.gradle.org/current/userguide/codenarc_plugin.html
> We already discussed it at https://markmail.org/message/uigcpnxqgizhd2oi and 
> https://markmail.org/message/rp6njoiohkkiodbe
> We know it's a crucial task but not an easy but rather a long term one
> Here are some interesting links (before I delete my FF tabs group about it)
> http://codenarc.sourceforge.net/codenarc-other-tools-frameworks.html
> http://codenarc.sourceforge.net/codenarc-creating-ruleset.html
> https://github.com/gradle/gradle/tree/master/config
> https://stackoverflow.com/questions/14358471/how-to-generate-codenarc-report-for-main-and-test-classes-using-different-rule-s
> https://mrhaki.blogspot.com/2011/01/gradle-goodness-use-groovy-ruleset-file.html



--
This message was sent by Atlassian Jira
(v8.3.4#803005)