【问题标题】: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


    【解决方案1】:

    SerilogAnalyzer 是一个基于 Roslyn 的分析器,可以为您完成这项工作。

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-27
        • 1970-01-01
        • 2021-11-21
        • 2018-02-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多