分类: LINUX
2011-10-12 14:35:10
| #! /bin/bash |
| # |
| # 计算有效变更代码量的脚本 |
| # 包括注释,但不包括新增的空行 |
| # |
| version() { |
| OS=`uname -o` |
| echo "Source_counter ($OS) 0.0.1" |
| echo " tony bai ()" |
| } |
| usage() { |
| echo "usage: source-counter [-t SVN_REPOSITORY_URL] [-s START_REVISION]" |
| echo " [-e END_REVISION] [-u USER_NAME]" |
| echo " [-p PASSWD]" |
| echo " source-counter [-v|-h]" |
| echo |
| echo " -t, 目标SVN库地址" |
| echo " -s, 起始修订号" |
| echo " -e, 结束修订号" |
| echo " -u, svn帐号" |
| echo " -p, svn密码" |
| echo " -h, 帮助" |
| echo " -v, 版本信息" |
| } |
| if [ $# -lt 2 ]; then |
| usage |
| exit 1 |
| fi |
| while getopts "t:s:e:u:p:vh" opt; do |
| case $opt in |
| t) target=$OPTARG;; |
| s) start_revision=$OPTARG;; |
| e) end_revision=$OPTARG;; |
| u) user=$OPTARG;; |
| p) passwd=$OPTARG;; |
| v) version; exit 1;; |
| h) usage; exit 1;; |
| esac |
| done |
| if [ -z $target ]; then |
| echo "请输入目标SVN库地址!" |
| exit 1 |
| fi |
| if [ -z $start_revision ]; then |
| echo "请输入起始修订号!" |
| exit 1 |
| fi |
| if [ -z $end_revision ]; then |
| echo "请输入终止修订号!" |
| exit 1 |
| fi |
| TEMPFILE=temp.log |
| USERNAME=${user:-} |
| PASSWD=${passwd:-} |
| svn diff -r$start_revision:$end_revision $target $USERNAME $PASSWD > $TEMPFILE |
| add_lines_count=`grep "^+" $TEMPFILE|grep -v "^+++"|sed 's/^.//'|sed '/^$/d'|wc -l` |
| rm -fr $TEMPFILE |
| echo "the actually incremental source code lines = $add_lines_count" |
leanderlee2011-10-13 09:16:00
#统计源代码行数
find . -name "*.[ch]" -o -name "*.cpp" -exec cat {} \; | sed '/^$\|\/\/\|\/\*|\*\//d' | wc -l