web-dev-qa-db-fra.com

sonarqube + lombok = faux positifs

import lombok.Data;

@Data
public class Filter {
    private Operator operator;
    private Object value;
    private String property;
    private PropertyType propertyType;
}

Pour le code ci-dessus, il y a 4 rapports de calmar: S1068 sur les champs privés inutilisés. (même ils sont utilisés par les getters générés par lombok). J'ai vu que certains correctifs liés à la prise en charge de l'annotation "lombok.Data" ont été poussés, mais présentent toujours ces faux positifs ennuyeux.

Versions: SonarQube 6.4.0.25310
SonarJava 4.13.0.11627
Scanner SonarQube pour Jenkins (2.6.1)

20
okutane

Ce cas doit être parfaitement géré par SonarJava. Les annotations Lombok sont prises en compte au moins depuis la version 3.14 ( SONARJAVA-1642 ). Les problèmes que vous rencontrez résultent d'une mauvaise configuration de votre projet Java. Pas besoin d'écrire de règles personnalisées pour gérer cela, ceci est pris en charge nativement par l'analyseur.

SonarJava lit le bytecode pour savoir quelles annotations sont utilisées. Par conséquent, si vous ne fournissez pas de bytecode à partir de vos dépendances , en plus du bytecode de votre propre code, l'analyseur se comportera de manière erratique.

En particulier, la définition de la propriété sonar.Java.libraries devrait résoudre votre problème. Notez que cette propriété est normalement définie automatiquement lors de l'utilisation de scanners maven ou gradle SonarQube.

Veuillez consulter la documentation afin de configurer correctement votre projet: https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode

J'ai ajouté la propriété suivante aux propriétés d'analyse du jenkins Sonar. Et travaille pour moi.

sonar.Java.libraries=/jenkins/jenkins-user-home/.m2/repository/org/projectlombok/lombok/1.16.20/lombok-1.16.20.jar

lombok v1.16.20 est la version lombok de mon projet.

7
Barış Özdemir