mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-19 22:51:41 +08:00
Merge pull request #10674 from pityonline/prf/10644
PRF: #10644 完成校对 20181010 Cloc - Count The Lines Of Source Code In Many Programming Languages.md
This commit is contained in:
commit
b4a5a8ea4d
@ -1,71 +1,63 @@
|
|||||||
Cloc – 计算不同编程语言源代码的行数
|
cloc –– 计算不同编程语言源代码的行数
|
||||||
======
|
======
|
||||||
|
|
||||||
![](https://www.ostechnix.com/wp-content/uploads/2018/10/cloc-720x340.png)
|
![](https://www.ostechnix.com/wp-content/uploads/2018/10/cloc-720x340.png)
|
||||||
|
|
||||||
作为一个开发人员,你可能需要不时的想你的领导或者同事分享你目前的工作与代码开发进展,抑或你的领导想对代码进行全方位的分析。在这种情况下,你就需要用到我所知的这么几个程序,其中一个是[**Ohcount**][1]。今天,我遇到了另一个程序, **"Cloc"**。通过使用 Cloc,你可以很容易的计算出多种语言的源代码行数。它还可以计算空行数、代码行数、实际占用的行数,并通过整齐的表格进行结果输出。Cloc 是免费的、开源的、跨平台程序,使用的 **Perl** 进行开发。
|
作为一个开发人员,你可能需要不时地向你的领导或者同事分享你目前的工作与代码开发进展,抑或你的领导想对代码进行全方位的分析。这时,你就需要用到一些代码统计的工具,我知道其中一个是 [**Ohcount**][1]。今天,我遇到了另一个程序,**cloc**。你可以用 cloc 很容易地统计多种语言的源代码行数。它还可以计算空行数、代码行数、实际代码的行数,并通过整齐的表格进行结果输出。cloc 是免费的、开源的跨平台程序,使用 **Perl** 进行开发。
|
||||||
|
|
||||||
### 特点
|
### 特点
|
||||||
|
|
||||||
Cloc 有很多优势:
|
cloc 有很多优势:
|
||||||
|
|
||||||
* 容易安装和实用,不需要额外的依赖项。
|
* 安装方便而且易用,不需要额外的依赖项
|
||||||
* 便携式
|
* 可移植
|
||||||
* 支持多种的结果格式导出,包括:纯文本、SQL、JSON、XML、YAML、CSV
|
* 支持多种的结果格式导出,包括:纯文本、SQL、JSON、XML、YAML、CSV
|
||||||
* 可以计算 git 的提交数
|
* 可以计算 git 的提交数
|
||||||
* 可递归计算文件夹内的代码行数
|
* 可递归计算文件夹内的代码行数
|
||||||
* 可计算压缩后的文件,如:tar、zip、Java ear
|
* 可计算压缩后的文件,如:tar、zip、Java 的 .ear 等类型
|
||||||
* 开源跨平台部署
|
* 开源,跨平台
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 安装
|
### 安装
|
||||||
|
|
||||||
Cloc 的安装包在大多数的 *nix 操作系统的默认软件库内,所以你只需要使用默认的包管理器安装如下这样。
|
cloc 的安装包在大多数的类 Unix 操作系统的默认软件库内,所以你只需要使用默认的包管理器安装即可。
|
||||||
|
|
||||||
Arch Linux:
|
Arch Linux:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo pacman -S cloc
|
$ sudo pacman -S cloc
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Debian, Ubuntu:
|
Debian/Ubuntu:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo apt-get install cloc
|
$ sudo apt-get install cloc
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
CentOS, Red Hat, Scientific Linux:
|
CentOS/Red Hat/Scientific Linux:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo yum install cloc
|
$ sudo yum install cloc
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Fedora:
|
Fedora:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo dnf install cloc
|
$ sudo dnf install cloc
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
FreeBSD:
|
FreeBSD:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo pkg install cloc
|
$ sudo pkg install cloc
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
当然你也可以使用第三方的包管理器比如[**NPM**][2]。
|
当然你也可以使用第三方的包管理器,比如 [**NPM**][2]。
|
||||||
|
|
||||||
```
|
```
|
||||||
$ npm install -g cloc
|
$ npm install -g cloc
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 使用实例
|
### 统计多种语言代码数据的使用举例
|
||||||
|
|
||||||
首先来几个简单的例子,比如下面在我目前工作目录中的的 C 代码。
|
首先来几个简单的例子,比如下面在我目前工作目录中的的 C 代码。
|
||||||
|
|
||||||
@ -78,74 +70,67 @@ int main()
|
|||||||
printf("Hello, World!");
|
printf("Hello, World!");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
想要计算行数,只需要简单运行:
|
想要计算行数,只需要简单运行:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cloc hello.c
|
$ cloc hello.c
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
输出:
|
输出:
|
||||||
|
|
||||||
![](https://www.ostechnix.com/wp-content/uploads/2018/10/Hello-World-Program.png)
|
![](https://www.ostechnix.com/wp-content/uploads/2018/10/Hello-World-Program.png)
|
||||||
|
|
||||||
第一列是被分析文件的语言类型,上面我们可以看到该分析的文件语言类型是 **C**。
|
第一列是被分析文件的编程语言,上面我们可以看到这个文件是用 C 语言编写的。
|
||||||
|
|
||||||
第二列显示的是该种语言类型有多少文件,图中说明只有一个。
|
第二列显示的是该种语言有多少文件,图中说明只有一个。
|
||||||
|
|
||||||
第三列显示空行的个数,图中显示无。
|
第三列显示空行的数量,图中显示是 0 行。
|
||||||
|
|
||||||
第四列显示注释的行数。
|
第四列显示注释的行数。
|
||||||
|
|
||||||
第五列显示该文件中的总共的行数。
|
第五列显示该文件中实际的代码总行数。
|
||||||
|
|
||||||
这是一个有只有6行代码的源文件,我们看到算的还算准确,那么如果用来算一个行数较多的源文件,会发生什么呢?
|
这是一个有只有 6 行代码的源文件,我们看到统计的还算准确,那么如果用来统计一个行数较多的源文件呢?
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cloc file.tar.gz
|
$ cloc file.tar.gz
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
输出:
|
输出:
|
||||||
|
|
||||||
![](https://www.ostechnix.com/wp-content/uploads/2018/10/cloc-1.png)
|
![](https://www.ostechnix.com/wp-content/uploads/2018/10/cloc-1.png)
|
||||||
|
|
||||||
根据上述输出,手动查找准确的代码计数非常困难。但是,Cloc以易读的表格格式显示结果。你还可以在最后查看每个部分的总计,这在分析程序的源代码时非常方便。
|
上述输出结果如果手动统计准确的代码行数非常困难,但是 cloc 只需要几秒,而且以易读的表格格式显示结果。你还可以在最后查看每个部分的总计,这在分析程序的源代码时非常方便。
|
||||||
|
|
||||||
除了源代码文件,Cloc 还能递归的计算各个目录及其子目录下的文件、压缩包、甚至 git 中的 commit 数目等。
|
除了源代码文件,cloc 还能递归计算各个目录及其子目录下的文件、压缩包、甚至 git commit 数目等。
|
||||||
|
|
||||||
|
文件夹中使用的例子:
|
||||||
**文件夹中使用的例子:**
|
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cloc dir/
|
$ cloc dir/
|
||||||
|
```
|
||||||
|
|
||||||
|
![][3]
|
||||||
|
|
||||||
|
子文件夹中使用的例子*:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cloc dir/cloc/tests
|
||||||
```
|
```
|
||||||
|
|
||||||
![][4]
|
![][4]
|
||||||
|
|
||||||
**子文件夹中使用的例子:**
|
计算一个压缩包中源代码的行数:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cloc dir/cloc/tests
|
$ cloc archive.zip
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
![][5]
|
![][5]
|
||||||
|
|
||||||
**计算一个压缩包中源代码的行数:**
|
你还可以计算一个 git 项目,也可以像下面这样针对某次提交时的状态统计:
|
||||||
|
|
||||||
```
|
|
||||||
$ cloc archive.zip
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
![][6]
|
|
||||||
|
|
||||||
**你还可以计算一个 git 项目:**
|
|
||||||
|
|
||||||
```
|
```
|
||||||
$ git clone https://github.com/AlDanial/cloc.git
|
$ git clone https://github.com/AlDanial/cloc.git
|
||||||
@ -153,37 +138,32 @@ $ git clone https://github.com/AlDanial/cloc.git
|
|||||||
$ cd cloc
|
$ cd cloc
|
||||||
|
|
||||||
$ cloc 157d706
|
$ cloc 157d706
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
![][7]
|
![][6]
|
||||||
|
|
||||||
**使用下面的命令,查看 Cloc 支持的语言类型:**
|
cloc 可以自动识别一些语言,使用下面的命令查看 cloc 支持的语言:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cloc --show-lang
|
$ cloc --show-lang
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
当然,help 能告诉你更多关于 Cloc 的使用帮助。
|
更新信息请查阅 cloc 的使用帮助。
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cloc --help
|
$ cloc --help
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
开始使用吧!
|
开始使用吧!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
via: https://www.ostechnix.com/cloc-count-the-lines-of-source-code-in-many-programming-languages/
|
via: https://www.ostechnix.com/cloc-count-the-lines-of-source-code-in-many-programming-languages/
|
||||||
|
|
||||||
作者:[SK][a]
|
作者:[SK][a]
|
||||||
选题:[lujun9972][b]
|
选题:[lujun9972][b]
|
||||||
译者:[译者ID](https://github.com/littleji)
|
译者:[littleji](https://github.com/littleji)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[pityonline](https://github.com/pityonline)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
@ -191,8 +171,7 @@ via: https://www.ostechnix.com/cloc-count-the-lines-of-source-code-in-many-progr
|
|||||||
[b]: https://github.com/lujun9972
|
[b]: https://github.com/lujun9972
|
||||||
[1]: https://www.ostechnix.com/ohcount-the-source-code-line-counter-and-analyzer/
|
[1]: https://www.ostechnix.com/ohcount-the-source-code-line-counter-and-analyzer/
|
||||||
[2]: https://www.ostechnix.com/install-node-js-linux/
|
[2]: https://www.ostechnix.com/install-node-js-linux/
|
||||||
[3]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
|
[3]: http://www.ostechnix.com/wp-content/uploads/2018/10/cloc-2-1.png
|
||||||
[4]: http://www.ostechnix.com/wp-content/uploads/2018/10/cloc-2-1.png
|
[4]: http://www.ostechnix.com/wp-content/uploads/2018/10/cloc-4.png
|
||||||
[5]: http://www.ostechnix.com/wp-content/uploads/2018/10/cloc-4.png
|
[5]: http://www.ostechnix.com/wp-content/uploads/2018/10/cloc-3.png
|
||||||
[6]: http://www.ostechnix.com/wp-content/uploads/2018/10/cloc-3.png
|
[6]: http://www.ostechnix.com/wp-content/uploads/2018/10/cloc-5.png
|
||||||
[7]: http://www.ostechnix.com/wp-content/uploads/2018/10/cloc-5.png
|
|
||||||
|
Loading…
Reference in New Issue
Block a user