2

我希望每晚构建检查我的 .NET 代码中有多少 NotImplementedExeptions,所以希望我们可以在发布之前将它们全部删除。我的第一个想法是 FxCop 可能是一个很好的工具来做到这一点。有没有人对此有自定义的 FxCop 规则?我将如何自己创建一个?

4

4 回答 4

4

如果超过 10 个方法创建 NotImplementedException,这样的单元测试将失败。如果失败,它将报告创建此异常的所有方法。

var throwingMethods = codebase.Methods
  .Where(m => m
         .GetInstructions()
         .Exists(i => i.Creates<NotImplementedException>()))
  .ToArray();

if (throwingMethods.Length > 10)
  CollectionAssert.IsEmpty(throwingMethods);

代码库是这样创建的:

var codebase = new Codebase("Assembly1.dll","Assembly2.dll");

片段使用Lokad 共享库中的 Lokad.Quality.dll 。

于 2009-01-06T15:51:39.957 回答
3

我实际上已经实现了一个并在这个答案中显示了代码。

于 2009-11-06T22:26:21.867 回答
1

网上有大量关于如何制定自己的 FxCop 规则的资源,但由于“NotImplementedException”是一个如此独特的名称,您可能只需计算其在文件文本中的出现次数。为所有 .cs 文件创建一个 ItemGroup,然后使用适当的 DOS 命令(例如“find /c”)并通过 EXEC 任务获取计数作为输出。

于 2009-01-06T07:54:31.510 回答
0

有时NotImplementedExeption 应该抛出 a —— 一个例子是,如果你有IBindingList.

大量资源 可用于创建自定义fxCop规则。但是,“找到解决方案”可能是一种合适的方法(假设您在自动构建中不需要它)

于 2009-01-06T09:04:57.877 回答