代碼統計工具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.pswp.cn/diannao/37337.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37337.shtml
英文地址,請注明出處:http://en.pswp.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最高…

【frp】cron定時檢查zfrpc.service是否啟動成功

zfrpc 經常自動啟動失敗cron定時檢查zfrpc.service是否啟動成功 ChatGPT 要使用 cron 定期檢查 zfrpc.service 是否啟動成功,并在服務未運行時嘗試啟動它,你可以按照以下步驟進行操作: 創建腳本 首先,你需要創建一個腳本,這個腳本將檢查 zfrpc.service 的狀態,并在服務未…

字符串反轉字符串單詞(1)

大家好&#xff0c;今天我們來探討一道經典的編程問題——翻轉字符串里的單詞。這個問題要求我們編寫一個函數&#xff0c;將輸入字符串中的所有單詞進行翻轉&#xff0c;但單詞內部的字符順序保持不變。 問題分析&#xff1a; 1. 首先&#xff0c;我們需要理解翻轉字符串里的…

Codeforces Round 143 (Div. 2) C. To Add or Not to Add 題解 前綴和 二分

To Add or Not to Add 題目描述 A piece of paper contains an array of n n n integers a 1 , a 2 , . . . , a n a_{1},a_{2},...,a_{n} a1?,a2?,...,an?. Your task is to find a number that occurs the maximum number of times in this array. However, before l…

點云壓縮配置開發環境遇到一些bug

1、配置基于cuda的計算庫&#xff0c;Chamfer3D和pointops 編譯chamfer3D時候會遇到一個cub版本的校驗錯誤。 解決方法&#xff1a;根據錯誤提示&#xff0c;進入cuda的config配置文件中&#xff0c;使用#define將校驗功能關閉 編譯pointops&#xff0c;會遇到報錯&#xff1a;…

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

大數據批處理系統和業務系統是兩種不同類型的系統,它們在目的、設計、功能和使用場景上有所區別

大數據批處理系統和業務系統是兩種不同類型的系統&#xff0c;它們在目的、設計、功能和使用場景上有所區別。以下是大數據批處理系統和業務系統之間的一些主要差異&#xff1a; 1. **目的**&#xff1a; - **大數據批處理系統**&#xff1a;主要用于處理和分析大量數據&am…

MySQL高級1.0

目錄 &#x1f4cc;MySQL存儲過程和函數 ??存儲過程和函數介紹 ??存儲過程的創建和調用 ??存儲過程的查看和刪除 ??存儲過程語法-變量 ??存儲過程語法-if語句 ??存儲過程語法-參數傳遞 ??存儲過程語法-while循環 ??存儲過程語法-存儲函數 &#x1f4…

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…

影響Cache命中率的因素有哪些?

緩存命中率&#xff08;Cache Hit Rate&#xff09;是指處理器訪問緩存時&#xff0c;所需數據已經在緩存中找到的次數與總訪問次數的比例。提高緩存命中率可以顯著提升系統性能&#xff0c;因為緩存訪問速度遠快于主存訪問速度。影響緩存命中率的關鍵因素包括&#xff1a; 1.…

C語言異常處理就機制setjmp()和longjmp()

C語言setjmp()和longjmp()實現異常處理機制。 setjmp() 用于保存當前的程序執行狀態。 longjmp() 用于在后面的某個時刻返回到setjmp()點的狀態。 類似goto。但goto是本地的&#xff0c;只能在函數內部跳轉。 setjmp()和longjmp()是非局部跳轉語句&#xff0c;可在調用棧上&a…

通信系統網絡架構_3.移動通信網絡架構

移動通信網為移動互聯網提供了強有力的支持&#xff0c;尤其是5G網絡為個人用戶、垂直行業等提供了多樣化的服務。以下從業務應用角度給出面向5G網絡的組網方式。 1.5GS與DN互連 5GS&#xff08;5G System&#xff09;在為移動終端用戶&#xff08;User Equipment&#xff0c;…

CSRF的其他防范措施?

一般情況下&#xff0c;我們可以通過各種防護策略來防御CSRF&#xff0c;對于QA、SRE、安全負責人等&#xff0c;我們可以做哪些事情來提升安全性呢&#xff1f; 一、CSRF測試 CSRFTester是一款CSRF漏洞的測試工具&#xff0c;CSRFTester工具的測試原理大概是這樣的&#xff…