- 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(./ancestor::ClassDeclaration[1][pmd-java:hasAnnotation('lombok.experimental.UtilityClass')])]
[not(.//Annotation[pmd-java:typeIs('lombok.Builder.Default')])]
/VariableDeclarator[*[pmd-java:nodeIs('Literal')]
or VariableAccess[@Name = //FieldDeclaration[pmd-java:modifiers() = 'static']/VariableDeclarator/VariableId/@Name]
or FieldAccess
or ArrayAllocation/ArrayType/ArrayDimensions/ArrayDimExpr/NumericLiteral[@IntLiteral = true()][@Image = "0"]]
/VariableDeclarator[*[last()][@CompileTimeConstant = true()
or self::VariableAccess[@Name = //FieldDeclaration[pmd-java:modifiers() = 'static']/VariableDeclarator/VariableId/@Name]
or self::FieldAccess
or self::ArrayAllocation/ArrayType/ArrayDimensions/ArrayDimExpr/NumericLiteral[@IntLiteral = true()][@Image = "0"]]]
/VariableId
[not(@Name = //MethodDeclaration[not(pmd-java:modifiers() = 'static')]
//SynchronizedStatement/(VariableAccess|FieldAccess[ThisExpression])/@Name)]