声纳自定义规则检查java集合类型是unknownSymbol
Posted
技术标签:
【中文标题】声纳自定义规则检查java集合类型是unknownSymbol【英文标题】:sonar custom rule check java collection type is unknownSymbol 【发布时间】: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 我太笨了,忘记导入... 不需要自我抨击,我认为这是一个诚实的错误 :) 如果你不介意,我会发布一个答案来记录这个问题 - 恕我直言,这很常见。 【参考方案1】:SonarJava 将在无法解析实际类型符号时显示此 unknownSymbol!
字符串。
在这种特殊情况下,您应该使用完全限定类型 java.util.List
和 java.util.HashMap
,或者导入它们。
【讨论】:
以上是关于声纳自定义规则检查java集合类型是unknownSymbol的主要内容,如果未能解决你的问题,请参考以下文章
声纳因无法被索引两次而失败。请检查包含/排除模式是不是会为主文件和测试文件生成不相交的集合
JAVA笔记(16)---集合- 详解 Set集合( Map 体系集合常用方法;哈希表;二叉树数据结构;Map集合,如何自定义集合排序规则 )