增量代码分析方法、装置、设备及介质制造方法及图纸

技术编号:37679186 阅读:17 留言:0更新日期:2023-05-26 04:45
本公开提供了一种增量代码分析方法、装置、设备及存储介质,所述方法包括:响应于对目标项目的增量代码分析请求,从服务器预先缓存的多个项目分别对应的全量编译信息中,获取目标项目对应的全量目标编译信息,其中,全量编译信息是在对多个项目中的任意一个项目完成全量代码分析之后缓存至服务器的编译信息;从全量目标编译信息中确定增量代码分析请求对应的编译信息,作为目标项目对应的增量目标编译信息;对增量目标编译信息进行增量代码分析,得到目标项目的增量分析结果。由此,在进行增量代码分析时,直接从服务器的缓存中调用目标项目对应的全量目标编译信息进行增量代码分析,保证了分析精度和分析效率。保证了分析精度和分析效率。保证了分析精度和分析效率。

【技术实现步骤摘要】
增量代码分析方法、装置、设备及介质


[0001]本公开涉及计算机软件
,尤其涉及一种增量代码分析方法、装置、设备及介质。

技术介绍

[0002]随着计算机技术的快速发展,很多业务都需要在线上进行,并且业务的复杂度逐渐提高,这样就需要用户编写大量的代码。为了不断的优化编写好的代码,当用户在原来代码的基础上更新了部分代码时,需要对更新的部分代码进行增量代码分析,以发现代码中存在的潜在问题,方便基于发现的问题对代码进行定向优化。
[0003]为了保证增量代码分析精度,相关技术往往先经过下载源代码、编译建立、获取完整的编译信息等操作,再基于完整的编译信息进行增量代码分析。然而,执行下载源代码、建立编译系统、获取完整的编译信息等操作需要耗费很长时间,执行增量代码分析操作的却耗费很少时间,导致整个增量代码分析过程需要耗费很长时间才能完成,无法满足用户快速的进行增量代码分析的需求。

技术实现思路

[0004]为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种增量代码分析方法、装置、设备及介质。
[0005]第一方面,本公开提供了一种增量代码分析方法,所述方法包括:
[0006]响应于对目标项目的增量代码分析请求,从服务器预先缓存的多个项目分别对应的全量编译信息中,获取所述目标项目对应的全量目标编译信息,其中,所述全量编译信息是在对多个项目中的任意一个项目完成全量代码分析之后缓存至所述服务器的编译信息;
[0007]从所述全量目标编译信息中确定所述增量代码分析请求对应的编译信息,作为所述目标项目对应的增量目标编译信息;
[0008]对所述增量目标编译信息进行增量代码分析,得到所述目标项目的增量分析结果。
[0009]第二方面,本公开提供了一种增量代码分析装置,所述装置包括:
[0010]获取模块,用于响应于对目标项目的增量代码分析请求,从服务器预先缓存的多个项目分别对应的全量编译信息中,获取所述目标项目对应的全量目标编译信息,其中,所述全量编译信息是在对多个项目中的任意一个项目完成全量代码分析之后缓存至所述服务器的编译信息;
[0011]确定模块,用于从所述全量目标编译信息中确定所述增量代码分析请求对应的编译信息,作为所述目标项目对应的增量目标编译信息;
[0012]分析模块,用于对所述增量目标编译信息进行增量代码分析,得到所述目标项目的增量分析结果。
[0013]第三方面,本公开提供了一种计算机可读存储介质,所述计算机可读存储介质中
存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现上述的方法。
[0014]第四方面,本公开提供了一种设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的方法。
[0015]第五方面,本公开提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述的方法。
[0016]本公开实施例提供的技术方案与现有技术相比至少具有如下优点:
[0017]本公开实施例提供了一种增量代码分析方法、装置、设备及介质,该方法包括:响应于对目标项目的增量代码分析请求,从服务器预先缓存的多个项目分别对应的全量编译信息中,获取目标项目对应的全量目标编译信息,其中,全量编译信息是在对多个项目中的任意一个项目完成全量代码分析之后缓存至服务器的编译信息;从全量目标编译信息中确定增量代码分析请求对应的编译信息,作为目标项目对应的增量目标编译信息;对增量目标编译信息进行增量代码分析,得到目标项目的增量分析结果。由此,在全量代码分析之后已将多个项目分别对应的完整的编译信息缓存至服务器,使得在进行增量代码分析时,直接从服务器的缓存中调用目标项目对应的全量目标编译信息进行增量代码分析,无需执行下载源代码以及建立编译系统等操作,从而缩短了整个增量代码分析过程所耗费的时间,在保证分析精度的同时,也提高了分析效率,最终满足了用户快速且准确的进行增量代码分析的需求。
附图说明
[0018]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0019]为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0020]图1为本公开一些实施例提供的增量代码分析系统的架构示意图;
[0021]图2为本公开一些实施例提供的增量代码分析方法的流程示意图;
[0022]图3为本公开一些实施例提供的基于项目维度的编译信息管理方法的示意图:
[0023]图4为本公开一些实施例提供的依赖存储模型的示意图;
[0024]图5为本公开一些实施例提供的利用全量模型执行全量代码分析和缓存完整的编译信息的逻辑示意图;
[0025]图6为本公开一些实施例提供的利用增量模型还原缓存的全量编译信息并进行增量代码分析的逻辑示意图;
[0026]图7为本公开一些实施例提供的增量代码分析装置的结构示意图;
[0027]图8为本公开一些实施例提供的增量代码分析设备的结构示意图。
具体实施方式
[0028]为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可
以相互组合。
[0029]在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
[0030]相关技术中,一般采用诸如Android Lint、Clang Static Analysis、Spotbugs、Infer、Coverity等全量代码分析工具进行全量代码分析,并将全量代码分析工具应用到增量代码分析场景进行增量代码分析。
[0031]为了达到精准的分析效果,全量代码分析工具需要获取源代码的完整语法信息,即获取完整的编译信息,例如,获取依赖的系统库、第三方库、宏、头文件、以及工作路径等编译参数作为编译信息。为了满足增量代码分析的需求,一般需要用户手动为该工具建立编译环境以捕获编译信息,使得增量代码分析的整个流程包括执行下载源代码、建立编译系统、获取完整的编译信息、执行增量代码分析等操作。
[0032]但是在实际情况下,从执行下载源代码到获取完整的编译信息的过程,就占据了整个流程的绝大部分时间,执行增量代码分析操作却耗费很少时间,导致整个增量代码分析过程需要耗费很长时间才能完成,无法满足用户快速的进行增量代码分析的需求。
[0033]为了解决上述问题,相关技术还提出了其他的增量代码分析方法。...

【技术保护点】

【技术特征摘要】
1.一种增量代码分析方法,其特征在于,所述方法包括:响应于对目标项目的增量代码分析请求,从服务器预先缓存的多个项目分别对应的全量编译信息中,获取所述目标项目对应的全量目标编译信息,其中,所述全量编译信息是在对多个项目中的任意一个项目完成全量代码分析之后缓存至所述服务器的编译信息;从所述全量目标编译信息中确定所述增量代码分析请求对应的编译信息,作为所述目标项目对应的增量目标编译信息;对所述增量目标编译信息进行增量代码分析,得到所述目标项目的增量分析结果。2.根据权利要求1所述的方法,其特征在于,所述响应于对目标项目的增量代码分析请求,从服务器预先缓存的多个项目分别对应的全量编译信息中,获取所述目标项目对应的全量目标编译信息,包括:基于所述增量代码分析请求,读取所述目标项目对应的第一项目信息;根据所述第一项目信息中记录的目标源文件信息,从所述服务器预先缓存的多个项目分别对应的全量编译信息中,获取所述目标项目对应的全量目标编译信息。3.根据权利要求2所述的方法,其特征在于,所述根据所述第一项目信息中记录的目标源文件信息,从所述服务器预先缓存的多个项目分别对应的全量编译信息中,获取所述目标项目对应的全量目标编译信息,包括:从预先建立的多个第一映射关系中,检测是否存在所述目标源文件信息对应的第一目标映射关系,其中,所述第一映射关系是指所述任意一个项目的源文件信息与全量编译信息的对应关系;若存在所述第一目标映射关系,则基于所述第一目标映射关系和所述目标源文件信息,从所述全量编译信息中获取所述全量目标编译信息。4.根据权利要求3所述的方法,其特征在于,还包括:若不存在所述第一目标映射关系,则从所述全量编译信息中获取满足预设相似度条件的同类型项目对应的全量编译信息,作为所述全量目标编译信息,其中,所述同类型项目是所述任意一个项目,并且,所述同类型项目与所述目标项目位于所述服务器中的同一条路径或者同一个模块。5.根据权利要求3或4所述的方法,其特征在于,所述第一映射关系是在对所述任意一个项目完成全量代码分析之后,基于所述任意一个项目的源文件信息与全量编译信息建立。6.根据权利要求1所述的方法,其特征在于,所述全量编译信息是所述全量分析项目对应的全量已转译编译信息,相应的,所述增量目标编译信息是增量已转译编译信息;所述对所述增量目标编译信息进行增量代码分析,得到所述目标项目的增量分析结果,包括:按照所述目标项目的第一项目维度,对所述增量已转译编译信息进行还原,得到增量原始编译信息;对所...

【专利技术属性】
技术研发人员:王念武
申请(专利权)人:抖音视界有限公司
类型:发明
国别省市:

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

1