文档词频分析小工具

今天正打算看代码,忽然感觉一个代码分析的工具还是必不可少……之前下载的Understand什么的,用起来各种不好用是真的……所以今天拿python先写了一个词频分析的小工具,花了好几个小时 = =# 因为写的时候发现python好多函数也并不知道,一边写一遍百度。然而还是有点着急,好多模块并没有弄清楚,先mark一下以后再说:
1. codes: 以其他格式读写文件;但是没成功,我后来用 file.read().decode(‘utf-8’)也不好用,说是ascii码转换不了什么的种种;
2. re:正则表达式;因为要匹配的字符还包含各种括号引号斜杠,也是没有用好,干脆直接split循环暴力解决了最后;
3. 最后输出的时候中文字符串全部没有输出,取而代之输出到目标文件中的是一个空字符,而且显示这个空字符的数量是最庞大的了,所以应该就是代表中文字符串


好了进入正文
不贴代码也不写注释了因为9点了宝宝要回家了嗷嗷嗷 0.0 ……

全局配置……

g_readfilepath = "E:/XXX/"
f_writefilename = "E:/test.txt"
g_file_postfix = ('.cpp', '.h', '.ipp', )
g_split_char = ('!', ' ', '#', '"', "'", '&', ')', '(', '+', '*', '-', ',', '/', '.', ';', ':', '=', '<', '>', '[', ']', '\\', '{', '}', '|', '~', )
g_split_re = '[!#&)(+*-,/.;:=<>}|~]'
g_wordchar = frozenset(('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', '', 'v', 'w', 'x', 'y', 'z', 
    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', '', 'V', 'W', 'X', 'Y', 'Z', 
    '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '_', ))
g_ifIgnoreSysWord = True
g_word = frozenset(('const', 'if', 'return', 'void', 'virtual', 'class', 
    'int', 'char', 
    'true', 'false', ))
g_ifIgnoreDigit = True

类……

class FileNode(object):pass
class FileTree(FileNode):pass

函数……

def ifCareFile(filename):pass
def splitStr(string):pass
def analysisUnwordchar(file_tree):pass #这个只用来输出上边的g_split_char
def analysisWord(file_tree):pass
def printSort_file(analysisRes, writefilename):pass

def main():
    file_tree = FileTree(g_readfilepath)
    ana_res = analysisWord(file_tree)
    printSort_file(ana_res, f_writefilename)

我分析了一个文件,速度居然还挺快……是我小看python了……

 - 2320586
GetWndManager - 38765
getResourceManager - 37081
cacheUIR - 36754
AddCustomizedPosition - 21516
parent - 15876
CLRect - 15831
AddCustomizedRect - 14823
id - 14755
infoMap - 13139
Create - 13003
ParseXml - 12554
InitID - 12454
InitPosition - 12450
this - 11563
i - 11056
。。。

统计后感:

  1. 我发现用到的最多的是死代码……也就是程序生成的那部分代码……如何找到关键函数还是任重道远啊
  2. 0乃数字之最!其次是1280和768……其次是1 =。=
  3. 前四个系统关键字是 void、int、if、virtual
  4. 下一步可以开始考虑分析类层次和类调用了,因为顺便输出了下某个大文件夹下所有文件数量发现也不过2000来个~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值