计算代码行数
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
)和 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 网站 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/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 中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=