14

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

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

我的问题是我需要递归扫描一个包含很多 Visual Studio 解决方案的文件夹。因此,如果不对其代码进行任何重大工作,就不能真正使用第一个工具,因为它一次只能扫描一个解决方案。
但我还需要拆分每个解决方案的结果,最好是包含的项目。这使我发现的第二个工具不合格。我还发现 NDepend 也有同样的问题。

你知道有什么免费工具可以满足我的需要吗?我找不到合适的东西。

4

5 回答 5

22

NDepend是一个伟大的工具,设计用于测量和可视化代码指标和复杂性。

Powershell 会这样做:

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

计算 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) 

此外,线路计数器

于 2010-05-05T12:19:28.970 回答
3

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

在此处输入图像描述

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

于 2013-01-27T04:46:34.800 回答
2

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

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

您可能还对以下内容感兴趣:为什么计算代码行数 (LOC) 的数量很有用?

于 2010-05-06T08:17:07.490 回答
1

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

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

于 2014-02-24T15:18:53.900 回答
-3

最后我选择了LocMetrics,不幸的是这并没有真正解决我的每个解决方案问题。

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

谢谢大家帮忙

于 2010-05-12T07:48:20.287 回答