Est-il possible de désactiver les mesures sonar ( www.sonarsource.org ) pour des blocs de code spécifiques, lesquels ne veulent pas être mesurés?
Un exemple est l'avertissement "Preserve Stack Trace" que Findbugs génère. Lorsque je quitte le serveur, il se peut que je veuille seulement renvoyer le message au client, sans inclure l’exception que je viens d’attraper, si cette exception est inconnue du client (car le client n’a pas le fichier JAR dans lequel exception était contenue par exemple).
Ceci est un FAQ . Vous pouvez mettre //NOSONAR
sur la ligne qui déclenche l'avertissement. Je préfère cependant utiliser le mécanisme FindBugs, qui consiste à ajouter l'annotation @SuppressFBWarnings:
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value = "NAME_OF_THE_FINDBUGS_RULE_TO_IGNORE",
justification = "Why you choose to ignore it")
Vous pouvez annoter une classe ou une méthode avec SuppressWarnings
@Java.lang.SuppressWarnings("squid:S00112")
calmar: S00112 dans ce cas, il s'agit d'un identifiant de problème Sonar. Vous pouvez trouver cet identifiant dans l'interface utilisateur Sonar. Allez à la liste des problèmes. Recherchez un problème pour lequel vous souhaitez supprimer les avertissements. Dans la zone de numéro rouge de votre code, existe-t-il un lien Règle avec la définition d’un problème donné? Une fois que vous cliquez dessus, vous verrez l'ID en haut de la page.
Je vous recommande d'essayer de supprimer des avertissements spécifiques en utilisant @SuppressWarnings("squid:S2078")
.
Pour supprimer plusieurs avertissements, vous pouvez le faire comme ceci @SuppressWarnings({"squid:S2078", "squid:S2076"})
Il y a également le commentaire //NOSONAR
qui indique à SonarQube d'ignorer toutes les erreurs d'une ligne spécifique.
Enfin, si vous disposez des droits appropriés pour l'interface utilisateur, vous pouvez émettre un indicateur comme faux positif directement à partir de l'interface.
La raison pour laquelle je recommande la suppression des avertissements spécifiques est qu'il est préférable de bloquer un problème spécifique au lieu d'utiliser //NOSONAR
et de risquer qu'un problème Sonar se glisse par accident dans votre code.
Vous pouvez en savoir plus à ce sujet dans le FAQ
Remarque: Gábor Bakos pointe vers le plus ancien FAQ qui contient maintenant 404. Ceci est le premier résultat de Google pour moi, donc je veux aider quelqu'un d'autre qui pourrait avoir la même question
Edit: 30/06/16 SonarQube s'appelle maintenant SonarLint
Dans le cas où vous vous demandez comment trouver le numéro de calmar. Cliquez simplement sur le message Sonar (ex. Remove this method to simply inherit it.
) et le problème Sonar s'agrandira.
En bas à gauche, il y aura le numéro du calmar (ex. squid:S1185
Maintenabilité> intelligibilité)
Vous pouvez alors le supprimer en @SuppressWarnings("squid:S1185")
Utilisez // NOSONAR sur la ligne qui vous avertit s’il vous est impossible d’aider votre code. Ça marche!
Je ne parviens pas à trouver le numéro de calmar dans le sonar 5.6. Cette annotation fonctionne également:
@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})