Linux中國

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

作為一個開發人員,你可能需要不時地向你的領導或者同事分享你目前的工作與代碼開發進展,抑或你的領導想對代碼進行全方位的分析。這時,你就需要用到一些代碼統計的工具,我知道其中一個是 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

輸出:

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

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

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

第四列顯示注釋的行數。

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

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

$ cloc file.tar.gz

輸出:

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

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

文件夾中使用的例子:

$ cloc dir/

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

$ cloc dir/cloc/tests

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

$ cloc archive.zip

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

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

$ cd cloc

$ cloc 157d706

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 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國