CN109491923B - 新增异常代码的确定方法、装置、介质及电子设备 - Google Patents
新增异常代码的确定方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN109491923B CN109491923B CN201811534275.8A CN201811534275A CN109491923B CN 109491923 B CN109491923 B CN 109491923B CN 201811534275 A CN201811534275 A CN 201811534275A CN 109491923 B CN109491923 B CN 109491923B
- Authority
- CN
- China
- Prior art keywords
- code
- file
- check result
- line number
- determining
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及一种新增异常代码的确定方法、装置、介质及电子设备。所述方法包括:获取对当前版本的源代码进行代码检查所生成的第一检查结果、以及对所述当前版本的前一版本的源代码进行代码检查所生成的第二检查结果,其中,代码检查后所生成的检查结果包括异常代码所在代码文件的文件名称及所处的行号;根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果和所述第二检查结果中文件名称相同的代码文件之间的代码变更情况;根据所述代码变更情况,确定所述当前版本的源代码相对于所述前一版本的源代码的新增异常代码。这样,可以提升确定新增异常代码的准确率。
Description
技术领域
本公开涉及计算机技术领域,具体地,涉及一种新增异常代码的确定方法、装置、介质及电子设备。
背景技术
在进行代码静态检查时,会生成针对代码的检查结果。一般情况下,输出的检查结果包含文件名、行号、问题描述信息等。其中,文件名就是经代码检查所确定的异常代码所在文件的文件名,相应地,行号为该异常代码所处的行号,也就是该异常代码所在行所对应的行号,问题描述信息是针对异常代码的问题描述。实际应用时,由于代码版本更新,针对每一版本的代码,都会生成一个检查结果,技术人员则会对各版本代码对应的检查结果中出现的问题予以解决。
在实际解决问题时,前一版本代码的检查结果中已出现过的异常代码属于已知问题,在关注后一版本代码的检查结果时,只需要确定相较于前一版本代码,后一版本代码中哪些代码的改变使得后一版本的检查结果出现了新的问题,关注新的问题予以解决,也就是关注新增异常代码。因此,针对前后两个版本代码的检查结果,常常会对二者进行差分比较,也就是确定后一版本的代码相较于前一版本的代码又增加了哪些新的异常代码。现有技术中,一般将前后两个版本代码检查结果中的文件名和行号进行简单的文本比较,以确定二者之间的差分结果。但是,如果前后两个版本代码中处于某一行的异常代码内容未发生变化,而后一版本代码中在该行异常代码之前添加(或者,删除)了一行新的代码导致该异常代码的行号发生变化,这时,在根据现有技术的方法确定新增的异常代码时,会以该行异常代码所在文件的文件名和所处行号为依据进行确定,而由于该行异常代码的行号发生变化,则会将该行异常代码确定为新增的异常代码,而该行异常代码并未导致新的问题,这就会导致新增异常代码的确定出现误差,降低技术人员的工作效率。
发明内容
本公开的目的是提供一种新增异常代码的确定方法、装置、介质及电子设备,以准确确定新增的异常代码。
为了实现上述目的,根据本公开的第一方面,提供一种新增异常代码的确定方法,所述方法包括:
获取对当前版本的源代码进行代码检查所生成的第一检查结果、以及对所述当前版本的前一版本的源代码进行代码检查所生成的第二检查结果,其中,代码检查后所生成的检查结果包括异常代码所在代码文件的文件名称及所处的行号;
根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果和所述第二检查结果中文件名称相同的代码文件之间的代码变更情况;
根据所述代码变更情况,确定所述当前版本的源代码相对于所述前一版本的源代码的新增异常代码。
可选地,所述根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果和所述第二检查结果中文件名称相同的代码文件之间的代码变更情况,包括:
确定目标文件名称,所述目标文件名称为所述第一检查结果和所述第二检查结果中均出现的文件名称;
将确定出的所述目标文件名称依次作为当前目标文件名称,并执行如下操作:
确定第一代码文件相对于第二代码文件的新增代码、已更改代码和未更改代码,其中,所述第一代码文件为所述当前版本的源代码中对应于所述当前目标文件名称的代码文件,所述第二代码文件为所述前一版本的源代码中对应于所述当前目标文件名称的代码文件;
若存在所述新增代码,记录所述新增代码在所述第一代码文件中的行号;
若存在所述已更改代码,记录所述已更改代码在所述第一代码文件中的行号;
若存在所述未更改代码,记录所述未更改代码在所述第一代码文件中的行号、以及在所述第二代码文件中的行号。
可选地,所述根据所述代码变更情况,确定所述当前版本的源代码相对于所述前一版本的源代码的新增异常代码,包括:
若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述新增代码在所述第一代码文件中的行号,则确定所述新增代码为所述新增异常代码;
若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述已更改代码在所述第一代码文件中的行号,则确定所述已更改代码为所述新增异常代码;
若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述未更改代码在所述第一代码文件中的行号、而所述第二检查结果中对应于所述当前目标文件名称的行号信息中不包括所述未更改代码在所述第二代码文件中的行号,则确定所述未更改代码为所述新增异常代码。
可选地,所述方法还包括:
根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果相对于所述第二检查结果的新增文件名称;
将所述当前版本的源代码中对应于所述新增文件名称的代码文件中、其行号出现在所述第一检查结果中的代码确定为所述新增异常代码。
根据本公开的第二方面,提供一种新增异常代码的确定装置,所述装置包括:
获取模块,用于获取对当前版本的源代码进行代码检查所生成的第一检查结果、以及对所述当前版本的前一版本的源代码进行代码检查所生成的第二检查结果,其中,代码检查后所生成的检查结果包括异常代码所在代码文件的文件名称及所处的行号;
第一确定模块,用于根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果和所述第二检查结果中文件名称相同的代码文件之间的代码变更情况;
第二确定模块,用于根据所述代码变更情况,确定所述当前版本的源代码相对于所述前一版本的源代码的新增异常代码。
可选地,所述第一确定模块用于确定目标文件名称,所述目标文件名称为所述第一检查结果和所述第二检查结果中均出现的文件名称;将确定出的所述目标文件名称依次作为当前目标文件名称,并确定第一代码文件相对于第二代码文件的新增代码、已更改代码和未更改代码,其中,所述第一代码文件为所述当前版本的源代码中对应于所述当前目标文件名称的代码文件,所述第二代码文件为所述前一版本的源代码中对应于所述当前目标文件名称的代码文件;若存在所述新增代码,记录所述新增代码在所述第一代码文件中的行号;若存在所述已更改代码,记录所述已更改代码在所述第一代码文件中的行号;若存在所述未更改代码,记录所述未更改代码在所述第一代码文件中的行号、以及在所述第二代码文件中的行号。
可选地,所述第二确定模块用于若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述新增代码在所述第一代码文件中的行号,则确定所述新增代码为所述新增异常代码;若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述已更改代码在所述第一代码文件中的行号,则确定所述已更改代码为所述新增异常代码;若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述未更改代码在所述第一代码文件中的行号、而所述第二检查结果中对应于所述当前目标文件名称的行号信息中不包括所述未更改代码在所述第二代码文件中的行号,则确定所述未更改代码为所述新增异常代码。
可选地,所述装置还包括:
第三确定模块,用于根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果相对于所述第二检查结果的新增文件名称;
第四确定模块,用于将所述当前版本的源代码中对应于所述新增文件名称的代码文件中、其行号出现在所述第一检查结果中的代码确定为所述新增异常代码。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时本公开第一方面所述方法的步骤。
根据本公开的第四方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面所述方法的步骤。
通过上述技术方案,获取对当前版本的源代码进行代码检查所生成的第一检查结果、以及对当前版本的前一版本的源代码进行代码检查所生成的第二检查结果后,根据第一检查结果和第二检查结果确定第一检查结果和第二检查结果中文件名称相同的代码文件之间的代码变更情况,从而可以根据代码变更情况确定当前版本的源代码相对于前一版本的源代码的新增异常代码。这样,通过第一检查结果和第二检查结果可以确定出相同的代码文件名称,而后确定文件名称相同的代码文件之间的代码变更情况,可以得到前后两个版本代码文件中代码的关系,从而可以准确确定出当前版本的源代码相对于前一版本的源代码的新增异常代码。因此,可以提升确定新增异常代码的准确率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开的一种实施方式提供的新增异常代码的确定方法的流程图;
图2是根据本公开提供的新增异常代码的确定方法中,两个版本源代码中文件名称相同的代码文件内容的一种示例性的示意图;
图3是根据本公开提供的新增异常代码的确定方法中,根据代码变更情况,确定当前版本的源代码相对于前一版本的源代码的新增异常代码的步骤的一种示例性实现方式的流程图;
图4是根据本公开的一种实施方式提供的新增异常代码的确定装置的框图;
图5是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1是根据本公开的一种实施方式提供的新增异常代码的确定方法的流程图。如图1所示,该方法可以包括以下步骤。
在步骤11中,获取对当前版本的源代码进行代码检查所生成的第一检查结果、以及对当前版本的前一版本的源代码进行代码检查所生成的第二检查结果。
对源代码进行代码检查所生成的检查结果可以是对源代码进行静态检查所生成的代码静态检查结果、对源代码进行编译时所生成的编译信息等。其中,该检查结果可以包括异常代码所在代码文件的文件名称及所处的行号。另外,检查结果中还可以包含问题描述信息,用于指示针对异常代码的问题描述。
在相应的代码检查工具对当前版本的源代码进行代码检查后,会生成第一检查结果,在获取该第一检查结果的同时,可以获取对当前版本的前一版本的源代码进行代码检查所生成的第二检查结果,以便在后续的步骤中,依据上述第一检查结果和第二检查结果确定出当前版本的源代码相对于前一版本的源代码的新增异常代码。
在步骤12中,根据第一检查结果和第二检查结果,确定第一检查结果和第二检查结果中文件名称相同的代码文件之间的代码变更情况。
确定第一检查结果和第二检查结果中文件名称相同的代码文件之间的代码变更情况,可以有利于准确确定当前版本的源代码相对于前一版本的源代码的新增异常代码。文件名称相同的代码文件之间的代码变更情况可以包括以下中的任意一者或多者:新增代码在当前版本代码文件中的行号、已更改代码在当前版本代码文件中的行号、未更改代码分别在当前版本代码文件和前一版本代码文件中的行号。若无新增代码,则代码变更信息中不会记录相关信息,其他同理。其中,新增代码为当前版本代码文件相对于前一版本代码文件新增的一行或多行代码,已更改代码为当前版本代码文件相对于前一版本代码文件代码内容有更改的一行或多行代码,未更改代码为当前版本代码文件相对于前一版本代码文件内容不变的一行或多行代码。需要说明的是,若第一检查结果和第二检查结果中存在多个文件名称相同的代码文件,则每一对文件名称相同的代码文件均会记录相应的代码变更信息。
举例来说,若第一检查结果为{A,3;A,4;B,10;B,12;C,15},第二检查结果为{A,3;A,4},其中,用“{}”内的内容表示检查结果中包含的信息,用符号“;”区分检查结果所包含的每一组,在检查结果的各组中依次包含文件名称和行号(还可包括问题描述信息,本公开未示出)。针对上述示例,可知相同的文件名称为文件名称A,从而可知文件名称相同的代码文件为代码文件A(文件名称A对应的代码文件为代码文件A,本公开为说明简便,用同一字母A表示,二者之间用描述性文字“文件名称”和“代码文件”进行区分),则可以确定当前版本的代码文件A(记为代码文件A1)与前一版本的代码文件A(记为代码文件A0)之间的代码变更情况。针对上述示例,则代码变更情况可以包括以下中的一者或几者:代码文件A1相对于代码文件A0的新增代码及新增代码在代码文件A1中的行号、代码文件A1相对于代码文件A0的已更改代码及已更改代码在代码文件A1中的行号、代码文件A1相对于代码文件A0的未更改代码及未更改代码分别在代码文件A1和代码文件A0中的行号。示例地,代码变更情况可以利用第三方软件(例如,diff工具)确定。
在步骤13中,根据代码变更情况,确定当前版本的源代码相对于前一版本的源代码的新增异常代码。
根据代码变更情况,对于第一检查结果和第二检查结果中文件名称相同的代码文件,可以确定代码文件中的哪些异常代码是在前一版本的源代码中未出现过的,从而可以确定出新增异常代码。
通过上述方案,获取对当前版本的源代码进行代码检查所生成的第一检查结果、以及对当前版本的前一版本的源代码进行代码检查所生成的第二检查结果后,根据第一检查结果和第二检查结果确定第一检查结果和第二检查结果中文件名称相同的代码文件之间的代码变更情况,从而可以根据代码变更情况确定当前版本的源代码相对于前一版本的源代码的新增异常代码。这样,通过第一检查结果和第二检查结果可以确定出相同的代码文件名称,而后确定文件名称相同的代码文件之间的代码变更情况,可以得到前后两个版本代码文件中代码的关系,从而可以准确确定出当前版本的源代码相对于前一版本的源代码的新增异常代码。因此,可以提升确定新增异常代码的准确率。
为了使本领域技术人员更加理解本发明实施例提供的技术方案,下面对上文中的相应步骤进行详细的说明。
首先,针对步骤12中的根据第一检查结果和第二检查结果,确定第一检查结果和第二检查结果中文件名称相同的代码文件之间的代码变更情况进行举例说明。在一种可能的实施例中,步骤12可以包括以下步骤:
确定目标文件名称;
将确定出的目标文件名称依次作为当前目标文件名称,并执行目标操作。
首先,确定目标文件名称,目标文件名称为第一检查结果和第二检查结果中均出现的文件名称。例如,若第一检查结果为{A,3;A,4;B,10;B,12;C,15},第二检查结果为{A,3;A,4;B,9},那么目标文件名称则为文件名称A和文件名称B。
之后,将确定出的目标文件名称依次作为当前目标文件名称,执行目标操作,以依次确定出针对每个当前目标文件名称所对应的代码文件之间的代码变更情况。示例地,若目标文件名称包括文件名称A和文件名称B,那么,可以依次将文件名称A和文件名称B作为当前目标文件名称,从而依次确定出代码文件A的当前版本和前一版本之间的代码变更情况、以及代码文件B的当前版本和前一版本之间的代码变更情况。需要说明的是,对于目标文件名称作为当前目标文件名称的顺序,本公开不做限定。
其中,目标操作可以包括:
确定第一代码文件相对于第二代码文件的新增代码、已更改代码和未更改代码;
若存在新增代码,记录新增代码在第一代码文件中的行号;
若存在已更改代码,记录已更改代码在第一代码文件中的行号;
若存在未更改代码,记录未更改代码在第一代码文件中行号、以及在第二代码文件中的行号。
第一代码文件为当前版本的源代码中对应于当前目标文件名称的代码文件,第二代码文件为前一版本的源代码中对应于当前目标文件名称的代码文件。示例地,第一代码文件相对于第二代码文件的新增代码、已更改代码和未更改代码可以利用第三方软件(例如,diff工具)直接确定出。并且,第三方软件还可以获得代码的行号信息,例如,某代码在第一文件中行号、某代码在第二文件中的行号。若存在新增代码,则记录新增代码在第一代码文件中的行号;若存在已更改代码,则记录已更改代码在第一代码文件中的行号;若存在未更改代码,则记录未更改代码在第一代码文件中的行号以及在第二代码文件中的行号。
示例地,若文件名称A在第一、第二检查结果中均出现,且当前版本及前一版本的源代码中代码文件A的代码如图2所示,在图2中只示出了代码所在的行号,未示出代码的具体内容。其中,数字代表代码所处的行号,带有单下划线的内容表示当前版本A文件中新增的代码,带有双下划线的内容表示在当前版本A文件中被删除的代码,带有小方框的内容表示在当前版本A文件中内容有更改的代码,虚线表示前后两个版本A文件中未更改代码间的对应关系。因此,代码文件A两个版本之间的代码变更情况可以包括关于代码文件A的新增代码的信息Y1={4,5},还可以包括关于代码文件A的已更改代码的信息Y2={16,17,18},同时,还可以包括关于代码文件A的未更改代码的信息Y3={1-1;2-2;3-3;4-6;5-7;6-8;7-9;8-10;10-11;11-12;12-13;13-14;14-15;15-16;16-17;17-18;18-19;19-20}。其中,Y1中记录的是代码文件A的当前版本相对于前一版本新增代码在当前版本的行号,Y2中记录的是代码文件A的当前版本相对于前一版本已更改代码在当前版本的行号,Y3中记录的是代码文件A的当前版本相对于前一版本未更改代码在当前版本以及前一版本中的行号,符号“-”前的数字代表未更改代码在当前版本的代码文件A中的行号,符号“-”后的数字代表未更改代码在前一版本的代码文件A中的行号。
通过上述方式,可以针对第一检查结果和第二检查结果中文件名称相同的代码文件,确定代码变更情况,以为后续的新增异常代码的确定提供较为准确的数据支持,以便提升确定新增异常代码的准确性。
下面针对步骤13中的根据代码变更情况,确定当前版本的源代码相对于前一版本的源代码的新增异常代码进行举例说明。在一种可能的实施方式中,如图3所示,步骤13可以包括以下步骤:
在步骤31中,若第一检查结果中对应于当前目标文件名称的行号信息中包括新增代码在第一代码文件中的行号,则确定该新增代码为新增异常代码;
在步骤32中,若第一检查结果中对应于当前目标文件名称的行号信息中包括已更改代码在第一代码文件中的行号,则确定该已更改代码为新增异常代码;
在步骤33中,若第一检查结果中对应于当前目标文件名称的行号信息中包括未更改代码在第一代码文件中的行号、而第二检查结果中对应于当前目标文件名称的行号信息中不包括未更改代码在第二代码文件中的行号,则确定该未更改代码为新增异常代码。
示例地,若第一检查结果为C1={A,2;A,4;A,7;A,13;A,16;A,19;B,25;B,30},第二检查结果为C2={A,2;A,5;A,15;A,18}。可知相同的文件名称为文件名称A,假设代码文件A的两个版本如图2中所示。
那么,由代码变更情况可知,新增代码在当前版本代码文件A中的行号为4、5,而第一检查结果中关于文件名称A的行号信息中包含2、4、7、13、16和19,则可以确定当前版本的代码文件A中第4行代码为新增异常代码,而第5行虽然是新增代码却并未引起异常。
并且,已更改代码在当前版本代码文件A中的行号为16、17和18,而第一检查结果中关于文件名称A的行号信息中包含2、4、7、13、16和19,则可以确定当前版本的代码文件A中第16行代码为新增异常代码,而第17、18行代码虽然内容较上一版本有更改,但该更改未引发新的代码异常。
并且,未更改代码在当前版本和前一版本的代码文件A中的行号记录为Y3={1-1;2-2;3-3;4-6;5-7;6-8;7-9;8-10;10-11;11-12;12-13;13-14;14-15;15-16;16-17;17-18;18-19;19-20},而第一检查结果中关于文件名称A的行号信息中包含2、4、7、13、16和19,第二检查结果中关于文件名称A的行号信息中包含2、5、15和18。第一检查结果中包括行号2,由Y3可知对应于前一版本代码文件中的行号2,而第二检查结果中包含行号2,可知该行代码在上一版本的代码文件中已经属于异常代码,因此当前版本代码文件A中第2行代码不属于新增异常代码;第一检查结果中包括行号7,由Y3可知对应于前一版本代码文件中的行号5,而第二检查结果中包含行号5,可知该行代码在上一版本的代码文件中已经属于异常代码,因此当前版本代码文件A中第7行代码不属于新增异常代码;第一检查结果中包括行号13,由Y3可知对应于前一版本代码文件中的行号12,而第二检查结果中不包含行号12,可知该行代码在上一版本的代码文件中并不属于异常代码,因此当前版本代码文件A中第13行代码属于新增异常代码;第一检查结果中包括行号19,由Y3可知对应于前一版本代码文件中的行号18,而第二检查结果中包含行号18,可知该行代码在上一版本的代码文件中已经属于异常代码,因此当前版本代码文件A中第13行代码不属于新增异常代码。
因此,针对上述示例,得到的当前版本的源代码相对于前一版本的源代码的新增异常代码为当前版本的代码文件A中的第4行、第13行和第16行代码。需要说明的是,这里得出的新增异常代码是针对第一检查结果和第二检查结果中文件名称相同的代码文件而言的。
通过上述方案,可以保证确定出的异常代码即为新增的异常代码,提升确定新增异常代码的准确性。
在一种可能的实施方式中,本公开提供的新增异常代码的确定方法还可以包括以下步骤:
根据第一检查结果和第二检查结果,确定第一检查结果相对于第二检查结果的新增文件名称;
将当前版本的源代码中对应于新增文件名称的代码文件中、其行号出现在第一检查结果中的代码确定为新增异常代码。
示例地,若第一检查结果为C1={A,2;A,4;A,7;A,13;A,16;A,19;B,25;B,30},第二检查结果为C2={A,2;A,5;A,15;A,18}。则可以确定第一检查结果相对于第二检查结果的新增文件名称为文件名称B。
新增文件名称可以反映出在前一版本的异常代码所在的代码文件之外,当前版本的源代码在其他代码文件中出现了异常代码,这必然是与前一版本的源代码的异常代码不同的。因此,可以直接将当前版本的源代码中对应于新增文件名称的代码文件中、其行号出现在第一检查结果中的代码确定为新增异常代码。示例地,若第一检查结果为C1={A,2;A,4;A,7;A,13;A,16;A,19;B,25;B,30},第二检查结果为C2={A,2;A,5;A,15;A,18},那么可以确定新增异常代码为当前版本的代码文件B中的第25行和第30行代码。
通过上述方案,可以确定第一检查结果相对于第二检查结果的新增文件名称,并根据新增文件名称确定新增异常代码。
结合上述针对文件名称相同的代码文件确定新增异常代码的方式、以及针对新增文件名称确定新增异常代码的方式,可以获得当前版本的源代码相对于前一版本的源代码的全部新增异常代码,且可以保证准确性。
图4是根据本公开的一种实施方式提供的新增异常代码的确定装置的框图。如图4所示,装置40可以包括:
获取模块41,用于获取对当前版本的源代码进行代码检查所生成的第一检查结果、以及对所述当前版本的前一版本的源代码进行代码检查所生成的第二检查结果,其中,代码检查后所生成的检查结果包括异常代码所在代码文件的文件名称及所处的行号;
第一确定模块42,用于根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果和所述第二检查结果中文件名称相同的代码文件之间的代码变更情况;
第二确定模块43,用于根据所述代码变更情况,确定所述当前版本的源代码相对于所述前一版本的源代码的新增异常代码。
可选地,所述第一确定模块42用于确定目标文件名称,所述目标文件名称为所述第一检查结果和所述第二检查结果中均出现的文件名称;将确定出的所述目标文件名称依次作为当前目标文件名称,并确定第一代码文件相对于第二代码文件的新增代码、已更改代码和未更改代码,其中,所述第一代码文件为所述当前版本的源代码中对应于所述当前目标文件名称的代码文件,所述第二代码文件为所述前一版本的源代码中对应于所述当前目标文件名称的代码文件;若存在所述新增代码,记录所述新增代码在所述第一代码文件中的行号;若存在所述已更改代码,记录所述已更改代码在所述第一代码文件中的行号;若存在所述未更改代码,记录所述未更改代码在所述第一代码文件中的行号、以及在所述第二代码文件中的行号。
可选地,所述第二确定模块43用于若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述新增代码在所述第一代码文件中的行号,则确定所述新增代码为所述新增异常代码;若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述已更改代码在所述第一代码文件中的行号,则确定所述已更改代码为所述新增异常代码;若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述未更改代码在所述第一代码文件中的行号、而所述第二检查结果中对应于所述当前目标文件名称的行号信息中不包括所述未更改代码在所述第二代码文件中的行号,则确定所述未更改代码为所述新增异常代码。
可选地,所述装置40还包括:
第三确定模块,用于根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果相对于所述第二检查结果的新增文件名称;
第四确定模块,用于将所述当前版本的源代码中对应于所述新增文件名称的代码文件中、其行号出现在所述第一检查结果中的代码确定为所述新增异常代码。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种电子设备的框图。例如,电子设备1900可以被提供为一服务器。参照图5,电子设备1900包括处理器1922,其数量可以为一个或多个,以及存储器1932,用于存储可由处理器1922执行的计算机程序。存储器1932中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器1922可以被配置为执行该计算机程序,以执行上述的新增异常代码的确定方法。
另外,电子设备1900还可以包括电源组件1926和通信组件1950,该电源组件1926可以被配置为执行电子设备1900的电源管理,该通信组件1950可以被配置为实现电子设备1900的通信,例如,有线或无线通信。此外,该电子设备1900还可以包括输入/输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作***,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的新增异常代码的确定方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器1932,上述程序指令可由电子设备1900的处理器1922执行以完成上述的新增异常代码的确定方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (6)
1.一种新增异常代码的确定方法,其特征在于,所述方法包括:
获取对当前版本的源代码进行代码检查所生成的第一检查结果、以及对所述当前版本的前一版本的源代码进行代码检查所生成的第二检查结果,其中,代码检查后所生成的检查结果包括异常代码所在代码文件的文件名称及所处的行号;
根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果和所述第二检查结果中文件名称相同的代码文件之间的代码变更情况;
根据所述代码变更情况,确定所述当前版本的源代码相对于所述前一版本的源代码的新增异常代码;
所述根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果和所述第二检查结果中文件名称相同的代码文件之间的代码变更情况,包括:
确定目标文件名称,所述目标文件名称为所述第一检查结果和所述第二检查结果中均出现的文件名称;
将确定出的所述目标文件名称依次作为当前目标文件名称,并执行如下操作:
确定第一代码文件相对于第二代码文件的新增代码、已更改代码和未更改代码,其中,所述第一代码文件为所述当前版本的源代码中对应于所述当前目标文件名称的代码文件,所述第二代码文件为所述前一版本的源代码中对应于所述当前目标文件名称的代码文件;
若存在所述新增代码,记录所述新增代码在所述第一代码文件中的行号;
若存在所述已更改代码,记录所述已更改代码在所述第一代码文件中的行号;
若存在所述未更改代码,记录所述未更改代码在所述第一代码文件中的行号、以及在所述第二代码文件中的行号;
所述根据所述代码变更情况,确定所述当前版本的源代码相对于所述前一版本的源代码的新增异常代码,包括:
若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述新增代码在所述第一代码文件中的行号,则确定所述新增代码为所述新增异常代码;
若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述已更改代码在所述第一代码文件中的行号,则确定所述已更改代码为所述新增异常代码;
若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述未更改代码在所述第一代码文件中的行号、而所述第二检查结果中对应于所述当前目标文件名称的行号信息中不包括所述未更改代码在所述第二代码文件中的行号,则确定所述未更改代码为所述新增异常代码。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果相对于所述第二检查结果的新增文件名称;
将所述当前版本的源代码中对应于所述新增文件名称的代码文件中、其行号出现在所述第一检查结果中的代码确定为所述新增异常代码。
3.一种新增异常代码的确定装置,其特征在于,所述装置包括:
获取模块,用于获取对当前版本的源代码进行代码检查所生成的第一检查结果、以及对所述当前版本的前一版本的源代码进行代码检查所生成的第二检查结果,其中,代码检查后所生成的检查结果包括异常代码所在代码文件的文件名称及所处的行号;
第一确定模块,用于根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果和所述第二检查结果中文件名称相同的代码文件之间的代码变更情况;
第二确定模块,用于根据所述代码变更情况,确定所述当前版本的源代码相对于所述前一版本的源代码的新增异常代码;
所述第一确定模块用于确定目标文件名称,所述目标文件名称为所述第一检查结果和所述第二检查结果中均出现的文件名称;将确定出的所述目标文件名称依次作为当前目标文件名称,并确定第一代码文件相对于第二代码文件的新增代码、已更改代码和未更改代码,其中,所述第一代码文件为所述当前版本的源代码中对应于所述当前目标文件名称的代码文件,所述第二代码文件为所述前一版本的源代码中对应于所述当前目标文件名称的代码文件;若存在所述新增代码,记录所述新增代码在所述第一代码文件中的行号;若存在所述已更改代码,记录所述已更改代码在所述第一代码文件中的行号;若存在所述未更改代码,记录所述未更改代码在所述第一代码文件中的行号、以及在所述第二代码文件中的行号;
所述第二确定模块用于若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述新增代码在所述第一代码文件中的行号,则确定所述新增代码为所述新增异常代码;若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述已更改代码在所述第一代码文件中的行号,则确定所述已更改代码为所述新增异常代码;若所述第一检查结果中对应于所述当前目标文件名称的行号信息中包括所述未更改代码在所述第一代码文件中的行号、而所述第二检查结果中对应于所述当前目标文件名称的行号信息中不包括所述未更改代码在所述第二代码文件中的行号,则确定所述未更改代码为所述新增异常代码。
4.根据权利要求3所述的装置,其特征在于,所述装置还包括:
第三确定模块,用于根据所述第一检查结果和所述第二检查结果,确定所述第一检查结果相对于所述第二检查结果的新增文件名称;
第四确定模块,用于将所述当前版本的源代码中对应于所述新增文件名称的代码文件中、其行号出现在所述第一检查结果中的代码确定为所述新增异常代码。
5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1或2所述方法的步骤。
6.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1或2所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811534275.8A CN109491923B (zh) | 2018-12-14 | 2018-12-14 | 新增异常代码的确定方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811534275.8A CN109491923B (zh) | 2018-12-14 | 2018-12-14 | 新增异常代码的确定方法、装置、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109491923A CN109491923A (zh) | 2019-03-19 |
CN109491923B true CN109491923B (zh) | 2021-11-12 |
Family
ID=65710290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811534275.8A Active CN109491923B (zh) | 2018-12-14 | 2018-12-14 | 新增异常代码的确定方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109491923B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532174B (zh) * | 2019-07-24 | 2024-05-31 | 平安科技(深圳)有限公司 | 计算增量代码覆盖率的方法、装置、计算机设备及存储介质 |
CN112000577B (zh) * | 2020-08-25 | 2023-12-26 | 得到(天津)文化传播有限公司 | 一种代码检查方法、装置、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937392A (zh) * | 2010-08-27 | 2011-01-05 | 华南理工大学 | 一种嵌入式软件动态缺陷检测方法 |
CN103577319A (zh) * | 2012-08-07 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 源代码文件检测方法及装置、文件发布*** |
CN103942143A (zh) * | 2014-04-09 | 2014-07-23 | 烽火通信科技股份有限公司 | 一种基于版本库比较的PC-Lint代码检查结果筛选方法 |
CN105335277A (zh) * | 2014-06-27 | 2016-02-17 | 可牛网络技术(北京)有限公司 | 一种故障信息处理方法及装置、终端 |
CN106445476A (zh) * | 2015-08-11 | 2017-02-22 | 腾讯科技(深圳)有限公司 | 一种代码变更信息确定方法、装置及电子设备 |
CN108304327A (zh) * | 2018-02-02 | 2018-07-20 | 平安证券股份有限公司 | 静态代码扫描结果处理方法和装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004006205A2 (en) * | 2002-07-03 | 2004-01-15 | National Instruments Corporation | Wireless deployment / distributed execution of graphical programs to smart sensors |
CN102929733B (zh) * | 2012-10-18 | 2015-02-11 | 北京奇虎科技有限公司 | 一种错误文件处理方法、装置和客户端设备 |
US9135140B2 (en) * | 2012-11-30 | 2015-09-15 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Identifying software responsible for a change in system stability |
EP3144816A1 (en) * | 2015-09-15 | 2017-03-22 | Tata Consultancy Services Limited | Static analysis based efficient elimination of false positives |
US9785537B2 (en) * | 2015-10-15 | 2017-10-10 | International Business Machines Corporation | Runtime exception and bug identification within an integrated development environment |
CN105824756B (zh) * | 2016-03-17 | 2019-01-04 | 南京大学 | 一种基于代码依赖关系的过时需求自动检测方法及*** |
CN106294134B (zh) * | 2016-07-29 | 2018-02-23 | 腾讯科技(深圳)有限公司 | 代码的崩溃定位方法及装置 |
CN106250319B (zh) * | 2016-08-15 | 2018-02-27 | 腾讯科技(深圳)有限公司 | 静态代码扫描结果处理方法和装置 |
-
2018
- 2018-12-14 CN CN201811534275.8A patent/CN109491923B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937392A (zh) * | 2010-08-27 | 2011-01-05 | 华南理工大学 | 一种嵌入式软件动态缺陷检测方法 |
CN103577319A (zh) * | 2012-08-07 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 源代码文件检测方法及装置、文件发布*** |
CN103942143A (zh) * | 2014-04-09 | 2014-07-23 | 烽火通信科技股份有限公司 | 一种基于版本库比较的PC-Lint代码检查结果筛选方法 |
CN105335277A (zh) * | 2014-06-27 | 2016-02-17 | 可牛网络技术(北京)有限公司 | 一种故障信息处理方法及装置、终端 |
CN106445476A (zh) * | 2015-08-11 | 2017-02-22 | 腾讯科技(深圳)有限公司 | 一种代码变更信息确定方法、装置及电子设备 |
CN108304327A (zh) * | 2018-02-02 | 2018-07-20 | 平安证券股份有限公司 | 静态代码扫描结果处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109491923A (zh) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10387236B2 (en) | Processing data errors for a data processing system | |
CN109558525B (zh) | 一种测试数据集的生成方法、装置、设备和存储介质 | |
US20160283357A1 (en) | Call stack relationship acquiring method and apparatus | |
US8904352B2 (en) | Systems and methods for processing source code during debugging operations | |
CN109491923B (zh) | 新增异常代码的确定方法、装置、介质及电子设备 | |
CN110990276A (zh) | 接口字段自动化测试方法、装置和存储介质 | |
CN106708704A (zh) | 一种对崩溃日志进行分类的方法和装置 | |
CN112486490A (zh) | 前端代码打包方法、装置、电子设备及存储介质 | |
CN111126010B (zh) | Freemaker模板文件修复方法、装置、计算机设备及存储介质 | |
CN115567607A (zh) | 调用链路的处理方法、装置、***、电子设备及存储介质 | |
CN115357513B (zh) | 程序模糊测试方法、装置、设备及存储介质 | |
CN114461193B (zh) | 一种通信协议代码的生成方法、装置、设备及存储介质 | |
CN115203300B (zh) | 一种数据验证方法及装置 | |
CN112417020B (zh) | 业务扩展的实现方法、装置、计算机设备和存储介质 | |
CN111708542B (zh) | 测试用例生成方法、***、设备及存储介质 | |
CN110737636B (zh) | 一种数据导入方法和装置以及设备 | |
US11144287B2 (en) | Compile time validation of programming code | |
CN109635175B (zh) | 页面数据拼接方法、装置、可读存储介质和电子设备 | |
CN112433943A (zh) | 基于抽象语法树的环境变量检测方法、装置、设备及介质 | |
CN111045922A (zh) | 测试用例生成方法及*** | |
CN111126015B (zh) | 一种报表编制方法、设备 | |
CN112019644B (zh) | 一种确定ip地址的归属信息的方法、***、介质和设备 | |
US20230266967A1 (en) | Method and system for mapping intermediate representation objects for facilitating incremental analysis | |
CN115470214A (zh) | Dbc文件的生成方法、装置和电子设备 | |
CN118250349A (zh) | 一种协议文本差异识别方法、装置、设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |