是否有可能找到整个解决方案中的代码行数?我听说过MZ-Tools,但是有一个等效的开源软件吗?
是否有可能找到整个解决方案中的代码行数?我听说过MZ-Tools,但是有一个等效的开源软件吗?
Answers:
Visual Studio 2010 Ultimate具有以下内置功能:
分析→计算代码指标
我发现powershell对此有用。无论如何,我认为LoC是一个非常虚假的指标,因此我认为不需要任何更正式的方法。
从较小解决方案的目录中:
PS C:\Path> (gci -include *.cs,*.xaml -recurse | select-string .).Count
8396
PS C:\Path>
这将计算所有解决方案的.cs和.xaml文件中的非空白行。对于更大的项目,我只是使用了一个不同的扩展列表:
PS C:\Other> (gci -include *.cs,*.cpp,*.h,*.idl,*.asmx -recurse | select-string .).Count
909402
PS C:\Other>
为什么只有一个命令行就能使用整个应用程序?:)
(dir -exclude *.g.cs -include *.cs,*.xaml -recurse | select-string .).Count
我用Ctrl+ Shift+ F。接下来,\n
在搜索框中输入a并启用正则表达式框。然后在查找结果中,屏幕末尾是搜索的文件数和找到的代码行。
您可以使用[^\n\s]\r\n
跳过空白行和仅空格行(在注释中注明Zach)。
Look at these file types:
下拉列表中的选项来选择特定的文件类型enable regular expressions box
。
[^\n\s]\r\n
跳过空白行,即使其中有空格也是如此。
VS2005、2003和2002的开源行计数器可在此处获得:
这里还讨论了创建行计数VS插件的过程,并在Codeproject上完成了代码
http://www.codeproject.com/KB/macros/LineCounterAddin.aspx
Slick Edit小工具也有不错的行数计数器,在这里:
http://www.slickedit.com/products/slickedit
Microsoft Visual Studio Team System 2008包括一个不错的线路计数器。
不过请记住:
用代码行衡量编程进度就像按重量衡量飞机建造进度。比尔盖茨
这是Visual Studio 2012/2013/2015的更新版,适用于那些希望使用“查找”选项(我觉得这是最简单的)的用户:此RegEx将查找所有非空白行,其中包含多个排除项,以提供最准确的结果。
在“查找”框中输入以下RegEx。请确保选择“使用正则表达式”选项。根据需要将搜索选项更改为“当前项目”或“整个解决方案”。现在选择“查找全部”。在“ 查找结果”窗口的底部,您将看到“匹配行”,即代码计数的行。
^(?!(\s*\*))(?!(\s*\-\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s*\*\/))(?!(\s*\/\*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(?!(\s*\{))(?!(\s(using))).*$
此正则表达式不包括以下项目:
注释
// 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;
打开花括号:
{
关闭花括号:
}
注意:大括号之间的所有内容都将包含在搜索中,但是在此示例中,仅计数4行代码,而不是18条实际的非空白行:
public class Test
{
/// <summary>
/// Do Stuff
/// </summary>
public Test()
{
TestMe();
}
public void TestMe()
{
//Do Stuff Here
/* And
* Do
* Stuff
* Here */
}
}
我创建它的目的是为我提供比以前的某些选项更准确的LOC计数,并认为我会分享。老板喜欢LOC计数,所以我坚持了一段时间。希望其他人可以从中受益,如果您有任何疑问或需要帮助,请告诉我。
找到了这个提示: LOC with VS查找并替换
不是一个插件,虽然那是您要找的东西。
cloc是一个出色的命令行,基于Perl,可在Windows上执行,它将按文件格式划分空行,注释行和代码的源代码行。
现在,它不会专门在VS解决方案文件上运行,但可以在目录中递归运行,并且您可以根据需要设置文件名过滤器。
这是他们网页的示例输出:
提示> cloc perl-5.10.0.tar.gz 4076文本文件。 3883个唯一文件。 1521个文件被忽略。 http://cloc.sourceforge.net v 1.07 T = 10.0 s(251.0文件/秒,84566.5行/秒) -------------------------------------------------- ----------------------------- 语言文件空白注释代码比例第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 伯恩壳牌116 3402 5789 36882 x 3.81 = 140520.42 Lisp 1684 2242 7515 x 1.25 = 9393.75 赚7498473 2044 x 2.50 = 5110.00 C ++ 10312277 2000 x 1.51 = 3020.00 XML 26231 0 1972 x 1.90 = 3746.80 yacc 212897 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 -------------------------------------------------- ----------------------------- 总和:2510 142085 156406 547174 x 2.84 = 1556285.03 -------------------------------------------------- -----------------------------
第三代等效量表是对第三代语言需要多少代码的粗略估计。并不是非常有用,但是仍然很有趣。
choco install cloc
,然后cloc .
在您的解决方案目录。任务完成!
这里的答案有点过时了,可能是从2008年开始的。因为在较新的Visual Studio版本2010/2012中,此功能已内置。因此,没有理由为其使用任何扩展程序或工具。
计数代码行的功能-计算指标。有了它,您可以为每个项目或解决方案计算指标(LOC,Maintaince索引,Cyclomatic索引,继承深度)。
只需在解决方案资源管理器中右键单击解决方案或项目,
然后选择“计算指标”
以后可以将用于分析和汇总的数据导入Excel。同样,在Excel中,您可以从指标中过滤掉生成的类或其他杂音。这些指标(包括代码行LOC)也可以在构建过程中收集,并包含在构建报告中
对于将来的读者,我想建议Visual Studio 2010的DPack扩展。
它内置了很多实用程序,其中包括一个行计数器,该计数器指示多少行是空白,代码等。
您可以使用:
我更喜欢OxyProject Metrics VS Addin。
显然工具更容易,但是我在Powershell中这样做很酷:)
该脚本在.sln文件中找到所有.csproj引用,然后在每个csproj文件中找到要编译的文件。对于要编译的每个文件,它都会创建一个对象,该对象的属性为:解决方案,项目,文件,行。它将所有这些对象存储在列表中,然后根据需要对数据进行分组和投影。
#path to the solution file e.g. "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 Code Metrics PowerTool 10.0。这是一个命令行实用程序,可以为您计算一些有关托管代码的指标(包括代码行)。您可以获得一个VS 2010插件,该插件可将该工具引入Visual Studio中,并使之与选择菜单项并单击“分析解决方案”一样快。
同意Ali Parr。WndTab线路计数器插件是这样的工具。 http://www.codeproject.com/KB/macros/linecount.aspx
从下载站点进行搜索以找到一些相关工具也是一个好主意。 http://www.cnet.com/1770-5_1-0.html?query=code+counter&tag=srch
您可以在Visual Studio 2010中使用Project Line Counter加载项。正常情况下,它不适用于Visual Studio 2010,但可以从以下位置使用有用的.reg文件:http : //www.onemanmmo.com/index。 php?cmd = newsitem&comment = news.1.41.0
我想出了一个快速而肮脏的powershell脚本,用于对文件夹结构中的行进行计数。它的功能不如其他答案中提到的其他工具那样完整,但是我认为它足以对项目或解决方案中的代码文件之间的大小进行粗略比较。
脚本可以在这里找到:
尝试neptuner。除LoC之外,它还为您提供诸如空格,制表符,注释行之类的东西。 http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip