[Perl系列二-实战] 1. Perl 读取代码的行数
前言
有的时候有这些需求:
1. 统计一个文件的行数
2. 统计一个源代码的有效行数。排除空行和注释行
3. 统一一个目录下各种文件的数量和行数
要达成这些需求,很多语言多可以做到, 但是使用Perl 应该是一个不错的选择
读取文件行数
读取一个文件的总行数(空行和注释都包含) 使用Perl 很简单
open(FILE ,<>);
my $lines_counter = 0;
while(<>)
{
$lines_counter += 1;
}
print "lines: $lines_counter\n";
当然,如果在linux 下就更简单了, 只需要敲入以下命令就可以了:
wc -l filename
源码代码行数(空格数)
统计一个源码文件的代码行数:传入参数: 文件的路径返回: 三个元素的数组; 分别是总行数, 空行行数 和注释行数注意: 这段代码目前基本使用于 Java, C, C++; 因为这里注释部分处理的是以下三种:
1. // 行注释
2. 块注释
/*
*
*/
3.文件注释
/**
*
*/
完整代码:
#******************************************************************************
# NAME: get_codeline_count
# DESCRIPTION: get Files under a Folder
# ARGUMENTS: 1.Folder path
# AUTHOR: oscar999
#******************************************************************************
sub get_codeline_count{
my ($file_path) = @_;
my $total_lines = 0;
my $blank_lines = 0;
my $comment_lines = 0;
open FILE, $file_path or die "can't open file:$file_path reason=$!";
my $begSegComment = 0;
foreach my $file_line ()
{
$file_line =~ s/\n//g;
$total_lines += 1;
if($begSegComment == 1)
{
$comment_lines += 1;
if($file_line =~ /[\S\s]*\*\/\s*/)
{
$begSegComment = 0;
}
}else{
if($file_line =~ /^\s*$/)
{
$blank_lines += 1;
}elsif($file_line =~ /\s*\/\/[\S\s]*/)
{
$comment_lines += 1;
}elsif($file_line =~ /\s*\/\*/)
{
$comment_lines += 1;
if($file_line =~ /\s*\/\*[\S\s]*\*\/\s*/)
{
}else{
$begSegComment = 1;
}
}
}
}
close FILE;
return ($total_lines, $blank_lines, $comment_lines);
}
源代码行数统计工具 (Perl 版本)
1. Code Line Counter
这个是一个收费的软件,
也有免费版,但有限制, 一次只能统计 10 份文件。
下载地址:
http://codelinecounter.bistonesoft.com/clcperl.htm
下载之后进行安装
运行之后的界面如下:
2. CLOC
这个应该是使用的比较多的工具了。
它可以统计一个路径下各种类型文件的数量, 总的空格,代码,注释的数量。 它也可以统计一个压缩包里面的文件的状况
项目的介绍路径:
http://cloc.sourceforge.net/index.html#Basic_Use
下载路径是:
http://sourceforge.net/projects/cloc/files/cloc/v1.60/
这里提供 Perl 的源码以及打包后的exe 文件。
作为工具来说, 下载 .exe 文件。 目前最新版的文件名是 cloc-1.60.exe
使用方式就是在命令行模式上, 输入:
cloc-1.60.exe 文件路径或者压缩包名
输出的结果类似:
[Perl系列二-实战] 1. Perl 读取代码的行数相关推荐
- python一次读取10行_Python怎么读取Excel的行数和列数?
在把数据写入Excel的过程中遇到了问题,写入的数据是for循环进去的,所以是分多次写入(每次for循环写入一次,一次有几十条数据). 但是在第二次for循环写数据时,就会覆盖掉第一次写的数据,就是后 ...
- java读取csv文件行数_java读取巨大csv的行数
我有超过700K行的巨大csv行数.我必须解析那些csv的行和do ops.我想通过使用线程来做到这一点.我第一次尝试做的很简单.每个线程都应该有唯一的csv行.我只有有限的行数只能读到3000.我创 ...
- python统计excel数据总行数_Python怎么读取Excel的行数和列数?
在把数据写入Excel的过程中遇到了问题,写入的数据是for循环进去的,所以是分多次写入(每次for循环写入一次,一次有几十条数据). 但是在第二次for循环写数据时,就会覆盖掉第一次写的数据,就是后 ...
- 浏览文件神器!且可以计算所有文件代码的行数!
1. [图片] 201312051416305445.jpg 2. [代码]demo //http://www.codepearl.com header("Content-type: te ...
- 怎么在vs2010中显示代码的行数
从安装VS2010到现在已经有几个月了,每次看到别人的代码能显示行数而自己的不能总感觉不爽,刚百度了一下一共才3步: 1)打开你的VS2010找到 "工具" 里的 " ...
- 收藏夹吃灰系列(二):教小师妹通过代码实现Swagger在线接口文档转word文档!教完后...?
话不多说,工具源码直接分享给大家吧: 如果最后觉得该代码生成器对你有所帮助,请不要吝啬你的赞,直接pia的点亮就完了啦,up up up!!! 如下就是全码,拿走!不谢!!助你趁早解放双手! 本地sw ...
- python读取mysql数据库行数_使用python读取mysql数据库并进行数据的操作
(一)环境的配置 使用python调用mysql数据库要引进一些库. 目前我使用的python版本是python3.6.引进库为pymysql 其他对应的库可以有以下选择: mysqldb,oursq ...
- gitlab代码查看行数
1. 下载代码 git clone http://**/scrm/scrm.git 2. 进入下载代码目录下,即需要使用.git文件 cd scrm 3. 切换dev分支 $ git checkout ...
- jmeter 循环使用csv数据_如何通过jmeter读取csv文件行数来设置循环控制器的总数...
1.线程组里添加beanshell取样器 import java.io.BufferedReader; import java.io.FileReader; import java.io.IOExce ...
最新文章
- 计算机维护常识_系统篇
- redis 2m数据读取_Flink读写Redis(二)读取redis数据
- sprintf的使用(和为n的回文数)
- rsync error: some files/attrs were not transferred
- virtualbox怎么共享文件夹 linux,Virtualbox中Ubuntu设置共享文件夹
- C++Primer学习笔记:第2章 变量和基本类型
- linux判断内存并释放,linux 内存清理/释放命令
- Java元注解作用及使用
- 如何从开发小白到音视频专家
- 当程序员写不出代码了,该怎么办?
- 服务器 上传文件进度,Java动态显示文件上传进度实现代码
- 错误调试:Ubuntu-Tensorflow ,程序手动结束后,GPU的显存没有被释放
- 转Java 开发环境配置
- mysql索引失效的原因
- 【目标提取】计算机视觉中如何利用颜色和形状提取目标?
- gis连接表格到数据库失败_arcgis连接到数据库失败,常规功能故障
- 写bat文件for循环批量创建文件夹
- [极客时间]《算法面试通关40讲》
- PUMA560MATLAB三维仿真模型,基于Matlab的puma560型机器人仿真
- 行为瘫痪(paralysis)、心流和可能的自我