有了Cloc,让你的每一行代码都算数
要想成为一名合格的程序猿,首先,必须得有一定代码量的积累,量变产生质变,在学习工作了一段时间后你肯定会很想知道自己的能力(shou su)到底提升了没有,其中一个重要的衡量指标就是你敲(ban yun)了多少行代码。
今天就给大家推荐一个简单粗暴又好用的神器——cloc,全称是count lines of code,它是一款使用Perl语言开发的开源代码统计工具,支持多平台使用、多语言识别。从名字就可以直观地知道它的功能:帮助你计算文件中的有效代码数量,并且会自动排除注释和空格。
1、先吹一波colc
<1>下载安装过程极其简单,不论什么操作系统,基本通过一行指令就可以搞定!
<2>能够从源码文件中识别编程语言、注释以及定义;
<3>允许通过不同编程语言和项目,来分开统计计算;
<4>能够以纯文本、SQL、XML、YAML、逗号分隔等多样化的格式生成统计结果;
<5>能够统计诸如rar、zip等格式的压缩文件中的代码数;(这个功能简直逆天!)
<6>有许多排除式的指令,让你更方便的控制想计算哪些文件中的代码数;
<7>能够使用空格或者不常用的字符处理文件名和目录名;
<8>不需要依赖外部标准的Perl语言配置,虽然它的亲爸爸就是Perl;
<9>支持多平台使用,适用于所有Linux底层操作系统。
2、下载安装
在github上可以看到它完整的更新日志,这是下载链接
https://github.com/AlDanial/cloc
首先来看一下它的官网,长这样
http://cloc.sourceforge.net
整个网站的设计简洁到让你怀疑它根本没有设计过,作为一个颜控,拼尽全力才控制住了把鼠标移到右上角关闭页面的冲动。
安装cloc是一个简单到不需要动脑的过程,完整的针对不同系统的操作命令可以在官网查到,这里就说一种最方便的使用npm下载工具包的方法:
<1>打开终端,输入:npm install cloc -g(mac用户请在前面加sudo),安装到全局。
<2>放下鼠标,泡上一杯清茶,静静地等待下载完成(速度很快,根本来不及喝)。
3、运行cloc
首先执行cd 文件夹路径 配置一下你想要检测的目标路径,再执行cloc .(中间有个空格!)命令,开始检测。
拿一阶段的代码举例:
在执行完cloc命令之后它会计算不同编程语言的文件数(files)、空行(blank)、注释(comment)和代码行数(code),并且最后返回SUM总数。统计结果清晰明了,而且速度快的飞起,绝对不会耽误你发朋友圈装(——消音)。
如果你想按每个文件逐个进行识别,请执行cloc —by-file .命令,它将会计算每个文件中的代码数,对于文件量庞大的任务来说慎用这条命令,我测试的结果是直接执行clock .检测整个文件夹和执行cloc —by-file .逐个文件检测两次运行最后的结果是一样的,唯一的不同就是逐个检查可以让你清楚的看到都有哪些文件参与了计算。
如果你不想计算当前文件夹下面的某个文件中的代码,可以使用cloc ./ —exclude-dir=文件夹名称命令排除该文件夹,排除多个文件夹只需要文件夹名称中间用逗号分隔。
例如:cloc ./ —exclude-dir=html,js
想一次计算多个文件或者文件夹时中间使用空格隔开,例如:cloc 01.html 02.html js(js是文件夹鸭)
下面列出一些cloc比较常用的指令:
--diff <set1> <set2> - 计算set1和set2的源文件之间的代码差异。 输入可以是文件和目录的混合。
--ignore-whitespace - 在使用--diff比较文件时忽略水平空格。
--max-file-size=<MB> - 如果要跳过大于给定大小MB的文件。
--exclude-dir=<dir1>,<dir2> - 排除给定的逗号分隔目录。
--exclude-ext=<ext1>,<ext2> - 排除给定的文件扩展名。
--out=<file> - 将结果保存到<file> 。
--quiet - 禁止所有信息消息并仅显示最终报告。
关于更多完整命令可以输入clock —help查看完整使用文档,基本上对于计算代码数来说cloc .就够用了,但是它还有很多强大的功能,例如批量删除注释,统计压缩包,设置忽略文件,有兴趣的小伙伴,可以自行拓展。
虽然老师说按照课程进度,二阶段结束后代码量就会轻松突破十万行,但是当看到实际计算结果返回100万的时候还是震精了一下,此处偷偷的给自己鼓个掌。
虽然已经离开学校很久了,但是一直没有停止过学习,我始终觉得在获取知识的道路上,我就是一只笨笨的小菜鸟,虽然飞的不高,但是从来没有停止过。
在乡下农民常说:“你做三四月份的事,在七八月份自会有答案”。而年轻人的职责是平整土地而非焦灼时间,我想这也正是学习的意义吧,与君共勉。