5

Ho visto gli attributi [DebuggerNonUserCode] e [ExcludeFromCodeCoverage] nelle risorse e other SO questions sul codice escluso dalle statistiche di copertura e volevo sapere se era possibile aggiungere automaticamente questo attributo alle classi nel codice generato da Entity Framework utilizzando .NET 4.0.È possibile escludere il codice generato automaticamente da Entity Framework da Code Coverage Statistics?

Inoltre, dovrebbe essere di livello di classe o potrebbe essere sul livello diagram.Designer.cs, che richiede un attributo per tutto il codice generato da tale diagramma?

risposta

6

Sì, è possibile. You can use a custom T4 template to control the codegen. È più facile di quanto si possa pensare.

+3

Una considerazione è che le classi parziali (create da Entity Framework) uniscono gli attributi, quindi se la funzionalità estesa in altre classi parziali deve essere inclusa, dovrà essere a livello di metodo. – StuperUser

2

Dal le classi parziali (che Entity Framework crea) uniscono gli attributi, le funzionalità estese in altre classi parziali sono escluse anche se l'attributo è di livello di classe nel modello, dovrà essere applicato a livello di metodo.

Il modo migliore che ho trovato per farlo è usare T4 (come consigliato in @Craig Stuntz's answer) a:

  • includono: using System.Diagnostics.CodeAnalysis; nella parte superiore del file

Quindi applicare [ExcludeFromCodeCoverage] di getter, setter e metodi di fabbrica per la ricerca di:

  • #>get
  • #>set
  • Template_FactoryMethodComment

e metterli in un luogo adeguato.

Questo è stato reso molto più semplice utilizzando Tangible's T4 editor Extension for VS.

Questo è il mio primo tentativo e sembra funzionare "la tua milizia può variare", quindi completa un test per assicurarti che tutto funzioni come necessario.

Problemi correlati