一种代码检测方法及装置与流程

文档序号:16811358发布日期:2019-02-10 13:41阅读:124来源:国知局
一种代码检测方法及装置与流程
本申请实施例涉及通信
技术领域
,尤其涉及一种代码检测方法及装置。
背景技术
:目前,许多开发商选择在原生操作系统(例如安卓)的原生代码上开发自己的扩展操作系统,例如,小米基于安卓的原生代码开发出的miui操作系统,华为基于安卓的原生代码开发出的emui(emotionuserinterface)操作系统等。这些扩展操作系统的代码可称为扩展代码,扩展代码一般是在原生代码的基础上对原生代码进行一些修改后得到的。例如,如图1所示,开发人员基于安卓版本3.0中的原生代码11,将该原生代码11中的第一代码段101修改为第二代码段102,得到扩展操作系统a的扩展代码12。而基于原生代码11的安卓版本3.0会不定期升级,那么,如果在升级安卓版本4.0的过程中上述第一代码段101被修改为第三代码段103,则升级后的原生代码11与扩展代码12在第三代码段103的位置出现冲突现象,此时,扩展操作系统a很可能无法兼容升级后的安卓版本4.0。需要开发人员对扩展代码12进行代码重组、功能重构等大量工作支持升级后的安卓版本4.0。技术实现要素:本申请的实施例提供一种代码检测方法及装置,可以降低因原生代码升级引发的原生代码与扩展代码之间的冲突现象,降低扩展代码对原生代码的破坏性。为达到上述目的,本申请的实施例采用如下技术方案:第一方面,本申请的实施例提供一种代码检测方法,包括:检测设备获取目标原生代码和目标扩展代码,该目标扩展代码为基于该目标原生代码得到的;进而,检测设备可通过比较该目标原生代码和该目标扩展代码,将该目标扩展代码划分为n个连续的代码块,n≥1;那么,检测设备可对该n个代码块中的至少一个代码块进行评估,从而得到该目标扩展代码的评估结果,该评估结果指示了该目标扩展代码发生冲突现象的几率;这样,检测设备显示该评估结果后,可以使得开发人员直观清楚的明确当前目标扩展代码对目标原生代码的破坏性越,以便开发人员准确对目标原生代码中容易发生冲突的地方准确定位,降低后续原生代码与扩展代码之间的冲突现象。在一种可能的设计方法中,该检测设备在显示界面中显示该评估结果,包括:该检测设备使用不同色块在显示界面中显示该n个代码块,其中,每个代码块的颜色用于指示该代码块的代码块类型,每个色块的大小用于指示该代码块的大小,不同代码块类型的代码块发生冲突现象的几率不同,从而形象的向用户展示出目标扩展代码中哪一部分容易发生冲突现象,以及发生冲突现象的严重程度等,方便用户对目标扩展代码进行优化。在一种可能的设计方法中,在该检测设备在显示界面中显示该评估结果之后,还包括:当检测到用户触发该n个代码块中第一代码块所在的色块时,该检测设备显示评估该第一代码块时的评估细节,使用户详细了解该代码块出现冲突的风险。在一种可能的设计方法中,由于不同代码块类型的代码块对原生代码的破坏性一般是不同的,因此,检测设备对该n个代码块中的至少一个代码块进行评估,得到该目标扩展代码的评估结果,包括:对于该至少一个n个代码块中的每个代码块,该检测设备按照该代码块的代码块类型对该代码块进行打分;该检测设备将得到的该至少一个代码块的打分信息作为该目标扩展代码的评估结果。在一种可能的设计方法中,除了代码块的代码块类型,目标扩展代码中每个代码块的大小以及代码块的总数,也会影响对目标原生代码的破坏性大小,因此,检测设备按照该代码块的代码块类型对该代码块进行打分,包括:该检测设备按照该代码块的代码块类型和该代码块的大小,对该代码块进行打分。在一种可能的设计方法中,该检测设备通过比较该目标原生代码和该目标扩展代码,将该目标扩展代码划分为n个连续的代码块,包括:该检测设备通过比较该目标原生代码和该目标扩展代码,将该目标扩展代码中与该目标原生代码连续相同的代码段落作为一个代码块,并将该目标扩展代码中与该目标原生代码连续不同的代码段落作为一个代码块,得到n个连续的代码块。在一种可能的设计方法中,检测设备获取目标原生代码和目标扩展代码,包括:该检测设备获取用户输入的采集路径;该检测设备根据该采集路径,采集该目标原生代码和该目标扩展代码。在一种可能的设计方法中,在该检测设备显示该评估结果之后,还包括:该检测设备在显示界面中显示对该目标扩展代码的修改策略;响应于用户对该修改策略的触发操作,该检测设备执行该修改策略。其中,该修改策略包括:转换代码块的代码块类型(即将目标扩展代码中发生冲突风险较大的代码块,转换为发生冲突风险较小的类型的代码块),和/或,合并该目标扩展代码中的至少两个代码块(使得目标扩展代码的代码块的总数越少、代码块的大小越大,从而降低目标扩展代码对目标原生代码的破坏性)。在一种可能的设计方法中,在该检测设备对该n个代码块中的至少一个代码块进行评估,得到该目标扩展代码的评估结果之后,还包括:当该评估结果不符合预设的入库条件时,该检测设备禁止该目标扩展代码从开发环境投入生产环境中的代码库运行。这样一来,可以严格把控投入代码库中运行的扩展代码的代码质量,有效避免对原生代码破坏性较大的扩展代码投入使用,从而降低因原生代码升级引发的原生代码与扩展代码之间的冲突现象。第二方面,本申请的实施例提供一种检测设备,包括:获取单元,用于获取目标原生代码和目标扩展代码,该目标扩展代码为基于该目标原生代码得到的;划分单元,用于通过比较该目标原生代码和该目标扩展代码,将该目标扩展代码划分为n个连续的代码块,n≥1;评估单元,用于对该n个代码块中的至少一个代码块进行评估,得到该目标扩展代码的评估结果,该评估结果用于指示该目标扩展代码发生冲突现象的几率;显示单元,用于显示该评估结果。在一种可能的设计方法中,该显示单元,具体用于使用不同色块在显示界面中显示该n个代码块,其中,每个代码块的颜色用于指示该代码块的代码块类型。在一种可能的设计方法中,该显示单元,还用于当检测到用户触发该n个代码块中第一代码块所在的色块时,显示评估该第一代码块时的评估细节。在一种可能的设计方法中,该评估单元,具体用于对于该至少一个n个代码块中的每个代码块,按照该代码块的代码块类型对该代码块进行打分;将得到的该至少一个代码块的打分信息作为该目标扩展代码的评估结果在一种可能的设计方法中,该评估单元,具体用于按照该代码块的代码块类型和该代码块的大小,对该代码块进行打分在一种可能的设计方法中,该划分单元,具体用于通过比较该目标原生代码和该目标扩展代码,将该目标扩展代码中与该目标原生代码连续相同的代码段落作为一个代码块,并将该目标扩展代码中与该目标原生代码连续不同的代码段落作为一个代码块,得到n个连续的代码块。在一种可能的设计方法中,该获取单元,具体用于获取用户输入的采集路径;根据该采集路径,采集该目标原生代码和该目标扩展代码。在一种可能的设计方法中,该显示单元,还用于备显示对该目标扩展代码的修改策略;该检测设备还包括执行单元,用于响应于用户对该修改策略的触发操作,执行该修改策略,该修改策略包括:转换代码块的代码块类型,和/或,合并该目标扩展代码中的至少两个代码块。在一种可能的设计方法中,执行单元,还用于当该评估结果不符合预设的入库条件时,禁止该目标扩展代码从开发环境投入生产环境中的代码库运行。第三方面,本申请的实施例提供一种检测设备,包括通过总线连接的处理器,存储器,输入设备以及输出设备,其中,该处理器,用于:获取目标原生代码和目标扩展代码,该目标扩展代码为基于该目标原生代码得到的;通过比较该目标原生代码和该目标扩展代码,将该目标扩展代码划分为n个连续的代码块,n≥1;对该n个代码块中的至少一个代码块进行评估,得到该目标扩展代码的评估结果,该评估结果用于指示该目标扩展代码发生冲突现象的几率;该输出设备,用于:显示该评估结果。在一种可能的设计方法中,该输出设备,具体用于:使用不同色块在显示界面中显示该n个代码块,其中,每个代码块的颜色用于指示该代码块的代码块类型。在一种可能的设计方法中,该输入设备,用于:检测用户触发该n个代码块中第一代码块所在的色块;该输出设备,还用于:显示评估该第一代码块时的评估细节。在一种可能的设计方法中,该处理器,具体用于:对于该至少一个代码块中的每个代码块,按照该代码块的代码块类型对该代码块进行打分;将得到的该至少一个n个代码块的打分信息作为该目标扩展代码的评估结果。在一种可能的设计方法中,该处理器,具体用于:按照该代码块的代码块类型和该代码块的大小,对该代码块进行打分。在一种可能的设计方法中,该处理器,具体用于:通过比较该目标原生代码和该目标扩展代码,将该目标扩展代码中与该目标原生代码连续相同的代码段落作为一个代码块,并将该目标扩展代码中与该目标原生代码连续不同的代码段落作为一个代码块,得到n个连续的代码块。在一种可能的设计方法中,该输入设备,还用于:获取用户输入的采集路径;该处理器,还用于:根据该采集路径,采集该目标原生代码和该目标扩展代码。在一种可能的设计方法中,该输出设备,还用于:在显示界面中显示对该目标扩展代码的修改策略;该输入设备,还用于:检测用户对该修改策略的触发操作;该处理器,还用于:执行该修改策略。在一种可能的设计方法中,该修改策略包括:转换代码块的代码块类型,和/或,合并该目标扩展代码中的至少两个代码块。在一种可能的设计方法中,该处理器,还用于:当该评估结果不符合预设的入库条件时,禁止该目标扩展代码从开发环境投入生产环境中的代码库运行。第四方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在上述任一项检测设备上运行时,使得检测设备执行上述任一项代码检测方法。第五方面,本申请实施例提供一种包含指令的计算机程序产品,当其在上述任一项检测设备上运行时,使得检测设备执行上述任一项代码检测方法。本申请的实施例中,上述检测设备的名字对设备本身不构成限定,在实际实现中,这些设备可以以其他名称出现。只要各个设备的功能和本申请的实施例类似,即属于本申请权利要求及其等同技术的范围之内。另外,第二方面至第五方面中任一种设计方式所带来的技术效果可参见上述第一方面中不同设计方法所带来的技术效果,此处不再赘述。附图说明图1为现有技术中原生代码与扩展代码发生冲突的场景示意图;图2为本申请实施例提供的一种代码检测方法的流程示意图;图3为本申请实施例提供的一种代码检测方法的场景示意图一;图4为本申请实施例提供的一种代码检测方法的场景示意图二;图5为本申请实施例提供的一种代码检测方法的场景示意图三;图6为本申请实施例提供的一种代码检测方法的场景示意图四;图7为本申请实施例提供的一种代码检测方法的场景示意图五;图8为本申请实施例提供的一种代码检测方法的场景示意图六;图9为本申请实施例提供的一种代码检测方法的场景示意图七;图10为本申请实施例提供的一种代码检测方法的场景示意图八;图11为本申请实施例提供的一种代码检测方法的场景示意图九;图12为本申请实施例提供的一种代码检测方法的场景示意图十;图13为本申请实施例提供的一种代码检测方法的场景示意图十一;图14为本申请实施例提供的一种代码检测方法的场景示意图十二;图15为本申请实施例提供的一种代码检测方法的场景示意图十三;图16为本申请实施例提供的一种代码检测方法的场景示意图十四;图17为本申请实施例提供的一种检测设备的结构示意图一;图18为本申请实施例提供的一种检测设备的结构示意图二。具体实施方式以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。为了清除阐述本申请实施例提供的一种代码检测方法,首先对实施例中将会出现的一些名称进行解释。原生代码,是指一些原生平台提供者发布的原生操作系统(例如,安卓、ios等)的初始代码,例如,安卓版本3.0的代码、安卓版本4.0的代码等,这些代码一般没有经过第三方开发商修改。扩展代码,是指第三方开发商,例如,原始设备制造商(originalequipmentmanufacturer,oem)或应用软件的开发者,为了实现一些特定功能和业务而在原生代码的基础上,对原生代码修改后得到的扩展操作系统(例如,华为的emui、小米的miui等)的代码。其中,对原生代码的修改具体可以包括在原生代码中增加新的代码字段、删除原生代码中的某些字段或者修改原生代码中的某些字段等,本申请实施例对此不作任何限制。冲突现象,是指扩展代码升级后,扩展代码(该扩展代码为基于升级前的原生代码得到的)与升级后的原生代码在同一修改点的代码出现差异的现象。冲突现象会增加扩展代码的运行风险,导致扩展代码可能无法支持升级后的原生代码的一些新特性,甚至出现扩展代码在升级后的原生代码上无法正常运行等问题。此时,开发人员需要花费大量的人力来进行代码重组、功能重构等工作,不仅浪费人力还会影响整个扩展操作系统的系统稳定性。对此,本申请的实施例提供一种代码检测方法,如图2所示,该方法包括:201、检测设备获取目标原生代码和目标扩展代码,该目标扩展代码为基于该目标原生代码得到的。其中,上述目标原生代码在整个原生代码中的位置,可以与上述目标扩展代码在整个扩展代码中的位置相同,例如,目标原生代码为第3页的1-20行,基于该目标原生代码开发出的目标扩展代码也为第3页的1-20行。或者,上述目标原生代码和目标扩展代码也可以是指实现同样功能的一段代码或函数,例如,目标原生代码为安卓版本3.0中实现指纹解锁功能的原生代码,而目标扩展代码为基于安卓版本3.0的emui中实现指纹解锁功能的扩展代码。示例性的,可以将本申请实施例中提供的代码检测方法制作成一个应用软件,这样,检测设备通过运行该应用软件便可以完成步骤201-206的代码检测方法。例如,当用户当启动代码检测功能(例如,开始运行上述应用软件)时,如图3所示,检测设备可以显示一个设置界面300,用户(例如,扩展代码的开发人员)在该设置界面300中可以输入需要提取的目标原生代码和目标扩展代码的采集路径301。其中,该采集路径301可以是一个本地路径(例如,检测设备d盘中的文件夹a),也可以是一个网络路径(例如,一个url链接地址)等任意可以抓取到代码本体的路径,本申请实施例对此不作任何限制。例如,对于linux系统,检测设备可以通过git地址抓取到用户指定的目标原生代码和目标扩展代码。进一步地,仍如图3所示,该设置界面300中还可以进一步设置采集范围302和/或采集周期303等约束条件,以提高目标原生代码和目标扩展代码的抓取效率。由于原生操作系统和扩展操作系统的代码数量是十分巨大的,那么,用户可以通过设置采集范围302,进一步在用户设置的采集路径301下筛选某一部分或某一类文件,例如,在采集范围302中设置采集后缀为“.java”的文件等。通过设置采集范围302可以有针对性的快速采集到用户所需的目标原生代码和目标扩展代码,而通过设置采集周期303可以保证采集到的目标原生代码和目标扩展代码的时效性。当然,本领域技术人员还可以根据实际应用场景或实际经验设置其他的约束条件,例如,设置采集日期等,本申请实施例对此不作任何限制。在步骤201中,检测设备可以根据用户输入的采集路径等设置信息,获取用户指定的目标原生代码和目标扩展代码。例如,当采集路径为本地路径时,检测设备可以将该本地路径下的目标原生代码和目标扩展代码拷贝至内存中;当采集路径为网络路径时,检测设备可以从该网络路径中下载目标原生代码和目标扩展代码至本地。当然,检测设备也可以预先设置默认的采集路径等设置信息,那么,通过该默认的设置信息,检测设备可以自动获取到上述目标原生代码和目标扩展代码,本申请实施例对此不作任何限制。可选的,当检测设备获取到上述目标原生代码和目标扩展代码后,检测设备可以进一步在其显示界面中向用户展示获取到的目标原生代码和目标扩展代码。进一步地,如图4所示,检测设备还可以在其显示界面中,将获取到的目标原生代码401和目标扩展代码402之间出现差异的段落标记出来(图4中通过加粗加下划线的标记方式举例),使得用户可以快速、直观的获知当前目标原生代码401和目标扩展代码402之间的差异。202、检测设备通过比较上述目标原生代码和目标扩展代码,将目标扩展代码划分为n个连续的代码块,n≥1。其中,上述代码块的划分原则为:目标扩展代码中与上述目标原生代码连续相同的代码段落可作为一个代码块,并且,目标扩展代码中与上述目标原生代码连续不相同的代码段落也可作为一个代码块。那么,如图5所示,检测设备通过比较图4所示的目标原生代码401和目标扩展代码402可以确定出:目标扩展代码402中第1-8行与目标原生代码401中的第1-8行相同,那么,可将目标扩展代码402中的第1-8行作为代码块1;目标扩展代码402中第9行与目标原生代码401中的第9行不相同,那么,可将目标扩展代码402中的第9行作为代码块2;目标扩展代码402中第10-12行与目标原生代码401中的第10-12行相同,那么,可将目标扩展代码402中的第10-12行作为代码块3,……,直至将目标扩展代码402划分为图4所示的7个连续的代码块。当然,仍如图5所示,对目标原生代码401划分代码块的过程也可以在检测设备的显示界面中显示出来,例如,通过分屏的方法显示目标原生代码401和目标扩展代码402,本申请实施例对此不作任何限制。203、检测设备分别对上述n个代码块中的至少一个代码块进行评估,得到整个目标扩展代码的评估结果。在检测设备中可以预先设置可能出现的代码块类型,例如,检测设备中预先存储有4中代码块类型。其中,类型1是指一个代码块在目标原生代码和目标扩展代码中完全相同的情况,例如,上述代码块1;类型2是指一个代码块在目标原生代码中没有出现,而在目标扩展代码中新增的情况,例如,上述代码块2;类型3是指一个代码块在目标原生代码中出现,而在目标扩展代码中被删除的情况;类型4是指一个代码块基于原生代码被修改的情况,例如,图5中目标扩展代码402的代码块6中整数类型(int)参数c2的取值从2修改为3。其中,对于代码块类型4,还可以进一步将其划分为不同的子类型,例如,当仅修改了变量时,其代码块类型为类型4-1;当仅修改了函数名时,其代码块类型为类型4-2;当仅修改了返回值时,其代码块类型为类型4-3;当同时修改了函数名和返回值时,其代码块类型为类型4-4等,本申请实施例对此不作任何限制。另外,不同代码块类型的代码块对原生代码的破坏性一般是不同的,也就是说,当目标原生代码升级后,目标扩展代码中不同代码块发生冲突现象的几率是不同的。例如,对于图5所示的代码块1而言,由于代码块1的类型为类型1,即代码块1与目标原生代码中相同位置处的代码1’完全相同,那么,如果目标原生代码中的代码1’升级时被修改,仅需将目标扩展代码中代码块1做相同的修改,即可使得目标扩展代码中代码块1兼容升级后的目标原生代码。也就是说,类型1的代码块对原生代码的破坏性较小,后续因代码升级引发冲突现象的几率也较小。而对于图5所示的代码块6而言,由于代码块6的类型为类型4,即代码块6与目标原生代码中相同位置处的代码6’相比进行了修改,那么,如果目标原生代码中的代码6’升级新特性时被修改,则此时目标扩展代码中的代码块6无法支持该新特性。也就是说,类型4的代码块对原生代码的破坏性较大,后续因代码升级引发冲突现象的几率也较大。那么,在步骤203中,检测设备可以根据上述n个代码块中的至少一个代码块(例如上述代码块1-7中的每一个代码块)的类型,对这至少一个代码块中的每个代码块进行评估,从而得到可反映目标扩展代码后续发生冲突风险的评估结果。例如,当检测设备对上述n个代码块中的x(x<n)个代码块分别评估后,可得到目标扩展代码中x个代码块的评估结果,这x个代码块的评估结果也可作为整个目标扩展代码的评估结果,一定程度反映出整个目标扩展代码的发生冲突现象的风险。而当检测设备对上述n个代码块中的每个代码块分别评估后,得到的n个代码块的评估结果可作为整个目标扩展代码的评估结果,该评估结果可全面的反映出整个目标扩展代码的发生冲突现象的风险。示例性的,可以通过打分制的方式,按照代码块的类型对每个代码块打分,例如,当一个代码块的代码块类型为类型1时,该代码块的分数为1分;当一个代码块的代码块类型为类型2或类型3时,该代码块的分数为3分;当一个代码块的代码块类型为类型4时,该代码块的分数为5分。这样,以图5所示的7个代码块为例,代码块1、代码块3、代码块5以及代码块7的打分均为1分,代码块2和代码块4的打分均为3分,代码块6的打分为5分。那么,整个目标扩展代码402的总分为:1*4+3*2+5=15分,此时,代码块的打分以及整个目标扩展代码402的总分等打分信息可以作为目标扩展代码402的评估结果。当然,检测设备还可以进一步根据整个目标扩展代码402的总分,为用户确定出该目标扩展代码402后续发生冲突现象的风险评估,此时,可以将该风险评估作为目标扩展代码402的评估结果。例如,当总分大于12时,目标扩展代码402的评估结果为:发生冲突现象的风险较大;当总分大于5小于12时,目标扩展代码402的评估结果为:发生冲突现象的风险一般;当总分小于5时,目标扩展代码402的评估结果为:发生冲突现象的风险较小。另外,如图6所示,检测设备还可以在其显示界面上将上述打分过程,以及评估结果展示给用户,使得用户能够直观的确定出目标扩展代码中不同代码块发生冲突现象的几率。进一步地,除了代码块的代码块类型,目标扩展代码中每个代码块的大小(例如,代码块中代码的行数)以及代码块的总数,也会影响对目标原生代码的破坏性大小。具体的,对于一份目标扩展代码,其代码块的总数越少,则说明与目标原生代码相比,该目标扩展代码的连续性越好,与目标原生代码的差异越小,对目标原生代码的破坏性越小。而当每个代码块的大小越大,则说明与目标原生代码相比,该目标扩展代码的连续性越好,对目标原生代码的破坏性越小。因此,在本申请另一些实施例中,检测设备还可以根据上述n个代码块中的每个代码块的类型、每个代码块的大小以及代码块的总数对目标扩展代码进行评估,以得到每个代码块后续发生冲突现象的风险。仍以图5所示的7个代码块为例,检测设备可以记录每一个代码块的类型和大小,进而,如表1所示,仍然可以通过打分制的方式,根据每个代码块的类型、每个代码块的大小对每个代码块打分。例如,检测设备内部可以存储有不同代码块类型所对应的分数,以及不同代码块大小所对应的分数,那么,检测设备可以根据这些对应关系确定每一个代码块的分数,最终,如表1所示,检测设备可以计算出整个目标扩展代码402的总分为:2+7+3+7+2+9+3=33分。表1代码块1代码块2代码块3代码块4代码块5代码块6代码块7类型1分3分1分3分1分5分1分大小1分4分2分4分1分4分2分总分2分7分3分7分2分9分3分那么,检测设备可以将上述每个代码块的打分以及计算出的整个目标扩展代码402的总分等打分信息作为目标扩展代码402的评估结果。也可以进一步根据整个目标扩展代码402的总分,为用户确定出该目标扩展代码402后续发生冲突现象的风险评估,并将该风险评估加入目标扩展代码402的评估结果中。需要说明的是,上述目标扩展代码可以是一个具体的函数,也可以是一份代码文件中的部分或全部代码,还可以是一组文件(比如一个文件夹内的,或一个路径下的所有代码文件),通过上述实施例,可以得到指定的目标扩展代码的评估结果。另外,以上实施例中均已打分制的方式举例说明评估目标扩展代码中代码块的具体方法,可以理解的是,本领域技术人员还可以根据实际应用场景或实际经验设置其他的评估方法,例如,通过大数据统计或者人工智能等技术手段评估目标扩展代码中代码块发生冲突现象的风险,本申请实施例对此不作任何限制。204、检测设备将上述评估结果展示给用户。在步骤204中,检测设备可以通过可视化手段,将步骤203中得到的评估结果形象、直观的展示给用户,方便用户能够直观的评估和分析出上述目标扩展代码对原生代码的破坏性,从而及时对该目标扩展代码进行修改,降低后续升级过程中发生冲突现象的几率。示例性的,如图7所示,检测设备可以在其显示界面中将表1所示的评估结果界面701展示给用户,其中,该评估结果界面701中显示有目标扩展代码中每一个代码块的打分情况,以及检测设备根据每个代码块的打分情况评估出的发生冲突现象的风险情况。进一步的,如图8所示,如果用户点击某个代码块或代码块的打分情况,或者将光标移动至相应代码块的位置。检测设备可以通过弹出悬浮窗702等形式向用户展示评估该代码块时的打分细节,例如,图8中的悬浮窗702显示了代码块6的代码块类型,代码块大小,风险等级以及修改策略等细节,如果用户确认执行该修改策略,则可由检测设备自动对代码块6进行修改和优化,本申请实施例对此不作任何限制。其中,检测设备确定代码块修改策略的方法将在步骤205中详细阐述,故此处不再赘述。又或者,检测设备还可以通过颜色以及色块的大小,在其显示界面中向用户展示上述评估结果。具体的,检测设备可以将不同的代码块类型标记为不同的颜色,例如,如图9所示,可以按照颜色的深浅变化,将发生冲突现象几率最大的代码块类型4标记为黑色,将发生冲突现象几率一般的代码块类型2和代码块类型3标记为灰色(图9中以斜线填充示意),将发生冲突现象几率较小的代码块类型1标记为白色。而色块的大小可以表示对应代码块的大小。那么,如图9所示,色块801用于指示代码块1,色块802用于指示代码块2,……,色块807用于指示代码块7。通过色块的具体位置、颜色和大小,可以形象的向用户展示出目标扩展代码中哪一部分容易发生冲突现象,以及发生冲突现象的严重程度等,方便用户对目标扩展代码进行优化。进一步的,如图10所示,还可以在每个色块中显示相应的代码块的具体代码,方便用户及时定位各个代码块中出现的问题。进一步的,如图11所示,如果用户点击某个色块,或者将光标移动至相应色块,则检测设备可以通过弹出悬浮窗820等形式向用户展示评估该色块中代码块时的打分细节,例如,图11中的悬浮窗820显示了代码块6的代码块类型,代码块大小,风险等级以及修改策略等细节,本申请实施例对此不作任何限制。另外,以上实施例中以表格和色块的方式举例说明向用户展示评估结果的具体方法,可以理解的是,本领域技术人员还可以根据实际应用场景或实际经验设置其他的可视化展示方法,本申请实施例对此不作任何限制。205、检测设备根据上述评估结果确定对上述目标扩展代码的修改策略。206、检测设备对目标扩展代码执行上述修改策略,以降低目标扩展代码对目标原生代码的破坏性。在一种可能的设计方法中,检测设备内可以预先存储有针对不同代码块类型的修改策略。例如,对于上述代码块6这种直接修改了int参数取值的类型4代码块,可以预置其修改策略为:将类型4的代码块优化为发生冲突风险较小的类型3的代码块,从而降低代码块6的打分,降低整个扩展代码对原生代码的破坏性。也就是说,如图12所示,检测设备可以通过对目标扩展代码进行语义分析,转化代码块6的代码块类型,将目标扩展代码中发生冲突风险较大的代码块6,转换为发生冲突风险较小的类型2的代码块。例如,在代码块6中,将目标原生代码“intc2=2”修改为“intc2=3”,这种直接修改变量取值的修改方式会增加后续发生冲突现象的几率,因此,检测设备可以将代码块6中“intc2=3”修改为:“intc2=2;intc4=3;c2=c4;”这样,与目标原生代码相比,目标扩展代码是在目标原生代码中“intc2=2”的基础上增加了两行代码,同样实现了将c2赋值为2的目的,但此时修改后的代码块6的代码块类型转化为了发生冲突风险较小的类型3,从而降低整个扩展代码对原生代码的破坏性。在另一种可能的设计方法中,检测设备还可以针对整个目标扩展代码的结构设置不同的修改策略。具体的,由于目标扩展代码的代码块的总数越少、代码块的大小越大时,对目标原生代码的破坏性越小,也就是说,目标扩展代码的色块越少、色块越大时,对目标原生代码的破坏性越小。因此,检测设备可以预设一些色块合并的修改策略,从而减小目标扩展代码的色块总数,增加每一个代码块的大小,从而降低整个目标扩展代码的打分(本申请中以目标扩展代码的打分越低,发生冲突风险越小举例),降低扩展代码对原生代码的破坏性。例如,如图13所示,检测设备通过对目标扩展代码进行语义分析,可以确认代码块4的设置位置不会对整个目标扩展代码的运行产生影响,那么,检测设备可以将代码块4与代码2合并,合并后的目标扩展代码中代码块的总数从7块降低为5块,代码块的大小也相应增加,从而降低整个目标扩展代码的打分。当然,如图14所示,检测设备还可以对上述目标扩展代码同时执行图12所示所示的转化代码块类型,以及图13所示的代码块合并这两种修改策略,进一步降低整个目标扩展代码的打分,从而降低扩展代码对原生代码的破坏性,减少后续发生冲突现象的几率。另外,在步骤206中,当检测设备确定出对上述目标扩展代码的修改策略后,可以自动执行该修改策略,也可以由用户手动触发检测设备执行该修改策略。例如,检测设备得到合并目标扩展代码中代码块4和代码2的修改策略后,可通过如图15所示的人机交互界面提示用户是否执行该修改策略,如果检测到用户点击人机交互界面中的确认按钮,则响应于该触发操作,检测设备将目标扩展代码中代码块4和代码2合并。当然,在向用户提示是否执行该修改策略时,还可以在该人机交互界面中设置可以由用户手动调整修改策略或执行该修改策略时的参数,例如,修改执行该修改策略的时间,需要合并的代码块的数量等,以便用户能够控制该修改策略的执行过程,提高目标扩展代码的修改效率。需要说明的是,本申请实施例中对步骤204和205之间的执行顺序不作任何限定。另外,在本申请实施例中,检测设备还可以根据上述评估结果设置目标扩展代码投入代码库的入库条件。例如,如图16中的(a)所示,该入库条件可以为:当目标扩展代码的总分大于预设参考值时,允许该目标扩展代码从开发环境投入生产环境中的代码库运行。又例如,如图16中的(b)所示,该入库条件还可以为:当目标扩展代码中不包含代码块类型4的代码块时,允许该目标扩展代码从开发环境投入生产环境中的代码库运行。当目标扩展代码不满足上述入库条件时,目标扩展代码无法入库,那么,开发人员需要对其进行进一步优化,直至满足该入库条件后才能将优化后的目标扩展代码从开发环境投入生产环境中的代码库运行。这样一来,可以严格把控投入代码库中运行的扩展代码的代码质量,有效避免对原生代码破坏性较大的扩展代码投入使用,从而降低因原生代码升级引发的原生代码与扩展代码之间的冲突现象。可以理解的是,上述检测设备等为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。本申请实施例可以根据上述方法示例对上述检测设备等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在采用对应各个功能划分各个功能模块的情况下,图17示出了上述实施例中所涉及的检测设备的一种可能的结构示意图,该检测设备包括:获取单元1101、划分单元1102、评估单元1103、显示单元1104以及执行单元1105。获取单元1101用于支持检测设备执行图2中的过程201;划分单元1102用于支持检测设备执行图2中的过程202;评估单元1103用于支持检测设备执行图2中的过程203;显示单元1104用于支持检测设备执行图2中的过程204;执行单元1105用于支持检测设备执行图2中的过程205-206。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应
发明内容中各个功能模块的功能描述,在此不再赘述。在采用集成的单元的情况下,图18示出了上述实施例中所涉及的检测设备的一种可能的结构示意图。该检测设备包括:包括通过总线1206连接的处理器1201,存储器1202,收发器1203(可选的),输入设备1204以及输出设备1205。处理器1201用于对检测设备的动作进行控制管理。收发器1203用于支持检测设备与其他网络实体的通信。该检测设备还可以包括存储器1202,用于存检测设备的程序代码和数据。该检测设备还可以包括输入设备1204以及输出设备1205,用于与用户实现交互,例如,输入设备1204可以为键盘、麦克风等;输出设备1205可以为显示器等。需要说明的是,在本发明实施例中,处理器1201可用于获取上述目标原生代码和目标扩展代码。其中,当上述目标原生代码(或目标扩展代码)存储在检测设备的存储器1202时,处理器1201可直接从存储器1202中获取该目标原生代码(或目标扩展代码);当上述目标原生代码(或目标扩展代码)存储在其他设备(例如网络侧的服务器)内时,处理器1201可以向收发器1203发送采集指令,由收发器1203从其他设备中下载该目标原生代码(或目标扩展代码)至本地存储器1202中。其中,处理器1201可以是中央处理器(centralprocessingunit,cpu),通用处理器,数字信号处理器(digitalsignalprocessor,dsp),专用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。存储器1202主要包括存储程序区以及存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等);存储数据区可以存储根据使用检测设备时所创建的数据。此外,存储器103可以包括高速随机存取存储器,还可以包括非易失存储器,例如磁盘存储器件、闪存器件或其他易失性固态存储器件等。存储器1202可以存储各种操作系统,例如,苹果公司所开发的操作系统,谷歌公司所开发的操作系统等。上述存储器1202可以是独立的,通过上述通信总线1206与处理器1201相连接;存储器1202也可以和处理器1201集成在一起。收发器1203可以是为外部的输入/输出设备(例如键盘、鼠标、外接显示器、外部存储器、用户识别模块卡等)提供各种接口、收发电路或通信接口等。在一些实施例中,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在上述检测设备上运行时,可使得检测设备执行上述实施例中所述的代码检测方法。在一些实施例中,本申请还提供一种包含指令的计算机程序产品,当所述计算机程序产品在上述检测设备上运行时,可使得检测设备执行上述实施例中任一项所述的代码检测方法。在上述实施例中,可以全部或部分的通过软件,硬件,固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式出现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,dvd)或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1