方法一
统计一个工程的代码行数,可以是当前文件夹或者指定文件夹,并且工程文件夹可能还递归包含文件夹,统计出该工程的代码行数(不包括空行)
以下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