cloc(Count Lines of Code)是一款很棒的开源命令行工具,它能帮你详细统计项目中的文件数(files)、空白行数(blank)、注释行数(comment)和代码行数(code) 。它会自动识别多种编程语言,并且支持在多平台上使用。
项目地址:github.com/AlDanial/cl...
下面我为你介绍一下它的安装和常用方法。
🧑💻 安装 cloc
cloc 的安装方法很多,你可以根据自己常用的操作系统选择命令:
操作系统/包管理器 | 安装命令 |
---|---|
npm | npm install -g cloc |
Debian, Ubuntu | sudo apt install cloc |
Red Hat, Fedora | sudo yum install cloc |
Fedora 22 or later | sudo dnf install cloc |
Arch | sudo pacman -S cloc |
Gentoo | sudo emerge -av dev-util/cloc |
Alpine Linux | sudo apk add cloc |
OpenBSD | doas pkg_add cloc |
FreeBSD | sudo pkg install cloc |
macOS with MacPorts | sudo port install cloc |
macOS with Homebrew | brew install cloc |
Windows with Chocolatey | choco install cloc |
Windows with Scoop | scoop install cloc |
📊 基本使用命令
安装好后,在终端或命令行中就可以使用 cloc 命令了。
-
统计当前目录下的代码情况:在项目根目录下执行:
bash
erlangcloc .
这会对当前目录(包括子目录)中的所有源代码进行统计。
-
统计指定目录或文件 :只需将
.
替换为你的目录路径或文件路径即可:bash
bashcloc /path/to/your/project cloc /path/to/your/file.py
🎯 常用选项和场景
cloc 提供了一些非常实用的选项来满足不同需求:
-
排除特定目录 :这在项目有很多依赖(如
node_modules
,vendor
,Pods
等)时非常有用,可以避免统计这些目录下的代码。bash
inicloc . --exclude-dir=node_modules,Pods,venv
-
排除特定语言 :如果你不希望统计某些特定语言的文件(比如只想看后端代码,排除前端代码),可以使用:
bash
csscloc . --exclude-lang=CSS,HTML,Markdown
-
bash
inicloc . --include-lang=Python,Java,JavaScript # 或者通过扩展名 cloc . --include-ext=.py,.java,.js
-
按文件查看统计结果 :此选项会列出每个文件的详细统计信息,方便你查看具体哪个文件代码量最多。
bash
csharpcloc . --by-file
-
将统计结果输出到文件 :cloc 支持将统计结果输出为多种格式,便于保存或后续分析,如纯文本、CSV、JSON、XML、YAML 等。
bash
inicloc . --out=result.txt # 输出为文本文件 cloc . --csv --out=result.csv # 输出为CSV文件 cloc . --json --out=result.json # 输出为JSON文件
💡 理解统计结果
执行 cloc 命令后,你会看到一个清晰的表格格式输出,例如:
text
markdown
Language files blank comment code
-------------------------------------------------------------------------------
Python 48 651 1211 5045
JavaScript 10 188 121 875
CSS 3 18 25 125
-------------------------------------------------------------------------------
SUM: 61 857 1357 6045
在这个结果中:
- files: 对应语言的文件数量。
- blank: 空白行的数量。
- comment: 注释行的数量。
- code : 有效代码行数 ,这也是你通常最关心的数字。
表格最后会有一个所有语言的汇总(SUM)。
🚨 注意特殊情况