【发布时间】:2019-04-22 17:56:55
【问题描述】:
集合类型在自定义声纳检查规则类中始终返回“unknownSymbol”。
//演示类
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<>();
}
//自定义规则类
@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!
为什么?
【问题讨论】:
-
您的示例源代码是否完整?这在我看来像是一个类型解析问题,我没有看到 List 或 HashMap 的“import”语句。
-
@Mithfindel 我太笨了,忘记导入...
-
不需要自我抨击,我认为这是一个诚实的错误 :) 如果你不介意,我会发布一个答案来记录这个问题 - 恕我直言,这很常见。
标签: java sonarqube sonarqube-scan sonar-runner sonarlint