Domanda

Mi chiedo se le persone (ovvero l'azienda / gli sviluppatori) si preoccupino davvero di avere gli attributi [SuppressMessage] in giro negli assemblaggi di spedizione.

La creazione di configurazioni separate nei file di progetto che includono CODE_ANALYSIS in modalità di rilascio e quindi il loro annullamento nella build finale mi sembra una sorta di sovraccarico evitabile per me.

Quale sarà la migliore strategia, se non si desidera che questi rimangano nell'assemblaggio finale ma si desidera comunque utilizzarli nel codice? e ci sono vantaggi / svantaggi nel memorizzarli nei file di progetto FxCop?

[Vengo da un VS2008 Pro + FxCop 1.36, piuttosto che dal VS2008 Team System]

È stato utile?

Soluzione

Nel grande schema delle cose, non penso che importi davvero. Poiché si tratta di un attributo (effettivamente metadati), non influisce sulle prestazioni del codice. Detto questo, ricorda che le informazioni nell'attributo sono disponibili per chiunque utilizzi un disassemblatore come Reflector.

Il problema con l'archiviazione nel file di progetto FxCop è che è quindi necessario assicurarsi che tutti utilizzino lo stesso file di progetto e che il file di progetto viaggi sempre con il progetto (è registrato per il controllo del codice sorgente, il che significa che è necessario verificarlo ogni volta che si desidera eseguire FxCop).

Se non desideri gli attributi SuppressMessage nel tuo codice di produzione, dovrai definire solo il simbolo CODE_ANALYSIS nella build su cui stai eseguendo FxCop. Ciò significa definirlo nella configurazione di debug o aggiungere ulteriori configurazioni. Gli attributi verranno compilati nel codice solo quando viene definito il simbolo.

Da un punto di vista automatizzato / notturno, puoi costruire usando una configurazione che ha il simbolo definito e quindi costruire la versione di produzione senza il simbolo o fare due build - una con il simbolo definito, esegui FxCop per ottenere le tue violazioni, e quindi un'altra build senza il simbolo definito.

Altri suggerimenti

L'attributo SuppressMessage verrà aggiunto al tuo codice solo se durante la compilazione è presente la definizione del preprocessore CODE_ANALYSIS. È possibile verificarlo osservando la definizione dell'attributo in Reflector.exe. Per impostazione predefinita, questo non è definito in Release, quindi non influirà sul codice di produzione.

In genere, eseguo FxCop solo su build DEBUG del mio assembly in cui è definito CODE_ANALYSIS.

Abbiamo una tonnellata sparsa per il codice di produzione e non ci interessa particolarmente. Non ha effetto sulla perf e avere un attributo dall'aspetto crufty in una classe spesso dà motivazione per rimuoverlo, se possibile.

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