計算程式碼行數
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 行/秒) -------------------------------------------------- ---------------------------- 語言檔案空白註解程式碼 -------------------------------------------------- ---------------------------- 中10 4680 6621 30812 C/C++ 標頭 3 99 286 496 -------------------------------------------------- ---------------------------- 總價:13 4779 6907 31308 -------------------------------------------------- ----------------------------
檔案
我們將從 GitHub 中提取 cloc 的來源 zip 文件,然後計算內容:
提示> 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 儲存庫,使用特定的提交
此範例使用來自 PuDB 的程式碼,PuDB 是一個很棒的 Python 偵錯器。
提示> 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 -------------------------------------------------- ----------------------------
特定目錄的每個子目錄
假設您有一個目錄,其中包含三個不同的 git 管理專案:Project0、Project1 和 Project2。您可以使用 shell 的循環功能來計算每個中的程式碼。此範例使用 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 對許多程式語言中的空白行、註解行和原始程式碼的物理行進行計數。給定程式碼庫的兩個版本,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 環境和終端,例如由另一個種方法是使用PAR::Packer 產生的cloc 的Windows 二進位檔案在既沒有Perl 也沒有Cygwin 的Windows 電腦上執行。
除了統計單一文字檔案、目錄和 git 儲存庫中的程式碼外, cloc 還可以統計檔案中的程式碼,例如.tar
(包括壓縮版本)、 .zip
、 Python Wheel .whl
、 Jupyter Notebook .ipynb
、來源 RPM .rpm
.src
rpm2cpio
.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 網站 http://softwareestimator.com/IndustryData2.htm。
新版本名義上每六個月發布一次。
docker run --rm -v $PWD :/tmp aldanial/cloc
docker run --rm -v " / $( pwd -W ) " :/tmp aldanial/cloc
根據您的作業系統,以下安裝方法之一可能適合您(Windows 的除最後兩個條目外的所有安裝方法都需要 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 通用公共許可證 v 2 獲得許可,不包括從其他來源複製的部分。從 Regexp::Common、Win32::Autoglob 和 Algorithm::Diff Perl 模組複製的程式碼受藝術授權的約束。
cloc 具有許多功能,使其易於使用、徹底、可擴展和可移植:
如果 cloc 不適合您的需求,可以考慮其他免費提供的計數器:
其他參考:
儘管 cloc 不需要標準發行版以外的 Perl 模組,但 cloc 確實依賴一些外部模組。來自其中三個外部模組(Regexp::Common、Win32::Autoglob 和 Algorithm::Diff)的程式碼嵌入在 cloc 中。第四個模組 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 中只需要三行,這些行直接包含在 cloc 中。
此外,如果本地安裝了 Digest::MD5, cloc 將使用 Digest::MD5 來驗證同等大小的輸入檔案之間的唯一性。
cloc 版本 1.76 引入了平行處理選項--processes= N ,以實現在多核心電腦上更快的運行。然而,要使用它,必須安裝 Parallel::ForkManager 模組。此模組在 Windows 上無法可靠運作,因此並行處理只能在類 Unix 作業系統上運作。
Windows 二進位檔案是在本機安裝了 Regexp::Common 和 Digest::MD5 的電腦上建置的。
建立 cloc 的 Windows 執行檔的最可靠的選項是使用 ActiveState 的 Perl 開發工具包。它包括一個實用程式perlapp
,它可以建立獨立的 Windows、Mac 和 Linux 二進位 Perl 原始碼。
perl2exe 也能做到這一點。如果您確實有perl2exe
,請修改 cloc 原始碼中的第 84-87 行,進行少量程式碼修改,這是製作 cloc Windows 執行檔所必需的。
否則,要使用PAR::Packer
中的pp
建置 Windows 可執行文件,請先按照說明安裝基於 Windows 的 Perl 發行版(例如 Strawberry Perl 或 ActivePerl)。接下來,打開命令提示字元(也稱為 DOS 視窗)並安裝 PAR::Packer 模組。最後,使用 cloc 原始碼呼叫新安裝的pp
指令來建立.exe
檔:
C:> cpan -i 摘要::MD5 C:> cpan -i 正規表示式::通用 C:> cpan -i 演算法::Diff C:> cpan -i PAR::Packer C:> cpan -i Win32::LongPath C:> pp -M Win32::LongPath -M 編碼::Unicode -M 摘要::MD5 -c -x -o cloc-2.02.exe cloc-2.02.pl
上述說明的一個變體是,如果您安裝了 Strawberry Perl 的便攜式版本,則需要先執行portableshell.bat
才能正確設定您的環境。
版本部分中的 Windows 可執行檔cloc-2.02.exe是在 64 位元 Windows 10 電腦上使用 Strawberry Perl 5.30.2 和 PAR::Packer 建置.exe
建置的。
理想情況下,沒有人需要 Windows 可執行文件,因為他們的電腦上安裝了 Perl 解釋器並且可以運行 cloc 原始檔。然而,在集中管理的企業 Windows 電腦上,這可能很困難或不可能。
隨 cloc 分發的 Windows 可執行檔是盡最大努力不含病毒和惡意軟體的.exe
提供的。我們鼓勵您針對可執行檔案執行自己的病毒掃描程序,並檢查 https://www.virustotal.com/ 等網站。最新版本的條目是:
cloc-2.02-winget.exe:(包括 PR 850,允許在 Windows 上從符號鏈接運行)https://www.virustotal.com/gui/file/be033061e091fea48a5bc9e8964cee0416ddd5b34bd5226ac9e8964cee0416ddd5b34bd5226abachec
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?nocache587448a5bad9b8efc0222b1583?nocache=11
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/60136
如上所述,使用 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 中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 yacc 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。或者,嘗試 ClocViewer,這是 cloc 的 GUI 包裝器,位於 https://github.com/Roemer/ClocViewer。
另請參閱 https://github.com/jmensch1/codeflower 以了解 cloc 結果的圖形渲染。
提示> cloc --help 用法: cloc [選項] <檔案/目錄/git hash> | <組 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=<檔案> 取得檔案和/或目錄名稱列表 來自 的進程,該檔案/目錄有一個檔案/目錄 每行的名稱。僅計算完全匹配; 相對路徑名將從下列位置開始解析 呼叫 cloc 的目錄。設定<檔案> to - 從 STDIN 管道讀取檔案名稱。 另請參閱--排除清單檔案。 --diff-list-file= 取得要比較的檔名對 ,其格式與輸出匹配 --差異對齊。 (使用該選項運行 請參閱範例。 每行的末尾被忽略。這啟用了 --diff 模式並繞過檔案對對齊邏輯。 --vcs= 呼叫系統呼叫 以取得列表 要處理的文件。如果 是“git”,那麼將 呼叫“git ls-files”來取得檔案清單並 'git submodule status' 取得子模組列表 其內容將被忽略。另請參閱--git 它接受 git commit 哈希值和分支名稱。 如果 是“svn”,則會呼叫“svn list -R”。 主要好處是 cloc 將跳過 版本控制工具明確排除的文件 有問題的,即 .gitignore 中的或具有 svn:忽略屬性。 或 可以是任何系統指令 產生文件列表。 注意: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 的預設位置。 該文件應包含一個開關以及 每行參數(如果有)。空行和空白行 以“#”開頭的將被跳過。給出的選項 命令列優先於讀取的條目 文件。 --count-and-diff <設定1> <設定2> 首先執行原始檔的直接程式碼計數 分別對 和 進行比較,然後執行 diff 這些。輸入可以是檔案對、目錄對、 或檔案。如果給了 --out 或 --report-file , 將建立三個輸出文件,每個文件一個 兩個計數的一個和一個差異的計數。參見 --diff、--diff-對齊、--diff-超時、 --忽略大小寫,--忽略空白。 --diff 計算之間的程式碼和註解的差異 和 的來源檔。輸入 可以是文件、目錄、檔案的任意組合, 或 git 提交哈希值。使用 --diff-alignment 來 產生一個列表,顯示哪些文件對位於何處 比較的。比較 git 分支時,僅比較文件 比較任一提交中已更改的內容。 另請參閱 --git、--count-and-diff、--diff-alignment、 --diff-列表文件,--diff-超時,--忽略大小寫, --忽略空白。 --diff-timeout 忽略耗時超過 秒的文件 來處理。預設值為 10 秒。設定 為 0 允許無限時間。 (大文件有很多 重複的行可能會導致 Algorithm::Diff::sdiff() 需要幾個小時。 --docstring-as-code cloc 認為文件字串是註釋,但這是 並不總是正確的,因為文檔字串代表常規 當字串出現在右側時 賦值或作為函數參數。這個開關 強制將文檔字串計為代碼。 --follow-links [僅限 Unix] 追蹤目錄的符號鏈接 (始終遵循文件的符號連結)。 另請參閱--stat。 --force-lang=<語言>[,<擴充>] 處理所有具有 副檔名的文件 與語言 的計數器。為了 例如,要對所有 .f 檔案進行計數 Fortran 90 計數器(預計文件 以 .f90 結尾)而不是預設的 Fortran 77 計數器,使用 --force-lang="Fortran 90,f" 如果省略 ,則每個檔案都會被計數 與 計數器。該選項可以是 指定多次(但這只是 每次給出 時很有用)。 另請參閱--script-lang、--lang-no-ext。 --force-lang-def=<檔案> 從 <檔案> 載入語言處理過濾器, 然後使用這些過濾器而不是內建的 過濾器。注意:映射到相同的語言 檔案副檔名(例如: MATLAB/Mathematica/Objective-C/MUMPS/Mercury; 帕斯卡/PHP; Lisp/OpenCL; Lisp/茱莉亞; Perl/Prolog) 將被忽略,因為這些需要額外的 無法用語言表達的處理 定義檔。使用 --read-lang-def 來定義 新的語言過濾器無需更換內建的 過濾器(另請參閱 --write-lang-def, --write-lang-def-incl-dup)。 --git 強制將輸入解釋為 git 目標 (提交哈希值、分支名稱等)如果這些 首先不被識別為檔案或目錄 名稱。此選項覆蓋 --vcs=git 邏輯 如果給出這個;換句話說,--git 得到了它的 使用 git 直接處理的檔案列表 哈希或分支名稱而不是來自 'git ls 檔案'。該選項可與 --diff 執行 git 之間的行數差異 提交,或 git 提交和文件之間, 目錄或存檔。使用-v/--verbose查看 git 系統指令 cloc 問題。 --git-diff-rel 與 --git --diff 相同,或者如果輸入則只是 --diff 被識別為 git 目標。僅文件 比較任一提交中的變更。 --git-diff-all Git diff 策略#2:比較目錄中的所有文件 兩次提交之間的儲存庫。 --ignore-whitespace 比較檔案時忽略水平空白 與--diff。另請參閱--忽略大小寫。 --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的記憶體需求大約是它的二十倍 大於最大文件,因此運行 在電腦上儲存大於 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-無副檔名。 --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 將字串中嵌入的註解標記替換為 'xx'。這試圖解決一個限制 在 Regexp::Common::Comment 中,其中註解標記 嵌入字串中被視為實際註釋 標記而不是字串,通常會導致 '複雜正則子表達式遞歸限制' 警告和錯誤計數。有兩個 使用此開關的缺點:1/代碼計數 效能下降,並且 2/ 生成的程式碼 --strip-comments 將包含不同的字串 在哪裡可以找到嵌入的評論。 --sum-reports 輸入參數是先前的報告文件 使用 --report-file 選項以普通格式建立 格式(例如,不是 JSON、YAML、XML 或 SQL)。 產生一組累積結果,其中包含 來自各個報告文件的數據總和。 --timeout 忽略耗時超過 秒的文件 在任何語言的過濾階段進行處理。 預設的最大花費秒數 過濾階段是檔案中的行數 除以千。將 設為 0 允許 無限時間。另請參閱--diff-timeout。 --processes=NUM [僅在具有最新版本的系統上可用 Parallel::ForkManager 模組的。不是 在 Windows 上可用。 cloc 使用的核心。預設值 0 禁用多處理。 --unix 覆蓋作業系統自動偵測 邏輯並在 UNIX 模式下運作。參見 --windows,--show-os。 --use-sloccount 如果安裝了 SLOCCount,則使用其編譯的 可執行檔 c_count、java_count、pascal_count、 php_count 和 xml_count 而不是 cloc 的 櫃檯。 SLOCCount 的編譯計數器是 比 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=<檔案> 忽略其名稱的檔案和/或目錄 出現在<檔案>中。 應該有一個文件 每行的名稱。僅忽略完全匹配; 相對路徑名將從下列位置開始解析 呼叫 cloc 的目錄。 另請參閱--列表文件。 --fullpath 修改 --match-f、--not-match-f、的行為 和 --not-match-d 包含檔案的路徑 在正規表示式中,不僅僅是檔案的基本名稱。 (這不會擴展每個文件以包含其 絕對路徑,而是使用盡可能多的 傳遞給 cloc 的路徑。 注意:--match-d 總是查看完整的 路徑,因此不受 --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 子程式而不是 正規表示式。的檢查 可能需要原始程式碼進行進一步解釋。 --help 列印此使用資訊並退出。 --found=<檔案> 將找到的每個檔案的名稱儲存到 <檔案>。 --ignored=<檔案> 儲存被忽略檔案的名稱及其原因 被<文件>忽略。 --print-filter-stages 列印處理前後的原始程式碼 應用每個過濾器。 --show-ext[= ] 列印所有已知(或僅 給定)檔案副檔名並退出。 --show-lang[= ] 列印有關所有已知(或僅 給定)語言並退出。 --show-os 列印作業系統模式的值 並退出。另請參見--unix、--windows。 -v[= ] 詳細開關(可選數值)。 -verbose[= ] -v 的長形式。 --version 列印該程式的版本並退出。 --write-lang-def= 寫入 語言處理篩選器 然後退出。作為創建的第一步很有用 自訂語言定義。註:以下語言 映射到相同檔案副檔名的映射將被排除。 (另請參閱 --force-lang-def、--read-lang-def)。 --write-lang-def-incl-dup=<檔案> 與 --write-lang-def 相同,但包含重複的內容 擴展。這會產生有問題的語言 定義文件,因為 cloc 會拒絕使用 直到刪除重複項。 輸出選項 --3 列印第三代語言輸出。 (此選項可能會導致報告求和失敗 如果使用此選項產生一些報告 而其他的則在沒有它的情況下生產。 --by-percent X 顯示而不是註解和空行計數 這些值是基於該值的百分比 分母中的 X: X = 'c' -> # 行程式碼 X = 'cm' -> # 行程式碼 + 註釋 X = 'cb' -> # 行程式碼 + 空格 X = 'cmb' -> # 行程式碼 + 註解 + 空格 例如,如果使用方法“c”和您的程式碼 註解行數是行數的兩倍 程式碼中,註解欄中的值將 為 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 將結果寫入 Markdown 格式的文字。 --out=<文件> --report-file=<文件> 的同義字。 --progress-rate= 每 個檔案更新後顯示進度更新 已處理(預設 =100)。將 設定為 0 即可 抑制進度輸出(重定向時有用 輸出到標準輸出)。 --quiet 抑制除以下內容以外的所有資訊訊息 最終報告。 --report-file=<檔案> 將結果寫入 <檔案> 而不是 STDOUT。 --sql=<檔案> 將結果寫入 SQL create 和 insert 語句 可以透過資料庫程式讀取,例如 SQLite。如果 為 -,則輸出將傳送至 STDOUT。 --sql-append 將 SQL 插入語句追加到指定的檔案中 通過--sql並且不生成表創建 聲明。僅與 --sql 選項一起有效。 --sql-project= 使用 作為項目標識符 目前運行。僅與 --sql 選項一起有效。 --sql-style=