美文网首页
统计一个工程的代码行数

统计一个工程的代码行数

作者: 海角hust | 来源:发表于2017-11-30 21:40 被阅读0次

    方法一

    统计一个工程的代码行数,可以是当前文件夹或者指定文件夹,并且工程文件夹可能还递归包含文件夹,统计出该工程的代码行数(不包括空行)

    以下shell script只能统计C/C++工程代码行数,如果需要统计其他语言编写的工程代码量,只需要修改extens的值即可(即文件名后缀)

    #!/bin/bash
    ######
    #usage ./test.sh [dir]
    #目前统计的C/C++工程的代码行数(除去了空行)
    #要统计其他语言的工程代码行数只需要修改extens的值即可
    ######
    extens=(".c" ".cc" ".cpp" ".h" ".hpp")
    filesCount=0
    linesCount=0
    function is_extens()
    {
        for i in ${extens[@]}
        do
            if [ "$i" = "$1" ];then
                return 10
            fi
        done
        return 9
    }
    function funCount()
    {
        for file in `ls $1`
        do
            if [ -d $1"/"$file ];then
                #echo "$1/$file"
                funCount $1"/"$file
            else
                fileName=$1"/"$file
                EXTENSION=".${fileName##*.}"
                is_extens $EXTENSION
                if [ $? -eq 10 ]; then
                    lines=`grep -v "^$" $fileName | wc -l`  
                    echo "$fileName $lines"
                    let linesCount=$linesCount+$lines
                    let filesCount=$filesCount+1
                fi
            fi
        done
    }
    if [ $# -gt 0 ];then
        for m_dir in $@
        do
            m_len=`expr ${#m_dir} - 1`
            if [ ${m_dir:0-1} = "/" ]; then
                funCount ${m_dir:0:m_len}
            else
                funCount $m_dir
            fi
        done
    else
        funCount "."
    fi
    echo "filesCount = $filesCount"
    echo "linesCount = $linesCount"
    
    

    方法二

    这种方法无法统计工程中递归包含文件夹情况

    统计python 代码行数,含注释,跳过空行.
    $find . -name "*.py" | xargs grep -v "^$" | wc -l

    统计C语言代码.
    $find . -name ".c" -or -name ".h" | xargs grep -v "^$"| wc -l

    相关文章

      网友评论

          本文标题:统计一个工程的代码行数

          本文链接:https://www.haomeiwen.com/subject/timbbxtx.html