确定代码质量的方法和装置制造方法及图纸

技术编号:21184266 阅读:37 留言:0更新日期:2019-05-22 14:59
本申请提供了一种确定代码质量的方法和装置,该方法包括:获取待测试的目标代码文件;对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在漏洞BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。采用本申请提供的确定代码质量的方法和装置,能够对代码文件的质量进行评估。

Method and Device for Determining Code Quality

This application provides a method and device for determining code quality. The method includes: acquiring the target code file to be tested; analyzing the target code file to obtain the abstract grammar tree of the target code file; and determining the result of code quality analysis of the target code file according to the abstract grammar tree and code quality analysis model of the target code file. The code quality analysis results include bug BUG or no BUG. The code quality analysis model is used to represent the mapping relationship between abstract grammar tree and code quality analysis results. The code quality analysis model is trained by two-way long-term and short-term memory loop neural network LSTM. The method and device for determining code quality provided in this application can be used to evaluate the quality of code files.

【技术实现步骤摘要】
确定代码质量的方法和装置
本申请涉及计算机领域,并且更具体地,涉及计算机领域中确定代码质量的方法和装置。
技术介绍
随着信息技术的蓬勃发展,计算机已经越来越广泛的应用到各行各业中,作为信息技术的灵魂,软件的规模也在日益扩大,这不仅导致了程序复杂度的提高,也降低了软件自身的可靠性。因此保证软件的代码质量,是贯穿到整个生命周期的重要问题,而如何对软件的代码质量进行有效的评价则是保证软件质量的一种重要手段。传统会通过静态分析的方式对代码做一些静态检查,诸如BUG检查、编码规范等。这类静态分析无法感知到项目的业务逻辑、人员编码习惯等信息,因此很难识别出业务类型的BUG、不规范行为。并且,传统的静态分析的方式进行检查时需要进行大量的逻辑判断,在实际项目中运用是不现实的。
技术实现思路
本申请提供一种确定代码质量的方法和装置,能够对代码文件的质量进行评估。为实现上述目的,本申请提供一种确定代码质量的方法,包括以下内容:获取待测试的目标代码文件;对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。在一种可能的实现方式中,在根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果之前,所述方法还包括:获取多个样本代码文件和所述多个样本代码文件中每个样本代码文件的代码质量分析结果;对所述每个样本代码文件进行分析,得到所述每个样本代码文件的抽象语法树;将所述每个样本代码文件的抽象语法树和所述每个样本代码文件的代码质量分析结果输入到所述双向长短时记忆循环神经网络LSTM模型中,训练得到所述代码质量分析模型。在一种可能的实现方式中,对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树,包括:通过语法分析器对所述目标代码文件进行词法和语法分析,得到分析结果;将所述分析结果通过抽象语法树的形式表示。在一种可能的实现方式中,所述方法还包括:当所述目标代码文件的代码质量分析结果为存在BUG时,发送第一提醒信息,所述第一提醒信息用于提醒用户修复所述目标代码文件中的BUG。在一种可能的实现方式中,所述方法还包括:当所述目标代码文件的代码质量分析结果为存在BUG时,发送第二提醒信息,所述第二提醒信息用于提醒用户所述目标代码文件中存在的所有BUG在所述目标代码文件中的位置。在一种可能的实现方式中,所述方法还包括:当所述目标代码文件的代码质量分析结果为不存在BUG时,提交所述目标代码;或当所述目标代码文件的代码质量分析结果为存在BUG时,修复所述目标代码文件中存在的问题。在一种可能的实现方式中,所述方法还包括:输出所述目标代码文件的代码质量分析结果。为实现上述目的,本申请还提供一种确定代码质量的装置,该装置具体包括:获取单元,用于获取待测试的目标代码文件;分析单元,用于对所述获取单元获取的所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;确定单元,用于根据所述分析单元分析的所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。在一种可能的实现方式中,所述装置还包括训练单元,所述获取单元还用于在根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果之前,获取多个样本代码文件和所述多个样本代码文件中每个样本代码文件的代码质量分析结果的数据;所述分析单元还用于对所述每个样本代码文件进行分析,得到所述每个样本代码文件的抽象语法树;所述训练单元用于将所述每个样本代码文件的抽象语法树和所述每个样本代码文件的代码质量分析结果的数据输入到所述双向长短时记忆循环神经网络LSTM模型中,训练得到所述代码质量分析模型。在一种可能的实现方式中,对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树,包括:通过语法分析器对所述目标代码文件进行词法和语法分析,得到分析结果;将所述分析结果通过抽象语法树的形式表示。在一种可能的实现方式中,所述方法还包括:当所述目标代码文件的代码质量分析结果为存在BUG时,发送第一提醒信息,所述第一提醒信息用于提醒用户修复所述目标代码文件中的BUG。在一种可能的实现方式中,所述装置还包括发送单元,所述发送单元用于当所述目标代码文件的代码质量分析结果为存在BUG时,发送第二提醒信息,所述第二提醒信息用于提醒用户所述目标代码文件中存在的所有BUG在所述目标代码文件中的位置。在一种可能的实现方式中,所述装置还包括提交单元或修复单元,所述提交单元用于当所述目标代码文件的代码质量分析结果为不存在BUG时,提交所述目标代码;或所述修复单元用于当所述目标代码文件的代码质量分析结果为存在BUG时,修复所述目标代码文件中存在的问题。在一种可能的实现方式中,所述装置还包括输出单元,所述输出单元用于输出所述目标代码文件的代码质量分析结果。为实现上述目的,本申请还提供一种计算机设备,包括存储器、处理器、通信接口以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述存储器、所述处理器以及所述通信接口之间通过内部连接通路互相通信,所述处理器执行所述计算机程序时实现上述方法的以下步骤:获取待测试的目标代码文件;对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。在一种可能的实现方式中,在将所述目标代码文件的抽象语法树输入代码质量分析模型进行代码质量分析,得到所述目标代码文件的代码质量分析结果的数据之前,所述方法还包括:获取多个样本代码文件和所述多个样本代码文件中每个样本代码文件的代码质量分析结果的数据;对所述每个样本代码文件进行分析,得到所述每个样本代码文件的抽象语法树;将所述每个样本代码文件的抽象语法树和所述每个样本代码文件的代码质量分析结果的数据输入到所述双向长短时记忆循环神经网络LSTM模型中,训练得到所述代码质量分析模型。在一种可能的实现方式中,对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树,包括:通过语法分析器对所述目标代码文件进行词法和语法分析,得到分析结果;将所述分析结果通过抽象语法树的形式表示。在一种可能的实现方式中,所述方法还包括:当所述目标代码文件的代码质量分析结果为存在BUG时,发送第一提醒信息,所述第一提醒信息用于提醒用户修复所述目标代码文件中的BUG。在一种可能的实现方式中,所述方法还包括:当所述目标代码本文档来自技高网...

【技术保护点】
1.一种确定代码质量的方法,其特征在于,包括:获取待测试的目标代码文件;对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在漏洞BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。

【技术特征摘要】
1.一种确定代码质量的方法,其特征在于,包括:获取待测试的目标代码文件;对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在漏洞BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。2.根据权利要求1所述的方法,其特征在于,在根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果之前,所述方法还包括:获取多个样本代码文件和所述多个样本代码文件中每个样本代码文件的代码质量分析结果;对所述每个样本代码文件进行分析,得到所述每个样本代码文件的抽象语法树;将所述每个样本代码文件的抽象语法树和所述每个样本代码文件的代码质量分析结果输入到所述双向长短时记忆循环神经网络LSTM模型中,训练得到所述代码质量分析模型。3.根据权利要求2所述的方法,其特征在于,对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树,包括:通过语法分析器对所述目标代码文件进行词法和语法分析,得到分析结果;将所述分析结果通过抽象语法树的形式表示。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:当所述目标代码文件的代码质量分析结果为存在BUG时,发送第一提醒信息,所述第一提醒信息用于提醒用户修复所述目标代码文件中的BUG。5.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括...

【专利技术属性】
技术研发人员:秦天欢张宗勇
申请(专利权)人:平安壹钱包电子商务有限公司
类型:发明
国别省市:广东,44

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

1