一句shell命令搞定程式碼數統計

來源:互聯網
上載者:User

最粗略版

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   這個版本靠譜一些了,可以看到去掉空行之後的統計結果變為了:36335,比上個版本幹掉了1299行的空行。。。 

但是,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個正則,分別去除以/**、*、*/開頭的行。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.