54 votes

Comment supprimer un avertissement de StyleCop ?

J'utilise StyleCop et je souhaite supprimer certains avertissements qui ne correspondent pas à mon style. Je préfère avoir une solution pour 1) la suppression du code en ligne et 2) la suppression des paramètres globaux. J'ai fait des recherches sur Internet mais toujours pas sûr comment faire la suppression. Pour la méthode 1), ils ont dit d'ajouter les lignes suivantes

[assembly: SuppressMessage("Microsoft.Design", 
"SA1202:All private methods must be placed after all public methods", 
 Scope = "namespace", Target = "Consus.Client.ClientVaultModule.Services.OnlineDetection")]

Mais ils ne disent pas où et quel espace de noms utiliser. Pour la méthode 2), ils disent qu'il faut utiliser le fichier GlobalSuppress mais il ne semble pas facile de trouver une méthode pour le faire pour le moment.

Aidez-moi, s'il vous plaît.

[Modifié] Dans mon cas, j'ai l'avertissement concernant SA1202 : Toutes les méthodes privées doivent être placées après toutes les méthodes publiques ce qui est gênant puisque je regroupe mes codes connexes en régions. Je veux supprimer ces avertissements pour certaines méthodes seulement.

47voto

Jason Allor Points 271

Voici ce dont vous avez besoin :

[SuppressMessage("Microsoft.StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess")]

21voto

Sky Sanders Points 19557

Un exemple de suppression en ligne serait similaire à celui-ci - examinez les espaces de noms dans le code par rapport à la suppression.

namespace Soapi
{
        ///<summary>
        ///</summary>
        ///<param name = "message"></param>
        ///<param name = "statusCode"></param>
        ///<param name = "innerException"></param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object)")]
        public ApiException(string message, ErrorCode statusCode, Exception innerException)
            : base(String.Format("{0}\r\nStatusCode:{1}", message, statusCode), innerException)
        {
            this.statusCode = statusCode;
        }

Un fichier de suppression globale est un fichier dans la racine de votre projet nommé GlobalSuppressions.cs et pourrait ressembler à ceci :

// This file is used by Code Analysis to maintain SuppressMessage 
// attributes that are applied to this project. 
// Project-level suppressions either have no target or are given 
// a specific target and scoped to a namespace, type, member, etc. 
//
// To add a suppression to this file, right-click the message in the 
// Error List, point to "Suppress Message(s)", and click 
// "In Project Suppression File". 
// You do not need to add suppressions to this file manually. 

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object,System.Object)", Scope = "member", Target = "Soapi.ApiException.#.ctor(System.String,Soapi.ErrorCode,System.String,System.Exception)")]

Et vous pouvez générer ce code automatiquement en faisant un clic droit sur l'avertissement

alt text

9voto

akjoshi Points 6711

À partir de StyleCop 4.3.2, il est possible de supprimer le signalement des violations de règles en ajoutant des attributs de suppression dans le code source.

Suppression des règles http://stylecop.soyuz5.com/Suppressions.html

mais il est dit -

Suppressions globales

StyleCop ne prend pas en charge la notion de suppressions globales ou suppressions au niveau du fichier. Les suppressions doivent être placées sur un code élément.

7voto

Kent Boogaart Points 97432

Si vous avez installé StyleCop, vous pouvez faire un clic droit sur votre projet et il y aura une option StyleCop. Cliquez dessus et vous verrez que vous pouvez empêcher certaines règles de s'exécuter sur votre projet. En outre, vous pouvez créer un fichier de règles distinct à partager entre différents projets. Cela signifie que vous pouvez configurer les règles une seule fois comme vous le souhaitez, puis partager cette configuration entre tous vos projets.

Pour les dérogations individuelles, SuppressMessage est la voie à suivre.

3voto

leppie Points 67289

Ne pouvez-vous pas simplement supprimer la règle au lieu de salir votre code ?

Même chose pour FxCop...

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