Configuration SonarQube + Lombok
Je suis en train de créer un nouveau projet et j'ai besoin d'Utiliser SonarQube
et je veux utiliser Lombok
j'ai déjà configuré au sein d'Eclipse et tout fonctionne bien sauf l'analyse statique.
- Unusued champs privés: Quand j'ai un
@Data
classe, tous les champs sont signalés commeUnused private field
. @Getter(lazy=true)
: Lorsque j'utilise cette annotation-je obtenir leRedundant nullcheck of value known to be non-null
voir @Getter(lazy=true) (ceci est lié à un code compilé).
Je pense qu'une solution possible est delombok
le projet, de compiler et d'exécuter Sonar.
Des questions similaires dans SonarQube Jira
:
- [CodeGen - Lombok] fausse alerte de l'indice (non utilisé Champ Privé)
- Fournir une nouvelle java règle de vérifier inutilisés domaine privé et qui serait en charge du bytecode génération (cd Lombok)
- [CodeGen - Lombok] fausse alerte indicateur de
(Le @SuppressWarnings("PMD.UnusedPrivateField")
solution ne fonctionne pas avec la dernière SonarQube 4.2
)
Comment puis-je résoudre ce problème?
source d'informationauteur Arturo Volpe
Vous devez vous connecter pour publier un commentaire.
Comme une solution de contournement, je suis maintenant laisser sonar effectuer l'analyse sur le code que delombok génère.
Je suppose que ce n'est pas une solution parfaite, car je suis en analysant le code généré à la place de code qui est en fait écrit par un développeur. Je trouve que c'est une meilleure solution, bien que l'utilisation de
@SuppressWarnings, //NOSONAR
ou d'éteindre les règles dans Sonar.Voir ci-dessous un exemple pour atteindre cet objectif dans Maven. Ajoutez ceci à votre pom.xml:
J'ai ajouter un pull request à l'appui de plus d'annotation à partir de Lombok.
Pour le binaire, veuillez visiter ici:
J'ai posé une question similaire il y a quelques temps:
sonarqube 4.2 et lombok
Fondamentalement, vous ne pouvez pas le faire avec l'annotation (comme @SuppressWarnings) dans le code plus. Au lieu de cela, vous devez configurer un (global) de la règle d'exclusion de SonarQube:
Cliquez sur Paramètres -> Exclusions -> Questions
et ajouter des entrées à Ignorer les Questions sur Plusieurs Critères, et entrer quelque chose comme:
Il rend votre code source un peu plus propre (puisque vous n'avez pas besoin d' @SuppressWarnings plus), mais je n'aime pas l'idée de fixer des règles mondiales, car il peut causer d'autres problèmes.
Mise à jour:
Pour Redondant nullcheck de valeur connue pour être non null', vous pouvez ajouter quelque chose comme suit:
Et un autre qui peut (ou ne peut pas) être utile pour vous:
pour le multi-modules projets, en s'appuyant sur ce qui est mentionné dans finrod réponse, j'ai dû ajouter ci-dessous les biens dans mon sonar profil pour éviter d'avoir dupliqué violations (Sonar était d'analyser à la fois src/main/java et target/generated-sources/delombok)