代码工程的tools目录下有一个代码检查工具,TscanCode_linux目录start_scan.sh。可以用于扫描部分代码错误,例如未初始化或者空指针之类的问题。但是每次使用的时候,太过繁琐与复杂,自己进行改写,将扫描结果直接拷贝到当前目录并且与svn diff信息作比较,使用者只需要傻瓜式查看。
这个过程分为以下几步:
一、初稿发现问题。其中主要进行了主题功能制作,将扫描结果与本地文件进行扫描,找出需要自己检查的地方。
#!/bin/bash
nowpath="/home/wahaha/FirServer/branches/branche_sealgull/"
path="/home/wahaha/FirServer/tools/TscanCode_linux/"
cd $path
strDate=$path"result.txt."
strDate+=`date "+%Y%m%d"`
./strat_scan.sh
cat $strDate* > tsCanCode_result.txt
mv tsCanCode_result.txt $nowpath
cd $nowpath
rm -f TscanCodeResult.txt
touch TscanCodeResult.txt
svn st | grep ^M > result.txt
cut -d"/" -f 2 result.txt > aaa.txt
while read line
do
echo "-------------------------" >> TscanCodeResult.txt
echo $line >> TscanCodeResult.txt
grep -i $line tsCanCode_result.txt
echo "-------------------------" >> TscanCodeResult.txt
done < aaa.txt
二、因为获取结果的时候,直接使用cat $strDate*获取当天所有文件,所以如果一天使用多次该脚本,交互很不友好。其次,每次使用完成留下result.txt和aaa.txt也是很不好
#!/bin/bash
#原工作目录
nowpath="/home/wahaha/FirServer/branches/branche_sealgull/"
#删除同天文件
path="/home/wahaha/FirServer/tools/TscanCode_linux/"
cd $path
strDate=$path"result.txt."
strDate+=`date "+%Y%m%d"`
rm -f $strDate*
#执行脚本
./strat_scan.sh
#拷贝并切换工作目录
cat $strDate* > tsCanCode_result.txt
mv tsCanCode_result.txt $nowpath
cd $nowpath
rm -f TscanCodeResult.txt
touch TscanCodeResult.txt
svn st | grep ^M > result.txt
cut -d"/" -f 2 result.txt > aaa.txt
#展示信息
while read line
do
echo "-------------------------" >> TscanCodeResult.txt
echo $line >> TscanCodeResult.txt
grep -i $line tsCanCode_result.txt
echo "-------------------------" >> TscanCodeResult.txt
done < aaa.txt
rm -f aaa.txt result.txt
三、由于个人家目录下有多个项目文件,为了复用,添加参数以及判断。最终版本代码为
#!/bin/bash
if [[ $# != 1 ]]
then
echo "argument error, eg:gull,chess"
exit 0
fi
#原工作目录
nowpath="/home/wahaha/FirServer/branches/branche_sealgull/"
#删除同天文件
path="/home/wahaha/FirServer/tools/TscanCode_linux/"
cd $path
strDate=$path"result.txt."
strDate+=`date "+%Y%m%d"`
rm -f $strDate*
#执行脚本
./strat_scan.sh
#拷贝并切换工作目录
cat $strDate* > tsCanCode_result.txt
mv tsCanCode_result.txt $nowpath
cd $nowpath
rm -f TscanCodeResult.txt
touch TscanCodeResult.txt
svn st | grep ^M > result.txt
cut -d"/" -f 2 result.txt > aaa.txt
#展示信息
while read line
do
echo "-------------------------" >> TscanCodeResult.txt
echo $line >> TscanCodeResult.txt
grep -i $line tsCanCode_result.txt
echo "-------------------------" >> TscanCodeResult.txt
done < aaa.txt
rm -f aaa.txt result.txt
vim TscanCodeResult.txt