Comment supprimer un avertissement StyleCop?

J'utilise StyleCop et je veux supprimer un avertissement qui ne convient pas à mon style. Je préfère avoir la solution pour

1) code in-line supprimer

2) réglage de la suppression de

j'ai cherché sur internet mais toujours pas sûr comment faire la suppression.

pour la méthode 1), Ils ont dit d'ajouter les lignes:

[l'assemblée: SuppressMessage ("Microsoft.Conception", "SA1202:toutes les méthodes privées doivent être placées après toutes les méthodes publiques", Scope = "espace de noms" Target = "Consus.Client.ClientVaultModule.Service.OnlineDetection")]

mais ils ne disent pas où et quel namespace utiliser.

pour la méthode 2), ils ont dit d'utiliser le fichier GlobalSuppress, mais il ne semble pas facile de chercher un mode d'emploi pour le moment.

Aidez-moi.

[Edited] Dans mon cas, j'ai l'avertissement au sujet de 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 groupe mes codes connexes dans les régions. Je veux supprimer ces avertissements pour certaines méthodes.

50
demandé sur sorak 2010-07-20 10:53:08

11 réponses

voici ce dont vous avez besoin:

[SuppressMessage("Microsoft.StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess")]
44
répondu Jason Allor 2013-02-11 09:54:14

un exemple de suppression en ligne serait similaire à celui-ci-examiner 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;
        }
"151930920 Une suppression de fichier est un fichier à 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 cliquant-droit sur l'avertissement.

18
répondu Sky Sanders 2016-03-13 12:45:44

à partir de StyleCop 4.3.2, il est possible de supprimer le signalement de 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 écrit -

Suppressions Globales

StyleCop ne supporte pas la notion de suppressions globales ou suppressions au niveau des fichiers. Les Suppressions doivent être placées sur un code élément.

9
répondu akjoshi 2011-09-19 12:38:56

si vous avez installé StyleCop, vous pouvez faire un clic droit sur votre projet et il y aura une option StyleCop. Cliquez sur ceci et vous verrez que vous pouvez empêcher certaines règles de même courir contre votre projet. De plus, vous pouvez créer un fichier de règles séparé à partager entre différents projets. Cela signifie que vous pouvez configurer les règles une fois que vous les voulez et puis partager cette configuration entre tous vos projets.

pour les dérogations individuelles, SuppressMessage est la voie aller.

7
répondu Kent Boogaart 2011-09-27 16:54:55

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

idem pour FxCop...

4
répondu leppie 2010-07-20 06:55:19

lisez L'avertissement de Style Cop, à la recherche du code alphanumérique. Dans votre cas 'SA1202'. Puis naviguez vers la page correspondante sur le site de Style Cop. Changer L'URL comme approprié http://www.stylecop.com/docs/SA1202.html

copiez la ligne intitulée "Comment réprimer les Violations". Coller l'attribut au-dessus de la classe sur laquelle Style Cop gémit

[SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess", Justification = "Reviewed.")]
4
répondu Colonel Panic 2013-04-09 11:09:57

1. Dans votre cas, corrigez l'attribut SuppressMessage comme suit:

[SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess")]
private void SomeMethod()
{
}

Notez que vous pouvez placer sur n'importe quel autre élément de e.g, sur la classe - toutes les violations similaires dans l'ensemble de la classe sera supprimé).

je suis aussi d'accord qu'il est assez peu évident ce qu'il faut écrire dans ces domaines.

en fait, le premier devrait être le nom complet de la classe D'analyseur de StyleCop et peut être trouvé à partir du code source (par exemple de ici ). Le second devrait commencer par code de règle , puis deux points et le nom de énumération de règle (heureusement, il ressemble toujours au nom de règle affiché dans L'éditeur de paramètres, mais sans espaces blancs).

2. En ce qui concerne la suppression des règles "globalement" - pourquoi ne pas simplement les désactiver via L'éditeur de paramètres? Les fichiers de configuration sont hérité par le système de fichiers, de sorte que vous pourriez facilement avoir un "principal" fichier de paramètres au "haut" de la structure de votre dossier, et quelques autres fichiers (tenant la "différence" de main) avec des exceptions faites pour certains projets, si vous le voulez (comme décrit ici ).

bonne chance!

2
répondu Oleg Shuruev 2011-09-19 18:58:02

vous pouvez aussi déplacer le code dans les régions en classes partielles. Alors le problème avec la règle stylecop disparaîtra.

1
répondu Philip Smith 2010-08-10 11:06:12

Vous pouvez désactiver les règles que vous ne voulez pas dans les Paramètres.Le fichier StyleCop, qui se trouve dans le dossier racine du projet. Vous aurez besoin du namespace qui contient la règle, qui peut être trouvé ici: http://stylecop.soyuz5.com/StyleCop%20Rules.html

paramètres.stylecop fichier de code de référence:

<StyleCopSettings Version="105">
  <Analyzers>
    <Analyzer AnalyzerId="StyleCop.CSharp.LayoutRules">
      <Rules>
        <Rule Name="ElementsMustBeSeparatedByBlankLine">
          <RuleSettings>
            <BooleanProperty Name="Enabled">False</BooleanProperty>
          </RuleSettings>
        </Rule>
      </Rules>
      <AnalyzerSettings />
    </Analyzer>
  </Analyzers>
</StyleCopSettings>
1
répondu Ashwini Patil 2018-03-08 21:18:11
  1. Aller à l'Explorateur de solutions
  2. allez à votre projet
  3. élargir les références
  4. Analyseurs D'Expansion
  5. Expand StyleCop.Analyseurs
  6. clic droit sur une règle particulière que vous souhaitez désactiver au niveau global (projet)
  7. Définir la Règle de gravité -> Sélectionnez None
1
répondu Akshunya 2018-08-14 06:53:36

en plus des réponses utiles déjà en place:

si vous supprimez un avertissement dans le fichier de suppression GlobalSuppressions.cs , vous pouvez éditer cette ligne [assembly: SuppressMessage(StyleCop...blabla et supprimer entièrement les balises Scope=... et Target=... . Que fait la répression mondial dans le projet.

0
répondu Stefan Bormann 2018-03-21 08:48:32