统计一个工程的代码行数

方法一

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

以下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

你可能感兴趣的:(统计一个工程的代码行数)