【问题标题】:Can NDepend detect where string interpolation is used in C#?NDepend 可以检测 C# 中字符串插值的位置吗?
【发布时间】:2020-04-15 19:15:35
【问题描述】:
我想强制执行日志语句不使用字符串插值的规则:
示例
Log($"Added {count} messages.");
相反,我想鼓励/强制开发人员使用结构化日志记录,这意味着将值作为单独的参数传递给支持此概念的 Log 方法。
假设有可能,人们将如何使用 NDepend 来做到这一点?如果不是 NDepend,可以用 Roslyn 分析器来完成吗?
【问题讨论】:
标签:
logging
static-analysis
serilog
ndepend
【解决方案2】:
由于字符串插值导致调用System.String.Format(String,Object),您可以使用NDepend CQLinq编写这样的规则:
//<Name>Don't use string interpolation from Log method</Name>
warnif count > 0
from m in Application.Methods where m.IsUsing ("System.String.Format(String,Object)")
where m.ParentNamespace.Name.Contains(".Log")
select m