1. 前言
本文介绍了一款使用C#开发的代码行数统计软件。该软件允许用户通过选择文件目录和设置统计项目类型,来统计指定目录下的代码行数。软件提供了三种统计方式:按文件名统计、按文件类型统计、按文件目录统计,并能计算出包括总行数、注释行数、空行数等在内的详细数据结果。此外,软件还提供了扩展功能,允许有一定编程能力的用户自定义支持的项目类型和扩展文件名,以满足特定需求。
2. 功能介绍及使用
以下为软件主界面。
2.1 按文件统计
1、点击浏览选择需要进行统计的文件目录。
2、选择文件目录对应的项目类型,选择完成后,将显示该项目类型将要统计的文件后缀名。
3、点击统计,统计完成后,将会显示统计数据在列表中,同时底部也将显示汇总结果。
4、可以看到按文件名统计结果,其他类型的统计结果也会同步生成。
2.2 按文件类型统计
1、点击浏览选择需要进行统计的文件目录。
2、选择文件目录对应的项目类型,选择完成后,将显示该项目类型将要统计的文件后缀名。
3、点击统计,统计完成后,将会显示统计数据在列表中,同时底部也将显示汇总结果。
4、可以看到按文件类型统计结果,其他类型的统计结果也会同步生成。
2.3 按文件目录统计
1、点击浏览选择需要进行统计的文件目录。
2、选择文件目录对应的项目类型,选择完成后,将显示该项目类型将要统计的文件后缀名。
3、点击统计,统计完成后,将会显示统计数据在列表中,同时底部也将显示汇总结果。
4、可以看到按文件目录统计结果,其他类型的统计结果也会同步生成。
2.4 导出Execl
待统计结果出来后可点击导出结果按钮将统计结果导出为execl文件,导出的文件中将包含按文件统计、按文件类型统计、按文件目录统计三个统计结果。
打开看下导出的execl文件内容如下:
2.5 添加自定义项目支持
有一定编程能力的小伙伴可以修改本程序支持的项目类型和统计时支持的文件扩展名类型,使用Navicat打开程序目录下的DataServer.db文件,可以看到程序当前已支持的项目类型和相应的文件类型,根据需要新增项目类型(project表)、新增支持的文件类型(file_config表)。
说明:
1、project_type:项目类型。
2、file_extension:该项目统计时需要统计的文件后缀名,多个之间以英文的逗号(,)分隔。
3、file_extension:支持的文件后缀名,多个之间以英文的逗号(,)分隔。
4、code_regex:用于正则匹配代码的正则表达式。
5、single_line_comment_regex:后缀名文件对应的单行代码注释正则表达式。
6、multiLine_comment_regex:后缀名文件对应的多行代码注释正则表达式。
正则表达式一旦配置错误,将会导致程序统计结果不正确并且有可能导致程序异常,需谨慎操作。
2.6 代码片段
以下为部分代码,仅供参考
private void InitializeSQLite()
{
//获取基目录,它由程序集冲突解决程序用来探测程序集。
string dbPath = AppDomain.CurrentDomain.BaseDirectory + "DataServer.db";
sqliteDBHelper = new SQLiteDBHelper(dbPath);
if (!File.Exists(dbPath))
{
//创建文件和表
MessageBox.Show("丢失数据库配置文件DataServer.db,程序无法运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
return;
}
string strSql = "select * from project order by project_type";
projectDataTable = sqliteDBHelper.ExecuteDataTable(strSql, null);
foreach (DataRow row in projectDataTable.Rows)
{
projectTypeComboBox.Items.Add(row["project_type"].ToString());
}
if (projectTypeComboBox.Items.Count > 0)
{
projectTypeComboBox.SelectedIndex = 0;
}
strSql = "select * from file_config";
fileConfigDataTable = sqliteDBHelper.ExecuteDataTable(strSql, null);
}
//选择文件目录
private void selectFileDirectoryButton_Click(object sender, EventArgs e)
{
using (FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog())
{
folderBrowserDialog.Description = "选择文件夹";
DialogResult dialogResult = folderBrowserDialog.ShowDialog();
if (dialogResult == DialogResult.OK)
{
fileDirectoryTextBox.Text = folderBrowserDialog.SelectedPath;
}
}
}
//开始统计
private void startButton_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(fileDirectoryTextBox.Text))
{
MessageBox.Show("请选择文件目录后再操作!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
fileExtensionList.Clear();
string[] array = fileExtensionTextBox.Text.Split(',');
foreach (string str in array)
{
fileExtensionList.Add(str.Trim().ToLower());
}
Task task = Task.Run(() => {
StartStatisticsTask();
});
}
private void StartStatisticsTask()
{
startButton.Text = "停止统计";
resultTextBox.Text = "正在统计中...";
fileStatisticsDictionary = new Dictionary<string, Tuple<long, long, long>>();
fileTypeStatisticsDictionary = new Dictionary<string, Tuple<long, long, long>>();
fileTypeCountDictionary = new Dictionary<string, long>();
fileDirectoryStatisticsDictionary = new Dictionary<string, Tuple<long, long, long>>();
fileDirectoryDictionary = new Dictionary<string, int>();
fileListView.Items.Clear();
fileTypeListView.Items.Clear();
StatisticsFiles(fileDirectoryTextBox.Text);
SetFilesTabPageListViewData();
SetFileTypeTablePageListViewData();
SetFileDirectoryTablePageListViewData();
startButton.Text = "开始统计";
}
3. 总结
该C#开发的代码行数统计软件是一款功能强大且灵活的工具,旨在帮助用户快速准确地统计文件目录中的代码行数。通过直观易用的界面和三种统计方式(文件名、文件类型、文件目录),用户可以方便地获取到包括总行数、注释行数、空行数等关键信息。软件还提供了自定义支持的项目类型和扩展文件名的功能,为用户提供了更大的灵活性和适用性。这款软件对于软件开发人员、项目管理者以及需要分析代码量的用户来说,都是一个非常实用的工具。