wc 统计已过时,cloc 每一行代码都有效
2022/6/18 3:20:03
本文主要是介绍wc 统计已过时,cloc 每一行代码都有效,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
上下文
我们通常用代码量来评判一个程序员技术的高低或一个项目的大小,阅读新项目源码时,也需要了解其代码量,心里有个预期。
那如何统计代码量呢?
传统做法
通过find
+wc
命令完成
$ find . -name "*.go" | xargs wc -l 60 ./etcd/tutorial/distributed_lock.go ... 3491 total
如上,统计命令显示了所有文件,一共有 3491 行代码。但是此处统计太过粗暴,wc 统计过程将注释、空白行等内容都被算作代码统计其中。
我们应该尝试更有效的统计方式。
有效统计 cloc
cloc(Count Lines of Code
[0]) 是一个 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 choco install cloc # Windows with Chocolatey scoop install cloc # Windows with Scoop
cloc 优势?
cloc 具有易于使用、可扩展和可移植的特性:
- 安装方便,只需下载文件包运行即可。
- 支持分类别统计多种语言:Java、Go、Python、C 等。
- 支持分类别统计多种格式的结果:纯文本、SQL、JSON、XML、YAML、逗号分隔值等。
- 支持分类别统计文件数、空白行数、注释行数和代码行数。
基本使用
$ cloc ./ # 可统计目录 $ cloc perl-5.22.0.tar.gz # 也可直接统计压缩包
对于前端同学,统计代码往往需要忽略最大的 node_modules 以及打包生成的 dist 文件,支持过滤逻辑,使用非常方便。
$ cloc $(git ls-files) # 或 $ cloc --vcs git # 或过滤 svn $ cloc --vcs svn
高级用法
使用方法也很简单,统计结果会按照语言分类统计源代码的空白行、注释行和物理行。具体如下:
统计单个文件
#$ cloc docker-compose-devcontainer.yml 1 text file. 1 unique file. 0 files ignored. github.com/AlDanial/cloc v 1.92 T=0.01 s (140.6 files/s, 4919.9 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- YAML 1 3 1 31 -------------------------------------------------------------------------------
统计文件夹
$ cloc . 54 text files. 42 unique files. 14 files ignored. github.com/AlDanial/cloc v 1.92 T=0.14 s (290.8 files/s, 22637.6 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Go 29 381 216 2468 Markdown 6 28 0 55 ... ------------------------------------------------------------------------------- SUM: 42 431 220 2618 -------------------------------------------------------------------------------
也同时支持通过--exclude-dir
参数过滤掉不计入统计的路径
$ cloc . --exclude-dir=build 52 text files. 40 unique files. 14 files ignored. github.com/AlDanial/cloc v 1.92 T=0.07 s (605.9 files/s, 48999.6 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Go 29 381 216 2468 Markdown 5 27 0 54 ... ------------------------------------------------------------------------------- SUM: 40 423 217 2595 -------------------------------------------------------------------------------
也支持按--by-file
参数进行统计结果的筛选。
$ cloc . --by-file | head -n 10 54 text files. 42 unique files. 14 files ignored. github.com/AlDanial/cloc v 1.92 T=0.03 s (1380.3 files/s, 107434.2 lines/s) ----------------------------------------------------------------------------------------- File blank comment code ----------------------------------------------------------------------------------------- ./etcd/tutorial/demo.go 53 0 291 ./etcd/simple_raft/raft_log.go 29 93 263
统计文件夹下多个子目录
$ for d in ./*/ ; do (cd "$d" && echo "$d" && cloc .); done ./go-bootcamp/ 1474 text files. 1226 unique files. 540 files ignored. github.com/AlDanial/cloc v 1.92 T=7.16 s (171.2 files/s, 118482.4 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- JavaScript 421 10606 84539 584311 ... ------------------------------------------------------------------------------- SUM: 1226 18182 100323 729998 ------------------------------------------------------------------------------- ./html-bootcamp/ 18 text files. 15 unique files. 5 files ignored. github.com/AlDanial/cloc v 1.92 T=0.02 s (635.5 files/s, 9744.9 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- HTML 4 28 8 89 ... ------------------------------------------------------------------------------- SUM: 15 51 15 164 ------------------------------------------------------------------------------- ./java-bootcamp/ 3 text files. 1 unique file. 3 files ignored. github.com/AlDanial/cloc v 1.92 T=0.01 s (104.8 files/s, 524.2 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Markdown 1 2 0 3 -------------------------------------------------------------------------------
更多命令
$ cloc --help
支持的语言
$ cloc --show-lang
通过 docker 运行
$ docker run --rm -v $PWD:/tmp aldanial/cloc ./
以上,就是今天的全部内容,包含了 cloc 安装和使用。当然,重要的内容往往篇幅较小,很推荐 docker 运行方式。
❤️❤️❤️读者每一份热爱都是笔者前进的动力!
我是三十一
[1],感谢各位朋友:求点赞、求评论、求转发,大家下期见!
References
- [0] Count Lines of Code: https://github.com/AlDanial/cloc
- [1] 三十一: http://www.lee31.cn/assets/image/ThirtyOneLee.jpeg
往期文章
- 入门篇:从 etcd 名字的由来,到安装部署和使用姿势
- 如何看待 Python(PyScript) 可以做浏览器前端开发语言?
- 深度总结,带你玩转 NVIDIA GPU
- 还活在上个时代,Etcd 3.0 实现分布式锁竟如此简单
- 从 0 到 1,如何徒手撸一个 Python 插件系统?
- 一站式机器学习开业平台 MLflow 怎么样?
这篇关于wc 统计已过时,cloc 每一行代码都有效的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22初创企业的效率秘诀!实用的看板式任务管理工具推荐
- 2024-12-22新能源汽车销售难题如何破?看板工具助力门店管理升级
- 2024-12-218 款现代无代码工具,轻松提升开发者工作效率 ???????
- 2024-12-21从线索跟踪到业绩提升:销售任务管理系统推荐
- 2024-12-21刚刚发布RobinReach:多渠道社交媒体管理工具 ??
- 2024-12-21跨地域协作无压力!推荐几款必备的可视化协同工具
- 2024-12-21初学者指南:轻松掌握文章编辑器
- 2024-12-21Excel数据导出教程:让数据迁移变得简单
- 2024-12-21Excel数据导入入门教程
- 2024-12-215分钟速览:优化项目管理必备的5款高效工具