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

news2024/9/20 14:21:59

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

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.coloradmin.cn/o/1872794.html

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

相关文章

虹科技术丨Linux环境再升级:PLIN驱动程序正式发布

来源&#xff1a;虹科技术丨Linux环境再升级&#xff1a;PLIN驱动程序正式发布 原文链接&#xff1a;https://mp.weixin.qq.com/s/N4zmkYXTPr7xm-h2s7QiLw 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #PLIN #LIN #LIN接口 导读 Linux驱动程序领域再添新成员&am…

关于RAG优化的几个小技巧

一、背景说明 RAG技术为大型语言模型&#xff08;LLMs&#xff09;提供了从数据源检索到的信息&#xff0c;以支撑其生成的答案。简而言之&#xff0c;RAG就是搜索加上LLM提示&#xff0c;你让模型在提供的信息上下文中回答问题。查询和检索到的上下文都被注入到发送给LLM的提…

js删除el-table删除新增项,有的已经保存有的未经保存

有时候在弹窗中的弹窗要删除数据,有的是刚新增进来的,没有经过保存就没有id,有的已经保存过就有id 根据情况设定是否为编辑模式,如果为编辑模式就需要进行筛选删除及接口,如果不是编辑模式,只需要进行筛选删除 this.editFlag true; // 为编辑模式// 删除伤亡名单handelDel() …

基于高通8155的SNPE-PTQ量化方法介绍

一、基于高通8155的SNPE-PTQ量化与打包 量化位置与工作目录&#xff0c;snpe1.51与1.43环境结构相同&#xff0c;下面以1.51为例介绍&#xff1a; SNPE1.51量化&#xff1a;172.20.84.162:/media/share_31.106SNPE1.43量化&#xff1a;172.20.65.2:/media/share_31.106 脚本…

离线翻译软件哪个好用?5款离线翻译器带你解决语言交流难题~

熬过了高考这一大关&#xff0c;也是时候给自己放放松&#xff0c;奖励自己一趟说走就走的旅行了&#xff01;正好这不周边几个国家都开放了免签政策&#xff0c;借此机会出国游也是一个不错的选择~ 不过出国旅行最怕的还是沟通问题&#xff0c;幸运的是现在可有不少好用的离线…

[游戏开发][UE5]引擎学习记录

C Log和蓝图Log C Log 方法 UE_Log(参数1&#xff0c;参数2&#xff0c;参数3) //举例: UE_LOG(LogTemp, Error, TEXT("Log Info: %s"),"Test Log"); 三个参数的作用 参数1&#xff1a;输出窗口归类使用&#xff0c;你写什么它就显示什么 参数2&#x…

二叉树基础篇

目录 一.树形结构 二.基本概念 三.二叉树种类及性质 1.满二叉树 2.完全二叉树 3.完满二叉树 4.平衡二叉树 5.二叉树的性质 6.性质相关习题 四.二叉树的存储方式 五. 二叉树的遍历方式 六.二叉树的定义 一.树形结构 树是一种非线性的数据结构&#xff0c;它是由n&#…

SAP QM 取消UD 决策

SAP QM 取消UD 决策。 SAP提供了相关Notes用于取消UD决策。 C24010PA 这个批次已经做了UD 决策 C24010PA目前库存已经是非限制库存 执行操作 成功后检查,自动产生了322,检验批状态也变回来了。 取消原来的生产入库也是Ok的。 测试成功。 需要用到以下两个Notes。 Notes(S…

【深度学习】深度学习基础

李宏毅深度学习笔记 局部极小值与鞍点 鞍点其实就是梯度是零且区别于局部极小值和局部极大值的点。 鞍点的叫法是因为其形状像马鞍。鞍点的梯度为零&#xff0c;但它不是局部极小值。我们把梯度为零的点统称为临界点&#xff08;critical point&#xff09;。损失没有办法再下…

【机器学习】自然语言处理的新前沿:GPT-4与Data Analysis

目录 1、生成二维码Prompt&#xff1a;请用二维码编码这个信息&#xff0c;我爱chatgpt2、分析PDFPrompt&#xff1a;请分析这篇pdf的主要内容&#xff0c;用中文输出分析结果&#xff0c;100字3、设计网站Prompt&#xff1a;请帮我设计一个网站&#xff0c;网站的主题是哪吒玩…

下穿隧道结构安全该如何保证,检测跟自动化监测该如何抉择

隧道监测背景&#xff1a; 隧道所处的地下环境较为复杂&#xff0c;易受地质条件恶化、结构损伤、退化失稳以及自然灾害等因素影响&#xff0c;引发隧道拱顶开裂、边墙开裂、衬砌损坏、隧道渗漏水、围岩大变形等病害&#xff0c;从而导致隧道安全事故发生&#xff0c;尤其在长期…

查普曼大学团队使用惯性动捕系统制作动画短片

道奇电影和媒体艺术学院是查普曼大学的知名学院&#xff0c;同时也是美国首屈一指的电影学院之一&#xff0c;拥有一流电影制作工作室。 最近&#xff0c;道奇学院的一个学生制作团队接手了一个项目&#xff0c;该项目要求使用真人动作、视觉效果以及真人演员和CG角色之间的互动…

斜光测距的原理及python实现

1.前言 最近做了一个基于opencv的斜光测距的小项目&#xff0c;东西不多&#xff0c;但是很有意思&#xff0c;值得拿出来学一学。项目里面需要比较精确的定位功能&#xff0c;将前人matlab代码移植到python上&#xff0c;并且做了一些优化&#xff0c;简化逻辑(毕竟我是专业的…

智芯开发板----环境配置

一、软件准备 Keil IDE/ IAR IdeSupport_Install_Package已经上传到资源中自行下载即可。 二、IAR环境配置 1.首先将IdeSupport_Install_Package内的IAR文件复制到你的IAR安装路径中如图所示&#xff1a; 2.按如图所示的路径进行复制即可 3.以记事本的方式打开这个xml文件…

基于大数据架构的内容安全风控与分析

1 项目介绍 1.1 研究目的和意义 在数字化时代&#xff0c;内容安全成为了互联网企业面临的一个重要挑战。海量数据的产生与传播&#xff0c;伴随着不良信息和网络安全威胁的日益增加。因此&#xff0c;本课题旨在通过构建一个基于大数据架构的内容安全风控与分析系统&#xf…

绿盟又行了,漏管市场占有率第一

漏洞管理平台 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 今天看到不少朋友圈在转发&#xff…

用合成数据训练边缘侧火灾检测器

火灾是人类面临的重大威胁&#xff0c;检测火灾至关重要。目前的火焰传感器在距离检测方面存在局限性。为了克服这个问题&#xff0c;我的目标是使用机器学习方法创建一个轻量级且高度准确的火灾检测系统。当需要实时数据处理或机器学习模型可用的数据集很少时&#xff0c;这个…

《昇思25天学习打卡营第5天 | 昇思MindSpore网络构建》

第五天 今天学习了神经网络模型是由神经网络层和Tensor操作构成的&#xff0c;mindspore.nn提供了常见神经网络层的实现&#xff0c;在MindSpore中&#xff0c;Cell类是构建所有网络的基类&#xff0c;也是网络的基本单元。一个神经网络模型表示为一个Cell&#xff0c;它由不同…

大厂程序员上班猝死成常态?

大家好&#xff0c;我是瑶琴呀&#xff0c;拥有一头黑长直秀发的女程序员。 近日&#xff0c;连续看到大厂程序员猝死、低血糖晕倒的新闻&#xff0c;同为程序员感到很难受。互联网加班成常态这是既定事实&#xff0c;尤其在这个内卷严重、经济不景气的环境中&#xff0c;加班…