【问题标题】:sonar custom rule check java collection type is unknownSymbol声纳自定义规则检查java集合类型是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 我太笨了,忘记导入...
  • 不需要自我抨击,我认为这是一个诚实的错误 :) 如果你不介意,我会发布一个答案来记录这个问题 - 恕我直言,这很常见。

标签: java sonarqube sonarqube-scan sonar-runner sonarlint


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    相关资源
    最近更新 更多