Puede utilizar PostSharp u otro marco de AOP para crear aspecto que se aplicará a ExcludeFromCodeCoverageAttribute
tipos o espacios de nombres especificados:
[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)};
}
}
A continuación, sólo se aplican a este aspecto montaje y proporcionan espacio de nombres que desea excluir. Durante la compilación PostSharp añadirá ExcludeFromCodeCoverageAttribute
a todas las clases en el espacio de nombres My.AutogeneratedCode
:
[assembly: DisableCoverage(AttributeTargetTypes="My.AutogeneratedCode.*")]
Código de la muestra y las explicaciones se pueden encontrar here.
¿Puedes hacer que la clase generada automáticamente venga con 'partial' (como, alterar el generador de alguna manera)? –