如何计算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:
在这里也讨论了创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或其他预处理器。
使用Ctrl – shift – f并确保启用正则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。
你可以使用:
- SCLOCCount http://www.dwheeler.com/sloccount/ – 开源
- loc指标, http://www.locmetrics.com/ – 不开源,但易于使用
显然,工具更容易,但我感觉很酷在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
这里是伎俩..它也计数Js文件。
http://www.spoiledtechie.com/post/2011/11/22/How-To-Count-Lines-of-Code-in-Visual-Studio.aspx
你可以使用免费的工具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:
在Visual Studio 2015中,进入分析菜单并select“计算代码度量”。
尝试neptuner。 它也给你像空间,标签,除了LoC的评论行的东西。 http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip