gpt4 book ai didi

c# - 单元测试自定义 FxCop 规则

转载 作者:太空狗 更新时间:2023-10-30 00:36:29 25 4
gpt4 key购买 nike

我想测试我的自定义 fxrules。

我看过这篇文章:http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx

但它不适用于最新版本的 fxcop。Microsoft.Cci.Method.GetMethod 不存在,我找不到替代方法。

你知道如何获取 Microsoft.FxCop.Sdk.Method 对象吗?

在此先感谢您的帮助。最好的问候,

最佳答案

鉴于用于编写自定义规则的 API 的文档和支持与单元测试所需的 API 差不多——并且在 1.36(对于 CLR2)和 10.0(对于 CLR4)之间保持不变——它可能是值得注意的是获取 Microsoft.FxCop.Sdk.Method 对象的过程大纲,该对象只能使用在 FxCop 程序集中声明为 public 的类型和方法来执行(没有需要反射技巧)。

从您想要Microsoft.FxCop.Sdk.Method 的对象的类型 开始,将其称为t。通过静态入口点获取包含 t 的程序集的 AssemblyNode

assembly = AssemblyNode.GetAssembly(t.Module.Assembly.Location)

获取t对应的FxCop TypeNode via

assembly.GetType(Identifier.For(t.Namespace), Identifier.For(t.Name))

然后搜索 TypeNodeMembers 字段,找到 member.Name.Name 是您的方法名称的字段正在寻找。鉴于这是一个单元测试,您应该能够安排被检查的虚拟方法不被重载。

然后调用MyRule.Check(member)进行测试;这将返回 Problem 对象的集合,可以对其进行检查以断言它包含预期结果并且仅包含预期结果。

关于c# - 单元测试自定义 FxCop 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1748559/

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