258 votes

Désactiver le sonar pour certains codes

Est-il possible de désactiver le sonar ( www.sonarsource.org ) pour des blocs de code spécifiques, lequel ne veut pas être mesuré ?

Un exemple est l'avertissement "Preserve Stack Trace" que Findbugs émet. Lorsque je quitte le serveur, je peux très bien vouloir ne transmettre que le message au client, sans inclure l'exception réelle que je viens d'attraper, si cette exception est inconnue du client (parce que le client n'a pas le JAR dans lequel cette exception était contenue, par exemple).

334voto

maestr0 Points 383

Vous pouvez annoter une classe ou une méthode avec SuppressWarnings

@java.lang.SuppressWarnings("squid:S00112")

squid:S00112 dans ce cas, il s'agit d'un numéro d'identification du Sonar. Vous pouvez trouver cet identifiant dans l'interface utilisateur de Sonar. Allez dans l'écran déroulant des problèmes. Trouvez un problème pour lequel vous souhaitez supprimer les avertissements. Dans l'encadré rouge de votre code, vous trouverez un lien vers une règle avec la définition d'un problème donné. Une fois que vous aurez cliqué sur ce lien, vous verrez l'identifiant en haut de la page.

136voto

wiredniko Points 2001

Je vous recommande d'essayer de supprimer les avertissements spécifiques en utilisant l'option @SuppressWarnings("squid:S2078") .

Pour supprimer plusieurs avertissements, vous pouvez procéder comme suit @SuppressWarnings({"squid:S2078", "squid:S2076"})

Il y a aussi le //NOSONAR qui indique à SonarQube d'ignorer toutes les erreurs pour une ligne spécifique.

Enfin, si vous disposez des droits appropriés pour l'interface utilisateur, vous pouvez émettre un signalement 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 plutôt que d'utiliser la fonction //NOSONAR et risquer qu'un problème Sonar se glisse dans votre code par accident.

Vous trouverez plus d'informations à ce sujet dans le FAQ

Edit : 6/30/16 SonarQube s'appelle désormais SonarLint

Au cas où vous vous demanderiez comment trouver le numéro du calmar. Il suffit de cliquer sur le message Sonar (ex. Remove this method to simply inherit it. ) et la question du sonar sera élargie.

En bas à gauche, il y a le numéro de l'encornet (ex. squid:S1185 Maintenabilité > Compréhensibilité)

Vous pouvez donc le supprimer en @SuppressWarnings("squid:S1185")

115voto

JB Nizet Points 250258

Il s'agit d'un FAQ . Vous pouvez mettre //NOSONAR à la fin de la ligne qui déclenche l'avertissement.

//NOSONAR

Pour la plupart des langues, SonarQube permet d'utiliser le mécanisme générique : //NOSONAR à la fin de la ligne de la question. Cela supprimera toutes les questions - actuelles et futures - qui pourraient être soulevées sur la ligne.

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

14voto

Jain Points 89

Utilisez //NOSONAR sur la ligne où vous recevez un avertissement s'il s'agit de quelque chose que vous ne pouvez pas aider dans votre code. Cela fonctionne !

6voto

Noker Points 61

Je n'arrive pas à trouver le numéro du calmar dans le sonar 5.6, avec cette annotation cela fonctionne aussi :

@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X