一个统计自己代码行数的脚本

最近心血来潮,想看看自己平时写的乱七八糟的代码都有多少行了,就写了这个脚本。因为我的代码都写在了一个总目录里面,所以统计起来还算比较方便。

统计脚本是用shell写的,支持4个参数,-[qQhd],其中

h  :为帮助参数,显示如下的帮助信息

$ cntline.sh -h
Usage : cntline.sh -[qQhd]
    -q : not show dir
    -Q : not show file name
    -h : show this help message
    -d : only show dirs

q  :不显示目录,只显示文件和文件行数

Q  :不显示文件和目录,只显示总的代码行数

d  :只显示目录

脚本中还支持文件类型过滤,因为我主要搞C/C++方向,但是偶尔也学习一下其他的语言,所以增加了这么一个过滤的功能。不过过滤的选项还不能在命令的参数中体现,需要修改脚本中的过滤变量FILTER="\.cpp$|\.c$|\.html|\.h$|\.go$|\.py$|\.sh$"。另一个存在的问题是,只能从shell当前的目录开始进行统计~_~。

代码如下:(点开折叠就可以显示全部)

  1 $ cat bin/cntline.sh
  2 #!/bin/bash
  3
  4 ALL_LINE=0
  5 ALL_FILE=0
  6 FILES=""
  7 FILTER="\.cpp$|\.c$|\.html|\.h$|\.go$|\.py$|\.sh$"
  8 CVRT_FILTER=""
  9 BE_QUITE_DIR=1
 10 BE_QUITE_FILE=1
 11 SHOW_HELP=0
 12 ONLY_SHOW_DIR=0
 13
 14 function showHelp()
 15 {
 16     MY_NAME=`basename ${0}`
 17     echo "Usage : ${MY_NAME} -[qQhd]"
 18     echo -e "\t-q : not show dir"
 19     echo -e "\t-Q : not show file name"
 20     echo -e "\t-h : show this help message"
 21     echo -e "\t-d : only show dirs"
 22 }
 23
 24 set -- `getopt -q v:qQhd "[email protected]"`
 25 #echo -e "grev : [email protected]"
 26 while [ -n "$1" ]
 27 do
 28     case "$1" in
 29         -v)
 30         CVRT_FILTER="${CVRT_FILTER} $2"
 31         shift
 32         ;;
 33         -q)
 34         BE_QUITE_DIR=0
 35         shift
 36         ;;
 37         -Q)
 38         BE_QUITE_DIR=0
 39         BE_QUITE_FILE=0
 40         shift
 41         ;;
 42         -h)
 43         SHOW_HELP=1
 44         shift
 45         ;;
 46         -d)
 47         ONLY_SHOW_DIR=1
 48         shift
 49         ;;
 50     esac
 51     shift
 52 done
 53
 54 function showGrade()
 55 {
 56     if [ $# -gt 0 ] && [ $1 -gt 0 ]; then
 57         for ((i = 0; i < $1; i++)) ; do
 58             echo -n "   "
 59         done
 60     fi
 61 }
 62
 63 function a_count_dir()
 64 {
 65     local file_list=`ls -Sr . | grep -E ${FILTER}`
 66     local dir_list=`ls .`
 67     local CURT_DIR=`pwd`
 68
 69     if ! [ -z "${file_list}" ];then
 70         if [ ${BE_QUITE_DIR} -eq 1 ];then
 71             echo -e "${CURT_DIR}"
 72         fi
 73     fi
 74     # scan files
 75     for x in ${file_list} ; do
 76         if [ -f ${x} ]; then
 77             local count_line=`cat ${x} | wc -l`
 78             ALL_LINE=$[ ${ALL_LINE} + ${count_line} ]
 79             ALL_FILE=$[ ${ALL_FILE} + 1 ]
 80             if [ ${BE_QUITE_FILE} -eq 1 ];then
 81                 printf "%5d : %s\n" ${count_line} ${x}
 82             fi
 83         else
 84             continue
 85         fi
 86     done
 87
 88     # scan dirs
 89     for x in ${dir_list} ;do
 90         if [ -f ${x} ]; then
 91             continue
 92         else
 93             local NOE_DIR=`pwd`
 94             cd ${x}
 95             a_count_dir $[ ${1} + 1 ]
 96             cd ${NOE_DIR}
 97         fi
 98     done
 99 }
100
101 function count_dir()
102 {
103     a_count_dir 0
104     echo "all line : ${ALL_LINE}"
105     echo "all file : ${ALL_FILE}"
106 }
107
108 function showDir()
109 {
110     local CURRENT_DIR=`pwd`
111     echo -e "${CURRENT_DIR}"
112     local list=`ls`
113     for x in ${list}; do
114         if [ -f ${x} ];then
115             continue
116         else
117             local NOW_DIR=${CURRENT_DIR}
118             cd ${x}
119             showDir
120             cd ${NOW_DIR}
121         fi
122     done
123 }
124
125 if [ ${SHOW_HELP} -eq 1 ];then
126     showHelp
127     exit 0
128 fi
129
130 if [ ${ONLY_SHOW_DIR} -eq 1 ];then
131     showDir
132     exit 0
133 fi
134
135 count_dir

执行结果如下:

$ cntline.sh  -Q
all line : 90630
all file : 1136

在Q选项的情况下,不会显示目录和文件,只显示最后的代码统计结果。

时间: 2024-12-25 14:44:34

一个统计自己代码行数的脚本的相关文章

iOS开发 统计xcode代码行数

如果要统计ios开发代码,包括头文件的,终端命令进入项目目录下,命令如下 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs wc -l 列出每个文件的行数 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or

iOS 统计项目代码行数

最近去面试 对面的"他" 问我其中一个问题 是 "你的项目代码量是多少?" 当时的确有点蒙圈, 我可以从整个项目打包的角度考虑项目大小,我还真没想过到底我的项目代码量,于是我大概表达了一下 "我的确没从代码量考虑过项目,请教一下你们如何去统计的 如果统计项目代码量,用来干什么呢 " 然后对方回答的话我比较意外"用看的...就是看..." 大概是几个字略过去了 没有对我的疑问有任何价值性质的回应. 基于钻研精神,我后来还是问了我

统计python代码行数

addhosts项目已接近尾声,我很想知道我们写了多少行代码. 一.需求 统计源码目录下py文件的代码行数. 二.脚本分析 获取指定目录下所有的.py文件,对文件进行遍历: 读取每个文件,对文件内容进行遍历,过滤掉空行和注释: 三.实现及结果 #coding:utf-8 import os class StatLines(object):     def __init__(self,path):         self.path = path     def stat_lines(self):

Visual Studio使用正则表达式快速统计总共代码行数

按CTRL+SHIFT+F,勾上支持正则表达式,然后输入搜索内容: [csharp] view plaincopyprint? <span style="font-family:Microsoft YaHei;font-size:18px;">^:b*[^:b#/]+.*$</span>   说明:#开头和/开头或者空行都不计入代码量.如果需要只统计代码文件的代码量,可以选择查找文件的类型,比如什么*.xml, *.resx….可以不检查,只查*.cs,*.c,

Visual Studio统计有效代码行数

在网上看到别人用的方法: 按CTRL+SHIFT+F (Find in files),勾上支持正则表达式,然后输入搜索内容: ^:b*[^:b#/]+.*$ 以上表达式的统计可做到:#开头和/开头或者空行都不计入代码量.如果需要只统计代码文件的代码量,可以选择查找文件的类型,比如什么*.xml, *.resx….可以不检查,只查*.cs,*.c,*.h… 搜索出来以后最后一行就是代码行数了. 自己实践了一下,挺好用的.如图所示: 得到结果:

IOS开发 统计XCODE 代码行数

如果要统计ios开发代码,包括头文件的,终端命令进入项目目录下,命令如下 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs wc -l 列出每个文件的行数 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or

统计xcode代码行数

如果要统计ios开发代码,包括头文件的,终端命令进入项目目录下,命令如下 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs wc -l 列出每个文件的行数 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or

[Tips]统计Xcode代码行数

如果要统计Xcode文件代码行数,包括头文件的,终端命令进入项目目录下,命令如下 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs wc -l 列出每个文件的行数 find . -name "*.m" -or -name "*.h" -or -name "*.xib"

Atitit.Gui按钮与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数.

1. Kpi:::  代码行数(注释行数,空白的行数), 方法数,class数 1 2. 过滤器::: 扩展名过滤 1 3. SourceCounter 3.3 (2M) 1 4. 概览 2 5. 详细 3 6. 扩展名过滤 3 7. 导出html 3 8. OnlyJava 3 1. Kpi:::  代码行数(注释行数,空白的行数), 方法数,class数 2. 过滤器::: 扩展名过滤 作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected] 转载请注明