检查NotImplementedExceptions的FxCop规则

时间:2009-01-06 07:34:00

标签: c# .net fxcop ndepend notimplementedexception

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

4 个答案:

答案 0 :(得分: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");

Snippet使用Lokad Shared Libraries中的Lokad.Quality.dll。

答案 1 :(得分:3)

我实际上实现了一个并在this answer中显示了代码。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

有时候NotImplementedExeption 应该 - 如果您部分实施IBindingList,就会有一个例子。

plenty resources out there creating custom fxCop rules。但是,“在解决方案中找到”可能是一种合适的方法(假设您在自动构建中不需要这样做)