一個統計原始碼的小工具

longtrue發表於2007-06-23

這篇小文躺在我的私人記事本有一小段時間,今天重看,貼上來好點。

看一個開源專案時,我喜歡瞭解它有多少行程式碼 ,因此需要一個統計的小工具,覺得下翻功夫是可能網際網路上找到的。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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章