Domanda

FXCOP 10 si lamenta di quanto segue:

using XYZ.Blah; //CA1709 - "XYZ"
using Xyz.Blah; //No complaint.

using XylophoneSuperDuperLongFullName.Blah; //I don't want to have a long full name for my company name.

Il problema è ... Voglio che il nome della mia azienda venga visualizzato in tutto il mondo perché Xyz è un'abbreviazione. La versione lunga del nome è troppo lunga per essere uno spazio dei nomi utile. Microsoft se ne va con questo tipo di cose perché il loro acronimo è solo 2 lettere.

using MS.Something; //No Complaint.
using Microsoft.SomethingElse; //No Complaint.

Quindi, stavo cercando di aggiungere un SuppressMessageAttribute per sopprimere questo avvertimento. Ma non sono sicuro di come farlo correttamente solo a (o dove persino attaccarlo) in modo che influisca solo su questo istanza. Non voglio sopprimere nulla all'interno di quello spazio dei nomi perché voglio catturare altri errori che commetto. Ho guardato a MSDN e Google perquisito, ma non riesco a trovare nulla che mostri come colpire in modo specifico questa istanza. Il più vicino che ho trovato era Scope = "Spazio nomi" ma non ero sicuro se ciò significa che influisce sul nome dello spazio dei nomi effettivi o se influisce su tutto all'interno di quello spazio dei nomi.

È stato utile?

Soluzione

MSDN - CA1709: gli identificatori devono essere cotti correttamente:

È sicuro sopprimere questo avvertimento se si dispone delle tue convenzioni di denominazione o se l'identificatore rappresenta un nome proprio, ad esempio il nome di un'azienda o una tecnologia.

Puoi anche aggiungere termini specifici, abbreviazioni e acronimi che a un dizionario personalizzato di analisi del codice. I termini specificati nel dizionario personalizzato non causano violazioni di questa regola. Per ulteriori informazioni, consultare come: personalizzare il dizionario dell'analisi del codice.


Detto questo, se ti senti giustificato a sopprimere il messaggio, non è affatto difficile. In FXCOP 10 Fare clic con il pulsante destro del mouse su qualsiasi messaggio che si desidera sopprimere e andare a copiare come> sopprimere il messaggio o copiare come> messaggio di sopprimere a livello di modulo.

Dovresti posizionare il SuppressMessageAttributes nelle posizioni appropriate. Gli attributi che sopprimono una singola posizione devono essere posizionati su quella posizione, ad esempio sopra un metodo, un campo, una proprietà o una classe.

Nel tuo istanza, non esiste una posizione specifica per posizionare l'attributo (per impostazione predefinita dovrebbe copiare come [module: SuppressMessage(...)]. Questa è una buona indicazione che appartiene sia nella parte superiore di un file se si tratta di una soppressione a livello di modulo particolare a un file (ad esempio, a una risorsa specifica per un file). Oppure, più probabile, appartiene a un file GlobalSuppressions.cs.

using System.Diagnostics.CodeAnalysis;

[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "Because I said so!", MessageId = "XYZ", Scope = "namespace", Target = "XYZ.Blah")]

Puoi anche abbreviare il CheckId Proprietà se vuoi, ma è bene sapere cosa significa CA1709. Se non ne hai voglia, funziona anche:

using System.Diagnostics.CodeAnalysis;

[module: SuppressMessage("Microsoft.Naming", "CA1709", Justification = "Because I said so!", MessageId = "XYZ", Scope = "namespace", Target = "XYZ.Blah")]

E infine ... tutto ciò sarà infruttuoso a meno che tu non includa il simbolo "Code_Analysis" nella tua build. Vai a Propries> Build e aggiungi il simbolo di compilazione condizionale.

Altri suggerimenti

I acrionimi non sono pensati per essere tutti maiuscola Convenzioni di denominazione .NET. Per esempio HttpResponse eccetera.

Dal Convenzioni di capitalizzazione:

L'involucro degli acronimi dipende dalla lunghezza dell'acronimo. Tutti gli acronimi sono lunghi almeno due caratteri. Ai fini di queste linee guida, se un acronimo è esattamente due personaggi, è considerato un breve acronimo. Un acronimo di tre o più personaggi è un lungo acronimo.

Le seguenti linee guida specificano l'involucro adeguato per acronimi brevi e lunghi. Le regole dell'involucro dell'identificatore hanno la precedenza sulle regole dell'involucro dell'acronimo.

Capitalizzare entrambi i personaggi di acronimi a due caratteri, tranne la prima parola di un identificatore a cassetta di cammello.

Una proprietà di nome Dbrate è un esempio di un breve acronimo (DB) usato come prima parola di un identificatore a causa di Pascal. Un parametro chiamato Iochannel è un esempio di un breve acronimo (IO) usato come prima parola di un identificatore a causa di cammello.

Capitalizzare solo il primo carattere di acronimi con tre o più caratteri, tranne la prima parola di un identificatore a cassetta di cammello.

Una classe denominata XMLWRITER è un esempio di un lungo acronimo usato come prima parola di un identificatore a causa di Pascal. Un parametro chiamato HtmlReader è un esempio di un lungo acronimo usato come prima parola di un identificatore a cassetta di cammello.

Se stavi controllando i nomi tramite StyleCop, potresti usare StyleCop+ (Regole personalizzate) che supporta l'elenco delle abbreviazioni configurabili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top