看软件工程方面的一些书时里面会提到源代码多少行.比如一百万行代码的项目与十万行代码的项目所采取的管理方式可能就不一样.于是就想了解下自己参与的项目目前有多少行代码了.但一问同事都说不太清楚,可能是几十万上百万的样子吧.这也太不准了.于是就想到写些代码去计算下.
其实方法很简单,只要遍历所有源文件,然后计算每一个源文件有多少行代码就行了.下面是详细的代码
using System.IO; //这个是文件读写操作用到的命名空间
using System.Text.RegularExpressions; //这个是正则表达式命名空间
int totalSourceCodeLines = 0; //定义个全局变量
public int GetsourceCodeLins(string projectPath) //参数是源文件所在的路径,比如D:\SourceCode\MyCode
{
CalculateTotalCodeLins(projectPath); //调用另一个函数
return totalSourceCodeLines;
}
private void CalculateTotalCodeLins(string projectPath)
{
//遍历所有目录
DirectoryInfo dir = new DirectoryInfo(projectPath);
foreach (DirectoryInfo dirInfo in dir.GetDirectories())
CalculateTotalCodeLins(projectPath + "\\" + dirInfo.Name); //递归调用
遍历目录下的所有源文件
foreach (FileInfo fileInfo in dir.GetFiles())
{
if (Regex.IsMatch(fileInfo.Name, @".*\.(h|cpp)")) //针对不同的源文件可以用正则表达式筛选,这里是C++源文件.
totalSourceCodeLines += CalculateCodeLines(projectPath + "\\" + fileInfo.Name); //调用另一个函数计算每个源文件多少行.
}
}
//计算每个源文件多少行
private int CalculateCodeLines(string soureFilePath)
{
FileStream fStream = new FileStream(soureFilePath, FileMode.Open);
StreamReader reader = new StreamReader(fStream);
int count = 0;
while (reader.ReadLine() != null)
{
count++;
}
reader.Close();
fStream.Close();
return count;
}
当然这样计算出来的行数可能不太准确.可以考虑一共多少个源文件,然后每个源文件平均有多少行头文件,多少空格.然后减去这些行数就相对比较准确了。