Revert "support TreeSet/Map"

This reverts commit 209fc134621862b7043dd05ac72265cd21a838d2.
This commit is contained in:
Andreas Dangel
2024-06-27 11:29:00 +02:00
parent 209fc13462
commit f37d432b9e
3 changed files with 9 additions and 23 deletions

View File

@ -7,8 +7,6 @@ package net.sourceforge.pmd.lang.java.rule.bestpractices;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.TreeMap;
import java.util.TreeSet;
import net.sourceforge.pmd.lang.java.ast.ASTConstructorCall;
import net.sourceforge.pmd.lang.java.rule.AbstractJavaRulechainRule;
@ -35,11 +33,8 @@ public class UseEnumCollectionsRule extends AbstractJavaRulechainRule {
JTypeMirror builtType = call.getTypeMirror();
if (!builtType.isRaw()) {
boolean isMap = TypeTestUtil.isExactlyA(HashMap.class, builtType)
|| TypeTestUtil.isExactlyA(TreeMap.class, builtType);
if (isMap
|| TypeTestUtil.isExactlyA(HashSet.class, builtType)
|| TypeTestUtil.isExactlyA(TreeSet.class, builtType)) {
boolean isMap = TypeTestUtil.isExactlyA(HashMap.class, builtType);
if (isMap || TypeTestUtil.isExactlyA(HashSet.class, builtType)) {
List<JTypeMirror> typeArgs = ((JClassType) builtType).getTypeArgs();
JTypeDeclSymbol keySymbol = typeArgs.get(0).getSymbol();

View File

@ -1731,9 +1731,9 @@ public class Foo {
class="net.sourceforge.pmd.lang.java.rule.bestpractices.UseEnumCollectionsRule"
externalInfoUrl="${pmd.website.baseurl}/pmd_rules_java_bestpractices.html#useenumcollections">
<description>
Wherever possible, use `EnumSet` or `EnumMap` instead of more generic set and map implementations when the keys
are of an enum type. The specialized collections are more space- and time-efficient.
This rule reports constructor expressions for hash and tree sets or maps whose key type is an enum type.
Wherever possible, use `EnumSet` or `EnumMap` instead of `HashSet` and `HashMap` when the keys
are of an enum type. This rule reports constructor expressions for hash sets or maps whose key
type is an enum type.
</description>
<priority>3</priority>
<example>

View File

@ -6,11 +6,10 @@
<test-code>
<description>Use enumset</description>
<expected-problems>2</expected-problems>
<expected-linenumbers>8,12</expected-linenumbers>
<expected-problems>1</expected-problems>
<expected-linenumbers>8</expected-linenumbers>
<expected-messages>
<message>This collection could be an EnumSet</message>
<message>This collection could be an EnumSet</message>
</expected-messages>
<code><![CDATA[
import java.util.*;
@ -23,10 +22,6 @@
Set<E> set = new HashSet<>();
return set.contains(E.A);
}
public static boolean bar2() {
Set<E> set = new TreeSet<>();
return set.contains(E.A);
}
}
]]></code>
</test-code>
@ -35,11 +30,10 @@
<test-code>
<description>Use enummap</description>
<expected-problems>2</expected-problems>
<expected-linenumbers>7,10</expected-linenumbers>
<expected-problems>1</expected-problems>
<expected-linenumbers>7</expected-linenumbers>
<expected-messages>
<message>This collection could be an EnumMap</message>
<message>This collection could be an EnumMap</message>
</expected-messages>
<code><![CDATA[
import java.util.*;
@ -50,9 +44,6 @@
public static Map<E, Boolean> bar() {
return new HashMap<>();
}
public static Map<E, Boolean> bar() {
return new TreeMap<>();
}
}
]]></code>
</test-code>