CN109783361A - 确定代码质量的方法和装置 - Google Patents
确定代码质量的方法和装置 Download PDFInfo
- Publication number
- CN109783361A CN109783361A CN201811536774.0A CN201811536774A CN109783361A CN 109783361 A CN109783361 A CN 109783361A CN 201811536774 A CN201811536774 A CN 201811536774A CN 109783361 A CN109783361 A CN 109783361A
- Authority
- CN
- China
- Prior art keywords
- code
- code file
- object code
- file
- quality
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供了一种确定代码质量的方法和装置,该方法包括:获取待测试的目标代码文件;对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在漏洞BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。采用本申请提供的确定代码质量的方法和装置,能够对代码文件的质量进行评估。
Description
技术领域
本申请涉及计算机领域,并且更具体地,涉及计算机领域中确定代码质量的方法和装置。
背景技术
随着信息技术的蓬勃发展,计算机已经越来越广泛的应用到各行各业中,作为信息技术的灵魂,软件的规模也在日益扩大,这不仅导致了程序复杂度的提高,也降低了软件自身的可靠性。因此保证软件的代码质量,是贯穿到整个生命周期的重要问题,而如何对软件的代码质量进行有效的评价则是保证软件质量的一种重要手段。
传统会通过静态分析的方式对代码做一些静态检查,诸如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。
在一种可能的实现方式中,所述方法还包括:当所述目标代码文件的代码质量分析结果为存在BUG时,发送第二提醒信息,所述第二提醒信息用于提醒用户所述目标代码文件中存在的所有BUG在所述目标代码文件中的位置。
在一种可能的实现方式中,所述方法还包括:当所述目标代码文件的代码质量分析结果为不存在BUG时,提交所述目标代码;或当所述目标代码文件的代码质量分析结果为存在BUG时,修复所述目标代码文件中存在的问题。
在一种可能的实现方式中,所述方法还包括:输出所述目标代码文件的代码质量分析结果。
为实现上述目的,本申请还提供计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的以下步骤:
获取单元,用于获取待测试的目标代码文件;
分析单元,用于对所述获取单元获取的所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;
确定单元,用于根据所述分析单元分析的所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。
在一种可能的实现方式中,所述装置还包括训练单元,所述获取单元还用于在将所述目标代码文件的抽象语法树输入代码质量分析模型进行代码质量分析,得到所述目标代码文件的代码质量分析结果的数据之前,获取多个样本代码文件和所述多个样本代码文件中每个样本代码文件的代码质量分析结果的数据;所述分析单元还用于对所述每个样本代码文件进行分析,得到所述每个样本代码文件的抽象语法树;所述训练单元还用于将所述每个样本代码文件的抽象语法树和所述每个样本代码文件的代码质量分析结果的数据输入到所述双向长短时记忆循环神经网络LSTM模型中,训练得到所述代码质量分析模型。
在一种可能的实现方式中,所述分析单元具体用于通过语法分析器对所述目标代码文件进行词法和语法分析,得到分析结果;将所述分析结果通过抽象语法树的形式表示。
在一种可能的实现方式中,所述装置还包括发送单元,所述发送单元用于当所述目标代码文件的代码质量分析结果为存在BUG时,发送第一提醒信息,所述第一提醒信息用于提醒用户修复所述目标代码文件中的BUG。
在一种可能的实现方式中,所述装置还包括发送单元,所述发送单元用于当所述目标代码文件的代码质量分析结果为存在BUG时,发送第二提醒信息,所述第二提醒信息用于提醒用户所述目标代码文件中存在的所有BUG在所述目标代码文件中的位置。
在一种可能的实现方式中,所述装置还包括提交单元或修复单元,所述提交单元用于当所述目标代码文件的代码质量分析结果为不存在BUG时,提交所述目标代码;或所述修复单元用于当所述目标代码文件的代码质量分析结果为存在BUG时,修复所述目标代码文件中存在的问题。
在一种可能的实现方式中,所述装置还包括输出单元,所述输出单元用于输出所述目标代码文件的代码质量分析结果。
本申请提供的确定代码质量的方法,通过获取待测试的目标代码文件;对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。采用本申请提供的确定代码质量的方法,能够对代码文件的质量进行评估。
此外,相比较于现有的人工评估代码文件质量会耗费大量人力资源,本申请提供的确定代码质量的方法更自动化、智能化,并且采用LSTM模型训练得到的代码质量分析模型评估代码文件的质量,能够提高评估的准确度。
附图说明
图1是本申请实施例提供的确定代码质量的方法的示意性流程图;
图2是本申请实施例提高的语法树的示意图;
图3是本申请实施例提供的另一确定代码质量的方法的示意性流程图;
图4是本申请实施例提供的确定代码质量的装置的示意性框图;
图5是本申请实施例提供的另一确定代码质量的装置示意性框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1示出了本申请实施例提供的确定代码质量的方法100的示意性流程图。应理解,该方法100可以由确定代码质量的装置执行。该装置可以为至少具有计算和接口通信功能的装置,例如代码质量分析软件。
S110,获取待测试的目标代码文件。
S120,对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树。
应理解,人类语言上,无论什么语种,都会有主语、动词、宾语、标点符号,用来描述现实世界所发生的事件。
相应地,计算机编程语言上,无论什么语种,都会有类型、运算符、流程语句、函数、对象等概念来表达计算机中存在内存里的0和1,以及0和1背后的运算与逻辑。
因此,不同的语言,可以配不同的语法分析器,语法分析器可以理解为能够把源代码作为字符串读入、解析,并建立语法树的程序。
可选地,S120中,所述装置可以通过语法分析器对所述目标代码文件进行词法和语法分析,得到分析结果;将所述分析结果通过抽象语法树的形式表示。
应理解,抽象语法树(abstract syntax tree,AST),或者语法树(syntax tree,ST),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。其中,树上的每个节点都表示源代码中的一种结构。
例如:图2中示出了表达式:1+3*(4-1)+2的抽象语法树。
S130,根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。
可选地,在S130之前,所述方法还包括:建立所述代码质量分析模型。
在一种可能的实现方式中,该装置可以获取多个样本代码文件和所述多个样本代码文件中每个样本代码文件的代码质量分析结果;对所述每个样本代码文件进行分析,得到所述每个样本代码文件的抽象语法树;将所述每个样本代码文件的抽象语法树和所述每个样本代码文件的代码质量分析结果输入到所述双向长短时记忆循环神经网络LSTM模型中,训练得到所述代码质量分析模型。
需要说明的是,该代码质量分析模型针对多个样本代码文件中每个样本代码文件的抽象语法树以及该每个样本代码文件的代码质量分析结果,通过LSTM模型算法训练一个最优模型,这个模型属于某个函数的集合,最优表示在某个评价的准则下可以根据输入得到最接近实际结果的输出,使得可以通过该代码质量分析模型将输入的代码文件的抽象语法树映射为相应输出的代码质量分析结果。
可选地,该代码质量分析模型可以基于一种或者编码-解码模型框架,例如可以基于LSTM模型,或者可以基于卷积神经网络(convolutional neural networks,CNN),循环神经网络(recurrent neural networks,RNN),双向循环神经网络(Bidirectionalrecurrent neural networks,BiRNN)、门控循环神经元(gated recurrent units,GRU)模型等,本发明实施例不限于此。
应理解,LSTM(Long Short-Term Memory)是长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM在算法中加入了一个判断信息有用与否的“处理器”,这个处理器作用的结构被称为cell。一个cell当中被放置了三扇门,分别叫做输入门、遗忘门和输出门。一个信息进入LSTM的网络当中,可以根据规则来判断是否有用。只有符合算法认证的信息才会留下,不符的信息则通过遗忘门被遗忘。LSTM模型采用一进二出的工作原理,可以在反复运算下解决神经网络中长期存在的大问题。
在一种可能的实现方式中,所述方法还包括:当所述目标代码文件的代码质量分析结果为存在BUG时,发送第一提醒信息,所述第一提醒信息用于提醒用户修复所述目标代码文件中的BUG。
可选地,在S130之后,所述方法还包括:当所述目标代码文件的代码质量分析结果为存在BUG时,发送第二提醒信息,所述第二提醒信息用于提醒用户所述目标代码文件中存在的所有BUG在所述目标代码文件中的位置。
可选地,在S130之后,所述方法还包括:当所述目标代码文件的代码质量分析结果为不存在BUG时,提交所述目标代码;或当所述目标代码文件的代码质量分析结果为存在BUG时,修复所述目标代码文件中存在的问题。
可选地,在S130之后,所述方法还包括:输出所述目标代码文件的代码质量分析结果。
可选地,所述装置可以通过至少一个比特表示所述代码质量分析结果,当该至少一个比特为1比特时,“1”表示不存在BUG;“0”表示存在BUG。
可选地,该装置可以获取多个代码文件,并确定该多个代码文件中每个代码文件的代码质量分析结果。
可选地,该装置可以输出该每个代码文件的代码质量分析结果;或者该装置可以仅输出存在BUG的代码文件的代码质量分析结果,本申请实施例对此不作限定。
例如,该装置确定出输入的4个代码文件的代码质量分析结果时,可以通过如下方式输出这4个代码文件的代码质量分析结果:
代码文件1:“1”;代码文件2:“0”;代码文件3:“0”;代码文件:“1”。
又例如,该装置确定出输入的4个代码文件的代码质量分析结果时,可以通过如下方式输出其中2个存在BUG的代码文件的代码质量分析结果:
代码文件2:“0”;代码文件3:“0”。
本申请提供的确定代码质量的方法,通过获取待测试的目标代码文件;对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。采用本申请提供的确定代码质量的方法,能够对代码文件的质量进行评估。
此外,相比较于现有的人工评估代码文件质量会耗费大量人力资源,本申请提供的确定代码质量的方法更自动化、智能化,并且采用LSTM模型训练得到的代码质量分析模型评估代码文件的质量,能够提高评估的准确度。
图3示出了本申请实施例提供的确定代码质量的方法300的示意性流程图。应理解,该方法300可以由确定代码质量的装置执行。该装置可以为至少具有计算和接口通信功能的装置,例如代码质量分析软件。
S310,获取多个样本代码文件和所述多个样本代码文件中每个样本代码文件的代码质量分析结果,所述代码质量分析结果包括存在BUG或不存在BUG。
S320,对所述每个样本代码文件进行分析,得到所述每个样本代码文件的抽象语法树。
S330,将所述每个样本代码文件的抽象语法树和所述每个样本代码文件的代码质量分析结果输入到所述双向长短时记忆循环神经网络LSTM模型中,训练得到代码质量分析模型,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系。
S340,获取待测试的目标代码文件。
S350,对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树。
S360,根据所述目标代码文件的抽象语法树和所述代码质量分析模型,确定所述目标代码文件的代码质量分析结果。
上面结合图1至图3介绍了本申请实施例提供的确定代码质量的方法,下面将结合图4和图5介绍本申请实施例提供的确定代码质量的装置。
图4示出了本申请实施例提供的确定代码质量的装置400的示意性框图。该装置400包括:
获取单元410,用于获取待测试的目标代码文件;
分析单元420,用于对所述获取单元410获取的所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;
确定单元430,用于根据所述分析单元420分析的所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。
在一种可能的实现方式中,所述装置还包括训练单元,所述获取单元还用于在将所述目标代码文件的抽象语法树输入代码质量分析模型进行代码质量分析,得到所述目标代码文件的代码质量分析结果的数据之前,获取多个样本代码文件和所述多个样本代码文件中每个样本代码文件的代码质量分析结果的数据;所述分析单元还用于对所述每个样本代码文件进行分析,得到所述每个样本代码文件的抽象语法树;所述训练单元还用于将所述每个样本代码文件的抽象语法树和所述每个样本代码文件的代码质量分析结果的数据输入到所述双向长短时记忆循环神经网络LSTM模型中,训练得到所述代码质量分析模型。
在一种可能的实现方式中,所述分析单元具体用于通过语法分析器对所述目标代码文件进行词法和语法分析,得到分析结果;将所述分析结果通过抽象语法树的形式表示。
在一种可能的实现方式中,所述装置还包括发送单元,所述发送单元用于当所述目标代码文件的代码质量分析结果为存在BUG时,发送第一提醒信息,所述第一提醒信息用于提醒用户修复所述目标代码文件中的BUG。
在一种可能的实现方式中,所述装置还包括发送单元,所述发送单元用于当所述目标代码文件的代码质量分析结果为存在BUG时,发送第二提醒信息,所述第二提醒信息用于提醒用户所述目标代码文件中存在的所有BUG在所述目标代码文件中的位置。
在一种可能的实现方式中,所述装置还包括提交单元或修复单元,所述提交单元用于当所述目标代码文件的代码质量分析结果为不存在BUG时,提交所述目标代码;或所述修复单元用于当所述目标代码文件的代码质量分析结果为存在BUG时,修复所述目标代码文件中存在的问题。
在一种可能的实现方式中,所述装置还包括输出单元,所述输出单元用于输出所述目标代码文件的代码质量分析结果。
图5示出了本申请实施例提供的确定代码质量的装置500的示意性框图。该装置500可以为图5中所述的装置500,该装置500可以采用如图5所示的硬件架构。该装置500可以包括处理器510、通信接口520和存储器530,该处理器510、通信接口520和存储器530通过内部连接通路互相通信。图3中的获取单元410、分析单元420和确定单元430所实现的相关功能可以由处理器510来实现。
该处理器510可以包括是一个或多个处理器,例如包括一个或多个中央处理单元(central processing unit,CPU),在处理器是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
该通信接口520用于输入和/或输出数据。该通信接口可以包括发送接口和接收接口,发送接口用于输出数据,接收接口用于输入数据。
该存储器530包括但不限于是随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程存储器(erasable programmable readonly memory,EPROM)、只读光盘(compact disc read-only memory,CD-ROM),该存储器530用于存储相关指令及数据。
存储器530用于存储该装置的程序代码和数据,可以为单独的器件或集成在处理器510中。
具体地,所述处理器510用于控制通信接口520调用存储器530中存储的代码指令并执行该代码指令。具体可参见方法实施例中的描述,在此不再赘述。
可以理解的是,图5仅仅示出了装置的简化设计。在实际应用中,该装置500还可以分别包含必要的其他元件,包含但不限于任意数量的通信接口、处理器、控制器、存储器等,而所有可以实现本申请的装置都在本申请的保护范围之内。
在一种可能的设计中,该装置500可以被替换为芯片装置,例如可以为可用于该装置中的芯片,用于实现该装置中处理器510的相关功能。该芯片装置可以为实现相关功能的现场可编程门阵列,专用集成芯片,系统芯片,中央处理器,网络处理器,数字信号处理电路,微控制器,还可以采用可编程控制器或其他集成芯片。该芯片中,可选的可以包括一个或多个存储器,用于存储程序代码,当所述代码被执行时,使得处理器实现相应的功能。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种确定代码质量的方法,其特征在于,包括:
获取待测试的目标代码文件;
对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;
根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在漏洞BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。
2.根据权利要求1所述的方法,其特征在于,在根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果之前,所述方法还包括:
获取多个样本代码文件和所述多个样本代码文件中每个样本代码文件的代码质量分析结果;
对所述每个样本代码文件进行分析,得到所述每个样本代码文件的抽象语法树;
将所述每个样本代码文件的抽象语法树和所述每个样本代码文件的代码质量分析结果输入到所述双向长短时记忆循环神经网络LSTM模型中,训练得到所述代码质量分析模型。
3.根据权利要求2所述的方法,其特征在于,对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树,包括:
通过语法分析器对所述目标代码文件进行词法和语法分析,得到分析结果;
将所述分析结果通过抽象语法树的形式表示。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
当所述目标代码文件的代码质量分析结果为存在BUG时,发送第一提醒信息,所述第一提醒信息用于提醒用户修复所述目标代码文件中的BUG。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
当所述目标代码文件的代码质量分析结果为存在BUG时,发送第二提醒信息,所述第二提醒信息用于提醒用户所述目标代码文件中存在的所有BUG在所述目标代码文件中的位置。
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
当所述目标代码文件的代码质量分析结果为不存在BUG时,提交所述目标代码;或
当所述目标代码文件的代码质量分析结果为存在BUG时,修复所述目标代码文件中存在的问题。
7.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
输出所述目标代码文件的代码质量分析结果。
8.一种确定代码质量的装置,其特征在于,包括:
获取单元,用于获取待测试的目标代码文件;
分析单元,用于对所述目标代码文件进行分析,得到所述目标代码文件的抽象语法树;
确定单元,用于根据所述目标代码文件的抽象语法树和代码质量分析模型,确定所述目标代码文件的代码质量分析结果,所述代码质量分析结果包括存在BUG或不存在BUG,所述代码质量分析模型用于表示抽象语法树与代码质量分析结果之间的映射关系,且所述代码质量分析模型是通过双向长短时记忆循环神经网络LSTM训练得到的。
9.一种计算机设备,包括存储器、处理器、通信接口以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述存储器、所述处理器以及所述通信接口之间通过内部连接通路互相通信,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,用于存储计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811536774.0A CN109783361A (zh) | 2018-12-14 | 2018-12-14 | 确定代码质量的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811536774.0A CN109783361A (zh) | 2018-12-14 | 2018-12-14 | 确定代码质量的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109783361A true CN109783361A (zh) | 2019-05-21 |
Family
ID=66497008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811536774.0A Pending CN109783361A (zh) | 2018-12-14 | 2018-12-14 | 确定代码质量的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783361A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781072A (zh) * | 2019-09-10 | 2020-02-11 | 中国平安财产保险股份有限公司 | 基于机器学习的代码审核方法、装置、设备及存储介质 |
CN112764784A (zh) * | 2021-02-03 | 2021-05-07 | 河南工业大学 | 基于神经机器翻译的软件缺陷自动修复方法及装置 |
CN113268243A (zh) * | 2021-05-11 | 2021-08-17 | 网易(杭州)网络有限公司 | 内存预测方法及装置、存储介质、电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261604A (zh) * | 2008-04-09 | 2008-09-10 | 中兴通讯股份有限公司 | 一种软件质量评价装置及软件质量评价的定量分析方法 |
WO2017181286A1 (en) * | 2016-04-22 | 2017-10-26 | Lin Tan | Method for determining defects and vulnerabilities in software code |
US20180150742A1 (en) * | 2016-11-28 | 2018-05-31 | Microsoft Technology Licensing, Llc. | Source code bug prediction |
CN108388425A (zh) * | 2018-03-20 | 2018-08-10 | 北京大学 | 一种基于lstm自动补全代码的方法 |
CN108628281A (zh) * | 2017-03-23 | 2018-10-09 | 株式会社日立制作所 | 异常检测系统及异常检测方法 |
-
2018
- 2018-12-14 CN CN201811536774.0A patent/CN109783361A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261604A (zh) * | 2008-04-09 | 2008-09-10 | 中兴通讯股份有限公司 | 一种软件质量评价装置及软件质量评价的定量分析方法 |
WO2017181286A1 (en) * | 2016-04-22 | 2017-10-26 | Lin Tan | Method for determining defects and vulnerabilities in software code |
US20180150742A1 (en) * | 2016-11-28 | 2018-05-31 | Microsoft Technology Licensing, Llc. | Source code bug prediction |
CN108628281A (zh) * | 2017-03-23 | 2018-10-09 | 株式会社日立制作所 | 异常检测系统及异常检测方法 |
CN108388425A (zh) * | 2018-03-20 | 2018-08-10 | 北京大学 | 一种基于lstm自动补全代码的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781072A (zh) * | 2019-09-10 | 2020-02-11 | 中国平安财产保险股份有限公司 | 基于机器学习的代码审核方法、装置、设备及存储介质 |
CN112764784A (zh) * | 2021-02-03 | 2021-05-07 | 河南工业大学 | 基于神经机器翻译的软件缺陷自动修复方法及装置 |
CN112764784B (zh) * | 2021-02-03 | 2022-10-11 | 河南工业大学 | 基于神经机器翻译的软件缺陷自动修复方法及装置 |
CN113268243A (zh) * | 2021-05-11 | 2021-08-17 | 网易(杭州)网络有限公司 | 内存预测方法及装置、存储介质、电子设备 |
CN113268243B (zh) * | 2021-05-11 | 2024-02-23 | 网易(杭州)网络有限公司 | 内存预测方法及装置、存储介质、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Buccino et al. | SpikeInterface, a unified framework for spike sorting | |
CN113792825B (zh) | 一种用电信息采集设备故障分类模型训练方法及装置 | |
CN112884092B (zh) | Ai模型生成方法、电子设备及存储介质 | |
Bertoli et al. | JMT: performance engineering tools for system modeling | |
CN107844424B (zh) | 基于模型的测试系统及方法 | |
CN109240901B (zh) | 性能分析方法、性能分析装置、存储介质和电子设备 | |
CN109783361A (zh) | 确定代码质量的方法和装置 | |
CN109871326A (zh) | 一种脚本录制的方法和装置 | |
CN106415504A (zh) | 测试用例生成系统及记录测试用例的记录介质 | |
CN106411635A (zh) | 一种实时协议的形式化分析及验证方法 | |
CN112416369B (zh) | 一种面向异构混合环境的智能化部署方法 | |
CN105892304B (zh) | 曲线数据自动判读方法 | |
CN113064835A (zh) | 一种计算机软件测试系统 | |
CN113409284A (zh) | 电路板故障检测方法、装置、设备以及存储介质 | |
CN110647461B (zh) | 多信息融合的回归测试用例排序方法及系统 | |
CN108363660B (zh) | 一种测试程序生成方法和装置 | |
CN111124898A (zh) | 问答系统测试方法、装置、计算机设备和存储介质 | |
Williams et al. | Sensitivity analysis in model-driven engineering | |
CN109743200B (zh) | 基于资源特征的云计算平台计算任务成本预测方法及系统 | |
CN112149828A (zh) | 基于深度学习框架的算子精度检测方法和装置 | |
CN110175083A (zh) | 操作系统的监控方法和装置 | |
CN111143432A (zh) | 一种事件处理结果的数据分析预警系统及方法 | |
Zapreev | Model checking Markov chains: techniques and tools | |
Sundqvist et al. | Robust procedural learning for anomaly detection and observability in 5G RAN | |
CN115017047A (zh) | 基于b/s架构的测试方法、系统、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |