回答:
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のオープンソースラインカウンターは、次の場所で入手できます。
Codeprojectのコードを完備したVSアドインを数える行の作成についての議論もここにあります
http://www.codeproject.com/KB/macros/LineCounterAddin.aspx
また、Slick Edit Gadgetsには素晴らしいラインカウンターがあります。
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))).*$
この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;
中括弧を開く:
{
中括弧を閉じる:
}
注:中括弧の間にあるものはすべて検索に含まれますが、この例では、実際の18行の非空白行ではなく、4行のコードのみがカウントされます。
public class Test
{
/// <summary>
/// Do Stuff
/// </summary>
public Test()
{
TestMe();
}
public void TestMe()
{
//Do Stuff Here
/* And
* Do
* Stuff
* Here */
}
}
これは、以前のいくつかのオプションよりもはるかに正確なLOCカウントを提供するために作成し、共有することを考えました。ボスはLOCカウントを愛しているので、しばらくそれを使い続けています。他の誰かがこれを参考にしてくれることを願っています。質問がある場合や、機能させるために支援が必要な場合は、私に知らせてください。
このヒントを見つけました: VSを使用したLOC検索と置換
それがあなたが探しているものであれば、プラグインではありません。
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 files / s、84566.5 lines / 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 ボーンシェル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 50322 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 .
ソリューションのディレクトリインチ 仕事完了!
ここでの回答は少し時代遅れです。新しいVisual Studioバージョン2010/2012では、この機能はすでに組み込まれているためです。したがって、拡張やツールを使用する理由はありません。
コード行をカウントする機能-メトリックを計算します。これを使用すると、プロジェクトまたはソリューションごとにメトリック(LOC、メンテナンスインデックス、循環係数、継承の深さ)を計算できます。
ソリューションエクスプローラーでソリューションまたはプロジェクトを右クリックし、
[メトリックを計算]を選択します
後で分析と集計のためのデータをExcelにインポートできます。また、Excelでは、生成されたクラスやその他のノイズをメトリックから除外できます。Lines of code LOCを含むこれらのメトリックは、ビルドプロセス中にも収集され、ビルドレポートに含まれます
VS2010と2012の間で正規表現が変更されたため、ここでの正規表現ソリューションのほとんどが機能しなくなりました
(^(?!(\s*//.+)))+(^(?!(#.+)))+(^(?!(\s*\{.+)))+(^(?!(\s*\}.+)))+(^(?!(\s*\r?$)))+
空白ではなく、単一のブラケット( '{'または '}')だけでなく、#includeまたはその他のプリプロセッサだけではないすべての行を検索します。
使用Ctrl- shift- fと正規表現が有効になっていることを確認してください。
VS 2010以前の対応する正規表現は
^~(:Wh@//.+)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@/#).+
Visual Studio Team System 2008では、[分析]メニューから[ソリューションのコードメトリックを計算]を選択すると、ソリューション全体の行数が表示されます(特にg)。
今後の読者のために、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}
Visual Studio Code Metrics PowerTool 10.0を使用できます。マネージコードに関するいくつかのメトリック(コード行を含む)を計算するコマンドラインユーティリティです。ツールをVisual Studioに組み込み、メニュー項目を選択して[ソリューションの分析]をクリックするだけの簡単なVS 2010プラグインを入手できます。
アリ・パーに同意します。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
これがトリックです。Jsファイルもカウントされます。
http://www.spoiledtechie.com/post/2011/11/22/How-To-Count-Lines-of-Code-in-Visual-Studio.aspx
Visual Studio 2010ではProject Line Counterアドインを使用できます。通常、Visual Studio 2010では機能しませんが、http://www.onemanmmo.com/indexにある便利な.regファイルでは機能します。 php?cmd = newsitem&comment = news.1.41.0
私は、フォルダー構造の行をカウントするための迅速で汚れたpowershellスクリプトを思い付きました。他の回答で参照されている他のツールの一部ほど完全に機能しているわけではありませんが、プロジェクトまたはソリューションでのコードファイルのサイズの大まかな比較を提供するのに十分だと思います。
スクリプトはここにあります:
ネプチューナーを試してください。LoCに加えて、スペース、タブ、コメント行なども表示されます。 http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip