cloc
一款高效的代码行统计工具,且跨多平台:
- Window
- Linux
- Mac
- … …
高效是其优点,且稳定性比较好。
Linux版的可以处理超大工程的文件,不会出现其它同类工具在处理超大文件时崩溃的问题。
用法简单,学习成本低,尤其是看了我这篇文章之后就更低了。
安装
下载
最新版下载地址:
https://github.com/AlDanial/cloc/releases/tag/v1.96
本文介绍的是Linux版本,所以下载:
cloc-1.96.tar.gz
解压
tar -zxvf cloc-1.96.tar.gz
解压出文件目录:cloc-1.96
直接在cloc-1.96目录中执行cloc即可
官方网址
https://cloc.sourceforge.net/
官方开发库
https://github.com/AlDanial/cloc/
常用场景
基版本代码行统计
cd cloc-1.96
./cloc --skip-archive='(zip|tar(.(gz|Z|bz2|xz|7z))?)' --exclude-dir=biz_third_lib,kafka_2.12-2.2.0,3rd_libs --not-match-f='otlv4.h' /system_modules
- –skip-archive 填写需要过滤掉的包种类,这里是一个正则表达式,例子中将zip、tar、tar.gz、tar.z、tar.bz2、tar.7z都过滤掉了
- –exclude-dir 填写需要过滤掉的目录,注意不要写成xxx/yyy,直接写yyy
- –not-match-f 填写要过滤掉的文件名,这里是一个正则表达式,表示要过滤掉这一类文件;也可以写具体文件名,这样就过滤这个文件
- /system_modules 这是要统计的目录
- –exclude-ext 填写需要过滤掉的指定扩展名的文件,例如txt,csv,xml
- –exclude-lang 填写需要过滤掉的指定语言编写的文件,例如C,PHP,Java
输出
正常的方式是屏幕打印,下面是原始的打印格式:
也可以用我们熟知的方式打印:
csv形式
加参数 --csv
xml形式
加参数 --xml
输出到文档
当然也可以将屏幕打印输出到文档,加参数 --report-file=
例如:
。/cloc --xml --report-file=compare_result.xml /mnt/e/pythonProject/swPerfcalc
compare_result.xml:
指定统计的条件
可以添加下列参数:
- –include-ext= 填写需要统计的扩展名,例如:c,cpp,py
- –include-lang= 填写需要统计的文件的编写语言,例如:C,C++,Python
- –match-d= 填写需要统计的目录,是个正则表达式,例如:‘/(src|include)/’,只统计/src/ 和 /include/目录下的文件
- –match-f= 填写需要统计的文件,是个正直表达式,例如:‘^[Ww]idget’,只统计以Widget 和widget开头的文件
变更代码行统计
./cloc --diff /system_modules1 /system_modules2
统计结果:
在SUM下面可以清晰的看到新增、修改和删除的代码行数(code列)、文件数(file列)、注释行数(comment)
另外,前面章节中提到的参数也都适用。
工具参数详解
./cloc --help