热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

写了个代码统计工具

周末想统计下XCL-Charts到底写了多少行代码,就用Go语言写了个代码统计工具,效果还不错,统计速度也快。就把统计报表部份今天完善了下,硬生生把很短的代码澎涨到200多行了。

       周末想统计下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 统计代码行数
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行代码,当初真是给自己埋了好大一个坑,搞得现在都还在填坑中......


    工具下载: 点此


  MAIL: xcl_168@aliyun.com

  BLOG: http://blog.csdn.net/xcl168





     


推荐阅读
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
author-avatar
手机用户2602924091
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有