È possibile utilizzare PostSharp o altro quadro AOP per creare aspetto che si applicherà ExcludeFromCodeCoverageAttribute
a tipi o spazi dei nomi specificati:
[Serializable]
[AttributeUsage(AttributeTargets.Assembly)]
[MulticastAttributeUsage(MulticastTargets.Class | MulticastTargets.Struct)]
[ProvideAspectRole(StandardRoles.PerformanceInstrumentation)]
public sealed class DisableCoverageAttribute : TypeLevelAspect, IAspectProvider
{
public IEnumerable<AspectInstance> ProvideAspects(object targetElement)
{
Type disabledType = (Type)targetElement;
var introducedExclusion = new CustomAttributeIntroductionAspect(
new ObjectConstruction(typeof (ExcludeFromCodeCoverageAttribute)));
return new[] {new AspectInstance(disabledType, introducedExclusion)};
}
}
Poi basta applicare questo aspetto al montaggio e fornire spazio dei nomi che si desidera escludere. Durante la compilazione PostSharp aggiungerà ExcludeFromCodeCoverageAttribute
a tutte le classi in My.AutogeneratedCode
namespace:
[assembly: DisableCoverage(AttributeTargetTypes="My.AutogeneratedCode.*")]
codice di esempio e spiegazioni potete trovare here.
fonte
2012-06-26 08:57:44
È possibile rendere la classe generata automaticamente con 'partial' (ad esempio, alterando il generatore in qualche modo)? –