许多C#解决方案的代码行计数

时间:2010-05-05 12:16:12

标签: c# file count lines-of-code

我目前正在研究一种在C#中计算代码行数的解决方案。

我非常需要以下两种工具的组合:
http://richnewman.wordpress.com/2007/07/01/c-and-vbnet-line-count-utility/
http://www.locmetrics.com/index.html

我的问题是我需要递归扫描包含许多visual studio解决方案的文件夹。因此,如果没有对其代码进行任何重大工作,就无法真正使用第一个工具,因为它一次只能扫描一个解决方案。
但我还需要为每个解决方案分割结果,最好是包含项目。这取消了我找到的第二个工具的资格。我还发现NDepend遇到了同样的问题。

您知道有哪些免费工具可以满足我的需求吗?我找不到合适的东西。

5 个答案:

答案 0 :(得分:19)

NDepend是一款出色的工具,专为衡量和可视化代码指标和复杂性而设计。

Powershell会这样做:

(dir -Include *.cs -Recurse | select-string .).Count

Counting Lines of Source Code in PowerShell

每条路径的行数:

   gci . *.cs -Recurse | select-string . | Group Path

最低/最高/平均值:

   gci . *.cs -Recurse | select-string . | Group Filename | Measure-Object Count -Min -Max -Average

评论比率:

   $items = gci . *.cs -rec; ($items | select-string "//").Count / ($items | select-string .).Count


## Count the number of lines in all C# files in (and below) 
## the current directory. 

function CountLines($directory) 
{ 
    $pattern = "*.cs" 
    $directories = [System.IO.Directory]::GetDirectories($directory) 
    $files = [System.IO.Directory]::GetFiles($directory, $pattern) 

    $lineCount = 0 

    foreach($file in $files) 
    { 
        $lineCount += [System.IO.File]::ReadAllText($file).Split("`n").Count 
    } 

    foreach($subdirectory in $directories) 
    { 
        $lineCount += CountLines $subdirectory 
    } 

    $lineCount 
} 

CountLines (Get-Location) 

此外,Line Counter

答案 1 :(得分:3)

我认为LOCcode是一个有趣的免费工具,用于计算代码行数。它允许选择必须处理哪些文件。它在所有已启用的任务中计算LOC。

enter image description here

不幸的是,似乎LOCCode的开发已经结束。

答案 2 :(得分:2)

您需要的是这里定义的逻辑代码计数行: How do you count your number of Lines Of Code (LOC)

如果您使用NDepend计算lines of code的数量,您仍然可以将所有VS sln附加到NDepend项目中。但是,逻辑代码行是从PDB文件推断的度量标准,因此请确保所有程序集都具有关联的相应PDB文件。

您可能也会感兴趣:Why is it useful to count the number of Lines Of Code (LOC) ?

答案 3 :(得分:0)

我喜欢Mitch Wheat所说的但我不喜欢一些无用的信息被计算为'代码行'。我写了一个C#代码来查找代码中的REAL行总数: http://rajputyh.blogspot.in/2014/02/counting-number-of-real-lines-in-your-c.html

您需要使用该代码构建一个小型实用程序,以提供保存所有“* .cs”文件的根文件夹的路径。关于该代码的好处是它不依赖于项目文件。我通常签出我的代码并删除自动生成的文件,并使用该工具计算行数。

答案 4 :(得分:-2)

最后我和LocMetrics一起去了,不幸的是,这并没有真正解决我的解决方案问题。

但是reposiotry的文件夹结构很好地映射到解决方案,所以我决定使用上面的工具。

感谢大家的帮助