以前看到李开复写过的一本书,说是微软推荐应届毕业生最好有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);
}
}
}
}
这是程序运行的过程: