ottobre 23, 2008 0

Sopprimere un warning di FxCop via codice

By in Programmazione
closeQuesto articolo è stato pubblicato 3 anni 3 mesi 20 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi.

E’ possibile configurare FxCop in modo tale da non fargli analizzare parti di classi o di metodi o addirittura interi assembly. In questo modo è possibile, in gergo, far “sopprimere” un warning di FxCop, inserendo una riga di codice per ogni warning che vogliamo disabilitare.

Per fare questo ci sono due possibilità:

  1. Sopprimere un warning inline, cioè su un metodo, una classe o una proprietà specifica
  2. oppure un Global Suppressions creando un file cs (o vb) apposito
Per esempio con il seguente codice sopprimo un warning CA2227:CollectionPropertiesShouldBeReadOnly (appertenente alla categoria “Microsoft Usage”) solo per la proprietà Tasks, per tutte le altre proprietà la regola sarà valida.
#define CODE_ANALYSIS
class TaskList
{
   [SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
   public IList<Task>
   {
       get { return this.tasks; }
       set { this.tasks = value; }
   }
}

Se invece volessimo sopprimere un warning su tutto il nostro assembly (ma magari solo per uno specifico namespace), possiamo creare un generico file GlobalSuppressions.cs e inserire il seguente codice:

#define CODE_ANALYSIS
 
using System.Diagnostics.CodeAnalysis;
 
// con questa direttiva sto disabilitando tutti warning di tipo
// CA1020:AvoidNamespacesWithFewTypes a livello di namespace
// per tutto il name space Azienda.Progetto.Service
[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "Azienda.Progetto.Service")]

Come si nota in entrambi gli esempi è necessario definire un simbolo CODE_ANALYSIS in modo da attivare questo tipo di funzionalità. Per avere la direttiva corretta con il warning da sopprimere in maniera facile è sufficente premere tasto destro sul messaggio di warning in FxCop Gui e selezionare Copy As -> SuppressMessage. Il codice necessario sarà copiato negli appunti.

Tags: ,

Leave a Reply