一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分析报告的生成方法、装置、电子设备及存储介质与流程

2022-02-19 11:47:23 来源:中国专利 TAG:


1.本技术属于人工智能技术领域,尤其涉及分析报告的生成方法、装置、电子设备及存储介质。


背景技术:

2.随着软件技术的不断发展,越来越的服务可以通过软件程序实现。而在软件开发的过程中,无论是对软件程序进行版本更新或是创建新的功能等,均需要开发人员编写相应的代码数据,而代码数据的复杂度越高,则开发人员的在对代码数据进行纠错以及更新时所需的时间越长,在软件开发的过程中需要保持代码数据的复杂度在合理的范围内。由此可见,如何准确地对代码数据的复杂度进行评估以及分析,则直接影响软件程序的开发效率。
3.现有的代码数据的分析技术,一般是在接收到开发人员发起的检测请求时,基于当前编译得到的所有代码数据确定整个代码数据的复杂度。然而在实际软件程序的开发过程中,一个软件程序的代码数据往往是由不同开发人员协同编写的,不同的开发人员用于编写指定模块的代码,整个代码数据量较大。若采用上述方式检测到代码数据整体的复杂度超过预设的合理范围时,开发人员需要耗费较多的时间来定位导致代码复杂度超过合理范围的代码段,从而大大降低了软件程序的异常检测效率,影响软件程序的开发。


技术实现要素:

4.本技术实施例提供了一种分析报告的生成方法、装置、电子设备及存储介质,可以解决现有的代码数据的分析技术,一般是在接收到开发人员发起的检测请求时,基于当前编译得到的所有代码数据确定整个代码数据的复杂度,若检测到代码数据整体的复杂度超过预设的合理范围时,开发人员需要耗费较多的时间来定位导致代码复杂度超过合理范围的代码段,从而大大降低了软件程序的异常检测效率,影响软件程序的开发的问题。
5.第一方面,本技术实施例提供了一种分析报告的生成方法,包括:
6.若满足预设的分析触发条件,则获取目标代码文件的提交记录,确定所述目标代码文件的检测状态;
7.若所述目标代码文件的检测状态为待检测状态,则基于至少两个代码划分粒度对所述目标代码文件进行划分,生成各个代码划分粒度对应的多个代码子数据;
8.分别确定各个代码划分粒度对应的多个代码子数据的代码复杂度;
9.基于所有所述代码划分粒度的所述代码子数据的所述代码复杂度,确定所述目标代码文件的复杂变化信息;
10.根据所述复杂变化信息生成所述目标代码文件的分析报告。
11.在第一方面的一种可能的实现方式中,所述若所述目标代码文件的检测状态为待检测状态,则基于至少两个代码划分粒度对所述目标代码文件进行划分,生成各个代码划分粒度对应的多个代码子数据,包括:
12.获取各个代码划分粒度对应的划分关键字符;
13.基于第n层代码划分粒度的划分关键字符,将所述目标代码文件划分为多个第n层代码子数据;所述n的初始值为预设的划分粒度总数n;
14.判断所述n的数值是否大于1;
15.若所述n的数值大于1,则基于第n

1层代码划分粒度的划分关键字符,对所述第n层代码子数据进行划分,得到多个所述第n

1层代码划分粒度对应的第n

1层代码子数据,并减少所述n的值,返回执行所述判断所述n的数值是否为1的操作;
16.其中,所述第n层代码子数据包含多个第n

1层代码子数据;
17.若所述n的数值小于或等于1,则识别划分完毕,执行所述分别确定各个代码划分粒度对应的多个代码子数据的代码复杂度的操作。
18.在第一方面的一种可能的实现方式中,所述分别确定各个代码划分粒度对应的多个代码子数据的代码复杂度,包括:
19.生成第m层第i个代码子数据的第m层第i个代码流程图,并基于所述第m层第i个代码流程图中包含的节点个数以及流程起始端点的起始个数,确定所述第m层第i个代码子数据的代码复杂度;其中,所述m的初始值为1;所述第m层第i个代码子数据的代码复杂度具体为:
20.cpx(m
i
)=side(m
i
)

nope(m
i
) ξ*point(m
i
),m=1,i≤m
i
21.其中,cpx(m
i
)为所述第m层第i个代码子数据的代码复杂度;nope(m
i
)为所述节点个数;point(m
i
)为所述起始个数;side(m
i
)为所述代码流程图中节点间的流转关系数;i≤m
i
为第m层的代码子数据的总数;ξ为预设的调整系数;
22.将所述m的数值与预设的划分粒度总数进行比较;
23.若所述m的数值小于或等于所述划分粒度总数,则基于所述第m 1层第j个代码子数据所包含的第m层的各个代码子数据的代码复杂度,计算所述第m 1层第j个代码子数据的代码复杂度;所述所述第m 1层第j个代码子数据的代码复杂度具体为:
[0024][0025]
其中,num(m 1
i
)为所述第m 1层第j个代码子数据所述包含的第m层的代码子数据的个数;
[0026]
增加所述m的值,并返回执行所述将所述m的数值与预设的划分粒度总数进行比较;
[0027]
若所述m的数值大于所述划分粒度总数,则执行所述基于所述代码子数据的所述代码复杂度,确定所述目标代码文件的复杂变化信息。
[0028]
在第一方面的一种可能的实现方式中,所述生成第m层第i个代码子数据的第m层第i个代码流程图,包括:
[0029]
通过预设的执行脚本运行所述第m层第i个代码子数据;
[0030]
若检测到所述执行脚本调用资源执行运算操作,则创建与当前执行的代码语段对应的流程节点;
[0031]
基于所述运算操作的运算结果的输出数据流以及所述流程节点的输入数据流,建立所述流程节点与其他节点之间的连接关系;
[0032]
根据所有创建的所述流程节点以及所述连接关系,得到所述第m层第i个代码流程图。
[0033]
在第一方面的一种可能的实现方式中,所述基于所述代码子数据的所述代码复杂度,确定所述目标代码文件的复杂变化信息,包括:
[0034]
获取所述目标代码文件关于各个代码划分粒度的历史代码数据的历史复杂度;
[0035]
分别计算属于同一代码划分粒度的所述代码复杂度与所述历史复杂度之间的复杂变化因子;
[0036]
根据各个所述代码划分粒度对应的所述复杂变化因子,生成所述目标代码文件的复杂变化信息。
[0037]
在第一方面的一种可能的实现方式中,所述根据所述复杂变化信息生成所述目标代码文件的分析报告,包括:
[0038]
分别获取各个所述代码划分粒度关联的复杂变化阈值;
[0039]
若任一所述代码子数据对应的所述复杂变化因子大于所述任一代码子数据对应的代码划分粒度的所述复杂变化阈值,则识别所述任一代码子数据为异常代码数据;
[0040]
为各个所述异常代码数据配置调整提示信息;
[0041]
根据所述复杂变化信息以及所述调整提示信息导入到预设的报告模板,生成所述分析报告。
[0042]
在第一方面的一种可能的实现方式中,在所述若满足预设的分析触发条件,则获取目标代码文件的提交记录,确定所述目标代码文件的检测状态之前,还包括:
[0043]
响应于代码管理员发起的登录操作,得到所述登录操作输入的登录信息;
[0044]
若所述登录信息与预设的合法信息相匹配,则生成触发条件的配置页面;
[0045]
响应于所述代码管理员在所述配置页面内输入的触发参量,并基于所述触发参量生成所述分析触发条件。
[0046]
第二方面,本技术实施例提供了一种分析报告的生成装置,包括:
[0047]
检测状态确定单元,用于若满足预设的分析触发条件,则获取目标代码文件的提交记录,确定所述目标代码文件的检测状态;
[0048]
代码划分单元,用于若所述目标代码文件的检测状态为待检测状态,则基于至少两个代码划分粒度对所述目标代码文件进行划分,生成各个代码划分粒度对应的多个代码子数据;
[0049]
代码复杂度确定单元,用于分别确定各个代码划分粒度对应的多个代码子数据的代码复杂度;
[0050]
复杂变化信息确定单元,用于基于所有所述代码划分粒度的所述代码子数据的所述代码复杂度,确定所述目标代码文件的复杂变化信息;
[0051]
分析报告输出单元,用于根据所述复杂变化信息生成所述目标代码文件的分析报告。
[0052]
第三方面,本技术实施例提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面任一项所述的方法。
[0053]
第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储
介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面任一项所述的方法。
[0054]
第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面中任一项所述的方法。
[0055]
本技术实施例与现有技术相比存在的有益效果是:通过在满足预设的分析触发条件时,获取目标代码文件的提交记录,确定是否存在新提交的记录,继而确定该目标代码文件的检测状态,若存在新提交的提交记录,则该目标代码文件的检测状态为待检测状态,此时,电子设备可以对目标代码文件进行划分,以得到基于不同代码划分粒度对应的不同代码子数据,并分别确定不同代码划分粒度对应的代码子数据的代码复杂度,由于电子设备基于不同的代码划分粒度对目标数据代码进行划分,从而通过不同代码划分粒度对应的代码复杂度,能够确定不同层级代码的复杂变化信息,并基于上述复杂变化信息生成分析报告,方便代码管理员通过分析报告快速定位出复杂变化信息异常的层级,即对应的代码划分粒度,继而识别出异常的代码段,提高了在软件开发过程中对于异常的代码段的检测效率,继而提高软件程序的开发效率。
附图说明
[0056]
为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0057]
图1是本技术一实施例提供的一种分析报告的生成方法的实现流程图;
[0058]
图2是本技术一实施例提供的目标代码文件的划分示意图;
[0059]
图3是本技术一实施例提供的一种分析报告的生成方法的s102的一种实现方式示意图;
[0060]
图4是本技术一实施例提供的一种分析报告的生成方法的s103的一种实现方式示意图;
[0061]
图5是本技术一实施例提供的一种分析报告的生成方法的s104的一种实现方式示意图;
[0062]
图6是本技术一实施例提供的一种分析报告的生成方法的s105一种实现方式示意图;
[0063]
图7是本技术一实施例提供的一种分析报告的生成方法的一种实现方式示意图;
[0064]
图8是本技术实施例提供的分析报告的生成方法装置的结构示意图;
[0065]
图9是本技术实施例提供的电子设备的结构示意图。
具体实施方式
[0066]
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
[0067]
应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0068]
另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0069]
本技术实施例提供的分析报告的生成方法可以应用于智能手机、服务器、平板电脑、笔记本电脑、超级移动个人计算机(ultra

mobile personal computer,umpc)、上网本等电子设备上。本技术实施例对电子设备的具体类型不作任何限制。特别地,该电子设备还可以为一个基于人工智能的代码数据的分析服务器,该分析服务器可以对上传的代码数据进行代码复杂度的识别,并输出代码数据的分析报告,以便用户确定该代码数据的复杂度变化情况。
[0070]
请参阅图1,图1示出了本技术实施例提供的一种分析报告的生成方法的实现流程图,该方法包括如下步骤:
[0071]
在s101中,若满足预设的分析触发条件,则获取目标代码文件的提交记录,确定所述目标代码文件的检测状态。
[0072]
在本实施例中,电子设备可以根据预先配置的分析触发条件,自动触发分析报告的生成流程。其中,上述分析触发条件可以是一时间触发条件,例如电子设备可以配置有多个分析触发时刻,或者配置有对应的触发周期(如一天、一周等,具体的触发周期可以根据目标代码文件的开发周期进行设置,若该目标代码文件的开发周期越长,则对应的触发周期越长),电子设备若检测到当前时刻到达预设的分析触发时刻或者到达预设的触发周期,则判定满足上述分析触发条件,执行s101的操作。
[0073]
在一种可能的实现方式中,上述分析触发条件还可以是一事件触发条件。举例性地,电子设备可以配置一个提交记录阈值,若检测到从上一分析报告生成时刻起,关于目标代码文件的提交记录的提交次数大于上述预设的提交记录阈值,或者目标代码文件的提交记录对应的代码数据量之和大于预设的提交记录阈值,则识别满足上述的分析触发条件,执行s101的操作。
[0074]
在本实施例中,电子设备可以接收多个不同用户终端上传的关于目标代码文件的提交记录。该提交记录具体为各个用户终端提交的对于目标代码文件的编辑数据。例如,目标代码文件可以为一应用程序的代码数据,则用户在对该应用程序进行开发时,若需要对应用程序内的某一功能进行更新(如增强功能效果或修改功能的实现逻辑等),则需要对该功能模块对应的代码数据进行编辑,此时可以将对应的编辑数据生成对应的提交记录被发送给电子设备。
[0075]
在一种可能的实现方式中,该电子设备具体为一代码数据的多端同步开发的云平台,该云平台可以根据各个用户终端的编辑操作,生成对应的提交记录,并基于提交记录对云平台内存储的目标代码文件进行更新,从而能够支持多终端同时对目标代码文件进行编辑,以实现多用户并行开发。
[0076]
在本实施例中,电子设备可以获取上一次生成目标代码文件的历史分析报告的历史分析时间,并检测关于目标代码文件的各个提交记录中是否存在提交时间在上述历史分析时间之后的提交记录,即是否在上一次分析完成后有新提交的提交记录;若不存在,则识
别上述目标代码文件的检测状态为已检测状态,此时,电子设备无需重新生成新的分析报告;反之,若存在,则识别上述目标代码文件的检测状态为待检测状态,即存在新提交的提交记录,并执行s102的操作。
[0077]
在一种可能的实现方式中,电子设备除了可以根据提交时间确定该目标代码文件的检测状态外,还可以根据关于目标数据的提交记录,确定编辑代码数据量(包括对已有代码的变更数据量以及新增的代码数据量);若该编辑代码数据量大于预设的数据量阈值,则识别该目标代码文件的检测状态为待检测状态;反之,若该编辑代码数据量小于或等于数据量阈值,则识别该目标代码文件的检测状态为已检测状态。
[0078]
在s102中,若所述目标代码文件的检测状态为待检测状态,则基于至少两个代码划分粒度对所述目标代码文件进行划分,生成各个代码划分粒度对应的多个代码子数据。
[0079]
在本实施例中,在电子设备检测到该目标代码文件的检测状态为待检测状态时,则表示需要确定该目标代码文件的代码复杂度的变化情况,而为了更加方便用户确定复杂度变化较大的代码段,电子设备可以根据预设的代码划分粒度对目标代码进行划分,从而能够得到基于不同代码划分粒度生成的代码子数据。不同的代码划分粒度所包含的代码数据量不同,上级的划分粒度的代码子数据可以包含多个下级的划分粒度的代码子数据,即上级的划分粒度的代码数据量较大;而下级的划分粒度的代码数据量较小。
[0080]
在一种可能的实现方式中,上述代码划分粒度包括但不限于:项目(project)级别粒度、模块(module)级别粒度、包(package)级别粒度、类(class)级别粒度以及方法(method)级别粒度,上述各个级别粒度依次精细,即粒度最粗的级别为project级别粒度,粒度最精细的级别为method级别粒度。
[0081]
示例性地,图2示出了本技术一实施例提供的目标代码文件的划分示意图。参见图2所示,该目标代码文件的代码划分粒度为三个级别粒度,分别为:package级别粒度、class级别粒度以及method级别粒度,其中,package级别粒度的代码子数据由多个class级别粒度的代码子数据构成;而class级别粒度的代码子数据又由多个method级别粒度的代码子数据构成。
[0082]
在s103中,分别确定各个代码划分粒度对应的多个代码子数据的代码复杂度。
[0083]
在本实施例中,电子设备在对目标代码文件进行划分并得到各个代码划分粒度的代码子数据后,可以分别确定不同代码划分粒度的代码子数据的代码复杂度,从而能够确定目标代码文件的整体到局部各个层级对应的代码复杂度,能够对于目标代码文件的代码复杂度具有一个整体到个体的全方位的评估,以便于后续逐步定位出现异常的代码子数据。
[0084]
在一种可能的实现方式中,计算代码子数据的代码复杂度的方式可以为:电子设备识别代码子数据中包含的函数关键词,不同的函数关键词对应不同的复杂基准值,电子设备可以基于该代码子数据中包含的函数关键词以及与之对应的复杂基准值进行叠加,以确定该代码子数据的代码复杂度。
[0085]
在s104中,基于所有所述代码划分粒度的所述代码子数据的所述代码复杂度,确定所述目标代码文件的复杂变化信息。
[0086]
在本实施例中,电子设备在确定了各个代码划分粒度的代码子数据的代码复杂度后,可以根据历史分析过程中确定属于同一代码划分粒度的同一代码子数据的历史复杂度
进行比对,从而计算得到各个代码子数据对应的复杂变化值,并将所有代码子数据的复杂变化值进行封装,生成该目标代码文件的复杂变化信息,从而能够生成能够确定不同代码划分粒度的复杂变化值的复杂变化信息,对于整体到局部的复杂变化有一个直观的了解。
[0087]
在s105中,根据所述复杂变化信息生成所述目标代码文件的分析报告。
[0088]
在本实施例中,电子设备可以将复杂变化信息中不同代码划分粒度的复杂变化值导入到分析模板中关联的区域,从而生成对应的分析报告,用户可以通过分析报告确定不同代码划分粒度的不同代码子数据的代码复杂度变化情况。
[0089]
进一步地,作为本技术的另一实施例,电子设备若检测到上述复杂变化信息超出预设的变化阈值,则可以将分析报告发送给用户终端,以便用户对于异常情况进行响应,以降低目标代码文件中对应的代码子数据的复杂度。其中,电子设备可以根据各个代码划分粒度的代码子数据的复杂度变化情况快速定位出异常的代码子数据。
[0090]
以图2示出的目标代码文件的划分示意图为例进行说明,若代码子数据的1的复杂变化值为5,而变化异常的阈值为8,此时,可以确定该代码子数据1并没有异常,而代码子数据1.1的复杂变化值为10,大于上述的变化异常的阈值,此时,可以识别出代码子数据1.1的复杂度过高,需要进行调整,此时,可以继续对下一级别粒度进行识别,例如,代码子数据1.1.1的复杂变化值为9,而代码子数据1.1.2的复杂变化值为4,因此,可以确定下一级别粒度的异常代码子数据为1.1.1,至此,用户可以对代码子数据1.1.1进行调整,即可以修复上述复杂度异常的情况,实现了快速定位异常代码段的目的。
[0091]
以上可以看出,本技术实施例提供的一种分析报告的生成方法通过在满足预设的分析触发条件时,获取目标代码文件的提交记录,确定是否存在新提交的记录,继而确定该目标代码文件的检测状态,若存在新提交的提交记录,则该目标代码文件的检测状态为待检测状态,此时,电子设备可以对目标代码文件进行划分,以得到基于不同代码划分粒度对应的不同代码子数据,并分别确定不同代码划分粒度对应的代码子数据的代码复杂度,由于电子设备基于不同的代码划分粒度对目标数据代码进行划分,从而通过不同代码划分粒度对应的代码复杂度,能够确定不同层级代码的复杂变化信息,并基于上述复杂变化信息生成分析报告,方便代码管理员通过分析报告快速定位出复杂变化信息异常的层级,即对应的代码划分粒度,继而识别出异常的代码段,提高了在软件开发过程中对于异常的代码段的检测效率,继而提高软件程序的开发效率。
[0092]
图3示出了本发明第二实施例提供的一种分析报告的生成方法s102的具体实现流程图。参见图3,相对于图1所述实施例,本实施例提供的一种分析报告的生成方法中s102包括:s1021~s1025,具体详述如下:
[0093]
进一步地,所述若所述目标代码文件的检测状态为待检测状态,则基于至少两个代码划分粒度对所述目标代码文件进行划分,生成各个代码划分粒度对应的多个代码子数据,包括:
[0094]
在s1021中,获取各个代码划分粒度对应的划分关键字符。
[0095]
在本实施例中,不同的代码划分粒度可以对应不同的划分关键字符,电子设备可以存储有划分关键词与代码划分粒度之间的对应关系,通过查询上述对应关系确定对应代码划分粒度的划分关键字符。其中,一个代码划分粒度可以对应一个划分关键字符,也可以对应两个或以上的划分关键字符,具体根据实际情况确定。
[0096]
在s1022中,基于第n层代码划分粒度的划分关键字符,将所述目标代码文件划分为多个第n层代码子数据;所述n的初始值为预设的划分粒度总数n。
[0097]
在本实施例中,电子设备可以划分得到最高划分粒度的代码子数据,即第n层代码划分粒度的代码子数据,其中,层级越高的代码划分粒度,所包含的代码数据量越大;反之,层级越小的代码划分粒度,所包含的代码数据量越小。例如,project级别粒度的层级最高,而method级别粒度的层级最低。
[0098]
在本实施例中,电子设备可以获取第n层代码划分粒度的划分关键词,对目标代码文件进行一次划分,从而得到多个属于第n层代码划分粒度的代码子数据,即第n层代码子数据。
[0099]
在s1023中,判断所述n的数值是否大于1。
[0100]
在本实施例中,电子设备判断是否已经划分得到最底层的代码子数据,若否,则执行s1024的操作;若是,则执行s1025的操作。
[0101]
在s1024中,若所述n的数值大于1,则基于第n

1层代码划分粒度的划分关键字符,对所述第n层代码子数据进行划分,得到多个所述第n

1层代码划分粒度对应的第n

1层代码子数据,并减少所述n的值,返回执行所述判断所述n的数值是否为1的操作;
[0102]
其中,所述第n层代码子数据包含多个第n

1层代码子数据。
[0103]
在s1025中,若所述n的数值大于或等于1,则识别划分完毕,执行所述分别确定各个代码划分粒度对应的多个代码子数据的代码复杂度的操作。
[0104]
在本实施例中,若并未划分至最底层,则电子设备可以获取n

1层代码划分粒度的划分关键字符,以对第n层代码子数据进行划分,从而得到第n

1层代码划分粒度对应的代码子数据,即第n

1层代码子数据,以此类推,直到划分至最底层的代码子数据,即第1层的代码子数据。
[0105]
在本技术实施例中,通过划分不同代码划分粒度的划分关键字符,并从最高层级的代码子数据开始划分,依次划分至最底层级的代码子数据,能够实现对目标代码文件的n级划分操作,从粗粒度到细粒度依次划分,提高了划分操作的精度,并减少不必要的划分操作。
[0106]
图4示出了本发明第三实施例提供的一种分析报告的生成方法s103的具体实现流程图。参见图4,相对于图3所述实施例,本实施例提供的一种分析报告的生成方法中s103包括:s1031~s1035,具体详述如下:
[0107]
在s1031中,生成第m层第i个代码子数据的第m层第i个代码流程图,并基于所述第m层第i个代码流程图中包含的节点个数以及流程起始端点的起始个数,确定所述第m层第i个代码子数据的代码复杂度;其中,所述m的初始值为1;所述第m层第i个代码子数据的代码复杂度具体为:
[0108]
cpx(m
i
)=side(m
i
)

nope(m
i
) ξ*point(m
i
),m=1,i≤m
i
[0109]
其中,cpx(m
i
)为所述第m层第i个代码子数据的代码复杂度;nope(m
i
)为所述节点个数;point(m
i
)为所述起始个数;side(m
i
)为所述代码流程图中节点间的流转关系数;i≤m
i
为第m层的代码子数据的总数;ξ为预设的调整系数。
[0110]
在本实施例中,电子设备可以建立该第m层第i个代码子数据的代码流程图,即第m层第i个代码流程图。其中,m的初始值为1,即电子设备会先计算最底层的代码子数据的代
码复杂度,继而逐步计算上层的代码子数据的代码复杂度。
[0111]
在一种可能的实现方式中,电子设备确定代码流程图的方式具体为:电子设备可以存储有关于目标代码文件的整体流程图,并根据第m层第i个代码子数据在上述整体流程图中对应的区域,截取该区域对应的分支流程图,从而得到第m层第i个代码子数据的代码流程图。
[0112]
进一步地,作为本技术的另一实施例,s1301具体可以包括:s1301.1~s1301.4,具体描述如下:
[0113]
在s1301.1中,通过预设的执行脚本运行所述第m层第i个代码子数据。
[0114]
在本实施例中,电子设备若并没有存储有各个代码子数据的代码流程图,则可以通过运行代码子数据的方式,以自动创建第m层第i个代码子数据的代码流程图。其中,电子设备可以创建对应的一条空的线程,通过该线程对应的执行脚本运行第m层第i个代码子数据,即通过该线程读取上述代码子数据。可选地,电子设备可以创建多条并行线程,通过多条并行线程同时执行第m层所有代码子数据,从而能够同时生成第m层所有代码子数据的代码流程图。
[0115]
在s1301.2中,若检测到所述执行脚本调用资源执行运算操作,则创建与当前执行的代码语段对应的流程节点。
[0116]
在本实施例中,电子设备在通过执行脚本运行第m层第i个代码子数据时,若需要调用电子设备内的软件资源和/或硬件资源进行相关的数据处理时,则可以创建一个对应的流程节点。
[0117]
在s1301.3中,基于所述运算操作的运算结果的输出数据流以及所述流程节点的输入数据流,建立所述流程节点与其他节点之间的连接关系。
[0118]
在本实施例中,该流程节点的输入数据流可以是由该第m层第i个代码子数据的其他流程节点输入给当前运行的流程节点的,也可以是由其他代码的输出流入该流程节点的,因此可以创建对应的节点间的连接关系,同样地,对于输出数据流也可以创建对应的连接关系。
[0119]
在s1301.4中,根据所有创建的所述流程节点以及所述连接关系,得到所述第m层第i个代码流程图。
[0120]
在本实施例中,电子设备可以根据通过上述创建的多个连接关系,连接各个流程节点,从而生成第m层第i个代码流程图。
[0121]
在本技术实施例中,通过执行脚本自动运行第m层第i个代码子数据,自动创建对应的代码流程图,从而能够提高整个数据分析过程的自动化程度,以实现人工智能自动识别代码复杂度较高的异常代码子数据,提高了代码分析的效率。
[0122]
在本实施例中,电子设备在创建了第m层第i个代码流程图后,可以识别该代码流程图中包含的流程节点的个数,即nope(m
i
);以及识别得到整个代码数据的起始端点的个数,即point(m
i
);由于部分的代码段,可以由多个其他模块触发计算,因此该代码段可能存在多个起始端点,即整个代码子数据的触发条件,或触发节点。除了识别代码流程图中上述两个类型的节点外,还可以确定各个节点之间的连接关系的数目,即流转关系数side(m
i
);电子设备通过上述三类型的参量可以确定该代码子数据的代码复杂度。
[0123]
在s1032中,将所述m的数值与预设的划分粒度总数进行比较。
[0124]
在本实施例中,电子设备可以判断上述m的数值是否大于或等于预设的划分粒度总数n,若是,则执行s1033的操作;反之,则执行s1034的操作。
[0125]
在s1033中,若所述m的数值小于或等于所述划分粒度总数,则基于所述第m 1层第j个代码子数据所包含的第m层的各个代码子数据的代码复杂度,计算所述第m 1层第j个代码子数据的代码复杂度;所述所述第m 1层第j个代码子数据的代码复杂度具体为:
[0126][0127]
其中,num(m 1
i
)为所述第m 1层第j个代码子数据所述包含的第m层的代码子数据的个数。
[0128]
在s1034中,增加所述m的值,并返回执行所述将所述m的数值与预设的划分粒度总数进行比较。
[0129]
在s1035中,若所述m的数值大于或等于所述划分粒度总数,则执行所述基于所述代码子数据的所述代码复杂度,确定所述目标代码文件的复杂变化信息。
[0130]
在本实施例中,由于第m 1层的代码子数据是由多个第m层代码子数据构成的,因此,若第m层代码子数据的代码复杂度越高,对应地,第m 1层的代码子数据的代码复杂度也越高。因此,电子设备可以通过第m层代码子数据的代码复杂度,计算第m 1层代码子数据的代码复杂度。具体地,第m层第j个代码子数据的代码复杂度,是基于第m层第j个代码子数据所包含的第m层的各个代码子数据的代码复杂度确定的。以此类推,上一代码划分粒度的代码子数据的代码复杂度,由其下一代码划分粒度的代码子数据的代码复杂度确定,直到计算得到整个目标代码文件的代码复杂度,则停止迭代。
[0131]
在本技术实施例中,通过计算最底层的代码子数据的代码复杂度,以此递推上层的代码子数据的代码复杂度,能够提高代码复杂度计算效率。
[0132]
图5示出了本发明第四实施例提供的一种分析报告的生成方法s104的具体实现流程图。参见图5,相对于图1

4任一项所述实施例,本实施例提供的一种分析报告的生成方法中s104包括:s1041~s1043,具体详述如下:
[0133]
在s1041中,获取所述目标代码文件关于各个代码划分粒度的历史代码数据的历史复杂度。
[0134]
在s1042中,分别计算属于同一代码划分粒度的所述代码复杂度与所述历史复杂度之间的复杂变化因子。
[0135]
在s1043中,根据各个所述代码划分粒度对应的所述复杂变化因子,生成所述目标代码文件的复杂变化信息。
[0136]
在本实施例中,电子设备在历史分析过程中,也可以对目标代码文件进行分析。其中,在历史分析时的目标代码文件中包含的数据与当前时刻的目标代码文件中包含的数据是不同的,由于提交记录可以对目标代码文件中的相关数据进行变更、新增或删除等操作,然而,历史分析是的目标代码文件中依然可以存在当前的目标代码文件中确定得到对应的代码子数据,基于此,电子设备将属于同一代码划分粒度的历史代码数据的历史复杂度与当前时刻的代码子数据的代码复杂度进行比对,从而计算得到对应的复杂变化因子,该复杂变化因子可以是正数,也可以是负数,若该复杂变化因子为正,则表示对应的代码子数据变得复杂;反之,若该复杂变化因子为负,则标识对应的代码子数据变得简单。电子设备可
以根据各个代码划分粒度包含的各个代码子数据的复杂变化因子,生成关于该目标代码文件的复杂变化信息,以便用户确定不同代码划分粒度的复杂度变化情况。
[0137]
在本技术实施例中,通过分别计算同一代码划分粒度的各个代码子数据的复杂变化因子,能够确定不同层级的代码复杂变化情况,能够便于用户快速定位出异常的代码数据段,提高了代码开发的效率。
[0138]
图6示出了本发明第五实施例提供的一种分析报告的生成方法s105的具体实现流程图。参见图6,相对于图5所述实施例,本实施例提供的一种分析报告的生成方法中s105包括:s1051~s154,具体详述如下:
[0139]
在s1051中,分别获取各个所述代码划分粒度关联的复杂变化阈值。
[0140]
在s1052中,若任一所述代码子数据对应的所述复杂变化因子大于所述任一代码子数据对应的代码划分粒度的所述复杂变化阈值,则识别所述任一代码子数据为异常代码数据。
[0141]
在s1053中,为各个所述异常代码数据配置调整提示信息。
[0142]
在s1054中,根据所述复杂变化信息以及所述调整提示信息导入到预设的报告模板,生成所述分析报告。
[0143]
在本实施例中,不同的代码划分粒度对应的复杂变化阈值不同,其中,越底层的复杂变化阈值越小,而越顶层的复杂变化阈值越大。由于越靠近顶层的代码子数据所包含的数据量越大,其包含的下粒度的代码子数据越多,因此对应的复杂度越高,因此,对应的复杂变化阈值越大。电子设备可以将各个代码划分粒度的代码子数据对应的复杂变化因子与关联的代码划分粒度的复发变化阈值进行比较,若小于或等于对应的复杂变化阈值,则表示该代码子数据在合理的变化范围内;反之,若大于对应的复杂变化阈值,则表示该代码子数据在最近的提交操作中,过多地增加了代码复杂度,需要对代码进行优化,因此会识别该代码子数据为异常代码数据,并为其配置对应的调整提示信息。电子设备可以将复杂变化信息以及对应的调整提示信息导入到对应的报告模板,生成分析报告,方便用户确定需要调整的代码段,从而提高代码修复的效率。
[0144]
在本技术实施例中,通过为不同代码划分粒度配置关联的复杂变化阈值,能够提高异常代码数据识别的准确性,并在分析报告中添加对应的提示信息,能够进一步提高异常代码修复的效率,从而提高代码开发的速度。
[0145]
图7示出了本发明第六实施例提供的一种分析报告的生成方法的具体实现流程图。参见图7,相对于图1

4任一项所述实施例,本实施例提供的一种分析报告的生成方法中在所述若满足预设的分析触发条件,则获取目标代码文件的提交记录,确定所述目标代码文件的检测状态之前,还包括:s701~s703,具体详述如下:
[0146]
在s701中,响应于代码管理员发起的登录操作,得到所述登录操作输入的登录信息。
[0147]
在s702中,若所述登录信息与预设的合法信息相匹配,则生成触发条件的配置页面。
[0148]
在s703中,响应于所述代码管理员在所述配置页面内输入的触发参量,并基于所述触发参量生成所述分析触发条件。
[0149]
在本实施例中,电子设备为了提高代码分析操作的安全性,可以配置对应的合法
信息。在需要对分析触发条件进行设置时,代码管理员可以输入对应的登录信息,如登录账号、登录密码等,电子设备可以登录信息与合法信息进行匹配,并在匹配时生成对应的配置页面,以便用户对于分析触发条件进行配置。
[0150]
在本技术实施例中,代码管理员可以通过配置页面对分析触发条件进行配置,能够在后续开发过程中,自动分析目标代码文件的代码复杂度,实现人工智能检测代码的目的,提高了代码分析的自动化程度,以及定时分析的目的,提高了代码分析的效率,减少了不必要的人为操作。
[0151]
图8示出了本发明一实施例提供的一种分析报告的生成方法装置的结构框图,该电子设备包括的各单元用于执行图1对应的实施例中的各步骤。具体请参阅图1与图1所对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。
[0152]
参见图8,所述分析报告的生成方法装置包括:
[0153]
检测状态确定单元81,用于若满足预设的分析触发条件,则获取目标代码文件的提交记录,确定所述目标代码文件的检测状态;
[0154]
代码划分单元82,用于若所述目标代码文件的检测状态为待检测状态,则基于至少两个代码划分粒度对所述目标代码文件进行划分,生成各个代码划分粒度对应的多个代码子数据;
[0155]
代码复杂度确定单元83,用于分别确定各个代码划分粒度对应的多个代码子数据的代码复杂度;
[0156]
复杂变化信息确定单元84,用于基于所有所述代码划分粒度的所述代码子数据的所述代码复杂度,确定所述目标代码文件的复杂变化信息;
[0157]
分析报告输出单元85,用于根据所述复杂变化信息生成所述目标代码文件的分析报告。
[0158]
可选地,所述代码划分单元82,包括:
[0159]
划分关键字符识别单元,用于获取各个代码划分粒度对应的划分关键字符;
[0160]
第一划分单元单元,用于基于第n层代码划分粒度的划分关键字符,将所述目标代码文件划分为多个第n层代码子数据;所述n的初始值为预设的划分粒度总数n;
[0161]
第一循环单元,用于判断所述n的数值是否大于1;
[0162]
第二划分单元单元,用于若所述n的数值大于1,则基于第n

1层代码划分粒度的划分关键字符,对所述第n层代码子数据进行划分,得到多个所述第n

1层代码划分粒度对应的第n

1层代码子数据,并减少所述n的值,返回执行所述判断所述n的数值是否为1的操作;
[0163]
其中,所述第n层代码子数据包含多个第n

1层代码子数据;
[0164]
第一跳转单元,用于若所述n的数值小于或等于1,则识别划分完毕,执行所述分别确定各个代码划分粒度对应的多个代码子数据的代码复杂度的操作。
[0165]
可选地,所述代码复杂度确定单元83包括:
[0166]
第一复杂度计算单元,用于生成第m层第i个代码子数据的第m层第i个代码流程图,并基于所述第m层第i个代码流程图中包含的节点个数以及流程起始端点的起始个数,确定所述第m层第i个代码子数据的代码复杂度;其中,所述m的初始值为1;所述第m层第i个代码子数据的代码复杂度具体为:
[0167]
cpx(m
i
)=side(m
i
)

nope(m
i
) ξ*point(m
i
),m=1,i≤m
i
[0168]
其中,cpx(m
i
)为所述第m层第i个代码子数据的代码复杂度;nope(m
i
)为所述节点个数;point(m
i
)为所述起始个数;side(m
i
)为所述代码流程图中节点间的流转关系数;i≤m
i
为第m层的代码子数据的总数;ξ为预设的调整系数;
[0169]
第二循环单元,用于将所述m的数值与预设的划分粒度总数进行比较;
[0170]
第二复杂度计算单元,用于若所述m的数值小于或等于所述划分粒度总数,则基于所述第m 1层第j个代码子数据所包含的第m层的各个代码子数据的代码复杂度,计算所述第m 1层第j个代码子数据的代码复杂度;所述所述第m 1层第j个代码子数据的代码复杂度具体为:
[0171][0172]
其中,num(m 1
i
)为所述第m 1层第j个代码子数据所述包含的第m层的代码子数据的个数;
[0173]
参量调整单元,用于增加所述m的值,并返回执行所述将所述m的数值与预设的划分粒度总数进行比较;
[0174]
第二跳转单元,用于若所述m的数值大于所述划分粒度总数,则执行所述基于所述代码子数据的所述代码复杂度,确定所述目标代码文件的复杂变化信息。
[0175]
可选地,所述第一复杂度计算单元,包括:
[0176]
脚本执行单元,用于通过预设的执行脚本运行所述第m层第i个代码子数据;
[0177]
流程节点识别单元,用于若检测到所述执行脚本调用资源执行运算操作,则创建与当前执行的代码语段对应的流程节点;
[0178]
关联关系单元,用于基于所述运算操作的运算结果的输出数据流以及所述流程节点的输入数据流,建立所述流程节点与其他节点之间的连接关系;
[0179]
代码流程图创建单元,用于根据所有创建的所述流程节点以及所述连接关系,得到所述第m层第i个代码流程图。
[0180]
可选地,所述复杂变化信息确定单元84包括:
[0181]
历史复杂度获取单元,用于获取所述目标代码文件关于各个代码划分粒度的历史代码数据的历史复杂度;
[0182]
历史复杂度比对单元,用于分别计算属于同一代码划分粒度的所述代码复杂度与所述历史复杂度之间的复杂变化因子;
[0183]
复杂变化因子封装单元,用于根据各个所述代码划分粒度对应的所述复杂变化因子,生成所述目标代码文件的复杂变化信息。
[0184]
可选地,所述分析报告输出单元85包括:
[0185]
复杂变化阈值确定单元,用于分别获取各个所述代码划分粒度关联的复杂变化阈值;
[0186]
复杂变化阈值比对单元,用于若任一所述代码子数据对应的所述复杂变化因子大于所述任一代码子数据对应的代码划分粒度的所述复杂变化阈值,则识别所述任一代码子数据为异常代码数据;
[0187]
提示信息生成单元,用于为各个所述异常代码数据配置调整提示信息;
[0188]
分析报告封装单元,用于根据所述复杂变化信息以及所述调整提示信息导入到预
设的报告模板,生成所述分析报告。
[0189]
可选地,所述分析报告的生成装置还包括:
[0190]
登录信息获取单元,用于响应于代码管理员发起的登录操作,得到所述登录操作输入的登录信息;
[0191]
配置页面生成单元,用于若所述登录信息与预设的合法信息相匹配,则生成触发条件的配置页面;
[0192]
触发条件配置单元,用于响应于所述代码管理员在所述配置页面内输入的触发参量,并基于所述触发参量生成所述分析触发条件。
[0193]
因此,本发明实施例提供的分析报告的生成方法装置同样可以通过不同代码划分粒度对应的代码复杂度,能够确定不同层级代码的复杂变化信息,并基于上述复杂变化信息生成分析报告,方便代码管理员通过分析报告快速定位出复杂变化信息异常的层级,即对应的代码划分粒度,继而识别出异常的代码段,提高了在软件开发过程中对于异常的代码段的检测效率,继而提高软件程序的开发效率。
[0194]
应当理解的是,图8示出的分析报告的生成方法装置的结构框图中,各模块用于执行图1至图7对应的实施例中的各步骤,而对于图1至图6对应的实施例中的各步骤已在上述实施例中进行详细解释,具体请参阅图1至图6以及图1至图7所对应的实施例中的相关描述,此处不再赘述。
[0195]
图9是本技术另一实施例提供的一种电子设备的结构框图。如图9所示,该实施例的电子设备900包括:处理器910、存储器920以及存储在存储器920中并可在处理器910运行的计算机程序930,例如分析报告的生成方法的程序。处理器910执行计算机程序930时实现上述各个分析报告的生成方法各实施例中的步骤,例如图1所示的s101至s105。或者,处理器910执行计算机程序930时实现上述图9对应的实施例中各模块的功能,例如,图8所示的单元81至85的功能,具体请参阅图8对应的实施例中的相关描述。
[0196]
示例性的,计算机程序930可以被分割成一个或多个模块,一个或者多个模块被存储在存储器920中,并由处理器910执行,以完成本技术。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序930在电子设备900中的执行过程。例如,计算机程序930可以被分割成各个单元模块,各模块具体功能如上。
[0197]
电子设备900可包括,但不仅限于,处理器910、存储器920。本领域技术人员可以理解,图9仅仅是电子设备900的示例,并不构成对电子设备900的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如电子设备还可以包括输入输出设备、网络接入设备、总线等。
[0198]
所称处理器910可以是中央处理单元,还可以是其他通用处理器、数字信号处理器、专用集成电路、现成可编程门阵列或者其他可编程逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
[0199]
存储器920可以是电子设备900的内部存储单元,例如电子设备900的硬盘或内存。存储器920也可以是电子设备900的外部存储设备,例如电子设备900上配备的插接式硬盘,智能存储卡,闪存卡等。进一步地,存储器920还可以既包括电子设备900的内部存储单元也包括外部存储设备。
[0200]
以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例
对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献