Mac OS 下统计代码行数
作为编程人员,项目中的代码行数很有必要。
Windows 下比较成熟的工具较多,而Mac下工具比较少。
这里举几个Mac 下统计代码行数的方法:
自定义脚本:
脚本1:
终端进入目录,输入:
$ find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h" -or -name "*.rss" ")" -print | xargs wc -l
缺点:
需要自定义脚本:不同的编程语言,有不同的文件后缀名,需要自行配置;
不能过滤掉注释;
不能过滤掉空行
脚本2:
$ find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs grep -v "^$"|wc -l
改进:
去掉空行
xargs grep -v "^$"
CLOC:
大家都知道用 wc -l
命令进行代码行数统计,但是它会将代码中的注释、空行所占用的文本行都统计在内。如果想查看一个 tar 包或一个项目目录中“实际”的代码行数并且不愿意自己去写一个脚本来做此类工作,那么可以考虑使用 cloc。
cloc 是一个 perl 脚本,它可以统计很多种编程语言的代码文件中的空行、注释以及实际的代 码行数。
CLOC是Count Lines of Code的意思,可以计算空行数、注释行数、各种语言的有效行数,还可以比较两个代码库在各种行数之间的不同。CLOC是完全由Perl实现的,不依赖第三方组件,移植性强。
下载安装 cloc.
$ brew install cloc
==> Downloading https://downloads.sourceforge.net/project/cloc/cloc/v1.62/cloc-1.62.pl
######################################################################## 100.0%
🍺 /usr/local/Cellar/cloc/1.62: 2 files, 372K, built in 13 seconds
对当前目录进行统计
$ cloc ./
105 text files.
89 unique files.
27 files ignored.
http://cloc.sourceforge.net v 1.62 T=0.37 s (174.4 files/s, 13545.8 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 38 480 507 2632
Bourne Shell 17 82 183 674
HTML 2 21 1 124
JSON 1 0 0 99
YAML 3 18 7 79
Javascript 3 0 98 43
CSS 1 0 1 1
-------------------------------------------------------------------------------
SUM: 65 601 797 3652
-------------------------------------------------------------------------------
优点:
过滤了空行;
区分了注释和代理;
自动识别不同语言;
编写一个java的文件。
filename: test.java
/*************************************************************************
> File Name: test.java
> Author:
> Mail:
> Created Time: 日 7/23 23:06:09 2017
************************************************************************/
public class test
public static void main(String[] args){}
System.out.println("come into main");
}
重新统计:
$ cloc ./
106 text files.
90 unique files.
27 files ignored.
http://cloc.sourceforge.net v 1.62 T=0.36 s (181.4 files/s, 13940.1 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 38 486 508 2632
Bourne Shell 17 82 183 674
HTML 2 21 1 124
JSON 1 0 0 99
YAML 3 18 7 79
Javascript 3 0 98 43
Java 1 4 6 4
CSS 1 0 1 1
-------------------------------------------------------------------------------
SUM: 66 611 804 3656
-------------------------------------------------------------------------------
专题
$ cloc --help
Usage: cloc [options] <file(s)/dir(s)> | <set 1> <set 2> | <report files>
Count, or compute differences of, physical lines of source code in the
given files (may be archives such as compressed tarballs or zip files)
and/or recursively below the given directories.
## 统计一个 tar 包中的代码行
$ cloc small-2.0.tar.gz
42 text files.
41 unique files.
4 files ignored.
http://cloc.sourceforge.net v 1.50 T=1.0 s (38.0 files/s, 3451.0 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C 21 435 482 1695
C/C++ Header 8 102 161 275
m4 4 18 4 136
make 4 18 72 29
Bourne Shell 1 2 20 2
-------------------------------------------------------------------------------
SUM: 38 575 739 2137
--------------------------------------------------