利用shell指令碼統計程式碼行數

pythontab發表於2014-10-20

剛畢業那會兒有一次去一家臺灣公司面試,問我寫過多少行程式碼。從沒想過這個問題,粗略算了算,隨口說道:大概幾十萬行吧。最近整理資料,看著eclipse左邊滿滿的列表,想起了這個事。倒底總共有多少行程式碼?——這事如果在windows下要麼找工具,要麼程式設計序。又想到linux裡的命令統計很方便,於是打算用個命令來完成。可分析來分析去,恐怕一行命令是搞不定的——又涉及遞迴查詢,又涉及指定檔案型別,又涉及對檔案全路徑進行操作。最終還是用了一段shell指令碼才達到目的。

#!/bin/bash
declare -i filenumber=0
declare -i linenumber=0
list_alldir(){
    for file in `ls -a $1`
    do
        if [ x"$file" != x"." -a x"$file" != x".." ];then
            if [ -d "$1/$file" ];then
                list_alldir "$1/$file"
    else
if [[ $file =~ \.java$ ]]; then
echo "$1/$file"
filenumber=$filenumber+1
linenumber=$linenumber+`cat "$1/$file"|wc -l`
fi
            fi
        fi
    done
}
if [ "$1" = "" ];then
arg="."
else
arg="./"$1
fi
list_alldir $arg
echo "There are $filenumber java files under directory: $arg"
echo "--total code lines are: $linenumber"

使用方法:儲存成sh檔案,授予執行許可權。執行./xxx.sh src ,可帶引數。不帶引數是統計當前目錄下所有java檔案,帶引數是統計指定目錄下的所有java檔案。引數只能指定到目錄一級,不能到檔案。

還可以寫的更通用一些,比如統計任意型別的檔案,懶得改了。統計結果大部分專案在幾千至幾萬行之間,整個jdk7也才260多萬行原始碼,還包括那麼多註釋行呢。當年的回答確實有點不知天高地厚了。


相關文章