一個統計原始碼的小工具
這篇小文躺在我的私人記事本有一小段時間,今天重看,貼上來好點。
看一個開源專案時,我喜歡瞭解它有多少行程式碼 ,因此需要一個統計的小工具,覺得下翻功夫是可能網際網路上找到的。Unix裡的wc可以統計檔案的行數,但單用這個工具還不能滿足我需求,它把所有行都計算進去,並不能略過註釋和空行。但結合輔助文字處理工具,如sed, awk應該比較容易就實現這樣的功能。僅需要統計.cpp, .c, .h, .pl四類檔案,決定還是用C語言寫一個好點,權且當作一次練習。平時動手寫程式碼還是太少了,要多加努力才行。
程式執行時讀入使用者輸入的路徑名,然後逐個地解析路徑,如是檔案則驗證是否合法型別檔案,如是目錄則深度遞迴遍歷其下的所有子目錄及檔案。整個實現起來就用了兩多小時,但查詢bug卻用了大半天。一個bug就是在統計以/*開頭*/結束的多行註釋,在查詢以“*/”為結束時遇到了點問題,後來才發現原來是fgets()惹的禍,讀取一行時最後兩個字元為CRLF,應該先去掉。一個bug解決後,用多個目錄測試,另一個bug又出現了,有些目錄能正常工作,有些會提示段錯誤的出錯。一般是什麼原因出現這種情況的呢?高手們能告訴我嗎?
初步統計了一下,snort-2.7.0beta2版的程式碼接近6萬行了。snort第一版只有1000多行,經過十餘年發展,目前已成了幾萬的規模。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7406370/viewspace-920667/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我製作了一個部落格園文章資訊統計的小工具
- 手擼了一個全自動微信清粉小工具(原始碼詳解)原始碼
- 開源一個製作小工具的小工具,順便求個 star
- Java關於IO的一個小工具Java
- 個人寫的一個小工具 laravel生成介面文件Laravel
- 整理js開發中的實用小工具(一):做一個整合儲存的小工具JS
- 從原始碼構建一個極簡的Linux作業系統原始碼Linux作業系統
- 一個學習 Koa 原始碼的例子原始碼
- 閱讀 Composer 原始碼的一個分享原始碼
- [Jenkins 外掛開發] Jenkins 外掛二次開發 - 設計一個程式碼 diff 的小工具Jenkins
- 【Python】Python判斷統計每個月天數原始碼示例Python原始碼
- JavaEE35個系統原始碼Java原始碼
- 一個生日郵件提醒小工具
- Giraph原始碼分析(八)—— 統計每個SuperStep中參與計算的頂點數目原始碼
- 分享一個小清新的論壇原始碼原始碼
- 常用的小工具程式碼
- 分享一個自己做的小工具,百度收錄自動提交指令碼指令碼
- Java溯源防偽管理系統原始碼,一物一碼二維碼防偽追溯系統原始碼Java原始碼
- Rust 寫一個簡易 CLI 小工具Rust
- 今天寫了一個統計執行sql次數的指令碼SQL指令碼
- Promise 原始碼:實現一個簡單的 PromisePromise原始碼
- 一個簡單案例的Vue2.0原始碼Vue原始碼
- 使用js寫一個圖片壓縮的小工具JS
- nacos統一配置中心原始碼解析原始碼
- Seay原始碼審計系統的配置和安裝原始碼
- 影片直播系統原始碼,const宣告關鍵字是哪一個原始碼
- 一個檔案的內容變成一個 go 語言的變數的小工具Go變數
- 一個小工具識別哪個docker佔用gpuDockerGPU
- 某個OA系統的程式碼審計
- C#開發的股票盯盤小工具——摸魚助手,附原始碼C#原始碼
- 小工具實戰-Python 實現小工具輸出字串大小寫轉換、字串統計、編解碼、MD5 加密Python字串加密
- 實現一個簡單版本的Vue及原始碼解析(一)Vue原始碼
- 手寫一個Promise,附原始碼分析Promise原始碼
- ElasticSearch.js原始碼走一個大概ElasticsearchJS原始碼
- 手動實現一個promise(原始碼)Promise原始碼
- 手寫一個同步服務端時間的小工具服務端
- foreach使用引用時的一個坑-foreach原始碼分析原始碼
- Spring Boot下的一個DDD案例原始碼介紹Spring Boot原始碼
- Java高精度定位系統原始碼 UWB定位系統原始碼 定位系統原始碼Java原始碼