周末想统计下XCL-Charts到底写了多少行代码,就用Go语言写了个代码统计工具,效果还不错,统计速度也快。
就把统计报表部份今天完善了下,硬生生把很短的代码澎涨到200多行了。
除了必要的代码行数和文件总计外,增加了代码行数有300,500,1000,5000及5000以上这几个级别的代码文件个数统计功能。
同时,用户可以指定显示出代码行数大于等于某值的所有文件明细,并按从大到小顺序排列。
但注意: 对一些特殊的注释,如 C/C++的 #if 0 #if 1 #if DEBUG #endif 或 xml的<!-- -->之类未做处理。 其运行结果仅供参考。
贴下效果:
E:\XCLTools\src\crname>go run scounter.go -l=600 -i .java E:\GitHub\GitHub\XCL-Charts\XCL-Charts\src
代码统计汇总(2014-12-22 22:20:47)
=================================================
分析根目录: E:\GitHub\GitHub\XCL-Charts\XCL-Charts\src
代码行数 : 文件个数
-------------------------------------------------
line <= 300 : 92
line <= 500 : 13
line <= 1000 : 6
line <= 5000 : 0
line > 5000 : 0
-------------------------------------------------
代码行总计: 18214 注释行总计: 7068
分析文件数: 111
代码行( >= 600 )文件明细:
代码行 注释行 文件名
-------------------------------------------------
987 154 .\org\xclcharts\renderer\AxesChart.java
620 53 .\org\xclcharts\chart\AreaChart.java
615 27 .\org\xclcharts\renderer\plot\PlotLegendRender.java
610 97 .\org\xclcharts\chart\BarChart.java
-------------------------------------------------
文件数:4
elapsed 1.744222 seconds
在Linux下,我加了颜色效果,来突出统计值。
上面的XCL-Charts库我写了18214行有效Java代码,对比下微软的casablanca库,那么强大的C++ sdk库,
才将近7k的C++代码.........
E:\XCLTools\src\crname> scounter -l=700 -i=.c,.cpp,.h,.hpp
D:\casablanca1027\Release\src
代码统计汇总(2014-12-22 21:26:54)
=================================================
分析根目录: D:\casablanca1027\Release\src
代码行数 : 文件个数
-------------------------------------------------
line <= 300 : 9
line <= 500 : 6
line <= 1000 : 2
line <= 5000 : 2
line > 5000 : 0
-------------------------------------------------
代码行总计: 6981 注释行总计: 1688
分析文件数: 19
代码行( >= 700 )文件明细:
代码行 注释行 文件名
-------------------------------------------------
1489 35 .\json\json.cpp
1280 825 .\http\client\http_client.cpp
-------------------------------------------------
文件数:2
elapsed 1.027630 seconds
从上面例子可以看到,在-i后面加各种扩展名,可以把所指定扩展名的文件合在一起统计,也可以跨语言的统计,如 -i=.cpp,.go,.java 之类.
附命令说明:
xcl@xclpc:~/xclcounter$ ./scounter
NAME:
scounter <path> 统计代码行数
OPTIONS:
-i="": 仅包含指定扩展名的文件(如:.java,.cpp,.h),不输入则包含全部.
-v=false: 是否显示文件统计明细.
-l=0: 在统计结果上列出大于等于所指定行数(0为不记录)的文件信息.
EXAMPLE:
scounter -i .java c:\xclcharts\xclcharts\src
scounter -i=.cpp,.h,.hpp,.c /xclproject/src
scounter -i .go -v=false /usr/local/go/src
scounter -l=680 -i=.cpp,.h,.hpp,.c /xclproject/common/src
AUTHOR:
XiongChuanLiang (xcl_168@aliyun.com)
这类东西在Go语言中其实很好写,正则加代码处理过滤掉多行代码注释,再结合文件遍历及channel, 一下就出来了。
最后我把XCL-Charts的库和demo工程代码加起来,共有32379行代码,当初真是给自己埋了好大一个坑,搞得现在都还在填坑中......
工具下载: 点此