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

Kon*_*nov 0 c# code-analysis xunit xunit.net roslyn-code-analysis

我们使用一些扩展方法,它们允许我们编写类似的东西:

.Single(e => $"{nameof(SomeParameter)}: {SomeParameter}, ...")
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

.Single()
Run Code Online (Sandbox Code Playgroud)

哪里e是例外.

大大增加了日志记录体验,因为上层变量记录所有参数而不是无用的"序列不包含任何元素",这是底层产生的.

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

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

这就是我需要的:

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

  2. 测试应该从xUnit运行.

非常感谢!

SLa*_*aks 5

您应该编写一个Roslyn分析器,它将作为构建的一部分(以及在Visual Studio中键入时)运行,并根据需要提供编译错误(或警告).

该分析仪具有完全访问语法树和编译器内产生的语义模型,并可以检查访问的具体方法.

入门