zoukankan      html  css  js  c++  java
  • 统计代码行数的方法梳理

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

    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脚本文件的行数

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

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

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

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

    [root@huanqiu_web1 main]# line
    Search in /home/www/vote/
    file count: 16207
    line count: 3785977

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

    [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工具

    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直接对一个文件内的数字进行求和

    [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)
    [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
  • 相关阅读:
    angularjs-ngTable select filter
    angularjs-ngModel 控制页面的宽度
    angularjs-ngModel传值问题
    Jquery中去除左右空格
    Python命令行下退格、删除、方向键乱码问题解决
    linux解压.tar.xz的方法
    python OS模块详解
    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not
    centos7 python2.7.5 升级python3.6.4
    使用mkfs.ext4格式化大容量磁盘
  • 原文地址:https://www.cnblogs.com/kevingrace/p/6768005.html
Copyright © 2011-2022 走看看