- Extend FinalFieldCouldBeStatic to consider all compile-time constants
   and not only single literals.
This commit is contained in:
Juan Martín Sotuyo Dodero
2024-04-07 02:32:00 -03:00
parent 8b18e9524b
commit 4a9627c5bb

View File

@@ -733,10 +733,10 @@ in each object at runtime.
[not(pmd-java:modifiers() = 'static')] [not(pmd-java:modifiers() = 'static')]
[not(./ancestor::ClassDeclaration[1][pmd-java:hasAnnotation('lombok.experimental.UtilityClass')])] [not(./ancestor::ClassDeclaration[1][pmd-java:hasAnnotation('lombok.experimental.UtilityClass')])]
[not(.//Annotation[pmd-java:typeIs('lombok.Builder.Default')])] [not(.//Annotation[pmd-java:typeIs('lombok.Builder.Default')])]
/VariableDeclarator[*[pmd-java:nodeIs('Literal')] /VariableDeclarator[*[last()][@CompileTimeConstant = true()
or VariableAccess[@Name = //FieldDeclaration[pmd-java:modifiers() = 'static']/VariableDeclarator/VariableId/@Name] or self::VariableAccess[@Name = //FieldDeclaration[pmd-java:modifiers() = 'static']/VariableDeclarator/VariableId/@Name]
or FieldAccess or self::FieldAccess
or ArrayAllocation/ArrayType/ArrayDimensions/ArrayDimExpr/NumericLiteral[@IntLiteral = true()][@Image = "0"]] or self::ArrayAllocation/ArrayType/ArrayDimensions/ArrayDimExpr/NumericLiteral[@IntLiteral = true()][@Image = "0"]]]
/VariableId /VariableId
[not(@Name = //MethodDeclaration[not(pmd-java:modifiers() = 'static')] [not(@Name = //MethodDeclaration[not(pmd-java:modifiers() = 'static')]
//SynchronizedStatement/(VariableAccess|FieldAccess[ThisExpression])/@Name)] //SynchronizedStatement/(VariableAccess|FieldAccess[ThisExpression])/@Name)]