如何检查列表 包含一个类,同时避免声纳规则鱿鱼:S2175

问题描述 投票:4回答:1

我有一个允许的自定义注释列表,我试图通过调用列表中的contains方法来检查是否允许特定的注释。这有效,但声纳抱怨规则squid:S2175。它说:

“List <Class>”不能包含“Class”

可以使用不正确类型的参数调用一些Collection方法,但这样做是没有意义的,可能是使用错误参数的结果。当List.contains或List.remove的参数类型与用于列表声明的类型无关时,此规则将引发问题。

我怎样才能解决这个问题?

这是一个最小的例子:

private boolean testClassContains(){
        final List<Class<? extends Annotation>> annotations = Arrays.asList(MyAnnotation.class,YourAnnotation.class);

        return annotations.contains(YourAnnotation.class);
}
java sonarqube
1个回答
2
投票

1)首先确保您使用的是新版SOnarQUbe / SonarJava插件

2)SonarQube是由人编写的软件,因此可能有错误。例如,类似的案例https://groups.google.com/forum/#!topic/sonarqube/qyOOOZORBNs我建议你在他们的Jira中提出问题。

3)同时,压制它。如果你有理由这么说,抑制并不邪恶

© www.soinside.com 2019 - 2024. All rights reserved.