2011-01-31 7 views
8

Il mio codice contiene una variabile denominata "m_d3dDevice".Come risolvere la violazione di StyleCop SA1305 (ungherese)

StyleCop lamenta questo nome:

SA1305: Il nome della variabile 'm_d3dDevice' inizia con un prefisso che sembra la notazione ungherese. Rimuovere il prefisso o aggiungerlo all'elenco di prefissi consentiti.

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

Non posso permettere "D3D" come eccezione in ungherese tab, in quanto consente solo 1 o 2 prefissi char e consentire "d3" non ha aiutato. Ho provato tutto quello che posso pensare per aggiungere "d3d" al mio file CustomDictionary (e comunque i documenti implicano che CustomDict non è usato per la regola 1305).

Eventuali suggerimenti per consentire a StyleCop di consentire questo? È una questione di orgoglio ora non avere F2 la mia variabile.

+0

ciò che è 'D3D 'un'abbreviazione di? –

+0

Penso che l'unico modo per soddisfare questa regola è rinominare la tua variabile in qualcosa come 'm_direct3DDevice', se questa è l'abbreviazione di. –

+4

Che ridicola "regola" e una prova di tornasole ancora più ridicola per identificare le violazioni. Cosa c'è che non va semplicemente disabilitando questa regola e credendo che sia abbastanza intelligente da nominare le variabili? La regola generale per * evitare * la notazione "ungherese" è apparentemente ridicola come la regola che si dovrebbe usare. –

risposta

6

Si potrebbe dare un'occhiata a StyleCop+. Contiene regole di denominazione flessibili che ti consentiranno di forzare il nome di tutti i campi privati ​​a partire da "m_" (o qualsiasi altra cosa desideri) invece di disabilitare il controllo dei nomi (come hai fatto tu).

Riguardo a "d3dDevice", è un caso molto interessante. Logicamente, si divide con le seguenti parole - {"d", "3", "d", "Dispositivo"} o {"d3", "d", "Dispositivo"}. E la seconda "d" sembra non seguire "camelNotation".

Tuttavia, sono fermamente convinto che l'analisi statica (in particolare la denominazione) debba essere abbastanza flessibile da soddisfare le esigenze degli utenti. Attualmente StyleCop + in grado di supportare il vostro caso nel seguente modo - per esempio, è possibile aggiungere "eccezione" (come molti come si desidera) a modello di denominazione per i campi privati, in modo che sarà simile:

m _ $ (AABB)
m_d3d $ (AABB)

questo è più probabile che sia soluzione, ma io pensare al vostro caso "D3D" - e forse StyleCop + sosterrà qualcosa di simile.

Grazie per l'esempio interessante!

+2

Un post molto utile, quindi un +1 da me. Ma come un giusto avvertimento, dal momento che sembra che tu sia sia nuovo per Stack Overflow sia l'autore o strettamente associato a StyleCop +. Potresti voler rendere esplicita la tua affiliazione (ad esempio includendo un semplice disclaimer), in modo che gli utenti non decidano di contrassegnare i tuoi messaggi come spam. Anche la parte inferiore delle [FAQ] (http://stackoverflow.com/faq) discute brevemente di questo. Ma a prescindere, benvenuto nel sito e grazie per condividere la tua esperienza! –

+1

Controllerò StyleCop +, grazie. Poiché sembra che non ci sia una risposta "reale" a questo caso, tuttavia, oltre a rinominare la variabile o disabilitare la regola, la contrassegnerò come la migliore risposta ... -mpg – mpg

+0

@Cody Sì, hai ragione - Sono l'autore. Grazie per l'avvertimento, sicuramente non intendevo promuoverlo. Sarò attento a questo. –

11

È possibile anche sopprimere 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 interessante se si dispone di numerosi nomi offensivi, ma per uno o due, in genere va bene.

0

calcolata attributo soppressione dovrebbe essere fatto in cima a tutti i metodi che avrà tempo e un lungo processo.

Se si desidera rimuovere questa regola dal progetto provare questo

  • clic destro sul vostro progetto Impostazioni
  • Selezionare StyleCop
  • Ricerca SA1305
  • Deseleziona la regola dal set di risultati
  • Fare clic su Applica - OK
  • Riesegui nuovamente le regole del cop di stile.
1

È anche possibile utilizzare Settings.StyleCop nei file del pacchetto per configurare le impostazioni.

È possibile sopprimere le parole specifiche con l'aggiunta di sotto di codice al file Settings.StyleCop:

<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> 

È possibile sopprimere la regola Hungarain sé aggiungendo quanto segue al Settings.StyleCop file di

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