2023-01-18-【工程化】代码统计


1. 快速工具:使用 cloc (Count Lines of Code)

cloc 是业界公认的标准统计工具,它能够自动忽略 node_modules.git 以及不相关的配置文件,准确识别各种编程语言。

安装:

1
2
npm install -g cloc

统计整个 Monorepo:

在根目录下运行:

1
2
cloc . --exclude-dir=node_modules,dist,.git

针对子应用进行分类统计:

如果你想看各个子应用的代码量对比,可以利用 lerna 的目录结构:

1
2
3
# 统计 packages 下所有子应用的代码量
cloc packages/ --by-file --report-file=report.txt


2. VS Code 插件:CodeCounter

如果你希望在 IDE 中实时查看,CodeCounter 插件非常方便。

  • 功能:右键点击文件夹即可统计。
  • 优势:可视化效果好,可以直接看到每个子应用文件夹的占比百分比。

3. Git 指令统计(统计贡献度)

如果你想知道某个时间段内(如本月)代码的增长量,或者按作者统计,可以使用 Git:

按作者统计行数:

1
2
git log --author="YourName" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "新增行数: %s, 删除行数: %s, 净增行数: %s\n", add, subs, loc }'

统计各子应用(目录)的提交情况:

1
2
git log --since="2025-01-01" --pretty=format: --name-only | grep 'packages/sub-app-01' | sort | uniq -c


4. 工程化建议

单纯的行数统计可能存在“虚高”(例如重复的 UI 组件库代码)。建议采用以下架构师视角的统计方法:

A. 区分核心业务逻辑与 UI 代码

通过 cloc 的自定义规则,排除掉样式文件(.less, .scss, .css)和测试文件(.spec.js),只统计 .ts, .vue, .js。这样能更准确地衡量业务复杂度。

B. 监控重复率 (Code Duplication)

对于多个应用的微前端项目,行数多可能意味着重复造轮子。建议配合 jscpd 检查代码重复率:

1
2
npx jscpd ./packages

  • 目标:如果总行数很大但重复率超过 20%,说明需要抽象更多的公共组件或 Hooks 到 Lerna 的 common 包中。

5. 总结:各方案对比

场景 推荐工具 特点
快速总览 cloc 准确、过滤功能强、速度快。
开发日报/周报 Git 指令 追踪变更,体现工作量。
架构治理 jscpd 发现冗余,驱动代码重构。
可视化呈现 VS Code Plugin 直观,适合日常开发。

2023-01-18-【工程化】代码统计
https://zhangyingxuan.github.io/2023-01-18-【工程化】代码统计/
作者
blowsysun
许可协议