略游 发表于 2015-8-6 01:47:14

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

      虽然网上有办法在VS里快速统计代码总行数,但我想出了一个更有趣的办法。
      
       首先选择所有代码文件然后右键【属性】查看大小,看下面这个是我一开始写的程序代码:

      
看有142KB(才两个文件= =),换算成字节就是145408字节,假设每行50个字,那么就是2908行。加上各种换行*2,结果是5816行。
如果把上面的公式简化那么就是 : Line = Size *40.96

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


按照公式 Line = 5529 ,真实的代码行数大约是5700。多了171行

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

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


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


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




Author:略游
15-08-06



元始天尊 发表于 2015-8-6 08:51:31

这里教你如何用python统计一个目录下所有源码行数,author:lichao890427 in 2014
代码统计工具.pl

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";

0xAA55 发表于 2015-8-9 01:59:43

话说,你的源码和bin呢?

7KY6 发表于 2018-1-14 15:59:56

可以可以!!

human_rights 发表于 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 后就能看到全部的统计结果了。
页: [1]
查看完整版本: 【原创】超快速计算代码行数!略游原创