找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3900|回复: 4

【原创】超快速计算代码行数!略游原创

[复制链接]

7

主题

4

回帖

5154

积分

用户组: 技术宅的结界VIP成员

UID
641
精华
1
威望
13 点
宅币
5111 个
贡献
1 次
宅之契约
0 份
在线时间
11 小时
注册时间
2015-1-28
发表于 2015-8-6 01:47:14 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
        虽然网上有办法在VS里快速统计代码总行数,但我想出了一个更有趣的办法。
        
       首先选择所有代码文件然后右键【属性】查看大小,看下面这个是我一开始写的程序代码:
1S)NOONZ5BO[
        
看有142KB(才两个文件= =),换算成字节就是145408字节,假设每行50个字,那么就是2908行。加上各种换行*2,结果是5816行。
如果把上面的公式简化那么就是 : Line = Size *40.96

实际上我的代码行数是4721 + 1273 = 5994 。比预测的只多了182行,当然看到这里你肯定会觉得这个只是运气罢了,所以让我们来做更多的实验。

Q0ZL]V({HX02ZLWP0W%`K}1.png
按照公式 Line = 5529 ,真实的代码行数大约是5700。多了171

下面我就不截图了,我多给几组数据:
62     72        1.16
1079   700       0.64
4335   3700      0.85

第一个参数是估算出的代码行数,第二个参数实际的代码行数,而第三个数 = 真实代码行数/估算的,我称它为 代码员特性值
这个值越高说明你的代码行数比估算的多,要么是注释写得多,要么就是行换得少。总体感觉就是写代码很老实的那种,写很多的注释,然后又不换行。


从以上数据来看,我的特性值都比较低,也符合很少写注释,时不时换行的特征。


我也希望你来测试下自己的特性值,看看是否准确,是否有更多的考虑方式。在多个数据取得平均之后可以再加入最开始的公式:
Line = Size * 41 * PgrK




Author:略游

15-08-06




回复

使用道具 举报

307

主题

228

回帖

7335

积分

用户组: 真·技术宅

UID
2
精华
76
威望
291 点
宅币
5585 个
贡献
253 次
宅之契约
0 份
在线时间
947 小时
注册时间
2014-1-25
发表于 2015-8-6 08:51:31 | 显示全部楼层
这里教你如何用python统计一个目录下所有源码行数,author:lichao890427 in 2014
代码统计工具.pl

  1. use File::Find ();
  2. use vars qw/*name *dir *prune/;
  3. *name   = *File::Find::name;
  4. *dir    = *File::Find::dir;
  5. *prune  = *File::Find::prune;
  6. my(@array)=();
  7. sub wanted
  8. {
  9.     /^.*\.h|.*\.cpp\z/s &&(push @array,$name);
  10. }
  11. File::Find::find({wanted => \&wanted}, 'C:\\Users\\Administrator\\Desktop\\src');
  12. @ARGV=@array;
  13. print "total file num=$#array\n";
  14. my($lines)=0;
  15. my($wordnum)=0;
  16. while(<>)
  17. {
  18. $wordnum += length $_;
  19. $lines++;
  20. }
  21. print "total lines=$lines\n";
  22. print "total wordnum=$wordnum\n";
复制代码
回复 赞! 靠!

使用道具 举报

1111

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24235 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2015-8-9 01:59:43 | 显示全部楼层
话说,你的源码和bin呢?
回复 赞! 靠!

使用道具 举报

0

主题

41

回帖

45

积分

用户组: 初·技术宅

UID
3351
精华
0
威望
2 点
宅币
0 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2018-1-14
发表于 2018-1-14 15:59:56 | 显示全部楼层
可以可以!!
回复

使用道具 举报

1

主题

5

回帖

93

积分

用户组: 小·技术宅

UID
3349
精华
1
威望
4 点
宅币
74 个
贡献
0 次
宅之契约
0 份
在线时间
7 小时
注册时间
2018-1-14
发表于 2018-1-15 11:51:05 | 显示全部楼层
本帖最后由 ring_chen 于 2018-1-15 12:08 编辑

感谢楼上两位的分享。这边我也发一个:
在Linux环境下直接使用wc统计一个文件夹内所有c文件的行数:

wc *.c | awk ' END { print $1 } '


说明:wc计算一个目录下所有c文件的行数并完成累加。wc的统计结果经管道送给 awk。最后由awk从中筛选出结果打印。

如果要计算所有c文件和所有h文件的总行数呢?这样:

wc *.c *.h | awk ' END { print $1 } '


当然,  awk ' END { print $1 } ' 也可以被省略。省略过滤器 awk 后就能看到全部的统计结果了。
000111000 000111000 000111000 000111000 000111000 UN
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-19 23:48 , Processed in 0.043024 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表