Domanda

Il mio codice contiene una variabile denominata "m_d3dDevice".

StyleCop si lamenta di questo nome:

SA1305:Il nome della variabile 'm_d3dDevice' inizia con un prefisso che assomiglia alla notazione ungherese.Rimuovere il prefisso o aggiungerlo al Elenco dei prefissi consentiti.

(Nota che ho disabilitato manualmente SA1308 ("m_"), una delle poche regole a cui sono disposto a disobbedire.)

Non posso consentire "d3d" come eccezione nella scheda ungherese, poiché consente solo 1 o 2 prefissi di carattere e consentire "d3" non è stato d'aiuto.Ho provato tutto ciò che mi viene in mente per aggiungere "d3d" al mio file CustomDictionary (e comunque i documenti implicano che CustomDict non sia utilizzato per la regola 1305).

Qualche suggerimento per fare in modo che StyleCop lo consenta?Ora è motivo di orgoglio non dover F2 sulla mia variabile.

È stato utile?

Soluzione

Potresti dare un'occhiata StileCop+.Contiene regole di denominazione flessibili che ti permetteranno di forzare il nome di tutti i campi privati ​​che iniziano con "m_" (o qualunque cosa desideri) invece di disabilitare il controllo del nome (come hai fatto tu).

Per quanto riguarda "d3dDevice", è un caso molto interessante.Logicamente, si divide nelle seguenti parole: { "d", "3", "d", "Dispositivo" } o { "d3", "d", "Dispositivo" }.E la seconda "d" sembra non seguire "camelNotation".

Ma sono fermamente convinto che l'analisi statica (in particolare la denominazione) dovrebbe essere sufficientemente flessibile da soddisfare le esigenze degli utenti.Attualmente StyleCop+ può supportare il tuo caso nel modo seguente: ad esempio, puoi aggiungere "eccezioni" (quante quante vuoi) al modello di denominazione per i campi privati, in modo che assomigli a:

m_$(aaBb)
m_d3d$(AaBb)

È più probabile che si tratti di una soluzione alternativa, ma penserò al tuo caso "d3d" e forse StyleCop+ supporterà qualcosa di simile.

Grazie per l'interessante esempio!

Altri suggerimenti

Puoi anche sopprimere lo stylecop caso per caso. per esempio

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

Questa potrebbe non essere un'opzione attraente se hai numerosi nomi offensivi, ma per uno o due va bene.

Puoi anche usare il Settings.StyleCop Nei file del pacchetto per configurare le impostazioni.

Puoi sopprimere parole specifiche aggiungendo sotto il codice al 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>

Puoi sopprimere il Hungarain Regola stessa aggiungendo quanto segue al Settings.StyleCop file

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

L'aggiunta di attributo di soppressione dovrebbe essere eseguito sopra tutti i metodi che richiederanno tempo e un lungo processo.

Se desideri rimuovere questa regola dal tuo progetto, prova questo

  • Fare clic con il tasto destro sul tuo progetto
  • Seleziona Impostazioni StyleCop
  • Trova SA1305
  • Deseleziona la regola dal set di risultati
  • Fare clic su Applica - OK
  • REGOLE DI REGOLA DI RERUN STILE DI ANCORA.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top