- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
功能单元最大行数解析
文档名称:功能单元最大有效行数
作 者:
日 期:
1 分析
功能单元这里指的是函数,即整个项目中所有.c文件的函数的最大有效行数,针对找到的开源工具,有个可以利用:C and C++ Code Counter
和makeheaders,其中C and C++ Code Counter在《功能单元最大扇入扇出工具分析》中已经介绍,其中有这样的功能,即列出所有函数的LOC。Makeheaders能够把.c文件中的全局变量和函数定义抽取出来,自动生成头文件。
因此一种思路是根据makeheaders和C and C++ Code Counter的代码抽取出来,在此基础上进行字符串的匹配,这种思路虽然可以实现,但是不如解析c的语法来实现可靠。第二种方法即是基于c的语法分析来实现。
本文的主要目的就是介绍搜集到的常用的c的解析器。
2 cscope
2.1 简介
度量工具名称 cscope 网址 / 操作方式 命令行 实现语言 C++ 适用的操作系统 Linux 可以度量的属性 LOC MVC COM LOC/COM MVG/COM
Fan-out Fan-in HKS NOM WMC REJ 备注 开源,有源代码,可分析后在基础上修改 Cscope的功能通过它的子命令“find”来实现。
cs find c|d|e|g|f|i|s|t name
s:查找C代码符号
g:查找本定义
d:查找本函数调用的函数
c:查找调用本函数的函数
t:查找本字符串
e:查找本egrep模式
f:查找本文件
i:查找包含本文件的文件
Cscope是ATT官方发布的Unix的一部分,cscope 是一个 C 语言的浏览工具,通过这个工具可以很方便地找到某个函数或变量的定义位置、被调用的位置等信息。目前支持 C 和 C++。cscope 自身带一个基于文本的用户界面,不过 gvim 提供了cscope接口,因此可以在 gvim 中调用 cscope,方便快捷地浏览源代码。在http://iamphet.nm.ru/cscope/有Sergey Khorev预编译的一个Win32版本的cscope,这个版本的cscope可以很好的与windows版本的vim搭配使用。Cscope安装
./configure
make
make install
cscope -Rbq
3. 运行cscope,出现下面菜单:
Find this C symbol:
Find this function definition:
Find functions called by this function:
Find functions calling this function:
Find this text string:
Change this text string:
Find this egrep pattern:
Find this file:
Find files #including this file:
3 Flex+Bison
3.1 简介
度量工具名称 Flex+Bison 网址 /software/bison/ 操作方式 命令行 实现语言 C 适用的操作系统 Linux 可以度量的属性 备注 一些介绍本工具的网址:
/woaidongmao/archive/2008/11/23/67635.html
/woaidongmao/archive/2008/11/30/68226.html
3.1.1 FLEX
是一个自动化工具,可以按照定义好的规则自动生成一个C函数yylex(),也成为扫描器(Scanner)。这个C函数把文本串作为输入,按照定义好的规则分析文本串中的字符,找到符合规则的一些字符序列后,就执行在规则中定义好的动作(Action)。例如在规则中可以这样定义:如果遇到一个换行字符\n,那么就把行计数器的值加一。
Flex文件就是一个文本文件,内容包括定义好的一系列词法规则。文件的命名习惯上以小写字母l(L)来作为文件后缀。如果为了清晰,也可以用.flx或者.flex作为文件的后缀名。Flex文件完成后,就执行下列命令:
$ flex example.flex
这个命令执行后将生成一个C文件,默认文件名为lex.yy.c。这个C文件主要内容就是函数yylex()的定义。
文档评论(0)