代码检测方法及装置制造方法及图纸

技术编号:12862269 阅读:49 留言:0更新日期:2016-02-13 10:53
本发明专利技术公开一种代码检测方法及装置,本发明专利技术实施例代码检测工具接收代码检测的触发指令,识别所述触发指令的指令类型;并根据具体的所述指令类型,调用通用规则库和/或扩展规则库对待检测代码进行静态扫描;获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测报告;推送生成的所述检测报告;提高了代码检测的范围及针对性,避免了代码中可能存在的典型错误,同时也提高了代码运行的稳定性、可维护性及对应代码映射的产品功能的一致性。

【技术实现步骤摘要】

本专利技术涉及计算机技术,尤其涉及一种代码检测方法及装置
技术介绍
由于通常需要对编译好的代码进行检查,特别是对于代码变更比较频繁的项目,因此,除了人工检查提交的代码之外,还需要有自动化工具来监控代码的变更,从而扫描并检查代码中所存在的缺陷以及不符合规范的代码。目前由于代码种类繁多且代码运行的系统平台也多种多样,比如安卓Android系统平台、苹果公司1s系统平台等,且不同的平台对应了不同的机型;tl^n,Android平台碎片化严重,机型品牌繁多且系统版本各异,在开发Android操作系统对应的应用软件时,同一应用软件的部分功能需要针对不同机型或者操作系统版本等不同方面的适配来保证该应用软件具备较好的兼容性;因此,在开发出上述应用软件对应的代码时,需要对于上述代码进行检测。但目前代码扫描工具所使用的规则库中,仅收集了同一编程语言对应的代码通用问题,无法检测到需要进行机型版本适配的代码以及某一操作系统中的典型代码缺陷和不符合相应代码规范等代码所存在的非通用问题。
技术实现思路
鉴于以上内容,有必要提供一种代码检测方法及装置,旨在提高代码检测的范围及针对性。本专利技术实施例提供一种代码检测方法,包括以下步骤:接收代码检测的触发指令,识别所述触发指令的指令类型;在所述指令类型指向通用规则库时,调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,调用通用规则库和扩展规则库对待检测代码进行静态扫描;获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测?艮告;推送生成的所述检测报告。本专利技术实施例还提供一种代码检测装置,包括:代码扫描模块,用于接收代码检测的触发指令,识别所述触发指令的指令类型;在所述指令类型指向通用规则库时,调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,调用通用规则库和扩展规则库对待检测代码进行静态扫描;报告生成模块,用于获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测报告;信息推送模块,用于推送生成的所述检测报告。本专利技术实施例代码检测工具接收代码检测的触发指令,识别所述触发指令的指令类型;并根据具体的所述指令类型,调用通用规则库和/或扩展规则库对待检测代码进行静态扫描;获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测报告;推送生成的所述检测报告;提高了代码检测的范围及针对性,避免了代码中可能存在的典型错误,提高了代码运行的稳定性、可维护性及对应代码映射的产品功能的一致性。【附图说明】图1是本专利技术代码检测方法第一实施例流程示意图;图2是根据图1所描述的代码检测方法生成的检测报告一实施例界面示意图;图3是中图2所示的检测报告对应的警告内容一实施例界面示意图;图4是本专利技术代码检测方法中扫描得出的待检测代码对应的项目模块依赖关系一实施例功能模块示意图;图5是本专利技术代码检测方法第二实施例流程示意图;图6是本专利技术代码检测装置第一实施例功能模块示意图;图7是本专利技术代码检测装置第二实施例功能模块示意图;图8是本专利技术代码检测装置一实施例硬件架构示意图。本专利技术实施例目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。【具体实施方式】以下结合说明书附图及具体实施例进一步说明本专利技术的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术实施例代码检测方法及装置适用于任意类型的代码检测环境中,所述代码包括但不限于使用Java语言编写的代码,本实施例对编写待检测代码所使用的编程语言不进行限定;另外,所述代码运行的操作系统可以是主流的Android操作系统、1s操作系统以及windows操作系统,也可以是塞班系统、微软操作系统等,本专利技术实施例对待检测代码运行的操作系统也不进行限定。请参照图1,图1是本专利技术代码检测方法第一实施例流程意图;如图1所不,本专利技术代码检测方法包括以下步骤:步骤S11、接收代码检测的触发指令,识别所述触发指令的指令类型;步骤S12、在所述指令类型指向通用规则库时,调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,调用通用规则库和扩展规则库对待检测代码进行静态扫描;接收到代码检测的触发指令时,代码检测工具响应所述触发指令,并识别所述触发指令的指令类型;本专利技术实施例中,由于在代码检测工具进行代码检测时,在不同的应用场景所使用的检测方式不同,即在不同的应用场景中,选择使用不同的规则库进行代码扫描。根据识别出的所述触发指令的指令类型,代码检测工具选择不同的规则库对待检测代码进行静态扫描。在所述指令类型指向通用规则库时,调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,调用预先存储的通用规则库和扩展规则库,对待检测代码进行静态扫描;比如,代码检测工具扫描待检测代码中是否存在与所述通用规则库和/或扩展规则库相匹配的代码。对代码进行静态扫描可以理解为:在不运行上述代码的方式下,通过词法分析、语法分析、控制流分析等技术对上述代码进行扫描,从而验证扫描的所述代码是否满足针对所述代码所要求的规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。其中,所述词法分析可以理解为:计算机科学中将字符序列转换为单词序列的过程;所述语法分析可以理解为:在所述词法分析的基础上,将单词序列组合成各类语法短语、语句、表达式等。本专利技术实施例中,所述通用规则库和扩展规则库可以理解为:根据待检测代码的类型、待检测代码的运行环境以及对该待检测代码的具体要求所设置的或者说所定义的不符合相应要求或规范的规则库;该自定规则库中存储了不符合要求代码,比如典型错误代码、典型代码缺陷、不符合项目设计规范的代码、不符合产品设计规范的代码等。在本专利技术一优选实施例中,所述通用规则库可以理解为:静态代码扫描工具映射的通用规则库,比如代码扫描工具FindBugs以及PWD对应的已有规则库等;所述扩展规则库可以理解为:所述待检测代码映射的扩展规则库,比如,针对待检测代码的特点或者用途或者使用环境等,设置所述待检测代码所需的代码规范、设计规范、异常退出问题以及所述待检测代码运行系统典型问题所对应的规则,比如产品设计规范、团队代码规范、项目代码规范以及Android系统典型问题和项目可能出现的crash问题等对应的规则。步骤S13、获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测报告;在代码检测工具对代码进行静态扫描的过程中,如果代码检测工具所扫描到的代码命中所述通用规则库和/或扩展规则库中的规则,则表示该代码与所述通用规则库和/或扩展规则库中的规则相匹配。此时,代码检测工具获取与所述通用规则库和/或扩展规则库相匹配的代码,即与所述通用规则库和/或扩展规则库相匹配的代码本文档来自技高网...

【技术保护点】
一种代码检测方法,其特征在于,包括以下步骤:接收代码检测的触发指令,识别所述触发指令的指令类型;在所述指令类型指向通用规则库时,调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,调用通用规则库和扩展规则库对待检测代码进行静态扫描;获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测报告;推送生成的所述检测报告。

【技术特征摘要】

【专利技术属性】
技术研发人员:林钊武
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1