Tengo una lista de anotaciones personalizados permitidos y estoy tratando de comprobar si se permite una anotación específica mediante una llamada al contains
método en la lista. Esto funciona, pero se queja de Sónar regla squid:S2175
. Dice:
En la "lista <Class>" no puede contener una "clase"
Un par Collection métodos pueden ser llamados con argumentos de un tipo incorrecto, pero si lo hace no tiene sentido y es probable que el resultado de usar el argumento equivocado. Esta regla se plantea una cuestión cuando el tipo del argumento a List.contains o List.remove no está relacionada con el tipo utilizado para la declaración lista.
¿Cómo puedo arreglar esto?
He aquí un ejemplo mínimo:
private boolean testClassContains(){
final List<Class<? extends Annotation>> annotations = Arrays.asList(MyAnnotation.class,YourAnnotation.class);
return annotations.contains(YourAnnotation.class);
}
1) En primer lugar asegúrese de que está utilizando versiones frescas de sonarqube / SonarJava plug-in
2) sonarqube es el software escrito por la gente, por lo que podría tener errores. Por ejemplo, caso similar https://groups.google.com/forum/#!topic/sonarqube/qyOOOZORBNs te sugieren tema archivo en su Jira.
3) Mientras tanto, simplemente suprimirla. Supresión no es malo si tiene razones para hacerlo