为了统计代码行数(lines of code, LoC),最简单的思路是用python读取每个所输入的代码文件的行数,然后加起来。
本实现分离了代码文件识别和统计,代码文件由用户给出。
1. 实现:
Python实现,用enumerate
函数统计可以防止内存占用过大的问题,我们要的只是一个计数,每行读完扔掉即可(pass
)。代码如下:
#!/usr/bin/env python
import sys
def file_len(fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
file_n = len(sys.argv) - 1
print file_n, "files:"
sum_line = 0
for i in range(file_n):
this_line = file_len(sys.argv[i + 1])
sum_line += this_line
print this_line, "\tLoC\t", sys.argv[i + 1]
print "total LoC:", sum_line
2. 用例:
- 例1:直接指定了代码文件
$ ./loc.py src/dedup.c
1 files:
139 LoC src/dedup.c
total LoC: 139
- 例2:利用了
ls
命令的文件名匹配找到所有src文件夹下的.h和.c文件,然后以管道结合xargs
命令将这些源码文件以参数的形式输入我们的脚本loc.py
$ ls src/*.c src/*.h | xargs ./loc.py
10 files:
378 LoC src/bloom.h
69 LoC src/chunk_dedup.h
26 LoC src/chunking.h
139 LoC src/dedup.c
66 LoC src/define.h
56 LoC src/hash-table.h
48 LoC src/rabin-hash.h
424 LoC src/sha1.h
65 LoC src/utils.c
41 LoC src/utils.h
total LoC: 1312