一句shell命令搞定程式碼行數統計
阿新 • • 發佈:2019-02-05
最粗略版
Shell程式碼- find . -name "*.java"|xargs wc -l|grep "total"|awk '{print $1}'
- find . -name "*.java"|xargs cat|wc -l #Output:37634
上面的兩句效果一樣,只不過第二種是先利用cat將多個java檔案的內容合併輸出了。然後再統計。
不過兩個都有共同的毛病——連檔案裡面的空行都給統計進去算作一行了。
去除空行版
Shell程式碼-
find . -name "*.java"|xargs cat|grep -v ^$|wc -l #Output:36335
但是,java程式碼還有註釋呢啊?!Fuck,還得幹掉註釋!
去除註釋版
Shell程式碼- # exclude the lines begin with //
- find . -name "*.java"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l #Output:36064
好,這個方法發現,以//開頭的註釋有36335-36064=271行。這裡需要注意的是,註釋行未必就以//作為開頭,可能N個空格之後才開始的的//,所以匹配時需要加上上面的^\s*放在開頭。
大功告成啦?扯淡!!!
java裡面註釋好幾種風格,再給你看看這個非常常見的註釋,還是會在統計結果裡面
Java程式碼- /**
- * @author xxx 2012-6-15 下午3:19:47
- */
咋搞?這種註釋我還真沒想好怎麼方便的除去,簡單粗暴的方法但是可以在上面grep的引數裡面再加入3個正則,分別去除以/**、*、*/開頭的行。