2012-06-25 12 views
6

Otomatik oluşturulan bir sınıfı ExcludeFromCodeCoverage olarak işaretlemenin bir yolu var mı? Bu özelliği diğer alanlarda kullanıyorum ve harika çalışıyor. Ancak, otomatik oluşturulan adamın kodunu açarsanız ve sınıfları ExcludeFromCodeCoverage olarak işaretlerseniz, bu sınıfı yeniden oluşturduğunuzda yazının üzerine yazılır.ExcludeFromCodeCoverage Otomatik Üretilen Kodu Hariç Tut

Dbml'nin arkasındaki kodda kısmi sınıflar oluşturabilir ve bu özniteliği ona uygulayabilirim, ancak çok fazla kısmi sınıf oluşturabilir.

[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)}; 
    } 
} 

Sonra sadece montaja bu yönünü uygulamak ve dışlamak istediğiniz ad sağlar:

+0

Otomatik olarak oluşturulmuş sınıf 'kısmi' (bir şekilde jeneratörü değiştirmek gibi) ile gelebilir misiniz? –

cevap

4

Belirtilen tipler veya ad alanlarına ExcludeFromCodeCoverageAttribute uygulayacaktır yönü oluşturmak için PostSharp veya diğer AOP çerçevesini kullanabilirsiniz. Derleme sırasında PostSharp My.AutogeneratedCode ad alanındaki tüm sınıflara ExcludeFromCodeCoverageAttribute katacak:

[assembly: DisableCoverage(AttributeTargetTypes="My.AutogeneratedCode.*")] 

Örnek kod ve açıklamalar, here bulabilirsiniz.