mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
add code statistic tool
This commit is contained in:
parent
cb64d20575
commit
5e806d62bb
1 changed files with 100 additions and 0 deletions
100
trunk/research/code-statistic/cs.py
Executable file
100
trunk/research/code-statistic/cs.py
Executable file
|
@ -0,0 +1,100 @@
|
|||
#!/usr/bin/python
|
||||
'''
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013-2014 winlin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
'''
|
||||
|
||||
#################################################################################
|
||||
# to stat the code and comments lines
|
||||
#################################################################################
|
||||
import sys
|
||||
|
||||
def trace(msg):
|
||||
print msg
|
||||
pass
|
||||
def info(msg):
|
||||
print msg
|
||||
pass
|
||||
def verbose(msg):
|
||||
#print msg
|
||||
pass
|
||||
|
||||
def process(f, code_file):
|
||||
info("process file success")
|
||||
(stat_code, stat_block_comments, stat_line_comments) = (0, 0, 0)
|
||||
is_block_comments = False
|
||||
is_line_comments = False
|
||||
for line in f.readlines():
|
||||
line = line.strip()
|
||||
if is_block_comments:
|
||||
if "*/" in line:
|
||||
verbose("[block][end] %s"%line)
|
||||
is_block_comments = False
|
||||
is_line_comments = False
|
||||
else:
|
||||
verbose("[block][cont] %s"%line)
|
||||
continue
|
||||
if line.startswith("/*"):
|
||||
verbose("[block][start] %s"%line)
|
||||
is_block_comments = True
|
||||
is_line_comments = False
|
||||
stat_block_comments += 1
|
||||
continue
|
||||
if line.startswith("//"):
|
||||
verbose("[line] %s"%line)
|
||||
is_block_comments = False
|
||||
is_line_comments = True
|
||||
stat_line_comments += 1
|
||||
continue
|
||||
verbose("[code] %s"%line)
|
||||
is_block_comments = False
|
||||
is_line_comments = False
|
||||
stat_code += 1
|
||||
total = stat_code + stat_block_comments + stat_line_comments
|
||||
comments = stat_block_comments + stat_line_comments
|
||||
trace("total:%s code:%s comments:%s block:%s line:%s file:%s"%(total, stat_code, comments, stat_block_comments, stat_line_comments, code_file))
|
||||
return (0, total, stat_code, comments, stat_block_comments, stat_line_comments, code_file)
|
||||
|
||||
def do_stat(code_file):
|
||||
f = None
|
||||
try:
|
||||
f = open(code_file, "r")
|
||||
info("open file success");
|
||||
return process(f, code_file)
|
||||
finally:
|
||||
if f is not None:
|
||||
f.close()
|
||||
info("close file success")
|
||||
return (-1, 0, 0, 0, 0, 0, None)
|
||||
|
||||
code_file = None
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) <= 1:
|
||||
print "to stat the code and comments lines"
|
||||
print "Usage: python %s <code_file>"%(sys.argv[0])
|
||||
print " code_file: the code(header or source) file to stat"
|
||||
print "Example:"
|
||||
print " python %s src/core/srs_core.hpp"%(sys.argv[0])
|
||||
sys.exit(-1)
|
||||
|
||||
code_file = sys.argv[1]
|
||||
info("stat %s"%(code_file))
|
||||
do_stat(code_file)
|
Loading…
Add table
Add a link
Reference in a new issue