C# - 测试对 .Single()、.First() 等的所有调用是否符合编码标准

C# - Test that all calls to .Single(), .First(), etc. conform to coding standards

我们使用了一些扩展方法,允许我们编写如下内容:

.Single(e => $"{nameof(SomeParameter)}: {SomeParameter}, ...")

而不仅仅是

.Single()

其中 e 是一个例外。

极大地增加了日志记录体验,因为上面的变体记录了所有参数而不是底部变体产生的无用"Sequence contains no elements"。

我需要编写一个测试,它可以找到所有不兼容的代码,例如调用 .Single().

当然,我可以使用正则表达式搜索或纯普通文本搜索从解决方案根目录开始查找所有 CS 文件,也许这是可行的方法。我只是想知道是否已经有一个简单且已知的解决方案。

这是我需要的:

  1. 轻松添加/删除规则:例如找到所有具有 .Single() 的文件,找到所有具有 .Single( 但不是 .Single(e => $" 形式的文件 - 这是为了考虑组合的 Where + Single 代码等。 .

  2. 测试应该 运行 来自 xUnit。

非常感谢!

您应该编写一个 Roslyn 分析器,它将 运行 作为构建的一部分(并在您输入 Visual Studio 时)并根据需要给出编译错误(或警告)。

分析器可以完全访问编译器内生成的语法树和语义模型,并可以检查对特定方法的访问。

Getting Started