Visual studio 如何计算VisualStudio解决方案中的代码行数?
是否可以在整个解决方案中找到代码行数?我听说过,但是有没有开源的等价物?您可以使用:Visual studio 如何计算VisualStudio解决方案中的代码行数?,visual-studio,code-metrics,lines-of-code,line-count,Visual Studio,Code Metrics,Lines Of Code,Line Count,是否可以在整个解决方案中找到代码行数?我听说过,但是有没有开源的等价物?您可以使用: SCLOCCount-开源 loc指标-非开源,但易于使用 VS2005、2003和2002的开源线路计数器可在以下位置获得: 这里还讨论了如何创建一个行计数VS addin,以及Codeproject上的代码 此外,光滑的编辑小工具还有一个漂亮的线条计数器,如下所示: MicrosoftVisualStudioTeamSystem2008包含一个很好的行计数器 但请记住: 按代码行衡量编程进度就像按重
- SCLOCCount-开源
- loc指标-非开源,但易于使用
- VS2005、2003和2002的开源线路计数器可在以下位置获得:
这里还讨论了如何创建一个行计数VS addin,以及Codeproject上的代码
此外,光滑的编辑小工具还有一个漂亮的线条计数器,如下所示:
MicrosoftVisualStudioTeamSystem2008包含一个很好的行计数器 但请记住: 按代码行衡量编程进度就像按重量衡量飞机制造进度一样。 比尔盖茨
在VisualStudioTeamSystem2008中,您可以从菜单中执行分析-->“计算解决方案的代码度量”,它将为您提供整个解决方案的行数(除其他事项外g)我发现这非常有用。无论如何,我认为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>
为什么只使用一个命令行就可以使用整个应用程序呢?:) < P>是一个优秀的命令行,Perl为基础,Windows可执行文件,它将分解空白行、注释行和源代码行,按文件格式分组。
现在它不会专门在VS解决方案文件上运行,但它可以在目录中递归,并且您可以根据需要设置文件名过滤器
以下是他们网页的示例输出:
prompt> cloc perl-5.10.0.tar.gz
4076 text files.
3883 unique files.
1521 files ignored.
http://cloc.sourceforge.net v 1.07 T=10.0 s (251.0 files/s, 84566.5 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code scale 3rd gen. equiv
-------------------------------------------------------------------------------
Perl 2052 110356 112521 309778 x 4.00 = 1239112.00
C 135 18718 22862 140483 x 0.77 = 108171.91
C/C++ Header 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
make 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 Batch 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
-------------------------------------------------------------------------------
提示符>CLOCPerl-5.10.0.tar.gz
4076个文本文件。
3883个唯一文件。
1521个文件被忽略。
http://cloc.sourceforge.net v 1.07 T=10.0秒(251.0文件/秒,84566.5行/秒)
-------------------------------------------------------------------------------
语言文件空白注释代码比例第三代等效
-------------------------------------------------------------------------------
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 168422427515x1.25=9393.75
使74984732044x2.50=5110.00
C++ 10 312 277 277 x 1.51 1.51=3020
XML 26 231 0 1972 x 1.90=3746.80
yacc 2 128 97 1549 x 1.51=2338.99
YAML 2 0 489 x 0.90=440.10
DOS批次11 85 50 322 x 0.63=202.86
HTML 119298x1.90=186.20
-------------------------------------------------------------------------------
总和:2510142085 156406 547174 x 2.84=1556285.03
-------------------------------------------------------------------------------
第三代等效量表是一个粗略的估计,它将在一个系统中需要多少代码。不是很有用,但还是很有趣。VS2008的其他简单工具(开源):找到了以下技巧:
如果这正是你想要的,那就不是一个插件。一个简单的解决方案是搜索所有文件。使用通配符时键入“*”。这将匹配所有行。在find results(查找结果)窗口的末尾,您应该看到一行排序如下:
匹配行:563个匹配文件:17个搜索文件总数:17个
当然,这对于大型项目不是很好,因为所有的行都被加工并加载到内存中,以便在find results窗口中显示
参考资料:
Visual Studio 2010 Ultimate具有以下内置功能: 分析→ 计算代码度量
可以在Visual Studio 2010中使用项目行计数器加载项。通常情况下,它不适用于Visual Studio 2010,但它适用于此处的一个有用的.reg文件:使用Visual Studio 2010 Ultimate中的菜单->分析->计算代码度量选项。我提出了一个快速而肮脏的powershell脚本,用于计算文件夹结构中的行数。它的功能远不如其他答案中提到的其他一些工具,但我认为它足以提供项目或解决方案中代码文件大小的粗略比较 可以在此处找到脚本: 我使用了Ctrl+Shift+F。接下来,在搜索框中放置一个
\n
,并启用正则表达式框。然后在find results(查找结果)中,屏幕末尾是搜索的文件数和找到的代码行数
您可以使用
[^\n\s]\r\n
跳过空白和仅空格的行(注释中的分数归Zach)。同意Ali Parr的意见。WndTab行计数器插件就是这样一种工具。
从下载站点搜索一些相关的工具也是一个好主意。
对于未来的读者,我想建议
它内置了大量实用程序,包括一个行计数器,可以显示有多少行是空白的、代码等。这里的答案有点过时,可能是vs 2008时代的答案。因为在较新的Visual Studio版本2010/2012中,此功能已经内置。因此,没有理由为此使用任何扩展或工具。
#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}
(^(?!(\s*//.+)))+(^(?!(#.+)))+(^(?!(\s*\{.+)))+(^(?!(\s*\}.+)))+(^(?!(\s*\r?$)))+
^~(:Wh@//.+)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@/#).+
^(?!(\s*\*))(?!(\s*\-\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s*\*\/))(?!(\s*\/\*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(?!(\s*\{))(?!(\s(using))).*$
// This is a comment
/* I am a
* multi-line
* comment */
/// <summary>
/// I'm a class description for Intellisense
/// </summary>
<!-- I am a HTML Comment -->
using System;
using System.Web;
{
}
public class Test
{
/// <summary>
/// Do Stuff
/// </summary>
public Test()
{
TestMe();
}
public void TestMe()
{
//Do Stuff Here
/* And
* Do
* Stuff
* Here */
}
}
'Analyze' -> 'Calculate Code Metrics' -> 'For Solution'