web-dev-qa-db-ja.com

Visual Studioソリューションのコード行をどのように数えますか?

ソリューション全体でコードの行数を見つけることは可能ですか? MZ-Tools のことを聞いたことがありますが、それと同等のオープンソースはありますか?

733
Fermin

Visual Studio 2010 Ultimateにはこの機能が組み込まれています。

分析 - >コードメトリクスの計算

451
Herter

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>

単一のコマンドラインで実行できるのに、なぜアプリ全体を使用するのでしょうか。 :)

795
Greg D

私が使った Ctrl+Shift+F。次に、検索ボックスに\nを入力して正規表現ボックスを有効にします。次に、検索結果の画面の最後に検索されたファイルの数と見つかったコードの行があります。

340

VS2005、2003、2002のオープンソースラインカウンタはこちらから入手できます。

http://www.wndtabs.com/ /

Codeprojectのコードで、VSアドインを数える行を作成することについての議論もあります。

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

Slick Edit GadgetsにもNiceのカウンターがあります。

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

microsoft Visual Studio Team System 2008には優れたラインカウンターが含まれています。

ただ覚えておいてください:

コード行でプログラミングの進行状況を測定するのは、航空機の建物の進行状況を重量で測定するのと同じです。ビルゲイツ

218
Ali Parr

このヒントが見つかりました: VSとLOCの検索と置換

それがあなたが探しているものであれば、プラグインではありません。

80
Mads Andersen

これは、「検索」オプションを実行したい方のためのVisual Studio 2012/2013/2015のアップデートです(これが最も簡単です)。 。

[検索]ボックスに次の正規表現を入力します。必ず「正規表現を使用する」オプションを選択してください。必要に応じて、検索オプションを「現在のプロジェクト」または「ソリューション全体」に変更します。今すぐ「すべて検索」を選択します。 結果の検索 ウィンドウの下部に、コード数の行である "Matching Lines"が表示されます。


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

この正規表現では、以下の項目が除外されています。


コメント

// This is a comment

複数行コメント(各行の前に*が正しくコメントアウトされていると想定しています)

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

インテリセンスのためのXML

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

HTMLコメント:

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

文を使用する:

using System;
using System.Web;

中括弧を開く:

{

中括弧を閉じる:

}

注:中括弧の間のものはすべて検索に含まれますが、この例では、実際の18行の非ブランク行ではなく、4行のコードのみがカウントされます。

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

以前のオプションよりもはるかに正確なLOC数を得るためにこれを作成し、私が共有すると考えました。ボスはLOCのカウントが大好きなので、しばらくの間それで立ち往生しています。他の誰かがこれを参考にしてくれることを願っています。質問がある場合、またはそれをうまく機能させるために助けが必要かどうかをお知らせください。

74
Howard Renollet

cloc は、ファイル形式でグループ化された、空白行、コメント行、およびコードのソース行を分割する、優れたコマンドライン、Perlベース、Windows実行可能ファイルです。

現在はVSソリューションファイルでは特に実行されませんが、ディレクトリを介して再帰することができ、必要に応じてファイル名フィルタを設定できます。

これが彼らのWebページからの出力例です:

 
 Prompt> cloc Perl-5.10.0.tar.gz 
 4076個のテキストファイル。
 3883個の固有のファイル。 
 1521ファイルを無視しました。
 
 http://cloc.sourceforge.net v 1.07 T = 10.0秒(251.0ファイル/秒、84566.5行/秒)
 -------------------------------------------------- ----------------------------- 
言語ファイルの空白のコメントコードスケール第3世代。 equiv 
 -------------------------------------------- ----------------------------------- 
 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シェル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バッチ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 
 ------------------------- -------------------------------------------------- ---- 
 

第3世代の等価スケールは、 第3世代言語でどれだけのコードが必要かを概算したものです 。それほど便利ではありませんが、とにかくおもしろいです。

60
Mark Rushakoff

ここでの回答は少し古くなっています。2008年からの可能性があります。新しいバージョンのVisual Studio 2010/2012では、この機能は既に組み込まれているからです。したがって、そのために拡張機能やツールを使用する理由はありません。

コードの行数を数える機能 - メトリックスを計算します。それを使用すると、プロジェクトまたはソリューションごとにメトリック(LOC、保守インデックス、循環インデックス、継承の深さ)を計算できます。

ソリューションエクスプローラでソリューションまたはプロジェクトを右クリックします。

enter image description here

そして「メトリックを計算する」を選択します

enter image description here

分析と集計のための後のデータをExcelにインポートすることができます。またExcelでは、生成されたクラスやその他のノイズをメトリックから除外することができます。コード行数LOCを含むこれらのメトリックは、ビルドプロセス中にも収集され、ビルドレポートに含まれる可能性があります。

42
Regfor

VS2010と2012の間で正規表現が変更されたため、ここではほとんどの正規表現ソリューションが機能しなくなりました。

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

空白ではなく、単一の括弧( '{'または '}')だけでなく、#includeや他のプリプロセッサでもないすべての行を検索します。

つかいます Ctrl - shift - f 正規表現が有効になっていることを確認してください。

VS 2010以前に対応する正規表現は、次のとおりです。

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

Visual Studio Team System 2008では、[分析] - > [ソリューションのコードメトリクスの計算]メニューから実行でき、ソリューション全体の行数(gなど)が表示されます。

19

将来の読者のために、Visual Studio 2010の DPack拡張子 に助言したいと思います。

何行の空白があるかを示す行カウンタ、コードなどを含む組み込みユーティリティがたくさんあります。

17
Ashley Davies

簡単な解決策は、すべてのファイルを検索することです。ワイルドカードを使用するときは "*"を入力してください。これはすべての行に一致します。検索結果ウィンドウの最後に次のような行が表示されます。

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

もちろん、これは大規模なプロジェクトにはあまり適していません。すべての行が検索結果ウィンドウに表示されるように一致してメモリにロードされるためです。

参照:

11
Sogartar

あなたが使用することができます:

9
Edward Wilde

OxyProject Metrics VS Addinが好きです。

5

明らかにツールはより簡単ですが、私はこれをPowerShellで行うのがかっこいいと思います:)

このスクリプトは、.slnファイル内のすべての.csproj参照を見つけ、各csprojファイル内でコンパイルに含まれるファイルを探します。コンパイルに含まれる各ファイルに対して、Solution、Project、File、Linesというプロパティを持つオブジェクトを作成します。これらすべてのオブジェクトをリストに格納し、必要に応じてデータをグループ化して投影します。

#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}
4
anakic

VS2008(オープンソース)のための他のシンプルなツール: http://www.accendo.sk/Download/SourceStat.Zip

3
LiborBes

Visual Studio 2010 Ultimateの[メニュー] - > [分析] - > [コードメトリクスの計算]オプションを使用します。

3
sunil

Visual StudioコードメトリックスPowerTool 10.0 を使用できます。それはあなたのためにマネージコードのいくつかの測定基準を計算するコマンドラインユーティリティです(コード行を含む)。 ツールをVisual Studio に取り込むためのVS 2010プラグインを入手することができ、メニュー項目を選択して[Analyze Solution]をクリックするのと同じくらい速く実行できます。

3
Travis

これがトリックです。Jsファイルもカウントされます。

http://www.spoiledtechie.com/post/2011/11/22/How-To-Count-Lines-of-Code-in-Visual-Studio.aspx

2

あなたは無料のツールを使用することができます SourceMonitor

コード行数、ステートメント数、複雑さ、ブロック長

チャートによるグラフィック出力

2

アリパーと同意する。 WndTab Line Counterアドインはそのようなツールです。 http://www.codeproject.com/KB/macros/linecount.aspx

ダウンロードサイトから検索して関連ツールを見つけることもお勧めです。 http://www.cnet.com/1770-5_1-0.html?query=code+counter&tag=srch

2
fastyond

フォルダ構造の行数を数えるための、すばやく汚いpowershellスクリプトを思いつきました。他の回答で参照されている他のツールほど完全な機能を備えているわけではありませんが、プロジェクトまたはソリューション内のコードファイルのサイズを互いに大まかに比較することで十分です。

スクリプトはここにあります。

https://Gist.github.com/1674457

1
Jesse Taber

Visual Studio 2010でProject Line Counterアドインを使用できます。通常、Visual Studio 2010では機能しませんが、ここから役立つ.regファイルを使用して機能します。 http://www.onemanmmo.com/ index.php?cmd = newsitem&comment = news.1.41.0

1
Robert Basler

Visual Studio 2015で[分析]メニューに移動し、[コードメトリクスの計算]を選択します。

0
Atters

ネプチュナーを試してください。それはまた、あなたにLoCに加えてスペース、タブ、コメント行のようなものを与えます。 http://neptuner.googlecode.com/files/neptuner_0_30_windows.Zip

0
sonofdelphi