一种代码分析方法及系统的制作方法

文档序号:6598802阅读:210来源:国知局
专利名称:一种代码分析方法及系统的制作方法
技术领域
本发明属于计算机软件领域,尤其涉及一种代码分析方法及系统。
背景技术
代码分析又称代码扫描或代码检查,主要检查源程序代码对标准的遵循程度、可读性高低、代码逻辑表达的正确性、代码结构的合理性等方面。通过代码分析可以发现程序中违背程序编写标准的问题,以及程序中不安全、不明确和模糊的部分,找出程序中重复或不可移植部分。代码分析包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。目前,实现代码分析的工具有很多,采用的技术方法大同小异,如图1所示,一般分为读取程序、分析器和报表展示三个部分,大部分工具都可以自定义检查规则,主要差别集中在检查规则的制定和分析器算法的不同。现有的代码分析工具存在如下缺点(1)分析效率低、耗时长、无法胜任企业级的代码管理;(2)代码读取和分析耦合在一起,当检查规则改变后,代码读取和代码分析工作需要重新做;(3)如分析的代码发生变动,只能再次从头执行分析程序,因此难以实现代码频繁变动时的分析;(4)更适用单个或少量代码文件的统计分析,面对庞大的代码库,无法做文件与文件之间的对比分析,例如函数调用情况、重复代码率、代码重用情况、模块划分情况等。

发明内容
本发明实施例的目的在于提供一种代码分析方法,旨在解决现有的代码分析效率低、灵活度差、不适应企业级代码分析的问题。本发明实施例是这样实现的,一种代码分析方法,所述方法包括下述步骤收集代码信息,建立索引库;根据配置的检查规则,查询所述索引库,获取查询结果;对所述查询结果进行代码分析,输出代码分析结果。本发明实施例的另一目的在于提供一种代码分析系统,所述系统包括索引单元,用于收集代码信息,建立索引库,并提供查询接口 ;代码分析器,用于根据配置的检查规则,通过所述查询接口查询所述索引库,获取查询结果,对查询结果进行代码分析,输出代码分析结果;以及代码分析展示单元,用于输出显示所述代码分析器输出的代码分析结果。本发明实施例搜集代码,建立索引,针对代码查询结果进行分析,实现了代码读取与代码分析相分离,极大提升了代码分析的效率和灵活度,能够实现企业级代码的分析管理,代码收集与索引可以通过搜索引擎实现。


图1是现有技术提供的代码分析的实现原理图;图2是本发明实施例提供的代码分析方法的实现流程图;图3是本发明实施例提供的代码分析系统的结构图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明实施例对代码进行搜集处理,建立索引库,利用高速查询接口进行查询,并对查询结果进行代码分析,能够大大提高代码分析的效率和灵活度,实现企业级代码的分
析管理。图2示出了本发明实施例提供的代码分析方法的实现流程,详述如下在步骤SlOl中,收集代码信息,建立索引库;作为本发明的一个实施例,利用搜索引擎收集代码信息,建立索引库。搜索引擎可以利用现有的搜索引擎,也可以自行开发。搜索引擎可以根据一定的策略搜集代码信息,对代码信息进行组织和处理后,输出处理后的代码信息,为后端代码分析提供检索服务。本发明实施例中的搜索引擎为全文搜索引擎,提取各个软件程序中的代码信息, 建立索引数据库,并能检索与查询条件相匹配的记录,按一定的排列顺序返回查询结果,具体过程如下1、抓取程序中的代码信息搜索引擎有相应的代码抓取程序(Web Crawler),可以从庞大的企业级程序代码库中连续地抓取各个程序中的代码信息。2、处理抓取的代码,建立索引库搜索引擎抓到代码信息后,要做大量的预处理工作,最重要的就是提取代码信息中的关键词,建立索引库。作为本发明的一个实施例,搜索引擎可以方便的监视目标程序的代码变动情况, 即使代码发生变化,只需要重新读取和分析变化的代码部分,因此可以适应代码频繁变动情况下的代码分析。在步骤S102中,根据配置的检查规则,查询索引库,获取查询结果;在本发明实施例中,代码分析时不直接对代码进行分析,而是基于搜索引擎提供的查询接口,根据配置的检查规则输入查询条件,查询索引库,对搜索引擎返回的查询结果进行统计分析,可以极大地提升统计和对比分析的效率。在步骤S103中,对查询结果进行分析,输出分析结果。在本发明实施例中,根据搜索引擎的查询结果,能够实现对庞大的源代码库中代码之间的对比分析,例如找出整个项目或企业内某个函数被调用情况等,还能够对代码作高层的逻辑分析,例如重复代码率、代码重用情况、模块划分情况等。本发明实施例通过将搜索引擎和代码分析器两种成熟的技术进行结合,利用搜索引擎收集文本信息的能力来收集代码信息,保存代码中的必要信息,按关键字创建索引,这样就具备了对代码库的全文搜索能力。代码分析时不直接对代码进行分析,而是基于搜索引擎提供的查询接口,对查询结果进行统计分析,可以极大地提升统计和对比分析的效率, 例如可以先检索出包含某个函数定义的代码文件,再对这些代码文件进行对比分析,判断这些函数内部是否也相同,以方便快捷地找出重复代码。图3示出了本发明实施例提供的代码分析系统的结构,为了便于说明,仅示出了与本发明实施例相关的部分。索引单元1收集代码信息,建立索引库,并提供查询接口。作为本发明的一个实施例,以搜索引擎作为索引单元,搜索引擎可以利用现有的搜索引擎,也可以自行开发。搜索器11发现和搜集程序中的代码信息。索引器12处理搜索器11所搜索到的代码信息,从中抽取出索引项,按关键字创建索引。索引库13存储索引器12创建的索引,例如索引表。检索器14向代码分析器2提供查询接口,根据代码分析器2提供的查询条件查询索引库13,输出查询结果。代码分析器2根据配置的检查规则,通过索引单元1提供的查询接口,查询索引库,获取查询结果,对查询结果进行代码分析,输出代码分析结果。在本发明实施例中,代码分析器2代码分析时不直接对代码进行分析,而是基于索引单元1提供的查询接口,根据配置的检查规则输入查询条件,查询索引库,对索引单元 1返回的查询结果进行统计分析,可以极大地提升统计和对比分析的效率。作为本发明的一个实施例,代码查询逻辑21根据配置的检查规则,生成并向代码搜索引擎1提供的查询接口输入查询条件,接收代码搜索引擎1返回的查询结果。代码分析逻辑22对查询结果进行代码分析,输出代码分析结果。在本发明实施例中,代码分析逻辑22根据搜索引擎的查询结果,能够实现对庞大的源代码库中代码之间的对比分析,例如找出整个项目或企业内某个函数被调用情况等, 还能够对代码作高层的逻辑分析,例如重复代码率、代码重用情况、模块划分情况等。代码分析展示单元3输出显示代码分析器2输出的代码分析结果。本发明实施例搜集代码,建立索引,针对代码查询结果进行分析,实现了代码读取与代码分析相分离,极大提升了代码分析的效率和灵活度,能够实现企业级代码的分析管理,代码收集与索引可以通过搜索引擎实现。具体而言,本发明实施例具有以下优点(1)可以分析庞大的代码库,可以实现企业级代码的分析管理;(2)将代码读取和代码分析分离,如果检查规则更改,只需重新做代码分析。同时, 基于高速的搜索查询接口,使得代码分析高效、迅速;(3)可以方便监视目标代码的变动情况,即使代码发生变化,只需要重新读取和分析变化部分,可以实现代码频繁变动时的分析;(4)扩大了代码分析的适用范围,尤其适用于代码数量巨大的大型项目,或者对整个企业全部代码的分析和监控,还可以实现跨项目的代码比对分析。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种代码分析方法,其特征在于,所述方法包括下述步骤 收集代码信息,建立索引库;根据配置的检查规则,查询所述索引库,获取查询结果; 对所述查询结果进行代码分析,输出代码分析结果。
2.如权利要求1所述的方法,其特征在于,所述收集代码信息,建立索引库的步骤具体为抓取程序中的代码信息;对抓取的代码进行处理,建立索引库。
3.如权利要求1或2所述的方法,其特征在于,所述收集代码信息,建立索引库通过搜索引擎实现。
4.如权利要求3所述的方法,其特征在于,所述搜索引擎为全文搜索引擎。
5.一种代码分析系统,其特征在于,所述系统包括 索引单元,用于收集代码信息,建立索引库,并提供查询接口 ;代码分析器,用于根据配置的检查规则,通过所述查询接口查询所述索引库,获取查询结果,对查询结果进行代码分析,输出代码分析结果;以及代码分析展示单元,用于输出显示所述代码分析器输出的代码分析结果。
6.如权利要求5所述的系统,其特征在于,所述索引单元为搜索引擎。
7.如权利要求6所述的系统,其特征在于,所述代码搜索引擎为全文搜索引擎。
8.如权利要求5、6或7所述的系统,其特征在于,所述代码分析器包括代码查询逻辑,用于根据配置的检查规则,生成并向所述代码搜索引擎提供的查询接口输入查询条件,接收所述代码搜索引擎返回的查询结果;以及代码分析逻辑,用于对所述查询结果进行代码分析,输出代码分析结果。
全文摘要
本发明适用于计算机软件领域,提供了一种代码分析方法及系统,所述方法包括下述步骤收集代码信息,建立索引库;根据配置的检查规则,查询所述索引库,获取查询结果;对所述查询结果进行代码分析,输出代码分析结果。本发明搜集代码,建立索引,针对代码查询结果进行分析,实现了代码读取与代码分析相分离,极大提升了代码分析的效率和灵活度,能够实现企业级代码的分析管理,代码收集与索引可以通过搜索引擎实现。
文档编号G06F11/36GK102193859SQ20101011840
公开日2011年9月21日 申请日期2010年3月3日 优先权日2010年3月3日
发明者白广元 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1