Sharing A Powerful Tool For Calculate Code Lines

简介:

最近正好需要统计下某项目代码行数,然后就找代码行数统计工具。以前找到过一个正则表达式,但是只有在VS2010下有用,VS2012和VS2013下的统计就不好使了。

接着搜索了一下代码行数统计绿色工具免费版,看到花花绿绿的浮动窗口和卧虎藏龙的下载链接,感觉非常令人生厌,而且,有些国产软件下载总是让你一不小心就中毒,所以最后还是放弃了下载。

当然,你知道,这点简单小功能,对于已经习惯自己搬砖搞定一切的码农,实在没有必要再费时间搜来搜去,而且那首歌唱得好,“Let it go,let it go...The code doesn‘t bother me anyway.”,所谓求人不如求己是也。

抽空自己写了这个代码行数分析winform工具,目前测试通过支持的语言有C#、Java、SQL、JavaScript和Python,共享出来,希望对你有帮助。

软件界面:

codecalc

一、程序简单分析

统计分析代码行数,需要分析源文件。这里的程序选择简单的打开源文件的方法,但是读取内容不是一下子全部读完,而是一行一行读取,读取后,需要按统计条件分析并计数。

统计条件抽象如下:

  CodeStatisticCondition

代码源文件信息CodeInfo抽象如下:

  CodeInfo

返回的源文件统计信息CodeStatisticInfo抽象如下:

  CodeStatisticInfo

主要统计的业务逻辑在CodeCounterService的Calc方法中:

  Calc

 

二、存在的主要不足和缺点

1、不同语言统计支持没有经过充分测试

目前这个小程序仅仅验证了自己经常使用的几种开发语言,其他语言未验证是否通过。

2、多线程统计支持不好

代码中,我想用Task提升性能,目前测试下来,多线程比单线程耗时更久,非常不友好。本来计划使用多线程技术打开文件并行分析每个文件的代码行数,毕竟,IO和计算密集型程序在多线程下应该能够发挥优势。但是看到根据目录并发分析统计代码效果并不好,所以我就直接放弃了多文件同时分析的实现。

3、统计数据不精确

代码行数统计并不完全准确,“统计”的时候,可能某项目下已经无效的代码也加入了统计。还有就是注释,不同语言的注释解析是个难题。再比如说压缩后的js文件,这个也会造成解析统计的不准确。

 

demo地址:PowerCodeCalculator

可执行文件下载:PowerCodeCalculator.exe





本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/p/Sharing-A-Powerful-Tool-For-Calculate-Code-Lines.html,如需转载请自行联系原作者


目录
相关文章
|
7月前
|
数据安全/隐私保护 iOS开发 Perl
Encountered an unknown error (Could not find a `ios` simulator (valid values: )
Encountered an unknown error (Could not find a `ios` simulator (valid values: )
46 0
|
存储
LeetCode 227. Basic Calculator II
实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
62 0
LeetCode 227. Basic Calculator II
|
数据安全/隐私保护 Windows
Cannot open‘************‘, Simulation FAILED due to fatal simulation errors
简介:Cannot open‘************‘, Simulation FAILED due to fatal simulation errors
Cannot open‘************‘, Simulation FAILED due to fatal simulation errors
|
算法
HDOJ 1202 The calculation of GPA
HDOJ 1202 The calculation of GPA
118 0
|
JavaScript 安全 前端开发
What Is ElectronJS and Why Should You Use It?
In this three-part tutorial, we will explore how to create a fully functional invoice application using ElectronJS and ApsaraDB for MongoDB.
2662 0
What Is ElectronJS and Why Should You Use It?