统计代码行数 (LoC) 的超简单 Python 实现

为了统计代码行数(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

Leave a Reply

Your email address will not be published. Required fields are marked *