[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

下载之后进行安装

运行之后的界面如下:

[Perl系列二-实战] 1. Perl 读取代码的行数_第1张图片


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 读取代码的行数)