Domanda

In un progetto su cui sto lavorando FxCop mi mostra molti (e intendo più di 400) errori sui metodi InizializeComponent() generati dal designer di Windows Forms.La maggior parte di questi errori riguardano semplicemente l'assegnazione della proprietà Text delle etichette.

Vorrei sopprimere questi metodi nell'origine, quindi ho copiato il codice di soppressione generato da FxCop in AssemblyInfo.cs, ma non funziona.

Questo è l'attributo che FxCop ha copiato negli appunti.

[module: SuppressMessage("Microsoft.Globalization",
    "CA1303:DoNotPassLiteralsAsLocalizedParameters",
    Scope = "member",
    Target = "WindowsClient.MainForm.InitializeComponent():System.Void",
    MessageId = "System.Windows.Forms.Control.set_Text(System.String)")]

Qualcuno conosce l'attributo corretto per sopprimere questi messaggi?

PS:Utilizzo Visual Studio 2005, C#, FxCop 1.36 beta.

È stato utile?

Soluzione

Probabilmente hai il codice giusto, ma devi anche aggiungere CODE_ANALYSIS come simbolo definito dal precompilatore nelle proprietà del progetto.Penso che quegli attributi SuppressMessage siano lasciati nei binari compilati solo se è definito CODE_ANALYSIS.

Altri suggerimenti

In FxCop 1.36 c'è in realtà un'opzione di progetto nella scheda "Ortografia e analisi" che sopprimerà l'analisi per qualsiasi codice generato.

Se non desideri disattivare l'analisi per tutto il codice generato, devi assicurarti di aggiungere un simbolo CODE_ANALYSIS all'elenco dei simboli di compilazione condizionale (proprietà del progetto, scheda Compila).Senza questo simbolo definito, gli attributi SupressMessage verranno rimossi dal codice compilato in modo che FxCop non li vedrà.

L'altro problema con l'attributo SuppressMessage è che stai elencando un "Target" con un nome di metodo specifico (in questo caso WindowsClient.MainForm.InitializeComponent():System.Void) e elencando un "Ambito" specifico.Potresti provare a rimuoverli;altrimenti dovresti aggiungere questo SuppressMessage a ciascuna istanza del metodo.

Dovresti anche eseguire l'aggiornamento a Versione RTM di FxCop 1.36, la beta non rileverà automaticamente la versione più recente.

I messaggi di soppressione a livello di modulo devono essere incollati nello stesso file del codice che genera l'errore FxCop prima della dichiarazione dello spazio dei nomi o in assemblyinfo.cs.Inoltre, dovrai avere CODE_ANALYSIS definito come simboli del compilatore condizionale (Progetto > Proprietà > Compila).Una volta installato, esegui una ricostruzione completa del progetto e la prossima volta che esegui FxCop l'errore dovrebbe essere spostato nella scheda "Escluso nell'origine".

Inoltre, un piccolo suggerimento, ma se hai a che fare con molte esclusioni FxCop, potrebbe essere utile avvolgere una regione attorno ad esse in modo da poterle togliere di mezzo.

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