我目前正在研究一种在C#中计算代码行数的解决方案。
我非常需要以下两种工具的组合:
http://richnewman.wordpress.com/2007/07/01/c-and-vbnet-line-count-utility/
http://www.locmetrics.com/index.html
我的问题是我需要递归扫描包含许多visual studio解决方案的文件夹。因此,如果没有对其代码进行任何重大工作,就无法真正使用第一个工具,因为它一次只能扫描一个解决方案。
但我还需要为每个解决方案分割结果,最好是包含项目。这取消了我找到的第二个工具的资格。我还发现NDepend遇到了同样的问题。
您知道有哪些免费工具可以满足我的需求吗?我找不到合适的东西。
答案 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)
答案 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)