コードの行数を数える
cloc は、多くのプログラミング言語のソース コードの空白行、コメント行、および物理行をカウントします。
最新リリース: v2.02 (2024 年 8 月 2 日)
cloc は、2006 年 8 月以来 http://cloc.sourceforge.net/ でホストされていた後、2015 年 9 月に GitHub に移動しました。
ステップ 1: cloc をダウンロードするか (いくつかの方法、下記を参照)、または cloc の docker イメージを実行します。 Windows 実行可能ファイルには要件はありません。 cloc のソース バージョンには Perl インタープリターが必要で、cloc の Docker バージョンには Docker のインストールが必要です。
ステップ 2: ターミナル (Windows の場合はcmd.exe
) を開きます。
ステップ 3: cloc を呼び出して、ソース ファイル、ディレクトリ、アーカイブ、または git コミットをカウントします。実行可能ファイル名は、開発ソース バージョン ( cloc
)、リリース バージョンのソース ( cloc-2.02.pl
)、または Windows 実行可能ファイル ( cloc-2.02.exe
) のいずれを使用するかによって異なります。
このページでは、これらを総称してcloc
と呼びます。
Include Security には、実際の手順を示す YouTube ビデオがあります。
ファイル
プロンプト> cloc hello.c 1つのテキストファイル。 1 つの固有のファイル。 0 ファイルは無視されました。 https://github.com/AlDanial/cloc v 1.65 T=0.04 秒 (28.3 ファイル/秒、340.0 行/秒) -------------------------------------------------- ------------------------ 言語ファイルの空白のコメントコード -------------------------------------------------- ------------------------ C 1 0 7 5 -------------------------------------------------- ------------------------
ディレクトリ
プロンプト> cloc gcc-5.2.0/gcc/c 16個のテキストファイル。 15 個の固有のファイル。 3 つのファイルは無視されました。 https://github.com/AlDanial/cloc v 1.65 T=0.23 秒 (57.1 ファイル/秒、188914.0 行/秒) -------------------------------------------------- ------------------------ 言語ファイルの空白のコメント コード -------------------------------------------------- ------------------------ C 10 4680 6621 30812 C/C++ ヘッダー 3 99 286 496 -------------------------------------------------- ------------------------ 合計: 13 4779 6907 31308 -------------------------------------------------- ------------------------
アーカイブ
cloc のソース zip ファイルを GitHub から取得し、内容を数えます。
プロンプト> wget https://github.com/AlDanial/cloc/archive/master.zip プロンプト> cloc master.zip https://github.com/AlDanial/cloc v 1.65 T=0.07 秒 (26.8 ファイル/秒、141370.3 行/秒) -------------------------------------------------- ------------------------ 言語ファイルの空白のコメントコード -------------------------------------------------- ------------------------ パール 2 725 1103 8713 -------------------------------------------------- ------------------------ 合計: 2 725 1103 8713 -------------------------------------------------- ------------------------
特定のコミットを使用する git リポジトリ
この例では、素晴らしい Python デバッガーである PuDB のコードを使用します。
プロンプト> git clone https://github.com/inducer/pudb.git プロンプト> cd pudb プロンプト> cloc 6be804e07a5db テキストファイルは48個。 41 個の固有のファイル。 8 ファイルは無視されました。 github.com/AlDanial/cloc v 1.99 T=0.04 秒 (1054.9 ファイル/秒、189646.8 行/秒) -------------------------------------------------- ------------------------ 言語ファイルの空白のコメント コード -------------------------------------------------- ------------------------ パイソン 28 1519 728 4659 再構造化テキスト 6 102 20 203 YAML 2 9 2 75 ボーン・シェル 3 6 0 17 テキスト 1 0 0 11 1 4 6 10 を作る -------------------------------------------------- ------------------------ 合計: 41 1640 756 4975 -------------------------------------------------- ------------------------
特定のディレクトリの各サブディレクトリ
3 つの異なる git 管理プロジェクト、Project0、Project1、および Project2 が含まれるディレクトリがあるとします。シェルのループ機能を使用して、それぞれのコードをカウントできます。この例では bash を使用します (cmd.exe の例については下にスクロールします)。
プロンプト> for d in ./*/ ; do (cd "$d" && echo "$d" && cloc --vcs git);終わり ./プロジェクト0/ 7つのテキストファイル。 7 つのユニークなファイル。 1 ファイルは無視されました。 github.com/AlDanial/cloc v 1.71 T=0.02 秒 (390.2 ファイル/秒、25687.6 行/秒) -------------------------------------------------- ------------------------ 言語ファイルの空白のコメント コード -------------------------------------------------- ------------------------ D 4 61 32 251 マークダウン 1 9 0 38 1 0 0 4 を作る -------------------------------------------------- ------------------------ 合計: 6 70 32 293 -------------------------------------------------- ------------------------ ./プロジェクト1/ 7つのテキストファイル。 7 つのユニークなファイル。 0 ファイルは無視されました。 github.com/AlDanial/cloc v 1.71 T=0.02 秒 (293.0 ファイル/秒、52107.1 行/秒) -------------------------------------------------- ------------------------ 言語ファイルの空白のコメント コード -------------------------------------------------- ------------------------ 行く 7 165 282 798 -------------------------------------------------- ------------------------ 合計: 7 165 282 798 -------------------------------------------------- ------------------------ ./プロジェクト2/ テキストファイルは49個。 47 個の固有のファイル。 13 個のファイルが無視されました。 github.com/AlDanial/cloc v 1.71 T=0.10 秒 (399.5 ファイル/秒、70409.4 行/秒) -------------------------------------------------- ------------------------ 言語ファイルの空白のコメント コード -------------------------------------------------- ------------------------ パイソン 33 1226 1026 3017 C 4 327 337 888 マークダウン 1 11 0 28 YAML 1 0 2 12 -------------------------------------------------- ------------------------ 合計: 39 1564 1365 3945 -------------------------------------------------- ------------------------
特定のディレクトリの各サブディレクトリ (Windows/cmd.exe)
for /D %I in (.*) do cd %I && cloc --vcs git && cd ..
cloc は、多くのプログラミング言語のソース コードの空白行、コメント行、および物理行をカウントします。コード ベースの 2 つのバージョンが与えられた場合、 cloc は空白行、コメント行、およびソース行の違いを計算できます。これは完全に Perl で書かれており、Perl v5.6 以降の標準ディストリビューション以外の依存関係はありません (一部の外部モジュールのコードは cloc 内に埋め込まれています) ため、非常に移植性が高いです。 cloc は、Linux、FreeBSD、NetBSD、OpenBSD、macOS、AIX、HP-UX、Solaris、IRIX、z/OS、および Windows のさまざまなバージョンで実行できることが知られています。 (Windows 上で cloc の Perl ソース バージョンを実行するには、ActiveState Perl 5.6.1 以降、Strawberry Perl、Windows Subsystem for Linux、Cygwin、Perl プラグインがインストールされた MobaXTerm、または mingw 環境およびターミナルが必要です。 Windows 用の Git の代わりに、PAR::Packer で生成された cloc の Windows バイナリを使用して、Perl も Cygwin も搭載していない Windows コンピュータ上で実行することもできます。)
cloc は、個々のテキスト ファイル、ディレクトリ、Git リポジトリ内のコードをカウントするだけでなく、 .tar
(圧縮バージョンを含む)、 .zip
、Python Wheel .whl
、Jupyter Notebook .ipynb
、ソース RPM などのアーカイブ ファイル内のコードもカウントできます.rpm
または.src
( rpm2cpio
が必要)、および Debian .deb
ファイル ( dpkg-deb
が必要)。
cloc には、David Wheeler の SLOCCount、Damian Conway と Abigail の Perl モジュール Regexp::Common、Sean M. Burke の Perl モジュール Win32::Autoglob、および Tye McQueen の Perl モジュール Algorithm::Diff のコードが含まれています。言語スケール係数は Mayes Consulting, LLC の Web サイト http://softwareestimator.com/IndustryData2.htm から取得されました。
新しいリリースは名目上 6 か月ごとにリリースされます。
docker run --rm -v $PWD :/tmp aldanial/cloc
docker run --rm -v " / $( pwd -W ) " :/tmp aldanial/cloc
オペレーティング システムに応じて、次のインストール方法のいずれかが機能する場合があります (Windows の最後の 2 つのエントリを除くすべてのエントリには Perl インタープリタが必要です)。
npm install -g cloc # https://www.npmjs.com/package/cloc
sudo apt install cloc # Debian, Ubuntu
sudo yum install cloc # Red Hat, Fedora
sudo dnf install cloc # Fedora 22 or later
sudo pacman -S cloc # Arch
sudo emerge -av dev-util/cloc # Gentoo https://packages.gentoo.org/packages/dev-util/cloc
sudo apk add cloc # Alpine Linux
doas pkg_add cloc # OpenBSD
sudo pkg install cloc # FreeBSD
sudo port install cloc # macOS with MacPorts
brew install cloc # macOS with Homebrew
winget install AlDanial.Cloc # Windows with winget
choco install cloc # Windows with Chocolatey
scoop install cloc # Windows with Scoop
注: 私はこれらのパッケージを一切管理していません。上記のパッケージのいずれかを使用している cloc でバグが発生した場合は、問題レポートを送信する前に、GitHub (リンクは下にあります) の最新の安定リリースから取得した cloc で試してください。
https://github.com/AlDanial/cloc/releases/latest
https://github.com/AlDanial/cloc/raw/master/cloc
cloc は、他のソースからコピーされた部分を除き、GNU General Public License v 2 に基づいてライセンスされています。 Regexp::Common、Win32::Autoglob、および Algorithm::Diff Perl モジュールからコピーされたコードは、Artistic License の対象となります。
cloc には、使いやすく、完全で、拡張性があり、移植可能である多くの機能があります。
cloc がニーズに合わない場合は、無料で利用できる他のカウンターを検討してください。
その他の参考文献:
cloc は標準ディストリビューションに含まれる Perl モジュール以外の Perl モジュールを必要としませんが、いくつかの外部モジュールに依存します。これらの外部モジュールのうち 3 つ (Regexp::Common、Win32::Autoglob、Algorithm::Diff) のコードが cloc 内に埋め込まれています。 4 番目のモジュール Digest::MD5 は、利用可能な場合にのみ使用されます。 cloc は、ローカルにインストールされている Regexp::Common または Algorithm::Diff を検出すると、それらのインストールを使用します。そうでない場合、 cloc は、必要な Regexp::Common および/または Algorithm:Diff の部分を一時ディレクトリにインストールします。これらのディレクトリは、cloc の実行開始時に作成され、実行が完了すると削除されます。 Regexp::Common v2.120 および Algorithm::Diff v1.1902 の必要なコードは、cloc ソース コード内に埋め込まれています (サブルーチンInstall_Regexp_Common()
およびInstall_Algorithm_Diff()
を参照)。 Win32::Autoglob から必要な行は 3 行だけであり、これらは cloc に直接組み込まれます。
さらに、cloc は、Digest::MD5 がローカルにインストールされている場合、Digest::MD5 を使用して、同じサイズの入力ファイル間の一意性を検証します。
並列処理オプション--processes= Nは、マルチコア マシンでの高速実行を可能にするために cloc バージョン 1.76 で導入されました。ただし、これを使用するには、Parallel::ForkManager モジュールがインストールされている必要があります。このモジュールは Windows では確実に動作しないため、並列処理は Unix 系のオペレーティング システムでのみ動作します。
Windows バイナリは、Regexp::Common と Digest::MD5 の両方がローカルにインストールされているコンピューター上に構築されます。
cloc の Windows 実行可能ファイルを作成するための最も堅牢なオプションは、ActiveState の Perl Development Kit を使用することです。これには、Perl ソース コードのスタンドアロン Windows、Mac、および Linux バイナリを構築できるユーティリティperlapp
が含まれています。
perl2exe も同様に機能します。 perl2exe
がある場合は、 cloc ソース コードの 84 ~ 87 行目を変更して、cloc Windows 実行可能ファイルを作成するために必要なコードのマイナーな変更を行います。
それ以外の場合、 PAR::Packer
からpp
を使用して Windows 実行可能ファイルをビルドするには、まず、指示に従って Windows ベースの Perl ディストリビューション (Strawberry Perl や ActivePerl など) をインストールします。次に、コマンド プロンプト (DOS ウィンドウとも呼ばれます) を開き、PAR::Packer モジュールをインストールします。最後に、新しくインストールしたpp
コマンドを cloc ソース コードで呼び出して、 .exe
ファイルを作成します。
C:> cpan -i ダイジェスト::MD5 C:> cpan -i Regexp::Common C:> cpan -i アルゴリズム::Diff C:> cpan -i PAR::Packer C:> cpan -i Win32::LongPath C:> pp -M Win32::LongPath -M Encode::Unicode -M Digest::MD5 -c -x -o cloc-2.02.exe cloc-2.02.pl
上記の手順のバリエーションとして、Strawberry Perl のポータブル バージョンをインストールした場合は、環境を適切にセットアップするために最初にportableshell.bat
を実行する必要があります。
「リリース」セクションの Windows 実行可能ファイルcloc-2.02.exeは、Strawberry Perl 5.30.2 および PAR::Packer を使用して.exe
をビルドし、64 ビット Windows 10 コンピューター上でビルドされました。
理想的には、マシンに Perl インタープリタがインストールされており、cloc ソース ファイルを実行できるため、Windows 実行可能ファイルを必要とする人は誰もいません。ただし、集中管理されている企業の Windows マシンでは、これは困難または不可能な場合があります。
cloc で配布される Windows 実行可能ファイルは、ウイルスやマルウェアのない.exe
のベストエフォートとして提供されます。実行可能ファイルに対して独自のウイルス スキャナを実行し、 https://www.virustotal.com/ などのサイトをチェックすることをお勧めします。最新バージョンのエントリは次のとおりです。
cloc-2.02-winget.exe: (Windows 上のシンボリックリンクからの実行を可能にする PR 850 を含む) https://www.virustotal.com/gui/file/be033061e091fea48a5bc9e8964cee0416ddd5b34bd5226a1c9aa4b30bdba66a?nocache=1
cloc-2.02.exe: https://www.virustotal.com/gui/file/369ed76125f7399cd582d169adf39a2e08ae5066031fea0cc8b2836ea50e7ce2?nocache=1
cloc-2.00.exe: https://www.virustotal.com/gui/file/7a234ef0cb495de1b5776acf88c5554e2bab1fb02725a5fb85756a6db3121c1f
cloc-1.98.exe: https://www.virustotal.com/gui/file/88615d193ec8c06f7ceec3cc1d661088af997798d87ddff331d9e9f9128a6782?nocache=1
cloc-1.96.1.exe: https://www.virustotal.com/gui/file/00b1c9dbbfb920dabd374418e1b86d2c24b8cd2b8705aeb956dee910d0d75d45?nocache=1
cloc-1.96.exe: https://www.virustotal.com/gui/file/54bf5f46fbaba7949c4eb2d4837b03c774c0ba587448a5bad9b8efc0222b1583?nocache=1
cloc-1.94.exe: https://www.virustotal.com/gui/file/b48a6002fb75fa66ec5d0c05a5c4d51f2ad22b5b025b7eb4e3945d18419c0952?nocache=1
cloc-1.92.exe: https://www.virustotal.com/gui/file/2668fcf8609c431e8934fe9e1866bc620c58d198c4eb262f1d3ef31ef4a690f7
cloc-1.90.exe: https://www.virustotal.com/gui/file/d655caae55486f9bac39f7e3c7b7553bcfcfe2b88914c79bfc328055f22b8a37/detection
cloc-1.88.exe: https://www.virustotal.com/gui/file/97d5d2631d1cccdbfd99267ab8a4cf5968816bbe52c0f9324e72e768857f642d/detection
cloc-1.86.exe: https://www.virustotal.com/gui/file/1b2e189df1834411b34534db446330d1c379b4bc008af3042ee9ade818c6a1c8/detection
cloc-1.84.exe: https://www.virustotal.com/gui/file/e73d490c1e4ae2f50ee174005614029b4fa2610dcb76988714839d7be68479af/detection
cloc-1.82.exe: https://www.virustotal.com/#/file/2e5fb443fdefd776d7b6b136a25e5ee2048991e735042897dbd0bf92efb16563/detection
cloc-1.80.exe: https://www.virustotal.com/#/file/9e547b01c946aa818ffad43b9ebaf05d3da08ed6ca876ef2b6847be3bf1cf8be/detection
cloc-1.78.exe: https://www.virustotal.com/#/file/256ade3df82fa92febf2553853ed1106d96c604794606e86efd00d55664dd44f/detection
cloc-1.76.exe: https://www.virustotal.com/#/url/c1b9b9fe909f91429f95d41e9a9928ab7c58b21351b3acd4249def2a61acd39d/detection
cloc-1.74_x86.exe: https://www.virustotal.com/#/file/b73dece71f6d3199d90d55db53a588e1393c8dbf84231a7e1be2ce3c5a0ec75b/detection
cloc 1.72 exe: https://www.virustotal.com/en/url/8fd2af5cd972f648d7a2d7917bc202492012484c3a6f0b48c8fd60a8d395c98c/analysis/
cloc 1.70 exe: https://www.virustotal.com/en/url/63edef209099a93aa0be1a220dc7c4c7ed045064d801e6d5daa84ee624fc0b4a/analysis/
cloc 1.68 exe: https://www.virustotal.com/en/file/c484fc58615fc3b0d5569b9063ec1532980281c3155e4a19099b11ef1c24443b/analysis/
cloc 1.66 exe: https://www.virustotal.com/en/file/54d6662e59b04be793dd10fa5e5edf7747cf0c0cc32f71eb67a3cf8e7a171d81/analysis/1453601367/
上記のように perl2exe で作成された cloc バージョン 1.60 以前の Windows 実行可能ファイルは約 1.6 MB ですが、 PAR::Packer
で作成されたバージョン 1.62 および 1.54 は 11 MB です。バージョン 1.66 は、新しいバージョンのPAR::Packer
でビルドされ、約 5.5 MB です。 PAR::Packer
実行可能ファイルは、perl2exe でビルドされた実行可能ファイルよりもはるかに大きいのはなぜですか?私の理論では、 perl2exe はPAR::Packer
よりも賢いツリー枝刈りロジックを使用しているということですが、これは純粋な推測です。
cloc は、ファイル、ディレクトリ、アーカイブ名を入力として受け取るコマンド ライン プログラムです。 Perl v5.22.0 ソース ディストリビューションに対して cloc を実行する例を次に示します。
プロンプト> cloc perl-5.22.0.tar.gz 5605 テキスト ファイル。 5386 個の一意のファイル。 2176 ファイルが無視されました。 https://github.com/AlDanial/cloc v 1.65 T=25.49 秒 (134.7 ファイル/秒、51980.3 行/秒) -------------------------------------------------- --------------------------------- 言語ファイルの空白のコメントコード -------------------------------------------------- --------------------------------- パール 2892 136396 184362 536445 C 130 24676 33684 155648 C/C++ ヘッダー 148 9766 16569 147858 ボーン・シェル 112 4044 6796 42668 パスカル 8 458 1603 8592 XML 33 142 0 2410 YAML 49 20 15 2078 C++ 10 313 277 2033 4 426 488 1986 を作る プロローグ 12 438 2 1146 JSON 14 1 0 1037 ヤック 1 85 76 998 Windows メッセージ ファイル 1 102 11 489 DOS バッチ 14 92 41 389 Windows リソース ファイル 3 10 0 85 D 1 5 7 8 リスプ 2 0 3 4 -------------------------------------------------- --------------------------------- 合計: 3434 176974 243934 903874 -------------------------------------------------- ---------------------------------
Windows コンピュータで cloc を実行するには、コマンド (別名 DOS) ウィンドウを開き、そこにあるコマンド ラインから cloc.exe を呼び出します。あるいは、https://github.com/Roemer/ClocViewer にある cloc の GUI ラッパーである ClocViewer を試してください。
cloc 結果のグラフィカルなレンダリングについては、https://github.com/jmensch1/codeflower も参照してください。
プロンプト> cloc --help 使用法: cloc [オプション] <ファイル/ディレクトリ/git ハッシュ> | <セット 1> <セット 2> | <レポートファイル> ソースコードの物理行をカウントまたは差異を計算します。 指定されたファイル (圧縮された tarball や zip ファイルなどのアーカイブの場合もあります) または git commit ハッシュまたはブランチ名)、および/または以下で再帰的に 指定されたディレクトリ。 入力オプション --extract-with=このオプションは、cloc が使用できない場合にのみ必要です。 の内容を抽出する方法を理解するには 入力ファイル自体。 を使用してバイナリ アーカイブ ファイルを抽出します (例: .tar.gz、.zip、.Z)。リテラル「>FILE<」を次のように使用します。 実際のファイルの代用 抽出された。たとえば、コードの行を数えるには 入力ファイル内で gcc-4.2.tar.gz perl-5.8.8.tar.gz Unix の使用について --extract-with='gzip -dc >ファイル< |タール xf -' または、GNU tar がある場合は、 --extract-with='tar zxf >ファイル<' Windows では、たとえば次のように使用します。 --extract-with=""c:Program FilesWinZipWinZip32.exe" -e -o >FILE< ." (WinZip がインストールされている場合)。 --list-file= ファイル名やディレクトリ名のリストを取得します。 1 つのファイル/ディレクトリを持つ からの処理 行ごとの名前。完全一致のみがカウントされます。 相対パス名は次から解決されます。 cloc が呼び出されるディレクトリ。 <ファイル> を設定します to - STDIN パイプからファイル名を読み取ります。 --exclude-list-file も参照してください。 --diff-list-file= 差分を取得するファイル名のペアを取得します。 、その形式は次の出力と一致します。 -- 差分アライメント。 (そのオプションを指定して実行すると、 サンプルを参照してください。) 各行の末尾は無視されます。これにより --diff が有効になります モードを設定し、ファイル ペア アラインメント ロジックをバイパスします。 --vcs= へのシステム コールを呼び出して、 作業するファイル。 が 'git' の場合、 「git ls-files」を呼び出してファイルリストを取得し、 「git submodule status」でサブモジュールのリストを取得します その内容は無視されます。 --git も参照してください git commit ハッシュとブランチ名を受け入れます。 が「svn」の場合、「svn list -R」が呼び出されます。 主な利点は、cloc がスキップすることです。 バージョン管理ツールによって明示的に除外されたファイル 問題となっているもの、つまり、.gitignore 内のファイル、または svn:ignore プロパティ。 あるいは、 には任意のシステム コマンドを使用できます。 ファイルのリストを生成します。 注: cloc は読み取り可能なディレクトリに存在する必要があります。 によって返されたファイル。時計します リモートリポジトリからファイルをダウンロードしないでください。 「svn list -R」はリモート リポジトリを参照している可能性があります ファイル名を取得するため (したがって、必要な場合があります) リモートリポジトリへの認証)、ただし ファイル自体はローカルにある必要があります。 を「auto」に設定すると、「git」の間で選択されます 存在に応じて、および「svn」(またはどちらでもない) ディレクトリの下の .git または .svn サブディレクトリの ここで cloc が呼び出されます。 --unicode バイナリ ファイルをチェックして、Unicode が含まれているかどうかを確認します。 拡張された ASCII テキスト。これによりパフォーマンスが低下します 顕著に低下します。 処理オプション --autoconf .in ファイル (GNU autoconf によって処理される) をカウントします。 認識された言語。 --no-autogen も参照してください。 --by-file 検出されたすべてのソース ファイルの結果をレポートします。 --by-file-by-lang 検出されたすべてのソース ファイルの結果をレポートします 言語ごとのレポートに加えて。 --config ではなく からコマンド ライン スイッチを読み取ります。 デフォルトの場所は /home/al/.config/cloc/options.txt です。 ファイルには 1 つのスイッチと、 引数 (存在する場合) を行ごとに指定します。空白行と空白行 「#」で始まる部分はスキップされます。に与えられたオプション コマンドラインは、読み取られたエントリよりも優先されます。 ファイル。 --count-and-diff <セット 1> <セット 2> まずソース ファイルの直接コード カウントを実行します。 と を別々に実行し、diff を実行します。 これらのうち。入力はファイル、ディレクトリ、 またはアーカイブ。 --out または --report-file が指定された場合、 3 つの出力ファイルがそれぞれ 1 つずつ作成されます。 2 つのカウントのうち 1 つは差分用です。こちらも参照 --diff、--diff-alignment、--diff-timeout、 --ignore-case、--ignore-whitespace。 --diff 間のコードとコメントの違いを計算します。 と のソース ファイル。入力 ファイル、ディレクトリ、アーカイブの任意の組み合わせが可能です。 または git commit ハッシュ。 --diff-alignment を使用して、 どのファイルペアがどこにあるかを示すリストを生成します 比較した。 git ブランチを比較する場合は、ファイルのみを比較します いずれかのコミットで変更されたものが比較されます。 --git、--count-and-diff、--diff-alignment、も参照してください。 --diff-list-file、--diff-timeout、--ignore-case、 --空白を無視します。 --diff-timeout 秒以上かかるファイルを無視します 処理すること。デフォルトは 10 秒です。 の設定 0 に設定すると、時間は無制限になります。 (多くのファイルが含まれる大きなファイル 繰り返し行で Algorithm::Diff::sdiff() が発生する可能性があります 数時間かかります。) --timeout も参照してください。 --docstring-as-code cloc は docstring をコメントとみなしますが、これは docstring は正規のものを表すため、必ずしも正しいとは限りません 文字列が右側に表示される場合 代入または関数の引数として。このスイッチ docstring を強制的にコードとしてカウントします。 --follow-links [Unix のみ] ディレクトリへのシンボリック リンクをたどります (ファイルへの sym リンクは常にたどられます)。 --stat も参照してください。 --force-lang=<言語>[,<拡張子>] 拡張子を持つすべてのファイルを処理します 言語 のカウンターを使用します。のために たとえば、すべての .f ファイルをカウントするには、 Fortran 90 カウンター (ファイルが デフォルトの Fortran 77 の代わりに .f90 で終わる) カウンター、使用 --force-lang="Fortran 90,f" を省略した場合、すべてのファイルがカウントされます カウンターを使用します。このオプションは次のとおりです 複数回指定(ただし、それは単なる が毎回指定される場合に便利です)。 --script-lang、--lang-no-ext も参照してください。 --force-lang-def= から言語処理フィルターをロードします。 次に、組み込みのフィルターの代わりにこれらのフィルターを使用します。 フィルター。注: 同じにマップされる言語 ファイル拡張子 (例: MATLAB/Mathematica/Objective-C/MUMPS/Mercury; パスカル/PHP; Lisp/OpenCL; Lisp/ジュリア; Perl/プロローグ) 追加が必要なため無視されます 言語で表現されない処理 定義ファイル。 --read-lang-def を使用して定義します 組み込みの言語フィルターを置き換えずに新しい言語フィルターを追加 フィルタ (--write-lang-def も参照) --write-lang-def-incl-dup)。 --git 入力を git ターゲットとして強制的に解釈します。 (コミットハッシュ、ブランチ名など) 最初はファイルまたはディレクトリとして識別されません 名前。このオプションは --vcs=git ロジックをオーバーライドします。 これが与えられれば;言い換えれば、 --git はその git から直接作業するファイルのリスト from ではなくハッシュまたはブランチ名 「git ls-files」。このオプションは一緒に使用できます --diff は git 間の行数の差分を実行します。 コミット、または git コミットとファイルの間、 ディレクトリ、またはアーカイブ。 -v/--verbose を使用して確認してください git システム コマンド cloc が発行します。 --git-diff-rel --git --diff と同じ、または入力の場合は単に --diff git ターゲットとして認識されます。ファイルのみ いずれかのコミットで変更されたものが比較されます。 --git-diff-all Git diff 戦略 #2: 内のすべてのファイルを比較します。 2 つのコミット間のリポジトリ。 --ignore-whitespace ファイルを比較するときに水平方向の空白を無視します。 --diff を使用します。 --ignore-case も参照してください。 --ignore-case ファイル内容内の大文字と小文字の変更を無視します。 大文字と小文字を同等とみなします --diff を使用してファイルを比較する場合。こちらも参照 --空白を無視します。 --ignore-case-ext ファイル名拡張子の大文字と小文字を無視します。これにより、 一部の言語のカウントに問題が発生する (具体的には、.c と .C は C と関連付けられており、 C++;このスイッチは、.C ファイルを C としてカウントします。 *nix オペレーティング システム上の C++ よりも)。ファイル名 Windows では、大文字と小文字の区別は常に有効です。 --lang-no-ext= を使用して拡張子のないファイルをカウントします。 カウンタ。このオプションは内部ロジックをオーバーライドします 拡張子のないファイルの場合(そのようなファイルは 既知のスクリプト言語に対してチェックされます 最初の行の #! を調べてください)。こちらも参照 --force-lang、--script-lang。 --max-file-size= 次の場合に メガバイトを超えるファイルをスキップします。 ディレクトリを横断する。デフォルトでは、 =100 です。 cloc のメモリ要件は約 20 倍です 最大のファイルよりも大きいため、次のように実行します 100 MB を超えるファイルを、それ以下の容量のコンピュータ上で メモリが 2 GB を超えると問題が発生します。 注: このチェックはファイルには適用されません。 コマンドライン引数として明示的に渡されます。 --no-autogen[=list] コード生成システムによって生成されたファイルを無視します GNU autoconf など。これらのファイルのリストを表示するには (その後終了)、--no-autogen list を指定して実行します --autoconf も参照してください。 --original-dir [との組み合わせでのみ有効です --strip-comments] ストリップされたファイルを書き込みます 元のファイルと同じディレクトリにコピーします。 --read-binary-files テキスト ファイルに加えてバイナリ ファイルも処理します。 これは通常悪い考えであり、そうすべきです 埋め込まれたテキストファイルで試みられました バイナリデータ。 --read-lang-def= から新しい言語処理フィルターをロードします そしてそれらを cloc することがすでに知られているものとマージします。 が言語を定義している場合、cloc はすでに知っています については、cloc の定義が優先されます。 --force-lang-def を使用して cloc をオーバーライドします。 定義 (--write-lang-def も参照) --write-lang-def-incl-dup)。 --script-lang= , を #! として呼び出すすべてのファイルを処理します。 言語のカウンターを備えたスクリプト言語 <言語>。たとえば、で始まるファイルは、 #!/usr/local/bin/perl5.8.8 を使用して Perl カウンターでカウントされます --script-lang=Perl、perl5.8.8 言語名は大文字と小文字が区別されませんが、 スクリプト言語実行可能ファイルの名前、 適切なケースが必要です。このオプションは次のとおりです 複数回指定されます。 --force-lang も参照してください。 --lang-no-ext. --sdir=の代わりに をスクラッチ ディレクトリとして使用します。 File::Temp に場所を選択させます。ファイル この場所に書き込まれたものは削除されません 実行の終了 (File::Temp の場合と同様)。 --skip-uniqueness ファイルの一意性チェックをスキップします。これにより、 カウントを犠牲にしてパフォーマンスを向上させる 同じ内容のファイルが複数回存在する (そのような重複が存在する場合)。 --stat 一部のファイル システム (AFS、CD-ROM、FAT、HPFS、SMB) 一致するディレクトリ「nlink」カウントがありません そのサブディレクトリの数。その結果 cloc は過小評価するか、完全にスキップする可能性があります。 このようなファイル システムのコンテンツ。このスイッチにより強制的に File::Find で stat ディレクトリを取得し、 正しいカウント。ファイルの検索速度が低下します。 --follow-links も参照してください。 --stdin-name= 言語を決定するために使用するファイル名を指定します。 標準入力の場合。 (入力名として - を使用して、 STDIN経由でソースコードを受け取ります。) --strip-comments= 処理されたファイルごとに、現在のファイルに書き込みます。 ディレクトリ 空白を含むファイルのバージョン コメント行が削除されました (インライン コメント 持続します)。ストリップされた各ファイルの名前は、 元のファイル名に . が追加されたもの。 そうでない限り、現在のディレクトリに書き込まれます。 --original-dir がオンになっています。 --strip-str-comments 文字列に埋め込まれたコメント マーカーを次のように置き換えます。 「××」。これは制限を回避しようとします Regexp::Common::Comment のコメント マーカー 文字列に埋め込まれたものは実際のコメントとして表示されます 文字列ではなくマーカーなので、多くの場合、 「複雑な正規部分式の再帰制限」 警告と間違ったカウント。 2つあります このスイッチを使用する場合の欠点: 1/コード数 パフォーマンスが低下し、2/コードが生成される --strip-comments には異なる文字列が含まれます 埋め込まれたコメントが見つかった場所。 --sum-reports 入力引数は以前のレポート ファイルです --report-file オプションを使用してプレーンで作成されました 形式 (例: JSON、YAML、XML、または SQL ではない)。 を含む結果の累積セットを作成します。 個々のレポート ファイルからのデータの合計。 --timeout 秒以上かかるファイルを無視します 言語のフィルター段階のいずれかで処理します。 に費やされるデフォルトの最大秒数 フィルターステージはファイル内の行数です 1,000で割ります。 を 0 に設定すると、 時間無制限。 --diff-timeout も参照してください。 --processes=NUM [最新バージョンのシステムでのみ使用可能 Parallel::ForkManager モジュールの。ない Windows で利用可能です。] の最大数を設定します。 cloc が使用するコア。デフォルト値は 0 マルチプロセッシングを無効にします。 --unix オペレーティング システムの自動検出をオーバーライドします。 ロジックを実行し、UNIX モードで実行します。こちらも参照 --windows、--show-os。 --use-sloccount SLOCCount がインストールされている場合は、コンパイルされたものを使用します 実行可能ファイル c_count、java_count、pascal_count、 cloc の代わりに php_count と xml_count カウンター。 SLOCCount のコンパイルされたカウンターは次のとおりです。 cloc よりも大幅に高速であり、 プロジェクトをカウントする際のパフォーマンスの向上 大きなファイルの場合。ただし、これらの cloc 固有の 機能は利用できなくなります: --diff, --count-and-diff、--strip-comments、--unicode。 --windows オペレーティング システムの自動検出をオーバーライドします。 ロジックを実行し、Microsoft Windows モードで実行します。 --unix、--show-os も参照してください。 フィルターオプション --include-content=<正規表現> に一致するテキストを含むファイルのみをカウントします。 与えられた正規表現。 --exclude-content= 指定された内容に一致するテキストを含むファイルを除外します。 正規表現。 --exclude-dir= [,D2,] 指定されたカンマ区切りのディレクトリを除外します D1、D2、D3 などはスキャンされません。のために 例 --exclude-dir=.cache、テストはスキップされます /.cache/ を持つすべてのファイルとサブディレクトリ または /test/ を親ディレクトリとして使用します。 .bzr、.cvs、.hg、.git、.svn、という名前のディレクトリ および .snapshot は常に除外されます。 このオプションは個々のディレクトリでのみ機能します 名前にファイルパス区切り文字は含まれないため、 許可された。 --fullpath と --not-match-d= を使用します。 複数のサブディレクトリに一致する正規表現を指定します。 --exclude-ext= [, [...]] 指定されたファイル名のファイルはカウントしません 拡張子。 --exclude-lang= [,L2[...]] 指定されたカンマ区切り言語を除外します L1、L2、L3 などはカウントされません。 --exclude-list-file= 次の名前のファイルやディレクトリを無視します。 <ファイル>に表示されます。 には 1 つのファイルが必要です 行ごとの名前。完全一致のみが無視されます。 相対パス名は次から解決されます。 cloc が呼び出されるディレクトリ。 --list-file も参照してください。 --fullpath --match-f、--not-match-f、 ファイルのパスを含めるには --not-match-d を使用します ファイルのベース名だけでなく、正規表現でも。 (これにより、各ファイルがそのファイルを含むように拡張されるわけではありません。 絶対パスの代わりに、次のものを使用します。 cloc に渡されるパス)。 注: --match-d は常に完全なものを参照します。 path なので、--fullpath の影響を受けません。 --include-ext= [,ext2[...]] 指定されたカンマを持つ言語のみをカウントします 分割されたファイル拡張子。 --show-ext を使用して、 認識された拡張子を参照してください。 --include-lang= [,L2[...]] 指定されたカンマ区切りの言語のみをカウントします L1、L2、L3など。 --show-lang を使用して確認してください 認識される言語のリスト。 --match-d= Perl に一致するディレクトリ内のファイルのみをカウントします 正規表現。例えば --match-d='/(src|include)/' を含むディレクトリ内のファイルのみをカウントします。 /src/ または /include/。 --not-match-d とは異なり、 --match-f、および --not-match-f、--match-d は常に 完全修飾パスを 正規表現。 --not-match-d= ディレクトリ内のファイルを除くすべてのファイルをカウントします Perl 正規表現と一致します。末尾のみ ディレクトリ名が比較されるのは、たとえば次の場合です。 /usr/local/lib 内でカウントすると、「lib」のみが含まれます。 正規表現と比較してください。 --fullpath を追加して親ディレクトリを比較します 正規表現。 ファイルパス区切り文字を含めないでください。 正規表現の先頭または末尾。 --match-f= ベース名が Perl に一致するファイルのみをカウントします 正規表現。例えば --match-f='^[Ww]idget' Widget または widget で始まるファイルのみをカウントします。 --fullpath を追加して親ディレクトリを含めます 単なるベース名ではなく正規表現で。 --not-match-f= ベース名のファイルを除くすべてのファイルをカウントします。 Perl 正規表現と一致します。 --fullpath を追加して含めます 親ディレクトリを正規表現で指定するのではなく、 ベース名。 --skip-archive= 指定された Perl 正規表現で終わるファイルを無視します 表現。たとえば、与えられた場合 --skip-archive='(zip|tar(.(gz|Z|bz2|xz|7z))?)' コードは .zip で終わるファイルをスキップします。 .tar、.tar.gz、.tar.Z、.tar.bz2、.tar.xz、および .tar.7z。 --skip-win-hidden Windows では、隠しファイルを無視します。 デバッグオプション --categorized=<ファイル> 保存ファイル サイズ (バイト単位)、識別された言語 分類されたファイルの名前 へ。 -counted = 処理されたソースファイルの名前を に保存します。 -diff-alignment = ファイルとファイルペアのリストに書き込み どのファイルが追加、削除された、および/または 実行中に-diffと比較しました。このスイッチ -diffモードを強制します。 -explain = コメントを削除するために使用されるフィルターを印刷します 言語 と出口。場合によっては フィルターは、ではなくPerlサブルーチンを指します 正規表現。の調査 さらなる説明にはソースコードが必要になる場合があります。 - ヘルプこの使用情報を印刷して終了します。 - found = に見つかったすべてのファイルの名前を保存します。 --Ingored = 無視されたファイルの名前を保存し、それらが理由 に無視されました。 -Print-Filter-Stages Print Prupt Processed Source Codeの前後 各フィルターが適用されます。 -show-ext [= ]すべての既知(または単なる)に関する情報を印刷します 与えられます)ファイル拡張子と終了。 -show-lang [= ]すべての既知(または単なる)に関する情報を印刷します 指定)言語と出口。 -show-osオペレーティングシステムモードの値を印刷します そして出口。 -unix、-windowsも参照してください。 -v [= ] Verbose Switch(オプションの数値)。 -verbose [= ] -vの長い形態。 -versionこのプログラムのバージョンを印刷して終了します。 -write-lang-def = 言語処理フィルターに書き込みます その後、終了します。作成の最初のステップとして便利です カスタム言語定義。注:言語 同じファイル拡張子にマップが除外されます。 (-force-lang-def、-read-lang-defも参照)。 -write-lang-def-incl-dup = -write-lang-defと同じですが、複製が含まれます 拡張機能。これにより、問題のある言語が生成されます CLOCが使用を拒否するため、定義ファイル 複製が削除されるまで。 出力オプション -3第3世代の言語出力を印刷します。 (このオプションにより、レポートの合計が失敗する可能性があります このオプションでいくつかのレポートが作成された場合 他の人はそれなしで生産されました。) - コメントや空白の行の代わりにxでxを除く、show これらの値は、値に基づいてパーセンテージとして 分母のxの: x = 'c' - >#コード行 x = 'cm' - >#コードの行 +コメント x = 'cb' - >#コード +ブランクの行 x = 'cmb' - >#コードの行 +コメント +ブランク たとえば、メソッド「C」とコードを使用する場合 行の2倍のコメントがあります コードの、コメント列の値は行われます 200%になります。コード列はラインカウントのままです。 -CSVコンマ分離値として結果を書き込みます。 -CSV-Delimiter = キャラクターをコンマの区切り文字として使用します の代わりに分離されたファイル。このスイッチは、-CSVをオンにすることを強制します。 -file-encoding = の代わりに エンコードを使用して出力ファイルを書き込みます デフォルトのASCII( = 'utf-7')。例: 'UTF-16'、 「EUC-KR」、「ISO-8859-16」。既知のエンコーディングは可能です 印刷 perl -mencode -e 'print join( " n"、encode-> encodings( ":all"))、 " n"' - hide-rateは、ラインとファイルの処理レートを表示しません 出力ヘッダー。これにより、出力が決定的になります。 -jsonは、JavaScriptオブジェクト表記として結果を書きます (JSON)フォーマット出力。 -MDマークダウンフォーマットテキストとして結果を書き込みます。 -out = - report-file = の同義語。 -progress-rate = ファイルごとに進行状況の更新を表示します 処理された(デフォルト = 100)。 を0に設定します 進行出力を抑制します(リダイレクトするときに役立ちます stdoutへの出力)。 - 以外のすべての情報メッセージを抑制します 最終レポート。 -report-file = stdoutの代わりに に結果を書き込みます。 -SQL = SQLがステートメントを作成および挿入するように結果を書き込みます これは、次のようなデータベースプログラムで読むことができます sqlite。 is-の場合、出力がstdoutに送信されます。 -SQL-Append指定されたファイルにSQL挿入ステートメントを追加します by -sqlで、テーブルの作成を生成しません 発言。 -SQLオプションでのみ有効です。 -sql-project = を使用して、プロジェクト識別子として 現在の実行。 -SQLオプションでのみ有効です。 -SQL-STYLE =