在日常运维工作中,会碰到对一项项目下的代码行数进行统计的需求,下面对代码行数的统计方法进行梳理,以供参考。
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

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/6768005.html,如需转载请自行联系原作者

统计代码行数的方法梳理相关推荐

  1. python统计代码行数_python实现统计代码行数的方法

    本文实例讲述了python实现统计代码行数的方法.分享给大家供大家参考.具体实现方法如下: ''' Author: liupengfei Function: count lines of code i ...

  2. Intellij idea使用Statistic统计代码行数的方法

    一.安装Statistic 1.打开IDEA 2.打开settings进行设置 3.选择plugins,搜索Statistic并安装 4.下载完成之后,重启IDEA,此时Statistic就安装好了 ...

  3. linux代码行数统计工具,统计代码行数工具 用golang实现

    首先:修改conf文件,配置要查找什么后缀的文件代码行数 使用方法:countcodeliine filename or nothing(计算可执行程序所在目录) 实现功能: 1,统计代码行数 2,可 ...

  4. webstorm代码行数统计_【Rust每周一库】Tokei 统计代码行数等信息的实用工具

    Tokei是一个按语言统计代码行数等统计信息的工具.其实这些信息还是非常有用的,首先程序猿可以用它来估计别人的实力或者观察自己实力成长的速度(神马,行数论英雄么?).其次,管理人员可以用它来估计工程的 ...

  5. vscode统计代码行数,前端开发配置、快捷键使用

    1.统计代码行数 使用场景是项目年终统计行数. 实现:在需要统计得文件夹右键"在文件夹中查找" ,后输入筛选得正则表达式 ^b*[^:b#/]+.*$ (注意右边小图标都点亮) 这 ...

  6. Eclipse统计代码行数

    开发过程中,经常需要统计代码行数,这时可以通过Eclipse的Search功能来实现. 步骤: 1.在Package Explorer中选中需要统计的包: 2.单击菜单Search-->File ...

  7. python计算营业额代码_python计算营业额的代码_python 统计代码行数简单实例

    python 统计代码行数简单实例 送测的时候,发现需要统计代码行数 于是写了个小程序统计自己的代码的行数. #calclate_code_lines.py import os def afileli ...

  8. 统计代码行数工具(升级版)

    统计python或java代码行数工具,实现内容如下: 1.从命令行参数中输入统计的目录路径和文件类型 2.count_file_lines():实现单个文件行数统计 3.count_code_lin ...

  9. 使用git log统计代码行数

    1.背景 在软件开发过程中,代码行数是一个非常重要的指标,可以用来衡量代码的质量和开发效率.Git是一个流行的版本控制系统,它可以记录和跟踪代码的修改历史.通过使用Git,我们可以很容易地统计代码行数 ...

最新文章

  1. 论文简述 | 无需校正和不失真的实时变化的鱼眼双目
  2. 数据分析方法论2——流量分析
  3. Flutter升级到1.12填坑指南
  4. SpringBoot总结之CommandLineRunner
  5. 图片变色_一张图看懂手机CMF史,附带手机渐变色工艺解析
  6. 繁体字_学认繁体字?你可能是低估了汉字的难度
  7. php门面理解,php 门面模式(外观模式)
  8. java导入工程tomcat_Tomcat源码分析【一】版本选择与工程导入
  9. 开源GIS(六)——openlayers中overlay强大功能
  10. 左右c++与java中国的垃圾问题的分析与解决
  11. python循环语句总结
  12. java mapxtreme_mapxtreme java 初始化地图
  13. java计算机毕业设计随心淘网管理系统源代码+数据库+系统+lw文档
  14. SEO引擎首页优化 - 2016百度搜索引擎算法
  15. android 通知写法_Android消息通知-Notifation
  16. 使用PADS绘制排线的细节笔记
  17. MySQL索引原理和引擎
  18. 自抗扰控制ADRC之反馈控制律(NLSEF)
  19. 学校校园学生寝室管理查寝打分系统 毕业设计毕设源码毕业论文开题报告参考(4)网站和学生功能
  20. WebRTC源码-信令之六:SDP协议与协商流程

热门文章

  1. 引用计数器法 可达性分析算法_面试官:你说你熟悉jvm?那你讲一下并发的可达性分析...
  2. python实现计算最少完美平方数
  3. [Ext JS ] 7.25.1 Form或者面板自动定位到错误的输入框
  4. 入门几款好的UML工具介绍
  5. ORA-01033 的解决
  6. windows下putty 连接linux远程管理
  7. 代码同步工具_构建现代化的命令行工具
  8. 百度网盘自动备份php,服务器自动备份脚本上传至百度云存储
  9. 牛客网练习赛26B(简单的dp)
  10. 无线通信信道的衰落特性(大尺度衰落和小尺度衰落)