J'ai un projet sur lequel je travaille et certains fichiers violent certaines règles, mais d'une manière qui ne sont pas de vrais problèmes, et qui distraient donc le bruit. Cependant, je ne veux pas désactiver ces règles globalement, et je préférerais ne pas avoir à les marquer comme faux positifs un par un.
Existe-t-il un moyen de désactiver les règles Sonar pour des fichiers spécifiques, et si oui, comment?
Depuis SonarQube 4.0, vous pouvez définir émettre des modèles d'exclusion en fonction de la clé de règle et du modèle de chemin de fichier.
Sur les versions précédentes, vous pouvez compter sur le Plugin Off Off Violations .
En s'appuyant sur la réponse de Mithfindel et le commentaire de dpk, cela supprime l'avertissement
System.out et System.err ne doivent pas être utilisés comme enregistreurs
de toutes les classes dans les packages nommés log
(ou tout sous-package de celui-ci) en ajoutant un modèle ignorer pour la règle squid:S106
:
Pour obtenir la liste des clés de toutes vos règles, accédez à votre profil sous Quality Profiles et sélectionnez Download pour obtenir un fichier .csv contenant toutes les clés des règles.
J'utilise la version 4.1.1 de SonarQube.
Vous pouvez annoter une classe ou une méthode avec SuppressWarnings.
Voici un exemple:
@ Java.lang.SuppressWarnings ("squid: S00111") squid: S00111 dans ce cas est un ID de problème Sonar. Vous pouvez trouver cet identifiant de problème dans l'interface utilisateur Web du Sonar.
Oui c'est possible.
1.Onglet Administration -> Étendue de l'analyse -> Problèmes
2.Vous y trouverez "Ignorer les problèmes sur plusieurs critères".
3.Fournissez l'ID de la règle dans la zone de texte "Modèle de clé de règle" [L'ID de la règle peut être trouvé en cliquant sur la règle particulière et la trouver dans le coin supérieur droit]
4. Fournissez Filepath pour lequel vous devez ignorer la règle dans la zone de texte "File Path Pattern"
5.Cliquez sur Enregistrer les paramètres des problèmes
En utilisant l'annotation ci-dessous, nous pouvons ignorer la règle des fichiers spécifiques
Pour une règle
@Java.lang.SuppressWarnings("squid:S2696")
@Slf4j
@Service
public class PaymentServiceImpl implements PaymentService {....
Pour plus d'une règle
@Java.lang.SuppressWarnings({"squid:S2696", "squid:S1172", "squid:CommentedOutCodeLine"})
@Slf4j
@Service
public class PaymentServiceImpl implements PaymentService {...