import java.util.Set; import java.util.ArrayList; import java.util.Collection; import java.util.EnumSet; import java.util.HashSet; import com.google.common.collect.Lists; import com.google.common.collect.Sets; class A { public enum COLOR { RED, GREEN, BLUE, ORANGE; } class SetString implements Set<String> { } class SetColor implements Set<COLOR> { } class ExtendedSet<E> implements Set<E> { } public void doSomething(Set<COLOR> param) { // compliant, we ignore parameters. Set<COLOR> warm = new HashSet<COLOR>(); // Noncompliant [[sc=23;ec=43]] {{Convert this Set to an EnumSet.}} Set foo = new HashSet(); warm.add(COLORS.RED); warm.add(COLORS.ORANGE); SetString ss; SetColor sc; ExtendedSet<COLOR> es; // Compliant, we check only initializer. Set warm2 = new HashSet<COLOR>(); // Noncompliant [[sc=17;ec=37]] {{Convert this Set to an EnumSet.}} EnumSet<COLOR> warm3 = EnumSet.of(COLOR.RED, COLOR.ORANGE); Set<COLOR> warm4 = EnumSet.of(COLOR.RED, COLOR.ORANGE); Set<Integer> ports2 = new HashSet<>(); Set<COLOR> ports = new HashSet<>(); // Noncompliant [[sc=24;ec=39]] {{Convert this Set to an EnumSet.}} SetColor ports3 = new HashSet<>(); Set<COLOR> ports4 = Sets.immutableEnumSet(COLOR.RED); // Compliant - guava use an enum set with constraint of immutability Set<COLOR> ports5 = Sets.immutableEnumSet(Lists.newArrayList(COLOR.RED)); // Compliant - guava use an enum set with constraint of immutability Collection<COLOR> col = new ArrayList<>(); Set<COLOR> col2 = java.util.Collections.unmodifiableSet(EnumSet.of(COLOR.RED, COLOR.ORANGE)); Set<COLOR> col3 = java.util.Collections.unmodifiableSet(new HashSet<COLOR>()); // Noncompliant } }