现在的位置: 首页 > 综合 > 正文

正则表达式应用于个人代码量的统计

2018年05月24日 ⁄ 综合 ⁄ 共 1210字 ⁄ 字号 评论关闭

      以前看到李开复写过的一本书,说是微软推荐应届毕业生最好有10万行的代码经验。于是自己我想写个程序统计写了多少行代码。正好当时在学C#的正则表达式,借助正则表达式的简便。我统计了自己的代码量,大概有8万行的样子。

      程序的主要函数是一个先根遍历文件夹树的函数。因为运用了正则表达式,所以程序很简洁,拿出来和大家交流一下。正在求职的同学可以跑一下这个程序,统计自己的代码量,写在简历上,也能给面试官留个映象。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;

namespace 代码量统计
{
	class Program
	{
		static Regex fileType = new Regex(@"java|asm|c|cpp");	//匹配程序类型文件的正则表达式
		static Regex breakLine = new Regex(@"\n");	//匹配行尾的正则表达式
		static int lineNum = 0;

		static void Main(string[] args)
		{
			string path;

			//不断处理输入的程序文件夹的路径
			while(true)
			{
				path = Console.ReadLine();
				DirectoryInfo root = new DirectoryInfo(path);
				if(!root.Exists)
				{
					Console.WriteLine("输入路径不正确!");
				}
				else
				{
					TraverseFileSystem(root);
					Console.WriteLine("当前代码行数总计:\t" + lineNum + "\n");
				}
			}
			Console.ReadKey();
		}

		//先根遍历文件夹树
		static void TraverseFileSystem(DirectoryInfo dir)
		{
			FileInfo[] files = dir.GetFiles();
			foreach(FileInfo file in files)
				if(fileType.IsMatch(file.Extension))
				{
					StreamReader sr = new StreamReader(file.FullName);
					string content = sr.ReadToEnd();
					sr.Close();
					lineNum += breakLine.Matches(content).Count;
				}

			//处理当前目录下的每个子目录
			DirectoryInfo[] dirs = dir.GetDirectories();
			foreach (DirectoryInfo subDir in dirs)
			{
				TraverseFileSystem(subDir);
			}
		}
	}
}

     这是程序运行的过程:

             

抱歉!评论已关闭.