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窗口中显示

      参考资料:


      我更喜欢VS Addin。

      试试neptuner。除LoC外,它还提供空格、制表符、注释行等内容。
      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'