前言:
其实,在我们的工作中,很多时候需要统计工作中的项目到底有多少行代码,最常见的情形就是公司的项目需要申请软著的时候需要大概统计一下当前申请软著的项目的代码行数,在之前的工作中,我没有找到合适的工具来帮我统计项目的代码行数,当然也可能仅仅是因为我没有找到最合适的。在百度中,可以搜索到Android Studio的一些插件来统计代码行数什么的,但是我终归是觉得不够明确而且也不好用,所有,在闲下来的时候,自己便写了个工具来统计项目的代码行数,用来锻炼自己,也加深自己学习脚本语言的功底。
进入正题:
当然,目前我主要是用Python和shell两种方式来实现对项目代码行数的统计的,下面我将分别用Python和shell的方式来记录实现的原理和过程。
其实,原理都很简单,就是将项目的所有文件遍历一遍,并筛选出符合我们统计代码行数的文件,然后将这些文件的代码行数给统计出来,然后做一个加法,so,就得到了我们需要的结果了。
接下来,就开始记录我的代码实现过程:
一、Python的实现
用Python来遍历文件,最简单的方式就是利用系统提供的os库,然后调用os.walk()
方法来遍历出项目文件夹下的所有文件,并通过遍历获得的filepath和filename来获取文件的基本完息。
比如,我们可以通过os.path.join()
方法来拼接完整的文件路径,然互根据文件的扩展名等信息来筛选出我们需要统计代码行数的文件,然后再去获得单个文件的代码行数。对于遍历项目文件夹下的所有文件的相关代码,参考如下所示:
for filepath, _, filenames in os.walk(project_root):
for filename in filenames:
full_path = os.path.join(filepath, filename)
对于上述代码,full_path
就是我们遍历出来的文件的全路径,我们可以通过它来获取文件的代码行数,当然,因为在Android项目中,还是有很多的文件和文件夹下的文件是不需要我们来统计代码行数的,比如以下文件夹就不需要我们统计,所以,我们需要再遍历的时候就跳过,转而去统计符合我们统计代码行数要求的文件。
不需要统计代码行数的文件夹主要有:debug
、build
、release
、androidTest
、test
、sample