一個統計原始碼的小工具
這篇小文躺在我的私人記事本有一小段時間,今天重看,貼上來好點。
看一個開源專案時,我喜歡瞭解它有多少行程式碼 ,因此需要一個統計的小工具,覺得下翻功夫是可能網際網路上找到的。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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我製作了一個部落格園文章資訊統計的小工具
- 一個遠端系統控制檯的小工具
- 奉獻一個能進行rsa計算的小工具
- 開源一個製作小工具的小工具,順便求個 star
- 使用的runtime的一個小工具
- 一個開放原始碼的高階NIDS系統(轉)原始碼
- Java關於IO的一個小工具Java
- 一個學習 Koa 原始碼的例子原始碼
- 整理js開發中的實用小工具(一):做一個整合儲存的小工具JS
- 分享一個線上生成簡歷的小工具
- mysql sql 行為的統計--一個很有用的指令碼MySql指令碼
- JavaEE35個系統原始碼Java原始碼
- 一個生日郵件提醒小工具
- 從原始碼構建一個極簡的Linux作業系統原始碼Linux作業系統
- 閱讀 Composer 原始碼的一個分享原始碼
- 分享一個小清新的論壇原始碼原始碼
- jdk 原始碼的一個BUG,大家來看看JDK原始碼
- 一個俄羅斯方塊的原始碼 (轉)原始碼
- 從 YYCache 原始碼 Get 到如何設計一個優秀的快取原始碼快取
- 個人寫的一個小工具 laravel生成介面文件Laravel
- 一個切換滑鼠左右手的小工具
- gitup: 批量更新多個 git 程式碼庫的小工具Git
- Giraph原始碼分析(八)—— 統計每個SuperStep中參與計算的頂點數目原始碼
- 一個很好的指令碼,用來顯示cbo的統計資訊指令碼
- Java溯源防偽管理系統原始碼,一物一碼二維碼防偽追溯系統原始碼Java原始碼
- 分享一個自己做的小工具,百度收錄自動提交指令碼指令碼
- 常用的小工具程式碼
- TODO list小工具,給自己一個交代
- Rust 寫一個簡易 CLI 小工具Rust
- nacos統一配置中心原始碼解析原始碼
- 一個簡單案例的Vue2.0原始碼Vue原始碼
- Promise 原始碼:實現一個簡單的 PromisePromise原始碼
- 一個詞法分析器原始碼的剖析詞法分析原始碼
- Struts原始碼研究發現的一個問題原始碼
- OA 系統原始碼模組設計方案原始碼
- PHP原始碼陣列統計count分析PHP原始碼陣列
- 今天寫了一個統計執行sql次數的指令碼SQL指令碼
- [Jenkins 外掛開發] Jenkins 外掛二次開發-設計一個程式碼 diff 的小工具Jenkins