sonar 自定义规则检查 java 集合类型是 unknownSymbol

sonar custom rule check java collection type is unknownSymbol

自定义声纳检查规则中的集合类型总是 return 'unknownSymbol' class。

//演示class

public class SaasConstantNameCheckCase {
    private static final long serialVersionUID;
    private final String title;
    public static final Integer maxSize = 1111;// Noncompliant
    private static List list = new ArrayList<>();
    private static HashMap<String, String> map = new HashMap<>();
}

// 自定义规则 class

@Override
public void visitVariable(VariableTree tree) {
    VariableSymbol symbol = (VariableSymbol) tree.symbol();
    String type = symbol.type().name();
    System.out.println("type->"+type);
}

//测试结果

type->long
type->String
type->Integer
type->!unknownSymbol!
type->!unknownSymbol!

为什么?

SonarJava 将在无法解析实际类型符号时显示此 unknownSymbol! 字符串。

在这种特殊情况下,您应该使用完全限定类型 java.util.Listjava.util.HashMap,或者导入它们。