當前位置:
首頁 > 知識 > cloc:計算不同編程語言源代碼的行數

cloc:計算不同編程語言源代碼的行數

cloc:計算不同編程語言源代碼的行數


編譯自: https://www.ostechnix.com/cloc-count-the-lines-of-source-code-in-many-programming-languages/

作者: Sk

譯者: littleji

作為一個開發人員,你可能需要不時地向你的領導或者同事分享你目前的工作與代碼開發進展,抑或你的領導想對代碼進行全方位的分析。這時,你就需要用到一些代碼統計的工具,我知道其中一個是 Ohcount 。今天,我遇到了另一個程序,cloc。你可以用 cloc 很容易地統計多種語言的源代碼行數。它還可以計算空行數、代碼行數、實際代碼的行數,並通過整齊的表格進行結果輸出。cloc 是自由開源的跨平台程序,使用 Perl 進行開發。

特點

cloc 有很多優勢:

  • 安裝方便而且易用,不需要額外的依賴項
  • 可移植
  • 支持多種的結果格式導出,包括:純文本、SQL、JSON、XML、YAML、CSV
  • 可以計算 git 的提交數
  • 可遞歸計算文件夾內的代碼行數
  • 可計算壓縮後的文件,如:tar、zip、Java 的 .ear 等類型
  • 開源,跨平台

安裝

cloc 的安裝包在大多數的類 Unix 操作系統的默認軟體庫內,所以你只需要使用默認的包管理器安裝即可。

Arch Linux:


$ sudo pacman -S cloc

Debian/Ubuntu:


$ sudo apt-get install cloc

CentOS/Red Hat/Scientific Linux:


$ sudo yum install cloc

Fedora:


$ sudo dnf install cloc

FreeBSD:


$ sudo pkg install cloc

當然你也可以使用第三方的包管理器,比如 NPM 。


$ npm install -g cloc

統計多種語言代碼數據的使用舉例

首先來幾個簡單的例子,比如下面在我目前工作目錄中的的 C 代碼。


$ cat hello.c

#include <stdio.h>

int main()

{

// printf() displays the string inside quotation

printf("Hello, World!");

return 0;

}

想要計算行數,只需要簡單運行:


$ cloc hello.c

輸出:


cloc:計算不同編程語言源代碼的行數


第一列是被分析文件的編程語言,上面我們可以看到這個文件是用 C 語言編寫的。

第二列顯示的是該種語言有多少文件,圖中說明只有一個。

第三列顯示空行的數量,圖中顯示是 0 行。

第四列顯示注釋的行數。

第五列顯示該文件中實際的代碼總行數。

這是一個有隻有 6 行代碼的源文件,我們看到統計的還算準確,那麼如果用來統計一個行數較多的源文件呢?


$ cloc file.tar.gz

輸出:


cloc:計算不同編程語言源代碼的行數


上述輸出結果如果手動統計準確的代碼行數非常困難,但是 cloc 只需要幾秒,而且以易讀的表格格式顯示結果。你還可以在最後查看每個部分的總計,這在分析程序的源代碼時非常方便。

除了源代碼文件,cloc 還能遞歸計算各個目錄及其子目錄下的文件、壓縮包、甚至 git commit 數目等。

文件夾中使用的例子:


$ cloc dir/


cloc:計算不同編程語言源代碼的行數


子文件夾中使用的例子*:


$ cloc dir/cloc/tests


cloc:計算不同編程語言源代碼的行數


計算一個壓縮包中源代碼的行數:


$ cloc archive.zip


cloc:計算不同編程語言源代碼的行數


你還可以計算一個 git 項目,也可以像下面這樣針對某次提交時的狀態統計:


$ git clone https://github.com/AlDanial/cloc.git

$ cd cloc

$ cloc 157d706


cloc:計算不同編程語言源代碼的行數


cloc 可以自動識別一些語言,使用下面的命令查看 cloc 支持的語言:


$ cloc --show-lang

更新信息請查閱 cloc 的使用幫助。


$ cloc --help

開始使用吧!



via: https://www.ostechnix.com/cloc-count-the-lines-of-source-code-in-many-programming-languages/

作者: SK 選題: lujun9972 譯者: littleji 校對: pityonline

本文由 LCTT 原創編譯, Linux中國 榮譽推出

點擊「了解更多」可訪問文內鏈接

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux技術 的精彩文章:

讓 Python 代碼更易維護的七種武器
在 Linux 下截屏並編輯的最佳工具

TAG:Linux技術 |