2017-05-30 77 views
-1

如何計算目錄及其子目錄中所有文件中的代碼行數。例如。我有一個包含許多子目錄的目錄,每個子目錄都有很多文件,我想要統計這些文件中有多少行代碼。如何計算目錄及其子目錄中所有文件中的代碼行數

我嘗試了很多方法,但它給出了不同的結果。任何人都可以幫助我使用C#嗎?

目錄看起來是這樣的:

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

我想給根路徑和返回的所有文件的代碼行的總數。

+2

所以你已經嘗試了很多方法,你可以分享給出的代碼大致輸出 –

+0

除非你正在編寫C#代碼來做到這一點,這不是一個編程問題,因此是堆棧溢出的話題。如果您正在編寫C#代碼來執行此操作,並且需要有關該C#代碼的幫助,則需要包含一個顯示C#代碼的好的[mcve],並清楚詳細地說明該代碼的功能,以及您希望它執行的操作,特別是你有什麼問題。 –

+0

(這不是一個編程問題,請考慮安裝POSIX工具集並使用'wc'和'find'來計算遞歸目錄樹中每個.cs文件中的行數。) –

回答

0
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上使用匿名對象。

+0

好的解決方案。請注意,在C#7中,您可以在這裏返回一個元組而不是匿名類型。 –

+0

@EricLippert我在寫作的時候一直在工作,我想他可以弄清楚其餘部分。我會寫擴展方法並返回IEnumerable >。 – Miguel

相關問題