技术宅的结界

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

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1699|回复: 4
收起左侧

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

[复制链接]

7

主题

11

帖子

5152

积分

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

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

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

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

x
        虽然网上有办法在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




评分

参与人数 1威望 +1 宅币 +10 贡献 +1 收起 理由
0xAA55 + 1 + 10 + 1 原来思路是牺牲精确度来获取速度,这个赞.

查看全部评分

回复

使用道具 举报

273

主题

451

帖子

4870

积分

用户组: 真·技术宅

UID
2
精华
61
威望
148 点
宅币
3687 个
贡献
131 次
宅之契约
0 份
在线时间
623 小时
注册时间
2014-1-25
发表于 2015-8-6 08:51:31 | 显示全部楼层
这里教你如何用python统计一个目录下所有源码行数,author:lichao890427 in 2014
代码统计工具.pl
[Python] 纯文本查看 复制代码
use File::Find ();
use vars qw/*name *dir *prune/;
*name   = *File::Find::name;
*dir    = *File::Find::dir;
*prune  = *File::Find::prune;
my(@array)=();
sub wanted 
{
    /^.*\.h|.*\.cpp\z/s &&(push @array,$name);
}
File::Find::find({wanted => \&wanted}, 'C:\\Users\\Administrator\\Desktop\\src');
@ARGV=@array;
print "total file num=$#array\n";
my($lines)=0;
my($wordnum)=0;
while(<>)
{
 $wordnum += length $_;
 $lines++;
}
print "total lines=$lines\n";
print "total wordnum=$wordnum\n";

1060

主题

2443

帖子

6万

积分

用户组: 管理员

一只技术宅

UID
1
精华
221
威望
348 点
宅币
19512 个
贡献
40290 次
宅之契约
0 份
在线时间
1844 小时
注册时间
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

主题

6

帖子

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, 2020-7-13 14:23 , Processed in 0.101529 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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