Merge branch 'ollieabbey-master' into master

Refs #2747
This commit is contained in:
Clément Fournier
2020-09-06 18:23:19 +02:00
3 changed files with 65 additions and 5 deletions

View File

@ -16,9 +16,15 @@ This is a {{ site.pmd.release_type }} release.
### Fixed Issues
* pmd-java
* [#2708](https://github.com/pmd/pmd/pull/2708): \[java] False positive FinalFieldCouldBeStatic when using lombok Builder.Default
### API Changes
### External Contributions
* [#2747](https://github.com/pmd/pmd/pull/2747): \[java] Don't trigger FinalFieldCouldBeStatic when field is annotated with lombok @Builder.Default - [Ollie Abbey](https://github.com/ollieabbey)
{% endtocmaker %}

View File

@ -740,8 +740,11 @@ in each object at runtime.
<![CDATA[
//FieldDeclaration
[@Final= true() and @Static= false()]
/VariableDeclarator/VariableInitializer/Expression
/PrimaryExpression[not(PrimarySuffix)]/PrimaryPrefix/Literal
[not(preceding-sibling::Annotation/MarkerAnnotation/Name[@Image="Builder.Default"]
and //ImportDeclaration/Name[@Image="lombok.Builder"])]
/VariableDeclarator
[VariableInitializer/Expression/PrimaryExpression[not(PrimarySuffix)]/PrimaryPrefix/Literal]
/VariableDeclaratorId
]]>
</value>
</property>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<test-data
xmlns="http://pmd.sourceforge.net/rule-tests"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/rule-tests http://pmd.sourceforge.net/rule-tests_1_0_0.xsd">
xmlns="http://pmd.sourceforge.net/rule-tests"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/rule-tests http://pmd.sourceforge.net/rule-tests_1_0_0.xsd">
<test-code>
<description>simple failure case</description>
@ -98,6 +98,57 @@ interface Test {
<code><![CDATA[
public @interface MetricType {
int CHECKBOX = 0, COUNTER = 1, SPINNER = 2, NOTE = 3, STOPWATCH = 4, HEADER = 5;
}
]]></code>
</test-code>
<test-code>
<description>#2708 - False positive with lombok @Builder.Default fields</description>
<expected-problems>0</expected-problems>
<code><![CDATA[
package com.example;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class ExampleClass {
@Builder.Default
private final long exampleField = 0L;
}
]]></code>
</test-code>
<test-code>
<description>#2708 - Should trigger with non-lombok @Builder.Default fields</description>
<expected-problems>1</expected-problems>
<code><![CDATA[
package com.example;
import not.lombok.Builder;
import lombok.Data;
@Data
@Builder
public class ExampleClass {
@Builder.Default
private final long exampleField = 0L;
}
]]></code>
</test-code>
<test-code>
<description>Should trigger multiple times for fields declared on one line</description>
<expected-problems>2</expected-problems>
<code><![CDATA[
package com.example;
public class ExampleClass {
private final String one = "one", two = "two";
}
]]></code>
</test-code>