统计代码行数的方法梳理

本文转载自:https://www.cnblogs.com/kevingrace/p/6768005.html?utm_source=itdadao&utm_medium=referral

在日常运维工作中,会碰到对一项项目下的代码行数进行统计的需求,下面对代码行数的统计方法进行梳理,以供参考。
1)最简单的是使用wc -l直接进行代码行数统计。(wc的几个参数的解释:-c 统计字节数;-l 统计行数;-w统计字数)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1)统计当前目录下的index.php文件的行数

[root@huanqiu_web1 ~]# cat index.php |wc -l

17

  

2)统计web目录下,js文件数量:

[root@huanqiu_web1 ~]# find web/ -name "*.js" |wc -l

  

3)统计web目录下所有js文件代码行数:

[root@huanqiu_web1 ~]# find web/ -name "*.js" |xargs cat|wc -l 或 wc -l `find web/ -name "*.js"`|tail -n1

  

4)统计web目录下所有js文件代码行数,过滤了空行:

[root@huanqiu_web1 ~]# find web/ -name "*.js" |xargs cat|grep -v ^$|wc -l

 

5)统计web目录下所有js文件代码行数。过滤注释行

[root@huanqiu_web1 ~]# find web/ -name "*.js" |xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l

2)使用find命令统计当前目录下php脚本文件的行数

1

[root@huanqiu_web1 main]# find . -name '*.php' | xargs wc -l

3)参考一个line-counter的工具
获取这个工具

1

[root@huanqiu_web1 main]# pip install line-counter

使用"line"命令可以获取当前目录下的文件与行数统计,效果如下:

1

2

3

4

[root@huanqiu_web1 main]# line

Search in /home/www/vote/

file count: 16207

line count: 3785977

如果想看到更细节一些的信息,使用"line -d"命令

1

2

3

4

5

6

7

[root@huanqiu_web1 main]# line -d

Search in /home/www/main/

31cms/Lib/Action/BackAction.class.php 37

31cms/Lib/Action/BaseAction.class.php 293

31cms/Lib/Action/Home/AdmaAction.class.php 18

31cms/Lib/Action/Home/DataAction.class.php 99

.......

4)使用color工具

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

CLOC -- Count Lines of Code

可能大家都知道用 `wc -l` 命令进行代码行数统计,但是它会将代码中的注释、空行所占用的文本行都统计在内。如果想查看一个 tar 包或一个项目目录中“实际”的代码行数并且不愿意自己去写一个脚本来做此类工作,那么可以考虑使用 cloc。

cloc 是一个 perl 脚本,它可以统计很多种编程语言的代码文件中的空行、注释以及实际的代 码行数。

 

下载最新版的color

下载地址:https://fossies.org/linux/privat/cloc-1.64.tar.gz/cloc-1.64/cloc

百度云盘下载地址:https://pan.baidu.com/s/1o7B1vyq

 

安装cloc (mac环境下直接使用brew install cloc安装)

[root@huanqiu_web1 ~]# wget https://fossies.org/linux/privat/cloc-1.72.tar.gz

[root@huanqiu_web1 ~]# tar -zvxf cloc-1.72.tar.gz 

[root@huanqiu_web1 ~]# cd cloc-1.72/

[root@huanqiu_web1 cloc-1.72]# make install

[root@huanqiu_web1 cloc-1.72]# ls

cloc  LICENSE  README.md  sqlite_formatter  tests  Unix

 

然后就可以直接使用cloc命令统计代码行数了。

比如统计/home/www/main下的代码行数

[root@huanqiu_web1 cloc-1.72]# ./cloc /home/www/main

    8098 text files.

    3770 unique files.                                          

Complex regular subexpression recursion limit (32766) exceeded at ./cloc line 9262.

Complex regular subexpression recursion limit (32766) exceeded at ./cloc line 9262.

Complex regular subexpression recursion limit (32766) exceeded at ./cloc line 9262.

    4671 files ignored.

 

github.com/AlDanial/cloc v 1.72  T=39.32 s (89.5 files/s, 23469.5 lines/s)

-------------------------------------------------------------------------------

Language                     files          blank        comment           code

-------------------------------------------------------------------------------

PHP                           2320          51059         127551         378887

JavaScript                     520          23226          23625         156244

CSS                            429          15131           3098         113634

HTML                           131           2023            415          14150

SQL                             71            326            392           9853

Stylus                           1            254              6            931

.........

JSON                             1              0              0             25

make                             2              3              0             15

INI                              2             18             64             13

Pascal                           1              6            119              2

-------------------------------------------------------------------------------

SUM:                          3519          92201         155315         675403

-------------------------------------------------------------------------------

 

统计压缩包代码行数。比如统计/usr/local/src下的mysql-5.6.34.tar.gz压缩包的代码行数

[root@huanqiu_web1 cloc-1.72]# ./cloc /usr/local/src/mysql-5.6.34.tar.gz 

   14680 text files.

   13866 unique files.                                          

   10255 files ignored.

 

github.com/AlDanial/cloc v 1.72  T=86.00 s (51.5 files/s, 29614.3 lines/s)

---------------------------------------------------------------------------------------

Language                             files          blank        comment           code

---------------------------------------------------------------------------------------

C++                                   1161         188519         214211         944511

C                                      517          36553          40459         458406

C/C++ Header                          1389          51498         114913         206832

Java                                   612          13120          19048          54595

Pascal                                 103           8820          13805          43968

Perl                                   141           9513           6423          31054

Bourne Shell                           142           4970           5671          27393

...........

lex                                      3            219            102            524

dtrace                                   9             96             10            456

Prolog                                   1              9             40            447

Windows Message File                     2              4             17             12

Visual Basic                             1              0              0             12

---------------------------------------------------------------------------------------

SUM:                                  4433         318404         422680        1805749

---------------------------------------------------------------------------------------

 

对比压缩包代码差异。

[root@huanqiu_web1 cloc-1.72]# ./cloc --diff /usr/local/src/keepalived-1.3.5.tar.gz /usr/local/src/mysql-5.6.34.tar.gz 

[root@LVS_Backup cloc-1.72]# ./cloc --diff /usr/local/src/keepalived-1.3.5.tar.gz /usr/local/src/mysql-5.6.34.tar.gz 

     257 text files.

   14680 text files.

    9565 files ignored.                                         

 

github.com/AlDanial/cloc v 1.72  T=84.00 s (0.0 files/s, 0.0 lines/s)

---------------------------------------------------------------------------------------

Language                             files          blank        comment           code

---------------------------------------------------------------------------------------

CSS

 same                                    0              0              0              0

 modified                                0              0              0              0

 added                                   0              0              0              0

 removed                                 1             37              0            141

m4

........

---------------------------------------------------------------------------------------

SUM:

 same                                    0              0              1              1

 modified                                1              0             30             36

 added                                4432         318390         422649        1805712

 removed                               170           7865           8579          47591

---------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------
可以使用awk直接对一个文件内的数字进行求和

1

2

3

4

5

6

7

8

9

10

11

[root@huanqiu ~]# cat a.txt

123

1233

44

55

66

77

88

99

[root@huanqiu ~]# awk 'BEGIN{sum=0}{sum+=$0}END{print sum;}' a.txt

1785

shell下多个数求和的几种写法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

1)

[root@huanqiu ~]# cat sum.sh

#!/bin/bash  

a=5  

b=10 

c=50

d=100 

f=$[ $a+$b+$c+$d ]  

echo ${f}  

[root@huanqiu ~]# chmod 755 sum.sh

[root@huanqiu ~]# sh sum.sh

165

 

2)

[root@huanqiu ~]# cat sum.sh

#!/bin/bash  

a=5  

b=10 

c=50

d=100   

let "f=a+b+c+d" 

echo ${f}  

[root@huanqiu ~]# sh sum.sh

165

 

3)

[root@huanqiu ~]# cat sum.sh

#!/bin/bash  

a=5  

b=10 

c=50

d=100   

((f=a+b+c+d))  

echo ${f}  

[root@huanqiu ~]# sh sum.sh

165

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值