【问题标题】:How to count the number of lines of code in all files in a directory and its sub directories如何统计一个目录及其子目录中所有文件的代码行数
【发布时间】:2017-05-30 05:23:44
【问题描述】:

如何计算一个目录及其子目录中所有文件的代码行数。例如。我有一个目录,里面有很多子目录,每个子目录有很多文件,我想统计一下这些文件里写了多少行代码。

我尝试了很多方法,但它给出了不同的结果。任何人都可以使用 C# 帮助我吗?

目录如下:

root
   |---view
   |       |--view1.js
   |       |--view2.js
   |---controller
   |            |--cont1.js
   |            |--cont2.js
   |----model
            |--model.js
            |--model.js

我要给出根路径,它返回所有文件的代码总行数。

【问题讨论】:

  • 所以你已经尝试了很多方法,你能分享一下给出近似输出的代码
  • 除非您正在编写 C# 代码来执行此操作,否则这不是编程问题,因此与 Stack Overflow 无关。如果您正在编写 C# 代码来执行此操作并且需要该 C# 代码的帮助,则需要包含一个很好的 minimal reproducible example 来显示您的 C# 代码,并清楚、详细地说明该代码的作用以及您希望它做什么,以及您具体遇到的问题。
  • (这不是一个编程问题,考虑安装一个 POSIX 工具集并使用wcfind 来计算递归目录树中每个 .cs 文件中的行数。)
  • 发布你所拥有的,我们将从那里开始。应该比较简单,但我不会为你写,但我愿意为你提供帮助

标签: c# count lines-of-code


【解决方案1】:
 private static object GetFilesLineCount(string directory, string searchPattern = "*.*")
    {
        if (directory == null || !System.IO.Directory.Exists(directory))
        {
            return null;
        }


        var filesResults = System.IO.Directory.EnumerateFiles(directory, searchPattern, System.IO.SearchOption.AllDirectories)
                                        .Select(file => new
                                        {
                                            FilePath = file,
                                            TotalLines = System.IO.File.ReadLines(file).Count()
                                        }).ToList();
        return filesResults;
    }

返回类型对象我在.Select 上使用匿名对象。

【讨论】:

  • 不错的解决方案。请注意,在 C# 7 中,您可以在此处返回元组而不是匿名类型。
  • @EricLippert 我写它的时候正在工作,我以为他能弄清楚剩下的部分。我会编写扩展方法并返回 IEnumerable> .
猜你喜欢
  • 1970-01-01
  • 2014-03-08
  • 2020-04-08
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 2020-08-22
相关资源
最近更新 更多