【问题标题】:FxCop rule that checks for NotImplementedExceptions检查 NotImplementedExceptions 的 FxCop 规则
【发布时间】:2009-01-06 07:34:00
【问题描述】:

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

【问题讨论】:

  • 有人知道 NDepend 是否是一个很好的工具吗? ndepend.com

标签: c# .net fxcop ndepend notimplementedexception


【解决方案1】:

如果超过 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 Shared Libraries 的 Lokad.Quality.dll。

【讨论】:

  • 这真的很酷!我以前很少听说过 Lokad,但 Codebase 对象看起来真的很酷。谢谢。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      有时应该抛出NotImplementedExeption -- 一个例子是如果你有IBindingList 的部分实现。

      plentyresources out therecreating custom fxCop rules。但是,“找到解决方案”可能是一种合适的方法(假设您在自动构建中不需要它)

      【讨论】:

      • 对于部分实现的接口,您不打算实现,您应该使用 NotSupportedException。感谢您的链接,我会检查出来。我确实希望将其用于自动构建,只是为了让我知道代码中还剩下多少。不过测试可能会更好。
      • 好评;我认为您不希望在生产就绪发布的代码中出现任何 NotImplementedExceptions,因此每天构建步骤来按要求计算这些可能非常有意义。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多