如何计算Visual Studio解决scheme中的代码行数?

是否有可能在整个解决scheme中find代码行数? 我听说过MZ-Tools ,但有没有一个相当于开源的东西?

Visual Studio 2010 Ultimate有这个内置的。

分析 – >计算代码度量

我发现这个有用的PowerShell 。 我认为,无论如何,LoC是一个相当虚假的指标,所以我不相信任何更正式的要求。

从一个小的解决scheme的目录:

PS C:\Path> (gci -include *.cs,*.xaml -recurse | select-string .).Count 8396 PS C:\Path> 

这将统计所有解决scheme的.cs和.xaml文件中的非空行。 对于一个更大的项目,我只是使用了一个不同的扩展列表:

 PS C:\Other> (gci -include *.cs,*.cpp,*.h,*.idl,*.asmx -recurse | select-string .).Count 909402 PS C:\Other> 

为什么使用一个完整的应用程序,当一个命令行将做到这一点? 🙂

我使用了Ctrl + Shift + F。 接下来,在search框中input\n并启用正则expression式框。 然后在查找结果中,屏幕的最后是search到的文件数量和find的代码行数。

VS2005,2003和2002的开源代码行可以在这里find:

http://www.wndtabs.com/

在这里也讨论了创build一个计数VS插件的行,在Codeproject上完成代码

http://www.codeproject.com/KB/macros/LineCounterAddin.aspx

另外油滑编辑小工具有一个不错的线计数器,在这里:

http://www.slickedit.com/products/slickedit

和Microsoft Visual Studio Team System 2008包含一个很好的行计数器。

但请记住:

用代码行来测量编程进度就像是按重量来衡量飞机build筑进度。 比尔盖茨

发现这个提示: LOC与VS查找和replace

不是一个插件,但如果这就是你在找什么。

对于那些想要执行“查找”选项(我觉得这是最简单的选项)的用户,下面是Visual Studio 2012/2013/2015的更新:此RegEx将查找所有非空白行,并带有多个排除项,以提供最准确的结果。

在“查找”框中input以下RegEx。 请确保select“使用正则expression式”选项。 根据您的需要将search选项更改为“当前项目”或“整个解决scheme”。 现在select“查找全部”。 在“ 查找结果”窗口底部,您将看到“匹配行”,即代码行数。


 ^(?!(\s*\*))(?!(\s*\-\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s*\*\/))(?!(\s*\/\*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(?!(\s*\{))(?!(\s(using))).*$ 

此RegEx排除以下项目:


注释

 // This is a comment 

多行注释(假设行在每行前面用*作为正确的注释)

 /* I am a * multi-line * comment */ 

用于Intellisense的XML

 /// <summary> /// I'm a class description for Intellisense /// </summary> 

HTML评论:

 <!-- I am a HTML Comment --> 

使用语句:

 using System; using System.Web; 

打开大括号:

 { 

closures大括号:

 } 

注意:大括号之间的任何内容都会包含在search中,但在本例中只有4行代码会被计算,而不是18个实际的非空行:

  public class Test { /// <summary> /// Do Stuff /// </summary> public Test() { TestMe(); } public void TestMe() { //Do Stuff Here /* And * Do * Stuff * Here */ } } 

我创造了这个给我一个更准确的LOC计数比以前的select,并认为我会分享。 老板们很喜欢LOC计数,所以我坚持了一会儿。 我希望别人能find这个帮助,让我知道如果你有任何问题或需要帮助得到它的工作。

cloc是一个优秀的命令行,基于Perl的Windows可执行文件,它将打破空行,注释行和源代码行,按文件格式分组。

现在,它不会专门在VS解决scheme文件上运行,但它可以recursion通过目录,你可以设置文件名filter,你认为合适的。

这里是他们的网页的示例输出:


提示符> cloc perl-5.10.0.tar.gz
     4076个文本文件。
     3883个独特的文件。                                          
    忽略1521个文件。

 http://cloc.sourceforge.net v 1.07 T = 10.0 s(251.0文件/ s,84566.5行/ s)
 -------------------------------------------------- -----------------------------
语言文件空白评论代码缩放第3代。 当量
 -------------------------------------------------- -----------------------------
 Perl 2052 110356 112521 309778 x 4.00 = 1239112.00
 C 135 18718 22862 140483 x 0.77 = 108171.91
 C / C ++头部147 7650 12093 44042 x 1.00 = 44042.00
 Bourne Shell 116 3402 5789 36882 x 3.81 = 140520.42
 Lisp 1 684 2242 7515 x 1.25 = 9393.75
使7 498 473 2044 x 2.50 = 5110.00
 C ++ 10 312 277 2000 x 1.51 = 3020.00
 XML 26 231 0 1972 x 1.90 = 3746.80
 yacc 2 128 97 1549 x 1.51 = 2338.99
 YAML 2 2 0 489 x 0.90 = 440.10
 DOS批次11 85 50 322 x 0.63 = 202.86
 HTML 1 19 2 98 x 1.90 = 186.20
 -------------------------------------------------- -----------------------------
 SUM:2510 142085 156406 547174 x 2.84 = 1556285.03
 -------------------------------------------------- -----------------------------

第三代等效量表是对第三代语言代码量的粗略估计。 不是非常有用,但无论如何有趣。

这里的答案有点过时,可能是从2008年的时候开始的。 因为在较新的Visual Studio版本2010/2012中,此function已经内置。 因此没有理由使用任何扩展或工具。

计算代码行的function – 计算指标。 有了它,您可以计算每个项目或解决scheme的指标(LOC,Maintaince指数,Cyclomatic指数,inheritance深度)。

只需右键单击Solution Explorer中的解决scheme或项目,

在这里输入图像描述

并select“计算指标”

在这里输入图像描述

以后的分析和汇总数据可以导入到Excel中。 同样在Excel中,您可以过滤掉生成的类或其他指标中的噪音。 包括LOC行代码的这些指标可以在构build过程中收集,并包含在构build报告中

正则expression式在VS2010和2012之间发生了变化,所以这里的大多数正则expression式解决scheme都不再起作用

 (^(?!(\s*//.+)))+(^(?!(#.+)))+(^(?!(\s*\{.+)))+(^(?!(\s*\}.+)))+(^(?!(\s*\r?$)))+ 

将find所有不是空白的行,不仅仅是一个括号('{'或'}'),而不仅仅是一个#include或其他预处理器。

使用Ctrlshiftf并确保启用正则expression式。

VS 2010和更老的相应的正则expression式是

 ^~(:Wh@//.+)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@/#).+ 

在Visual Studio Team System 2008中,您可以从菜单Analyze – >'Calculate Code Metrics for Solution'中进行操作,它会为您提供整个解决scheme的行数(其中包括g

对于未来的读者,我想build议Visual Studio 2010的DPack扩展 。

它有一个内置的实用程序包括一个线计数器,说明有多less行是空白,代码等。

一个简单的解决scheme是search所有文件。 使用通配符时input“*”。 这将匹配所有线路。 在查找结果窗口的末尾,您应该看到一行:

Matching lines: 563 Matching files: 17 Total files searched: 17

当然这对于大型项目来说并不是很好,因为所有的行都被修改并加载到内存中,以便在查找结果窗口显示出来。

参考:

  • 高级示例

我更喜欢OxyProject Metrics VS Addin。

你可以使用:

显然,工具更容易,但我感觉很酷在PowerShell中做这个:)

该脚本查找.sln文件中的所有.csproj引用,然后在每个csproj文件中查找包含用于编译的文件。 对于编译时包含的每个文件,它将创build一个具有属性的对象:解决scheme,项目,文件,行。 它将所有这些对象存储在一个列表中,然后根据需要对数据进行分组和投影。

 #path to the solution file eg "D:\Code\Test.sln" $slnFile = "D:\Code\Test.sln" #results $results = @() #iterate through .csproj references in solution file foreach($projLines in get-item $slnFile | Get-Content | Select-String '".*csproj') { $projFile = [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($slnFile), [regex]::Match($projLines,'[^"]*csproj').Value) $projFolder = [System.IO.Path]::GetDirectoryName($projFile) #from csproj file: get lines for files to compile <Compile Include="..."/> $includeLines = get-item $projFile | Get-Content | Select-String '<Compile Include' #count of all files lines in project $linesInProject = 0; foreach($fileLine in $includeLines) { $includedFilePath = [System.IO.Path]::Combine($projFolder, [Regex]::Match($fileLine, '"(?<file>.*)"').Groups["file"].Value) $lineCountInFile = (Get-Content $includedFilePath).Count $results+=New-Object PSObject -Property @{ Solution=$slnFile ;Project=$projFile; File=$includedFilePath; Lines=$lineCountInFile } } } #filter out any files we dont need $results = $results | ?{!($_.File -match "Designer")} #print out: "---------------lines per solution--------------" $results | group Solution | %{$_.Name + ": " + ($_.Group | Measure-Object Lines -Sum).Sum} "---------------lines per peoject--------------" $results | group Project | %{$_.Name + ": " + ($_.Group | Measure-Object Lines -Sum).Sum} 

其他简单的工具对于VS2008(开源): http : //www.accendo.sk/Download/SourceStat.zip

在Visual Studio 2010 Ultimate中使用菜单 – >分析 – >计算代码度量选项。

您可以使用Visual Studio代码度量标准PowerTool 10.0 。 这是一个命令行实用程序,可以为您计算托pipe代码的一些度量标准(包括代码行)。 你可以得到一个VS 2010插件, 将工具带入Visual Studio ,并使其快速select菜单项并点击“Analyze Solution”。

同意阿里帕尔。 WndTab行计数器插件是一个这样的工具。 http://www.codeproject.com/KB/macros/linecount.aspx

从下载站点search以查找相关工具也是一个好主意。 http://www.cnet.com/1770-5_1-0.html?query=code+counter&tag=srch

你可以使用免费的工具SourceMonitor

给出了很多措施:代码行,语句计数,复杂性,块深度

有通过图表的graphics输出

您可以在Visual Studio 2010中使用Project Line Counter加载项。通常情况下,它不适用于Visual Studio 2010,但可以从这里获得有用的.reg文件: http : //www.onemanmmo.com/index。 PHP?CMD = newsitem及评论= news.1.41.0

我想出了一个快速和肮脏的PowerShell脚本来计算文件夹结构中的行。 它不像其他答案中引用的其他工具那样function全面,但是我认为在项目或解决scheme中提供代码文件相对于彼此的大小的粗略比较已经足够了。

脚本可以在这里find:

https://gist.github.com/1674457

在Visual Studio 2015中,进入分析菜单并select“计算代码度量”。

尝试neptuner。 它也给你像空间,标签,除了LoC的评论行的东西。 http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip