代码检测方法及装置的制造方法

文档序号:9564519阅读:249来源:国知局
代码检测方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术,尤其涉及一种代码检测方法及装置。
【背景技术】
[0002]由于通常需要对编译好的代码进行检查,特别是对于代码变更比较频繁的项目,因此,除了人工检查提交的代码之外,还需要有自动化工具来监控代码的变更,从而扫描并检查代码中所存在的缺陷以及不符合规范的代码。
[0003]目前由于代码种类繁多且代码运行的系统平台也多种多样,比如安卓Android系统平台、苹果公司1s系统平台等,且不同的平台对应了不同的机型;tl^n,Android平台碎片化严重,机型品牌繁多且系统版本各异,在开发Android操作系统对应的应用软件时,同一应用软件的部分功能需要针对不同机型或者操作系统版本等不同方面的适配来保证该应用软件具备较好的兼容性;因此,在开发出上述应用软件对应的代码时,需要对于上述代码进行检测。但目前代码扫描工具所使用的规则库中,仅收集了同一编程语言对应的代码通用问题,无法检测到需要进行机型版本适配的代码以及某一操作系统中的典型代码缺陷和不符合相应代码规范等代码所存在的非通用问题。

【发明内容】

[0004]鉴于以上内容,有必要提供一种代码检测方法及装置,旨在提高代码检测的范围及针对性。
[0005]本发明实施例提供一种代码检测方法,包括以下步骤:
[0006]接收代码检测的触发指令,识别所述触发指令的指令类型;
[0007]在所述指令类型指向通用规则库时,调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,调用通用规则库和扩展规则库对待检测代码进行静态扫描;
[0008]获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测?艮告;
[0009]推送生成的所述检测报告。
[0010]本发明实施例还提供一种代码检测装置,包括:
[0011]代码扫描模块,用于接收代码检测的触发指令,识别所述触发指令的指令类型;在所述指令类型指向通用规则库时,调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,调用通用规则库和扩展规则库对待检测代码进行静态扫描;
[0012]报告生成模块,用于获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测报告;
[0013]信息推送模块,用于推送生成的所述检测报告。
[0014]本发明实施例代码检测工具接收代码检测的触发指令,识别所述触发指令的指令类型;并根据具体的所述指令类型,调用通用规则库和/或扩展规则库对待检测代码进行静态扫描;获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测报告;推送生成的所述检测报告;提高了代码检测的范围及针对性,避免了代码中可能存在的典型错误,提高了代码运行的稳定性、可维护性及对应代码映射的产品功能的一致性。
【附图说明】
[0015]图1是本发明代码检测方法第一实施例流程示意图;
[0016]图2是根据图1所描述的代码检测方法生成的检测报告一实施例界面示意图;
[0017]图3是中图2所示的检测报告对应的警告内容一实施例界面示意图;
[0018]图4是本发明代码检测方法中扫描得出的待检测代码对应的项目模块依赖关系一实施例功能模块示意图;
[0019]图5是本发明代码检测方法第二实施例流程示意图;
[0020]图6是本发明代码检测装置第一实施例功能模块示意图;
[0021]图7是本发明代码检测装置第二实施例功能模块示意图;
[0022]图8是本发明代码检测装置一实施例硬件架构示意图。
[0023]本发明实施例目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
【具体实施方式】
[0024]以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0025]本发明实施例代码检测方法及装置适用于任意类型的代码检测环境中,所述代码包括但不限于使用Java语言编写的代码,本实施例对编写待检测代码所使用的编程语言不进行限定;另外,所述代码运行的操作系统可以是主流的Android操作系统、1s操作系统以及windows操作系统,也可以是塞班系统、微软操作系统等,本发明实施例对待检测代码运行的操作系统也不进行限定。
[0026]请参照图1,图1是本发明代码检测方法第一实施例流程意图;如图1所不,本发明代码检测方法包括以下步骤:
[0027]步骤S11、接收代码检测的触发指令,识别所述触发指令的指令类型;
[0028]步骤S12、在所述指令类型指向通用规则库时,调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,调用通用规则库和扩展规则库对待检测代码进行静态扫描;
[0029]接收到代码检测的触发指令时,代码检测工具响应所述触发指令,并识别所述触发指令的指令类型;本发明实施例中,由于在代码检测工具进行代码检测时,在不同的应用场景所使用的检测方式不同,即在不同的应用场景中,选择使用不同的规则库进行代码扫描。
[0030]根据识别出的所述触发指令的指令类型,代码检测工具选择不同的规则库对待检测代码进行静态扫描。在所述指令类型指向通用规则库时,调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,调用预先存储的通用规则库和扩展规则库,对待检测代码进行静态扫描;比如,代码检测工具扫描待检测代码中是否存在与所述通用规则库和/或扩展规则库相匹配的代码。
[0031]对代码进行静态扫描可以理解为:在不运行上述代码的方式下,通过词法分析、语法分析、控制流分析等技术对上述代码进行扫描,从而验证扫描的所述代码是否满足针对所述代码所要求的规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。其中,所述词法分析可以理解为:计算机科学中将字符序列转换为单词序列的过程;所述语法分析可以理解为:在所述词法分析的基础上,将单词序列组合成各类语法短语、语句、表达式等。
[0032]本发明实施例中,所述通用规则库和扩展规则库可以理解为:根据待检测代码的类型、待检测代码的运行环境以及对该待检测代码的具体要求所设置的或者说所定义的不符合相应要求或规范的规则库;该自定规则库中存储了不符合要求代码,比如典型错误代码、典型代码缺陷、不符合项目设计规范的代码、不符合产品设计规范的代码等。
[0033]在本发明一优选实施例中,所述通用规则库可以理解为:静态代码扫描工具映射的通用规则库,比如代码扫描工具FindBugs以及PWD对应的已有规则库等;所述扩展规则库可以理解为:所述待检测代码映射的扩展规则库,比如,针对待检测代码的特点或者用途或者使用环境等,设置所述待检测代码所需的代码规范、设计规范、异常退出问题以及所述待检测代码运行系统典型问题所对应的规则,比如产品设计规范、团队代码规范、项目代码规范以及Android系统典型问题和项目可能出现的crash问题等对应的规则。
[0034]步骤S13、获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测报告;
[0035]在代码检测工具对代码进行静态扫描的过程中,如果代码检测工具所扫描到的代码命中所述通用规则库和/或扩展规则库中的规则,则表示该代码与所述通用规则库和/或扩展规则库中的规则相匹配。此时,代码检测工具获取与所述通用规则库和/或扩展规则库相匹配的代码,即与所述通用规则库和/或扩展规则库相匹配的代码均为不符合要求的代码,比如该匹配代码不符合项目设计规范或者不符合产品设计规范或者项目出现的crash问题或者Android系统典型问题等。其中,所述crash问题可以理解为:该程序遇到未知问题时,运行出错并自动退出的情况,或者程序运行崩溃的情况。
[0036]当扫描出与所述通用规则库和/或扩展规则库匹配的不符合要求的代码时,代码检测工具生成包含上述匹配代码对应的警告信息的检测报告。若代码检测工具从待检测代码中,没有扫描出与所述通用规则库和扩展规则库相匹配的代码,则表示上述代码不存在与通用规则库和扩展规则库匹配的代码,则代码检测工具根据预先设置的操作,发送检测通过的提示信息或者不执行任何操作,由用户确定是否再次触发对应的操作操作,或者人工进行代码检测。
[0037]步骤S14、推送生成的所述检测报告。
[0038]代码检测工具生成上述检测报告后,将生成的所述检测报告推送至用户;进而由用户根据
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1