diff --git a/.ci/files/all-java.xml b/.ci/files/all-java.xml
index fe0e3053ae..dc6998b35f 100644
--- a/.ci/files/all-java.xml
+++ b/.ci/files/all-java.xml
@@ -184,7 +184,7 @@
-
+
diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/UnaryOp.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/UnaryOp.java
index 170911d0bc..a9f525fdff 100644
--- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/UnaryOp.java
+++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/UnaryOp.java
@@ -4,6 +4,10 @@
package net.sourceforge.pmd.lang.java.ast;
+import java.util.Set;
+
+import org.checkerframework.checker.nullness.qual.Nullable;
+
/**
* A unary operator, either prefix or postfix. This is used by {@link ASTUnaryExpression UnaryExpression}
* to abstract over the syntactic form of the operator.
@@ -96,4 +100,25 @@ public enum UnaryOp implements InternalInterfaces.OperatorLike {
return this.code;
}
+ /**
+ * Tests if the node is an {@link ASTUnaryExpression} with one of the given operators.
+ */
+ public static boolean isUnaryExprWithOperator(@Nullable JavaNode e, Set operators) {
+ if (e instanceof ASTUnaryExpression) {
+ ASTUnaryExpression unary = (ASTUnaryExpression) e;
+ return operators.contains(unary.getOperator());
+ }
+ return false;
+ }
+
+ /**
+ * Tests if the node is an {@link ASTUnaryExpression} with the given operator.
+ */
+ public static boolean isUnaryExprWithOperator(@Nullable JavaNode e, UnaryOp operator) {
+ if (e instanceof ASTUnaryExpression) {
+ ASTUnaryExpression unary = (ASTUnaryExpression) e;
+ return operator == unary.getOperator();
+ }
+ return false;
+ }
}
diff --git a/pmd-java/src/main/resources/category/java/errorprone.xml b/pmd-java/src/main/resources/category/java/errorprone.xml
index 5173cc5106..5cd2677d96 100644
--- a/pmd-java/src/main/resources/category/java/errorprone.xml
+++ b/pmd-java/src/main/resources/category/java/errorprone.xml
@@ -451,7 +451,7 @@ try { // Prefer this:
@@ -474,28 +474,28 @@ the property ignoreMagicNumbers is not taken into account, if there are multiple
1]
+//IfStatement[$ignoreExpressions = false()]/*[1][count(*[pmd-java:nodeIs('Literal')]
+ [not(pmd-java:nodeIs('NullLiteral'))]
+ [not(pmd-java:nodeIs('BooleanLiteral'))]) > 1]
]]>
diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/errorprone/AvoidLiteralsInIfConditionTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/errorprone/AvoidLiteralsInIfConditionTest.java
index 323a568224..7621018942 100644
--- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/errorprone/AvoidLiteralsInIfConditionTest.java
+++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/errorprone/AvoidLiteralsInIfConditionTest.java
@@ -6,7 +6,6 @@ package net.sourceforge.pmd.lang.java.rule.errorprone;
import net.sourceforge.pmd.testframework.PmdRuleTst;
-@org.junit.Ignore("Rule has not been updated yet")
public class AvoidLiteralsInIfConditionTest extends PmdRuleTst {
// no additional unit tests
}
diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/AvoidLiteralsInIfCondition.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/AvoidLiteralsInIfCondition.xml
index 62bfd8505f..a03efce856 100644
--- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/AvoidLiteralsInIfCondition.xml
+++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/AvoidLiteralsInIfCondition.xml
@@ -7,6 +7,7 @@
basic test
1
+ 3
0
@@ -63,7 +68,7 @@ public class Foo {
0
0.0) {} // magic number 0.0
if (aDouble >= Double.MIN_VALUE) {} // preferred approach
}
@@ -76,7 +81,7 @@ public class Foo {
0
0) {
}
}
@@ -90,11 +95,12 @@ public class Foo {
0
@@ -124,7 +130,7 @@ public class Foo {
4,7,7,8,9,10,11,11