cpplint使用技巧
李开复微博爆谷歌公开 C++编码规范 称全球最好, 开复认证,值得信赖@@@
这篇文档确实值得去细看,不过条条框框太多,不强制,执行起来有困难.
幸好文章有提到一个好工具:cpplint .这个工具非常之好用, 具体的教程网上搜,有一大堆.
如果你试用过,你会发现它能检查出一大堆的风格问题,如果你只有1个显示器,你修改一个错误的过程将会是如下:
1.查看错误行号
2.用vim打开文件,找到对应的文件位置,根据需要修改.
3.保存文件,退出vim.
4.查看下一个错误行号,如此反复.
这个过程实在是不方便.
所以,我修改了一下这个调用接口.直接把错误信息当成注释 一次放入 源文件中,然后只需要打开一次源文件,依次修改.
修改完成之后,再调用清理注释接口,删除之前插入的内容.整个过程一气呵成!
只用简单的几行脚本:
#!/bin/bash
#
# add the error info to source file from cpplint.py
# after file is modified, clean the error info
# khb.hnu@gmail.com
#
if [ "$1" == "-h" -o $# -eq 0 ];then
echo "Clean comment: cpplint -c file1 file2 ..."
echo " Gen comment: cpplint file1 file2 ..."
exit 1
fi
# clean the comment
if [[ "$1" == "-c" ]];then
shift 1
for file in $(ls $@);do
sed -i "/CPPLINT/d" ${file}
done
exit 1
fi
# generate the comment
for file in $(ls $@);do
cp ${file} ${file}.bak # backup the original file for safety
cpplint.py ${file} 2> tmp
cat tmp | grep "^${file}" |grep -v "copyright message found" \
| awk 'BEGIN{FS=":";OFS=":"}{print $2,$3}' | sort -t\: -n -k1 >${file}.lint
IFS=':'
num=0
while read line_no comment; do
sed -i "$((num+line_no)) i\
// [CPPLINT] ${comment}" ${file}
num=$((num+1))
done < ${file}.lint
done
rm -f tmp ${file}.lint