web-dev-qa-db-fra.com

Désactiver Sonar pour certains codes

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).

124
Ant Kutschera

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")
61
JB Nizet

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.

183
maestr0

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")

68
wiredniko

Utilisez // NOSONAR sur la ligne qui vous avertit s’il vous est impossible d’aider votre code. Ça marche!

5
Jain

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"})
3
Noker