gpt4 book ai didi

c# - ExcludeFromCodeCoverage 排除自动生成的代码

转载 作者:太空狗 更新时间:2023-10-29 21:46:01 25 4
gpt4 key购买 nike

有没有办法将自动生成的类标记为 ExcludeFromCodeCoverage。我在其他领域使用该属性并且效果很好。但是,如果您打开自动生成的代码并将这些类标记为 ExcludeFromCodeCoverage,那么一旦您重新生成该类,它就会被覆盖。

我可以在 dbml 的代码后面创建部分类并将该属性应用于它并且它有效,但是,这会产生很多部分类。

最佳答案

您可以使用 PostSharp或其他 AOP 框架来创建将 ExcludeFromCodeCoverageAttribute 应用于指定类型或命名空间的方面:

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

然后只需将此方面应用于程序集并提供要排除的命名空间。在编译期间,PostSharp 会将 ExcludeFromCodeCoverageAttribute 添加到 My.AutogeneratedCode 命名空间中的所有类:

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

您可以找到示例代码和解释 here .

关于c# - ExcludeFromCodeCoverage 排除自动生成的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11194724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com