代码统计工具V1.0.0(支持各种文件类型)

点击下载《代码统计工具(支持各种文件类型)》

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#开发的代码行数统计软件是一款功能强大且灵活的工具,旨在帮助用户快速准确地统计文件目录中的代码行数。通过直观易用的界面和三种统计方式(文件名、文件类型、文件目录),用户可以方便地获取到包括总行数、注释行数、空行数等关键信息。软件还提供了自定义支持的项目类型和扩展文件名的功能,为用户提供了更大的灵活性和适用性。这款软件对于软件开发人员、项目管理者以及需要分析代码量的用户来说,都是一个非常实用的工具。

点击下载《代码统计工具(支持各种文件类型)》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/37337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性图标绘制指南:从基础到精通

图标在生活中随处可见。相比文字来说&#xff0c;图标可以让人在更短的时间内认知并了解信息&#xff0c;并且大大提升信息的视觉美观性&#xff0c;增加设计的艺术感染力。在用户界面中使用图标&#xff0c;是一种用户熟知的设计模式。而线性图标是通过提炼图形轮廓&#xff0…

jquery动态插件之gsap和TextPlugin

<!DOCTYPE html> <html> <head><title>数字化人才认证数动画</title><script src"https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script><script src"https://cdnjs.cloudflare.com/ajax…

【强化学习】第02期:动态规划方法

笔者近期上了国科大周晓飞老师《强化学习及其应用》课程&#xff0c;计划整理一个强化学习系列笔记。笔记中所引用的内容部分出自周老师的课程PPT。笔记中如有不到之处&#xff0c;敬请批评指正。 文章目录 2.1 动态规划&#xff1a;策略收敛法/策略迭代法2.2 动态规划&#xf…

GD32F4时钟配置

1.前言 硬件&#xff1a;GD32F450 最高时钟频率200MHZ(外部晶振8MHZ) 软件&#xff1a;KEIL(V5.35) 固件包&#xff1a;GD32F4xx_Firmware_Library_V3.2.0 2.时钟树 时钟配置大概流程如下图红线指示&#xff0c;GD32F470的最高频率可以到240MHZ&#xff0c;GD32F450最高…

C++Primer Plus 第十四章代码重用:14.4.4 数组模板示例和非类型参数2

14.4.4 数组模板示例和非类型参数 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右…

《分析模式》漫谈08-单继承不是“唯一继承”

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 《分析模式》第2章这一段&#xff1a; 划线处的single inheritance&#xff0c;2004中译本的翻译&#xff1a; 翻译为“单继承”&#xff0c;是正确的。 2020中译本的翻译&#xff1a…

Java NIO(一) 概述

NIO主要用于以少量线程来管理多个网络连接&#xff0c;处理其上的读写等事件。在大量连接情况下&#xff0c;不管是效率还是空间占用都要优于传统的BIO。 Java NIO 由以下几个核心部分组成&#xff1a; Channel Buffer Selector Selector 如果你的应用打开了多个连接&#x…

分页插件 count有数据,代码不往下执行

如下:如果打印了sql那么当row>0时会有图2下面sql详情的输出 问题出在了分页参数上,pageNum为1,并且pageSize>2才能打印出图二的结果,图一为pageNum值是0,注意,查询第一页,分页应该传入的是1而不是0

Linux高并发服务器开发(六)线程

文章目录 1. 前言2 线程相关操作3 线程的创建4 进程数据段共享和回收5 线程分离6 线程退出和取消7 线程属性&#xff08;了解&#xff09;8 资源竞争9 互斥锁9.1 同步与互斥9.2 互斥锁 10 死锁11 读写锁12 条件变量13 生产者消费者模型14 信号量15 哲学家就餐 1. 前言 进程是C…

【FFmpeg】avio_open2函数

【FFmpeg】avio_open2函数 1.avio_open21.1 创建URLContext&#xff08;ffurl_open_whitelist&#xff09;1.1.1 创建URLContext&#xff08;ffurl_alloc&#xff09;1.1.1.1 查找合适的protocol&#xff08;url_find_protocol&#xff09;1.1.1.2 为查找到的URLProtocol创建UR…

通信系统网络架构_3.移动通信网络架构

移动通信网为移动互联网提供了强有力的支持&#xff0c;尤其是5G网络为个人用户、垂直行业等提供了多样化的服务。以下从业务应用角度给出面向5G网络的组网方式。 1.5GS与DN互连 5GS&#xff08;5G System&#xff09;在为移动终端用户&#xff08;User Equipment&#xff0c;…

BLACKBOX.AI:解锁开发新纪元,加速编程学习的AI神器!

文章目录 &#x1f4af;BLACKBOX.AI 官网&#x1f341;1 BLACKBOX.AI 工具使用教程&#x1f341;2 BLACKBOX.AI工具使用界面介绍&#x1f341;3 Chat(聊天)功能&#x1f341;4 Explore (探索)功能&#x1f48e;4.1 Terminal(终端)功能&#x1f48e;4.2 Discover(发现)功能&…

STM32 IWDG(独立看门狗)

1 IWDG简介 STM32有两个看门狗&#xff1a;一个是独立看门狗&#xff08;IWDG&#xff09;&#xff0c;另外一个是窗口看门狗。独立看门狗也称宠物狗&#xff0c;窗口看门狗也称警犬。本文主要分析独立看门狗的功能和它的应用。 独立看门狗用通俗一点的话来解释就是一个12位的…

关于转BigDecimal对象时,精度问题

//浮点型数值Double d 0.0003d;//转BigDecimal对象BigDecimal a new BigDecimal(d);System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));…

format()方法——格式化字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法介绍 format()可以对数据进行格式化处理操作&#xff0c;语法如下&#xff1a; format(value, format_spec) format_spec为格式化解释。当参数…

【计算机毕业设计】092基于微信小程序二手闲置交易市场

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

探索区块链:颠覆性技术的崛起

目录 一、引言 二、区块链技术概述 三、区块链应用场景 四、区块链面临的挑战 五、区块链的未来展望 六、结语 一、引言 在数字化浪潮的推动下&#xff0c;区块链技术以其独特的去中心化、透明性和不可篡改性等特性&#xff0c;正在逐步改变我们的生活。从金融领域到供应…

基于Java的茶文化交流系统【附源码+LW】

摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&#xff0c;让整个世界都可以即时通话…

MySQL数据库存储引擎

MySQL数据库存储引擎 存储引擎概念 存储引擎也称为表类型 通过不同的技术比如说&#xff0c;存储机制&#xff0c;索引技巧&#xff0c;锁定水平等等&#xff0c;来提供不同的功能。 查看MySQL支持的存储引擎 show engines\G&#xff1b; 常用引擎比较 对事务有需求 innodb …

TiDB-从0到1-数据导出导入

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇TiDB-从0到1-集群扩缩容 一、数据导出 TiDB中通过Dumpling来实现数据导出&#xff0c;与MySQL中的mysqldump类似&#xff0c;其属于…