如何在Visual Studio中计算生成的代码行数?

How to count generated lines of code in Visual Studio?

提问人:Kevin Krumwiede 提问时间:5/9/2023 更新时间:5/10/2023 访问量:48

问:

我正在做一个项目,其中大部分代码都是生成的。我完全知道什么是无用的指标 SLOC,但我想吹嘘一下代码生成器将多少工作和潜在的人为错误保存为 KPI 以使 PHB 眼花缭乱。

如何计算生成的 SLOC?VS Code 指标似乎没有区分手写代码和由 .实际上,我不完全确定它是否在计算生成的行。生成的代码不能放在单独的项目中,因为许多生成的文件都是带有一些手写位的类。IIncrementalGeneratorpartial

visual-studio 代码度量 csharp-source-generator

评论


答:

1赞 Patrick from NDepend team 5/10/2023 #1

可以使用工具 NDepend 在 Visual Studio 中对生成的代码行进行计数。可在此处下载免费的全功能试用版

为了避免报告生成代码的问题,该工具有一个基于 notmycode 代码查询的系统,以匹配生成的代码。

以下是默认的 notmycode 代码查询,可以根据自己的情况进行调整。例如,通过查看此链接中的 CQLinq 源代码,您可以看到如下内容:

...
let sourceFilesPathsToDiscard = (
from filePath in asmSourceFilesPaths 
let filePathLower= filePath.ToString().ToLower()
where     
  filePathLower.EndsWithAny(
    ".g.cs",        // Popular pattern to name generated files.
    ".g.vb",
    ".generated.cs",
    ".generated.vb") ||     
  filePathLower.EndsWithAny(
    ".xaml",        // notmycode WPF xaml code
    ".designer.cs", // notmycode C# Windows Forms designer code
    ".designer.vb") // notmycode VB.NET Windows Forms designer code
...

然后,在 VisualNDepend.exe(独立)或 Visual Studio NDepend 扩展中,有一个仪表板显示生成的代码行数(在下面的屏幕截图中以红色显示)

enter image description here

免责声明:我在NDepend工作