Est-il possible de désactiver les mesures du sondeur ( www.sonarsource.org ) pour des blocs de code spécifiques, que l'on ne souhaite pas mesurer?
Un exemple est l'avertissement «Preserve Stack Trace» émis par Findbugs. En quittant le serveur, je pourrais bien vouloir renvoyer uniquement le message au client, sans inclure l'exception réelle que je viens de capturer, si cette exception est inconnue du client (car le client n'a pas le JAR dans lequel ce exception était contenue par exemple).
@SuppressFBWarnings
(ajouté pour éviter les conflits avecjava.lang.SuppressWarnings
) et l'ignore également.Vous pouvez annoter une classe ou une méthode avec SuppressWarnings
squid: S00112 dans ce cas est un ID de problème Sonar. Vous pouvez trouver cet identifiant dans l'interface utilisateur du sondeur. Accédez à l'analyse des problèmes. Recherchez un problème pour lequel vous souhaitez supprimer les avertissements. Dans la zone de problème rouge de votre code se trouve un lien de règle avec une définition d'un problème donné. Une fois que vous avez cliqué dessus, vous verrez l'ID en haut de la page.
la source
@SuppressWarnings("findbugs:UI_INHERITANCE_UNSAFE_GETRESOURCE")
.Unsupported @SuppressWarnings("squid:S00112")
. Vous pouvez configurer Eclipse pour l'ignorer, mais une faute de frappe telle que dans@SuppressWarnings("uncheckedd")
ne sera pas détectée.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 aussi le
//NOSONAR
commentaire qui dit à 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 drapeau comme un faux positif directement depuis l'interface.
La raison pour laquelle je recommande la suppression d'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 de Sonar s'infiltre dans votre code par accident.Vous pouvez en savoir plus à ce sujet dans la FAQ
Remarque: Gábor Bakos pointe vers l'ancienne FAQ qui est maintenant 404. Ceci est le premier résultat Google pour moi, donc je veux aider toute autre personne qui pourrait avoir la même question
Edit: 30/06/16 SonarQube s'appelle désormais SonarLint
Au cas où vous vous demandez comment trouver le numéro de calmar. Cliquez simplement sur le message du sondeur (par exemple
Remove this method to simply inherit it.
) et le problème du sondeur se développera.En bas à gauche, il aura le numéro de calmar (ex.
squid:S1185
Maintenabilité> compréhensibilité)Alors vous pouvez le supprimer en
@SuppressWarnings("squid:S1185")
la source
Utilisez // NOSONAR sur la ligne qui vous avertit si vous ne pouvez pas aider votre code. Ça marche!
la source
Je ne parviens pas à trouver le numéro de calmar dans le sonar 5.6, avec cette annotation fonctionne également:
la source
squid
est pour la base de données Java provenant de Sonar (SonarAnalyzer Java).pmd
et secheckstyle
trouvent sur d'autres référentiels de règles.