如何在避免声纳规则鱿鱼的同时检查List <class>是否包含类:S2175

时间:2019-04-23 13:42:19

标签: java sonarqube

我有一个允许的自定义注释列表,我正在通过调用列表上的contains方法来检查是否允许特定的注释。 这行得通,但是Sonar抱怨规则squid:S2175。它说:

  

“列表<类>”不能包含“类”

     

可以使用错误类型的参数调用几个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);
}

1 个答案:

答案 0 :(得分:2)

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

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

3)同时,只需抑制它即可。如果您有理由这样做,压制并不是邪恶的