web-dev-qa-db-fra.com

Comment désactiver les règles Sonar pour des fichiers spécifiques?

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?

21
user153275

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 .

10
Mithfindel

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:

enter image description here

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.

6
Matthias Braun

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.

6
Nikhil

Oui c'est possible.

1
Rajan

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 {...
0
Dhammadip