今天给大家推荐一款开源工具——cloc(Count Lines of Code)。
这款开源命令行工具能精准统计空白行、注释行和有效代码行,支持多种编程语言,跨平台兼容,轻量无复杂依赖,安装即用。
一、windows环境下安装
步骤如下:
1、管理员方式打开powershell
2、执行命令修改策略
Set-ExecutionPolicy RemoteSigned
3、安装choco
iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
4、查看choco版本,输出版本号即成功
5、安装cloc
6、验证cloc安装成功,显示版本信息即说明安装成功
cloc --version
二、核心用法
cloc的核心语法可以归纳为:cloc [选项] <文件/目录路径>,以下是最常用的高频命令。
1. 基础统计
# 统计当前目录及子目录所有代码
cloc .
# 统计指定目录
cloc /path/to/your/project
# 统计单个文件
cloc /path/to/your/file.py
# 直接统计压缩包(支持tar.gz、zip等)
cloc project-v1.0.tar.gz
2. 精准过滤:排除/仅统计目标内容
# 排除指定目录(如依赖目录)
cloc . --exclude-dir=node_modules,vendor,venv
# 排除指定文件类型(如JSON、Markdown)
cloc . --exclude-ext=json,md
# 仅统计特定语言(如Java、Go)
cloc . --include-lang=Java,Go
# 仅统计特定扩展名文件
cloc . --include-ext=.py,.js,.ts
3. 结果导出与格式化
# 导出为文本文件
cloc . --out=code_stats.txt
# 导出为JSON格式(便于后续分析)
cloc . --json --report-file=stats.json
# 导出为Markdown表格(适合文档嵌入)
cloc . --md --report-file=stats.md
4. 高级功能:版本对比与Git集成
# 对比两个版本的代码差异(新增/删除/修改行数)
cloc --diff <旧版本目录> <新版本目录>
# 统计Git仓库代码(自动忽略.gitignore排除文件)
cloc --vcs git <仓库路径>
# 统计Git历史某个版本的代码
cloc $(git rev-list --all | head -n 1)
三、实战案例
案例1:个人项目代码结构分析
场景:开发一个“Go+TypeScript”混合架构的Web项目,想了解各语言代码占比和注释质量。
执行命令:
cloc . --exclude-dir=node_modules,dist --md
统计结果(Markdown表格简化版):
分析结论:TypeScript代码行更多(前端逻辑复杂),Go语言注释率更高(符合后端开发规范),整体注释率13.3%,可适当提升前端注释质量。
案例2:团队迭代代码量统计
场景:团队完成V1.0到V1.1版本迭代,需要统计新增、删除的代码量,评估迭代工作量。
执行命令:
cloc --diff ./project-v1.0 ./project-v1.1
核心结果解读:
-------------------------------------------------------------------------------
Language files blank comment code delta
-------------------------------------------------------------------------------
Go 12 189 326 1845 +320
TypeScript 25 312 289 2156 +418
JSON 3 0 0 45 +12
-------------------------------------------------------------------------------
SUM: 40 501 615 4046 +750
-------------------------------------------------------------------------------
Delta: +750 lines (新增750行代码)
分析结论:V1.1版本共新增750行有效代码,其中前端TypeScript新增418行,后端Go新增320行,工作量分配合理,迭代进度符合预期。
案例3:开源项目规模对比
场景:调研技术选型,需要对比Kubernetes、React、Django三个开源项目的代码规模和社区活跃度。
执行命令(以Kubernetes为例):
# 克隆仓库后统计
git clone https://github.com/kubernetes/kubernetes.git
cd kubernetes
cloc --vcs git --md
三项目核心数据对比(简化版):
分析结论:Kubernetes社区活跃度最高,适合大型分布式项目;React人均效率高,问题响应快,适合前端项目;Django代码库成熟但维护成本较高。