Question

Mon code contient une variable nommée "m_d3dDevice".

StyleCop se plaint de ce nom:

SA1305: Le nom de la variable « M_d3dDevice » commence par un préfixe qui ressemble à la notation hongroise. Retirez le préfixe ou l'ajouter à la liste des préfixes autorisés.

(Remarque je SA1308 désactivé manuellement (le « m_ »), l'un des rares règles que je suis prêt à désobéir.)

Je ne peux pas permettre « D3D » comme une exception dans l'onglet hongrois, car elle permet seulement 1 ou 2 préfixes char, et permettant « d3 » n'a pas aidé. J'ai essayé tout ce que je peux penser à ajouter « D3D » à mon dossier CustomDictionary (et de toute façon les documents impliquent le CustomDict ne sert pas à la règle 1305).

Toutes les suggestions pour faire StyleCop permettre celui-ci? Il est une question de fierté maintenant de ne pas avoir à F2 ma variable.

Était-ce utile?

La solution

Vous pouvez jeter un oeil à StyleCop + . Il contient des règles de nommage souples qui vous permettront de forcer tous les champs privés sont nommés en commençant par « m_ » (ou ce que vous voulez) au lieu de désactiver la vérification du nom (comme vous l'avez fait).

En ce qui concerne « d3dDevice » - c'est un cas très intéressant. Logiquement, il divise les mots suivants: - { "d", "3", "d", "Device"} ou { "d3", "d", "Device"}. Et le deuxième « d » ne semble pas suivre « camelNotation ».

Mais, je crois fermement que l'analyse statique (nom en particulier) doit être suffisamment souple pour satisfaire les besoins des utilisateurs. Actuellement StyleCop + peut prendre en charge votre cas de la manière suivante - par exemple, vous pouvez ajouter « exception » (autant que vous voulez) de nommer modèle pour les champs privés, afin qu'il ressemblera à:

m _ $ (AABB)
m_d3d $ (AaBb)

Il est plus susceptible d'être contourner ce problème, mais je vais penser à votre « D3D » cas -. Et peut-être StyleCop + soutiendra quelque chose comme ceci

Je vous remercie de l'exemple intéressant!

Autres conseils

Vous pouvez également suppress StyleCop au cas par cas. par exemple.

[System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.StyleCop.CSharp.NamingRules",
    "SA1305:FieldNamesMustNotUseHungarianNotation",
    Justification = "Using Win32 naming for consistency.")]
IntPtr hFile;

Cela pourrait ne pas être une option intéressante si vous avez de nombreux noms offensants, mais pour un ou deux, il est généralement très bien.

You can also use the Settings.StyleCop in the package files to configure the settings.

You can suppress specific words by adding below code to the Settings.StyleCop file:

<Analyzer AnalyzerId="StyleCop.CSharp.NamingRules">
  <AnalyzerSettings>
    <CollectionProperty Name="Hungarian">
      <Value>as</Value>
      <Value>do</Value>
      <Value>id</Value>
      <Value>if</Value>
      <Value>in</Value>
      <Value>ip</Value>
      <Value>is</Value>
      <Value>mx</Value>
      <Value>my</Value>
      <Value>no</Value>
      <Value>on</Value>
      <Value>to</Value>
      <Value>ui</Value>
      <Value>vs</Value>
      <Value>x</Value>
      <Value>y</Value>
      <Value>z</Value>
      <Value>iOS</Value>
      <Value>IOS</Value>
    </CollectionProperty>
  </AnalyzerSettings>
</Analyzer>

You can suppress the Hungarain Rule itself by adding the following to the Settings.StyleCop file

<Analyzer AnalyzerId="StyleCop.CSharp.NamingRules">
  <Rules>
   <Rule Name="FieldNamesMustNotUseHungarianNotation">
    <RuleSettings>
     <BooleanProperty Name="Enabled">
        False
     </BooleanProperty>
    </RuleSettings>
   </Rule>
 </Rules>
</Analyzer>

Adding suppression attribute should be done on top of all methods which will take time and a long process.

If you would like to remove this rule from your project try this

  • Right click on your project
  • Select Stylecop Settings
  • Find SA1305
  • Uncheck the rule from result set
  • Click Apply - OK
  • Rerun style cop rules again.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top