CN107368313A - 代码检测方法、装置及电子设备 - Google Patents

代码检测方法、装置及电子设备 Download PDF

Info

Publication number
CN107368313A
CN107368313A CN201710587166.1A CN201710587166A CN107368313A CN 107368313 A CN107368313 A CN 107368313A CN 201710587166 A CN201710587166 A CN 201710587166A CN 107368313 A CN107368313 A CN 107368313A
Authority
CN
China
Prior art keywords
code
new version
file
information
code file
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.)
Granted
Application number
CN201710587166.1A
Other languages
English (en)
Other versions
CN107368313B (zh
Inventor
贺辉超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710587166.1A priority Critical patent/CN107368313B/zh
Publication of CN107368313A publication Critical patent/CN107368313A/zh
Application granted granted Critical
Publication of CN107368313B publication Critical patent/CN107368313B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及了一种代码检测方法、装置及电子设备。其中,一种代码检测方法应用于终端设备,所述方法包括:检测针对新版本代码文件提交的触发操作;根据检测到的所述触发操作生成代码变更信息,代码变更信息指示了新版本代码文件与旧版本代码文件之间的差异;按照代码变更信息的格式对新版本代码文件的源码信息进行格式转化,得到代码检测信息,源码信息是在执行新版本代码文件中的代码时生成的;判断代码检测信息中是否包含了代码变更信息,如果不是,则以未被包含的代码变更信息作为新版本代码文件对应的待检测信息。采用本公开有效地降低了代码开发成本,有利于提高代码质量。

Description

代码检测方法、装置及电子设备
技术领域
本公开涉及计算机应用技术领域,尤其涉及一种代码检测方法、装置及电子设备。
背景技术
代码是由程序员利用程序开发工具所支持的语言编写出来的,通常是以文件的形式进行存储,即代码文件。
在实际应用中,为确保代码的可用性,程序员在完成代码开发之后,还需要对代码进行检测,以通过检测发现代码中存在的问题,进而对代码作进一步地完善,从而保证代码质量。
现有技术中代码检测方法包括:代码扫描、代码检查以及单元测试。其中,代码扫描仅用于验证代码是否符合规范、语法等问题,难以发现代码中存在的实际漏洞。代码检查可用于发现代码在逻辑、设计上存在的问题,但实施成本较高。单元测试则需要编写测试用例对代码加以检测,虽然在一定程度上保证了代码的充分检测,但是对程序员的开发能力要求较高,不仅造成实施成本也比较高,而且增加了代码开发周期。
由上可知,如何通过低成本的代码检测方法来保证代码的充分检测,进而发现代码中存在的实际漏洞,仍亟待解决。
发明内容
为了解决上述技术问题,本公开的一个目的在于提供一种代码检测方法、装置及电子设备。
其中,本公开所采用的技术方案为:
一种代码检测方法,应用于终端设备,包括:检测针对新版本代码文件提交的触发操作;根据检测到的所述触发操作生成代码变更信息,所述代码变更信息指示了所述新版本代码文件与旧版本代码文件之间的差异;按照所述代码变更信息的格式对所述新版本代码文件的源码信息进行格式转化,得到代码检测信息,所述源码信息是在执行所述新版本代码文件中的代码时生成的;判断所述代码检测信息中是否包含了所述代码变更信息,如果不是,则以未被包含的代码变更信息作为所述新版本代码文件对应的待检测信息。
一种代码检测方法,应用于服务器,包括:接收终端设备发起的新版本代码文件提交请求,所述新版本代码文件提交请求中包含新版本代码文件及其源码信息,所述源码信息是所述新版本代码文件中的代码在所述终端设备中执行时生成的;根据所述新版本代码文件提交请求触发生成代码变更信息,所述代码变更信息指示了所述新版本代码文件与旧版本代码文件之间的差异;按照所述代码变更信息的格式对所述新版本代码文件的源码信息进行格式转化,得到代码检测信息;判断所述代码检测信息中是否包含了所述代码变更信息,如果不是,则以未被包含的代码变更信息作为所述新版本代码文件对应的待检测信息,并将所述待检测信息返回至所述终端设备。
一种代码检测装置,应用于终端设备,包括:指令获取模块,用于检测针对新版本代码文件提交的触发操作;信息生成模块,用于根据检测到的所述触发操作,所述代码变更信息指示了所述新版本代码文件与旧版本代码文件之间的差异;格式转化模块,用于按照所述代码变更信息的格式对所述新版本代码文件的源码信息进行格式转化,得到代码检测信息,所述源码信息是在执行所述新版本代码文件中的代码时生成的;信息判断模块,用于判断所述代码检测信息中是否包含了所述代码变更信息,如果不是,则以未被包含的代码变更信息作为所述新版本代码文件对应的待检测信息。
一种代码检测装置,应用于服务器,包括:请求接收模块,用于接收终端设备发起的新版本代码文件提交请求,所述新版本代码文件提交请求中包含新版本代码文件及其源码信息,所述源码信息是所述新版本代码文件中的代码在所述终端设备中执行时生成的;信息生成模块,用于根据所述新版本代码文件提交请求触发生成代码变更信息,所述代码变更信息指示了所述新版本代码文件与旧版本代码文件之间的差异;格式转化模块,用于按照所述代码变更信息的格式对所述新版本代码文件的源码信息进行格式转化,得到代码检测信息;信息判断模块,用于判断所述代码检测信息中是否包含了所述代码变更信息,如果不是,则以未被包含的代码变更信息作为所述新版本代码文件对应的待检测信息,并将所述待检测信息返回至所述终端设备。
一种电子设备,包括:处理器及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上所述的代码检测方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的代码检测方法。
与现有技术相比,本公开具有以下有益效果:
在保证代码质量的前提下,仅针对新版本代码文件中的变更代码检查变更代码是否进行了充分的检测,该变更代码即为代码变更信息指示的新版本代码文件与旧版本代码文件之间的差异。
具体而言,通过检测针对新版本代码文件提交的触发操作,以根据检测到的触发操作生成代码变更信息,并按照代码变更信息的格式对新版本代码文件的源码信息进行格式转化,得到代码检测信息,进而判断代码检测信息中是否包含了代码变更信息,如果不是,则以未被包含的代码变更信息作为新版本代码文件对应的待检测信息。
由于代码检测信息反映了新版本代码文件中代码的执行过程,也就是说,新版本代码文件中执行过的代码的相关信息都将被记录在代码检测信息中,如果变更代码全部被覆盖执行了,则代码变更信息将被包含在代码检测信息中,由此发现新版本代码文件中未被执行的变更代码,进而能够针对该未被执行的变更代码作进一步地执行处理,以此替代单元测试有效地保证了变更代码的充分检测,不仅避免额外地编写测试用例,提高了代码检测效率,有利于缩短代码开发周期,并且实施简单,有效地降低了开发成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并于说明书一起用于解释本公开的原理。
图1是根据本公开所涉及的实施环境的示意图;
图2是根据一示例性实施例示出的一种终端设备的硬件结构框图;
图3是根据一示例性实施例示出的一种代码检测方法的流程图;
图4是图3对应实施例中步骤330在一个实施例的流程图;
图5是根据一示例性实施例示出的另一种代码检测方法的流程图;
图6是根据一示例性实施例示出的另一种代码检测方法的流程图;
图7是一应用场景中一种代码检测方法的具体实现示意图;
图8是根据一示例性实施例示出的一种代码检测装置的框图;
图9是图8对应实施例中信息生成模块730在一个实施例的框图;
图10是根据一示例性实施例示出的另一种代码检测装置的框图;
图11是根据一示例性实施例示出的另一种代码检测装置的框图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述,这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
如前所述,单元测试通过编写大量的测试用例对代码进行检测,以此保证代码的充分检测,但是会对程序员的开发能力要求较高,不仅会造成实施成本较高,而且增加了代码开发周期。
如果为了降低代码开发成本,取消单元测试,代码就没有了开发阶段的白盒测试,仅依靠集成测试阶段的黑盒测试,将无法有效地保证代码的充分检测,进而难以保证代码质量。
基于此,现有技术中代码检测方法仍存在实施成本较高的缺陷,为此,本公开中将提出一种低成本的代码检测方法,通过该代码检测方法替代单元测试,来保证代码在开发阶段的充分检测,进而有效地保证代码质量。
图1为上述代码检测方法所涉及的实施环境的示意图。该实施环境包括终端设备100和服务器200。
其中,终端设备100可以是计算机、笔记本电脑或者其它可用于执行代码文件中代码的调试设备等等。
服务器200则被用于存储代码文件。
终端设备100中,用户(即程序员)对其所开发的代码进行充分地检测之后,便可将该代码对应的代码文件上传至服务器200进行存储,由此完成代码入库。
图2是根据一示例性实施例示出的一种终端设备100的硬件结构框图。需要说明的是,该终端设备100只是一个适配于本公开的示例,不能认为是提供了对本公开的使用范围的任何限制。该终端设备100也不能解释为需要依赖于或者必须具有图2中示出的示例性的终端设备100中的一个或者多个组件。
该终端设备100的硬件结构可因配置或者性能的不同而产生较大的差异,如图2所示,终端设备100包括:电源110、接口130、至少一存储介质150、以及至少一中央处理器(CPU,Central Processing Units)170。
其中,电源110用于为终端设备100上的各硬件设备提供工作电压。
接口130包括至少一有线或无线网络接口131、至少一串并转换接口133、至少一输入输出接口135以及至少一USB接口137等,用于与外部设备通信。
存储介质150作为资源存储的载体,可以是随机存储介质、磁盘或者光盘等,其上所存储的资源包括操作系统151、应用程序153及数据155等,存储方式可以是短暂存储或者永久存储。其中,操作系统151用于管理与控制终端设备100上的各硬件设备以及应用程序153,以实现中央处理器170对海量数据155的计算与处理,其可以是Windows ServerTM、MacOS XTM、UnixTM、LinuxTM、FreeBSDTM等。应用程序153是基于操作系统151之上完成至少一项特定工作的计算机程序,其可以包括至少一模块(图示未示出),每个模块都可以分别包含有对终端设备100的一系列操作指令。数据155可以是存储于磁盘中的照片、图片等等。
中央处理器170可以包括一个或多个以上的处理器,并设置为通过总线与存储介质150通信,用于运算与处理存储介质150中的海量数据155。
如上面所详细描述的,适用本公开的终端设备100将通过中央处理器170读取存储介质150中存储的一系列操作指令的形式来进行代码检测,以判断代码文件中的代码是否完成了充分的检测,进而上传至服务器200进行存储以完成代码入库。
此外,通过硬件电路或者硬件电路结合软件指令也能同样实现本公开,因此,实现本公开并不限于任何特定硬件电路、软件以及两者的组合。
请参阅图3,在一示例性实施例中,一种代码检测方法适用于图1所示实施环境的终端设备100,该种代码检测方法可以由终端设备100执行,可以包括以下步骤:
步骤310,检测针对新版本代码文件提交的触发操作。
首先需要说明的是,新版本代码文件,区别于旧版本代码文件,是用户针对旧版本代码文件中的代码进行了修改后得到的。例如,修改包括删除代码、新增代码。
其中,根据实际应用场景,新版本代码文件中可以既包括若干修改过的子文件,也包括了若干未修改的子文件,还可以是仅仅包括了若干修改过的子文件,在此并未加以限定。
对于终端设备而言,将提供一代码提交入口,以使用户能够通过在该代码提交入口进行的触发操作,将新版本代码文件提交至服务器,进而完成代码入库。
举例来说,代码提交入口可以是终端设备所提供的人机交互界面上的一虚拟按键,当用户欲进行新版本代码文件的提交时,将点击该虚拟按键,该点击操作即为用户提交新版本代码文件的触发操作。
由此,终端设备便能够检测到用户在代码提交入口进行的触发操作,进而根据针对新版本代码文件提交的触发操作开始执行代码检测过程。
步骤330,根据检测到的触发操作生成代码变更信息。
应当理解,在未进行代码修改之前,旧版本代码文件中的代码也是进行了充分检测的,基于此,本实施例中,在保证代码质量的前提下,代码检测仅针对新版本代码文件中的变更代码进行,以此提高代码检测效率,有利于缩短代码开发周期。
其中,变更代码即为新版本代码文件与旧版本代码文件之间的差异,而代码变更信息用于指示新版本代码文件与旧版本代码文件之间的差异。
由此,在检测到触发操作之后,便根据新版本代码文件与旧版本代码文件之间的差异生成代码变更信息,进而使得通过代码变更信息便可获知新版本代码文件中的变更代码。
由于新版本代码文件中至少包括了若干修改过的子文件,基于此,代码变更信息包括修改过的子文件的相关信息、以及该子文件中变更代码的相关信息。例如,子文件的相关信息可以是子文件名称,变更代码的相关信息可以是变更代码在子文件中的行数。
进一步地,代码变更信息是符合预设格式的。例如,file.java文件中第20行代码有修改,则代码变更信息表示为file.java@line20。file.java文件中第20行至第30行代码有修改,则代码变更信息表示为file.java@line20~30。
步骤350,按照代码变更信息的格式对新版本代码文件的源码信息进行格式转化,得到代码检测信息。
其中,源码信息是在执行新版本代码文件中的代码时生成的。这里的执行是基于终端设备中运行的代码调试程序,即用户通过代码调试程序将新版本代码文件中的代码加载至相应的程序开发环境,并在该程序开发环境中对代码进行相应的开发和调试。如果新版本代码文件中的代码在该程序开发环境中经过调试,即认为该代码被执行过,进而相应地生成对应的源码信息。
换而言之,新版本代码文件中执行过的代码的相关信息都将被记录在源码信息中。例如,相关信息包括但不限于代码所属的子文件、以及代码在子文件中的行数。
举例来说,源码信息中记录了新版本代码文件中代码的第20行、第30行,则表示新版本代码文件中第20行代码和第30行代码被执行过。
由此,通过源码信息便能够获知新版本代码文件中的代码是否被执行过。
如前所述,在保证代码质量的前提下,代码检测仅针对新版本代码文件中的变更代码进行。基于此,需要通过源码信息确认新版本代码文件中的变更代码是否全部被覆盖执行了,即变更代码是否进行了充分的检测。
进一步地,由于变更代码是由代码变更信息指示的,因此,源码信息还将按照代码变更信息的格式进行格式转化,得到代码检测信息,进而有利于后续判断变更代码是否进行了充分的检测。
例如,file.java文件中第20行至第30行代码被执行过,则按照代码变更信息所符合的预设格式,代码检测信息被表示为file.java@line20~30。
步骤370,判断代码检测信息中是否包含了代码变更信息。
如前所述,代码检测信息反映了新版本代码文件中执行过的代码,代码变更信息反映了新版本代码文件中的变更代码。
基于此,判断代码检测信息中是否包含了代码变更信息,即判断新版本代码文件中执行过的代码是否包含了变更代码。
可以理解,如果执行过的代码包含了变更代码,则表示变更代码全部被覆盖执行,即完成了充分的检测,此时,可以继续后续的代码入库。
反之,如果执行过的代码未包含变更代码,即表示仍有变更代码未执行,则以未被包含的代码变更信息作为新版本代码文件对应的待检测信息,进而使得未执行的变更代码能够在终端设备中被进一步地执行。
通过如上所述的过程,有效地保证了变更代码的充分检测,即通过代码检测信息及时地发现新版本代码文件中未被执行的变更代码,进而能够针对该未被执行的变更代码作进一步地执行处理,以此实现变更代码全部被覆盖执行,使得变更代码得到充分的检测,不仅避免了额外地编写测试用例,提高了代码检测效率,有利于缩短代码开发周期,并且实施简单,有效地降低了代码开发成本。
进一步地,在一示例性实施例中,步骤370之前,如上所述的方法还可以包括以下步骤:
根据代码变更信息的指示确认新版本代码文件与旧版本代码文件之间是否存在差异。
可以理解,只有新版本代码文件中存在变更代码,才有必要对变更代码是否进行了充分的检测作进一步地检查,进而完成代码入库。
因此,在判断代码检测信息中是否包含了代码变更信息之前,首先需要判断新版本代码文件与旧版本代码文件之间是否存在差异,即是否存在变更代码。
如果确认存在差异,则跳转进入步骤370。
否则,如果未存在差异,则结束代码检测。
在上述实施例的作用下,避免新版本代码文件中不存在变更代码时所进行的检查,有利于提高代码检测效率,缩短代码开发周期,同时还提高了终端设备的处理效率。
更进一步地,在一示例性实施例中,如上所述的方法还可以包括以下步骤:
如果代码检测信息中包含了代码变更信息,则新版本代码文件检测通过,上传新版本代码文件至服务器。
如果代码检测信息中包含了代码变更信息,即表示变更代码全部被覆盖执行了,此时,变更代码已进行了充分的检测,进而使得新版本代码文件检测通过,并能够上传至服务器进行存储,以此完成代码入库。
通过上述实施例的配合,在代码入库之前,变更代码是全部被覆盖执行过的,相较于白盒测试,实施成本更低,相较于黑盒测试,能更充分、更早地在开发阶段发现代码中存在的问题并及时修复,不仅代码检测效率更高,而且有效地保证了代码质量。
请参阅图4,在一示例性实施例中,步骤330可以包括以下步骤:
步骤331,根据触发操作获取备份的旧版本代码文件。
其中,旧版本代码文件可以备份在终端设备中,以减少终端设备与服务器之间的交互,有利于减轻终端设备和服务器各自的压力,进而分别提高终端设备和服务器的处理能力。另外,旧版本代码文件也可以备份在服务器中,以此节省终端设备的存储空间。
应当说明的是,此处的触发操作是终端设备针对新版本代码文件提交的触发操作进行检测得到的。
举例来说,若服务器中备份了旧版本代码文件,对于终端设备而言,将根据触发操作向服务器发起旧版本代码文件获取请求,进而通过服务器响应该旧版本代码文件获取请求,将其中备份的旧版本代码文件返回至终端设备。
进一步地,服务器中关联存储了代码文件及其相应的版本号。旧版本代码文件获取请求中可以包含旧版本代码文件对应的版本号,进而根据该版本号在服务器中关联查找到对应的旧版本代码文件。
步骤333,比较新版本代码文件与旧版本代码文件之间的差异,并按照预设格式存储差异得到代码变更信息。
在获取到旧版本代码文件之后,便可通过新版本代码文件与旧版本代码文件之间的比较,得到二者之间的差异,即变更代码,进而根据变更代码生成代码变更信息。
例如,变更代码为file.java文件中的第20行代码,则按照预设格式存储差异得到的代码变更信息为file.java@line20。
需要说明的是,文件比较方法包括但不限于利用文件管理工具、代码比较工具等等。
请参阅图5,在一示例性实施例中,步骤370中以未被包含的代码变更信息作为所述新版本代码文件对应的待检测信息之后,如上所述的方法还可以包括以下步骤:
步骤410,根据待检测信息触发进行新版本代码文件中相应代码的执行,得到代码执行后的源码信息。
在得到待检测信息之后,用户便可获知新版本代码文件中哪些变更代码是未被执行的,进而针对该些未被执行的变更代码作进一步地执行处理,以使变更代码能够全部被覆盖执行。
具体地,新版本代码文件中代码的执行是调用了代码调试程序实现的。即,代码调试程序中加载了新版本代码文件中的代码,进而在其所提供的运行环境中运行该代码,便实现了对该代码的检测,并生成相应的源码信息。
步骤430,按照代码执行后的源码信息更新代码检测信息。
通过上述实施例的配合,代码检测信息将被实时更新,即未被执行的变更代码被继续进行检测,直至变更代码全部被覆盖执行,以此有效地保证了变更代码的充分检测。
请参阅图6,在一示例性实施例中,一种代码检测方法适用于图1所示实施环境的服务器200,该种代码检测方法可以由服务器200执行,可以包括以下步骤:
步骤510,接收终端设备发起的新版本代码文件提交请求。
其中,新版本代码文件提交请求中包含新版本代码文件及其源码信息,源码信息是新版本代码文件中的代码在终端设备中执行时生成的。
步骤530,根据新版本代码文件提交请求触发生成代码变更信息,代码变更信息指示了新版本代码文件与旧版本代码文件之间的差异。
步骤550,按照代码变更信息的格式对新版本代码文件的源码信息进行格式转化,得到代码检测信息。
步骤570,判断代码检测信息中是否包含了代码变更信息。
如果不是,则以未被包含的代码变更信息作为新版本代码文件对应的待检测信息,并将待检测信息返回至终端设备。
进一步地,在一示例性实施例中,如上所述的方法还可以包括以下步骤:
如果代码检测信息中包含了代码变更信息,则新版本代码文件检测通过,存储新版本代码文件。
终端设备中,用户在完成代码开发之后,即可向服务器发起新版本代码文件提交请求,进而由服务器来保证新版本代码文件中的变更代码进行了充分检测。
对于服务器而言,在接收到新版本代码文件提交请求之后,将针对新版本代码文件中的变更代码检查变更代码是否进行了充分的检测,即通过判断代码检测信息中是否包含了代码变更信息来实现。
如果代码检测信息中未包含代码变更信息,即表示存在未被执行的变更代码,则需要针对未被执行的变更代码作后续地处理。
具体地,将该未被执行的变更代码以待检测信息返回终端设备,以使用户根据该待检测信息对未被执行的变更代码作进一步地执行处理。
如果代码检测信息中包含了代码变更信息,即表示变更代码全部被覆盖执行,则存储新版本代码文件,即完成代码入库。
进一步地,服务器在存储新版本代码文件之后,还可以返回一响应消息至终端设备,以通过该响应消息使用户获知代码已成功入库。
通过如上所述的过程,变更代码的充分检测由服务器来保证,有效地减轻了终端设备的代码检测压力,有利于提高终端设备的处理能力。
图7是一应用场景中一种代码检测方法的具体实现示意图,现结合图1所示的实施环境以及图7所示的应用场景对本公开各实施例中代码检测过程加以描述。
终端设备100中,通过执行步骤601,检测到针对新版本代码文件提交的触发操作,进而开始执行代码检测过程。
通过执行步骤602,根据触发操作生成代码变更信息,并进一步通过执行步骤603,根据代码变更信息的指示确认新版本代码文件与旧版本代码文件之间是否存在差异,即是否存在变更代码,如果不存在变更代码,则执行步骤609结束代码检测。
否则,如果存在变更代码,就通过执行步骤604,比较代码检测信息与代码变更信息,以此判断代码检测信息中是否包含了代码变更信息,即执行步骤605,如果已包含,则执行步骤607,将新版本代码文件上传至服务器200,进而完成代码入库,并执行步骤609结束代码检测。
否则,如果未包含,则通过执行步骤606,基于待检测信息对未被执行的变更代码作进一步地执行处理,得到代码执行后的源码信息,并根据代码执行后的源码信息更新代码检测信息,即执行步骤608。
待代码检测信息更新完毕,则触发进行更新的代码检测信息与代码变更信息之间的比较,即返回执行步骤604,继续进行变更代码的充分检测的检查。
通过上述步骤,即实现了代码入库之前变更代码的充分检测。
在本公开各实施例中,以较低的代码开发成本保证了变更代码的充分检测,使得变更代码中存在的实际漏洞有机会在开发阶段即被发现并修复,不仅有效地保证了代码质量,而且有利于提高代码开发效率。
下述为本公开装置实施例,可以用于执行本公开所涉及的代码检测方法。对于本公开装置实施例中未披露的细节,请参照本公开所涉及的代码检测方法实施例。
请参阅图8,在一示例性实施例中,一种代码检测装置700应用于终端设备,包括但不限于:操作检测模块710、信息生成模块730、格式转化模块750和信息判断模块770。
其中,操作检测模块710用于检测针对新版本代码文件提交的触发操作。
信息生成模块730用于根据检测到的触发操作生成代码变更信息.代码变更信息指示了新版本代码文件与旧版本代码文件之间的差异。
格式转化模块750用于按照代码变更信息的格式对新版本代码文件的源码信息进行格式转化,得到代码检测信息。源码信息是在执行新版本代码文件中的代码时生成的。
信息判断模块770用于判断代码检测信息中是否包含了代码变更信息。如果不是,则以未被包含的代码变更信息作为新版本代码文件对应的待检测信息。
进一步地,在一示例性实施例中,代码检测装置700还包括但不限于:差异确认模块。
其中,差异确认模块用于根据代码变更信息的指示确认新版本代码文件与旧版本代码文件之间是否存在差异。
如果确认是,则通知信息判断模块770。
更进一步地,在一示例性实施例中,代码检测装置700还包括但不限于:文件上传模块。
其中,文件上传模块用于如果代码检测信息中包含了代码变更信息,则新版本代码文件检测通过,上传新版本代码文件至服务器。
请参阅图9,在一示例性实施例中,信息生成模块730包括但不限于:文件获取单元731和文件比较单元733。
其中,文件获取单元731用于根据触发操作获取备份的旧版本代码文件。
文件比较单元733用于比较新版本代码文件与旧版本代码文件之间的差异,并按照预设格式存储差异得到代码变更信息。
请参阅图10,在一示例性实施例中,代码检测装置700还包括但不限于:代码执行模块810和信息更新模块830。
其中,代码执行模块810用于根据待检测信息触发进行新版本代码文件中相应代码的执行,得到执行后的源码信息。
信息更新模块830用于按照执行后的源码信息更新代码检测信息。
请参阅图11,在一示例性实施例中,一种代码检测装置900应用于服务器,包括但不限于:请求接收模块910、信息生成模块930、格式转化模块950和信息判断模块970。
其中,请求接收模块910用于接收终端设备发起的新版本代码文件提交请求。新版本代码文件提交请求中包含新版本代码文件及其源码信息,源码信息是新版本代码文件中的代码在终端设备中执行时生成的。
信息生成模块930用于根据新版本代码文件提交请求触发生成代码变更信息。代码变更信息指示了新版本代码文件与旧版本代码文件之间的差异。
格式转化模块950用于按照代码变更信息的格式对新版本代码文件的源码信息进行格式转化,得到代码检测信息。
信息判断模块970用于判断代码检测信息中是否包含了代码变更信息。如果不是,则以未被包含的代码变更信息作为新版本代码文件对应的待检测信息,并将待检测信息返回至终端设备。
进一步地,在一示例性实施例中,代码检测装置900还包括但不限于:文件存储模块。
其中,文件存储模块用于如果代码检测信息中包含了代码变更信息,则新版本代码文件检测通过,存储新版本代码文件。
需要说明的是,上述实施例所提供的代码检测装置在进行代码检测处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即代码检测装置的内部结构将划分为不同的功能模块,以完成以上描述的全部或者部分功能。
另外,上述实施例所提供的代码检测装置与代码检测方法的实施例属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
在一示例性实施例中,一种电子设备,包括处理器及存储器。
其中,存储器上存储有计算机可读指令,该计算机可读指令被处理器执行时实现如上所述的各实施例中的代码检测方法。
在一示例性实施例中,一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述的各实施例中的代码检测方法。
上述内容,仅为本公开的较佳示例性实施例,并非用于限制本公开的实施方案,本领域普通技术人员根据本公开的主要构思和精神,可以十分方便地进行相应的变通或修改,故本公开的保护范围应以权利要求书所要求的保护范围为准。

Claims (15)

1.一种代码检测方法,应用于终端设备,其特征在于,包括:
检测针对新版本代码文件提交的触发操作;
根据检测到的所述触发操作生成代码变更信息,所述代码变更信息指示了所述新版本代码文件与旧版本代码文件之间的差异;
按照所述代码变更信息的格式对所述新版本代码文件的源码信息进行格式转化,得到代码检测信息,所述源码信息是在执行所述新版本代码文件中的代码时生成的;
判断所述代码检测信息中是否包含了所述代码变更信息,如果不是,则以未被包含的代码变更信息作为所述新版本代码文件对应的待检测信息。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述代码检测信息中包含了所述代码变更信息,则所述新版本代码文件检测通过,上传所述新版本代码文件至服务器。
3.如权利要求1或2所述的方法,其特征在于,所述根据检测到的所述触发操作生成代码变更信息,包括:
根据所述触发操作获取备份的旧版本代码文件;
比较所述新版本代码文件与旧版本代码文件之间的差异,并按照预设格式存储所述差异得到所述代码变更信息。
4.如权利要求1或2所述的方法,其特征在于,所述判断所述代码检测信息是否包含了所述代码变更信息之前,所述方法还包括:
根据所述代码变更信息的指示确认所述新版本代码文件与旧版本代码文件之间是否存在差异;
如果确认是,则跳转进入所述判断所述代码检测信息中是否包含了所述代码变更信息步骤。
5.如权利要求1或2所述的方法,其特征在于,所述以未被包含的代码变更信息作为所述新版本代码文件对应的待检测信息之后,所述方法还包括:
根据所述待检测信息触发进行所述新版本代码文件中相应代码的执行,得到代码执行后的源码信息;
按照所述代码执行后的源码信息更新所述代码检测信息。
6.一种代码检测方法,应用于服务器,其特征在于,包括:
接收终端设备发起的新版本代码文件提交请求,所述新版本代码文件提交请求中包含新版本代码文件及其源码信息,所述源码信息是所述新版本代码文件中的代码在所述终端设备中执行时生成的;
根据所述新版本代码文件提交请求触发生成代码变更信息,所述代码变更信息指示了所述新版本代码文件与旧版本代码文件之间的差异;
按照所述代码变更信息的格式对所述新版本代码文件的源码信息进行格式转化,得到代码检测信息;
判断所述代码检测信息中是否包含了所述代码变更信息,如果不是,则以未被包含的代码变更信息作为所述新版本代码文件对应的待检测信息,并将所述待检测信息返回至所述终端设备。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
如果所述代码检测信息中包含了所述代码变更信息,则所述新版本代码文件检测通过,存储所述新版本代码文件。
8.一种代码检测装置,应用于终端设备,其特征在于,包括:
操作检测模块,用于检测针对新版本代码文件提交的触发操作;
信息生成模块,用于根据检测到的所述触发操作生成代码变更信息,所述代码变更信息指示了所述新版本代码文件与旧版本代码文件之间的差异;
格式转化模块,用于按照所述代码变更信息的格式对所述新版本代码文件的源码信息进行格式转化,得到代码检测信息,所述源码信息是在执行所述新版本代码文件中的代码时生成的;
信息判断模块,用于判断所述代码检测信息中是否包含了所述代码变更信息,如果不是,则以未被包含的代码变更信息作为所述新版本代码文件对应的待检测信息。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
文件上传模块,用于如果所述代码检测信息中包含了所述代码变更信息,则所述新版本代码文件检测通过,上传所述新版本代码文件至服务器。
10.如权利要求8或9所述的装置,其特征在于,所述信息生成模块包括:
文件获取单元,用于根据所述触发操作获取备份的旧版本代码文件;
文件比较单元,用于比较所述新版本代码文件与旧版本代码文件之间的差异,并按照预设格式存储所述差异得到所述代码变更信息。
11.如权利要求8或9所述的装置,其特征在于,所述装置还包括:
差异确认模块,用于根据所述代码变更信息的指示确认所述新版本代码文件与旧版本代码文件之间是否存在差异;如果确认是,则通知所述信息判断模块。
12.如权利要求8或9所述的装置,其特征在于,所述装置还包括:
代码执行模块,用于根据所述待检测信息触发进行所述新版本代码文件中相应代码的执行,得到代码执行后的源码信息;
信息更新模块,用于按照所述代码执行后的源码信息更新所述代码检测信息。
13.一种代码检测装置,应用于服务器,其特征在于,包括:
请求接收模块,用于接收终端设备发起的新版本代码文件提交请求,所述新版本代码文件提交请求中包含新版本代码文件及其源码信息,所述源码信息是所述新版本代码文件中的代码在所述终端设备中执行时生成的;
信息生成模块,用于根据所述新版本代码文件提交请求触发生成代码变更信息,所述代码变更信息指示了所述新版本代码文件与旧版本代码文件之间的差异;
格式转化模块,用于按照所述代码变更信息的格式对所述新版本代码文件的源码信息进行格式转化,得到代码检测信息;
信息判断模块,用于判断所述代码检测信息中是否包含了所述代码变更信息,如果不是,则以未被包含的代码变更信息作为所述新版本代码文件对应的待检测信息,并将所述待检测信息返回至所述终端设备。
14.一种电子设备,其特征在于,包括:
处理器;及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如权利要求1至7中任一项所述的代码检测方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的代码检测方法。
CN201710587166.1A 2017-07-18 2017-07-18 代码检测方法、装置及电子设备 Active CN107368313B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710587166.1A CN107368313B (zh) 2017-07-18 2017-07-18 代码检测方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710587166.1A CN107368313B (zh) 2017-07-18 2017-07-18 代码检测方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN107368313A true CN107368313A (zh) 2017-11-21
CN107368313B CN107368313B (zh) 2018-09-11

Family

ID=60308044

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710587166.1A Active CN107368313B (zh) 2017-07-18 2017-07-18 代码检测方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN107368313B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109408102A (zh) * 2018-09-04 2019-03-01 珠海格力电器股份有限公司 一种版本比对方法和装置、家电设备、网络设备
CN109710510A (zh) * 2018-08-20 2019-05-03 中国平安人寿保险股份有限公司 代码提交方法、装置、设备及可读存储介质
CN109871310A (zh) * 2017-12-04 2019-06-11 北京京东尚科信息技术有限公司 一种版本质量测试的方法和装置
CN110109830A (zh) * 2019-04-23 2019-08-09 深圳行云创新科技有限公司 一种软件调试的管理方法、装置、系统及存储介质
CN110275827A (zh) * 2019-05-31 2019-09-24 北京大米科技有限公司 一种代码缺陷判断方法、装置、存储介质及电子设备
CN110795326A (zh) * 2018-08-01 2020-02-14 武汉斗鱼网络科技有限公司 一种代码拦截检测方法、存储介质、电子设备及系统
CN111752819A (zh) * 2019-03-29 2020-10-09 广州市百果园信息技术有限公司 一种异常监控方法、装置、系统、设备和存储介质
CN113050926A (zh) * 2021-03-24 2021-06-29 中国工商银行股份有限公司 一种代码同步变更的确认方法、装置和设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1979422A (zh) * 2005-12-02 2007-06-13 凌阳科技股份有限公司 用以获得应用程序代码执行率的仿真装置及其方法
CN103577318A (zh) * 2012-08-07 2014-02-12 腾讯科技(深圳)有限公司 一种代码检测方法和装置
CN103645985A (zh) * 2013-11-28 2014-03-19 广州视源电子科技股份有限公司 一种源代码宏配对检测方法
CN104123218A (zh) * 2013-04-23 2014-10-29 腾讯科技(深圳)有限公司 一种代码覆盖测试方法、装置和系统
CN105608011A (zh) * 2016-03-01 2016-05-25 网易(杭州)网络有限公司 代码测试覆盖率统计结果的确定方法及装置
CN106407124A (zh) * 2016-11-10 2017-02-15 中国工商银行股份有限公司 一种程序自动化测试方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1979422A (zh) * 2005-12-02 2007-06-13 凌阳科技股份有限公司 用以获得应用程序代码执行率的仿真装置及其方法
CN103577318A (zh) * 2012-08-07 2014-02-12 腾讯科技(深圳)有限公司 一种代码检测方法和装置
CN104123218A (zh) * 2013-04-23 2014-10-29 腾讯科技(深圳)有限公司 一种代码覆盖测试方法、装置和系统
CN103645985A (zh) * 2013-11-28 2014-03-19 广州视源电子科技股份有限公司 一种源代码宏配对检测方法
CN105608011A (zh) * 2016-03-01 2016-05-25 网易(杭州)网络有限公司 代码测试覆盖率统计结果的确定方法及装置
CN106407124A (zh) * 2016-11-10 2017-02-15 中国工商银行股份有限公司 一种程序自动化测试方法及系统

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109871310A (zh) * 2017-12-04 2019-06-11 北京京东尚科信息技术有限公司 一种版本质量测试的方法和装置
CN110795326A (zh) * 2018-08-01 2020-02-14 武汉斗鱼网络科技有限公司 一种代码拦截检测方法、存储介质、电子设备及系统
CN109710510A (zh) * 2018-08-20 2019-05-03 中国平安人寿保险股份有限公司 代码提交方法、装置、设备及可读存储介质
CN109408102A (zh) * 2018-09-04 2019-03-01 珠海格力电器股份有限公司 一种版本比对方法和装置、家电设备、网络设备
CN111752819A (zh) * 2019-03-29 2020-10-09 广州市百果园信息技术有限公司 一种异常监控方法、装置、系统、设备和存储介质
CN111752819B (zh) * 2019-03-29 2024-04-05 广州市百果园信息技术有限公司 一种异常监控方法、装置、系统、设备和存储介质
CN110109830A (zh) * 2019-04-23 2019-08-09 深圳行云创新科技有限公司 一种软件调试的管理方法、装置、系统及存储介质
CN110275827A (zh) * 2019-05-31 2019-09-24 北京大米科技有限公司 一种代码缺陷判断方法、装置、存储介质及电子设备
CN113050926A (zh) * 2021-03-24 2021-06-29 中国工商银行股份有限公司 一种代码同步变更的确认方法、装置和设备
CN113050926B (zh) * 2021-03-24 2024-03-05 中国工商银行股份有限公司 一种代码同步变更的确认方法、装置和设备

Also Published As

Publication number Publication date
CN107368313B (zh) 2018-09-11

Similar Documents

Publication Publication Date Title
CN107368313B (zh) 代码检测方法、装置及电子设备
Memon Automatically repairing event sequence-based GUI test suites for regression testing
CN106649084B (zh) 函数调用信息的获取方法及装置、测试设备
CN106951345B (zh) 一种虚拟机磁盘数据的一致性测试方法及装置
US8140905B2 (en) Incremental problem determination and resolution in cloud environments
US7398514B2 (en) Test automation stack layering
US8140907B2 (en) Accelerated virtual environments deployment troubleshooting based on two level file system signature
US8713526B2 (en) Assigning runtime artifacts to software components
CN109508178A (zh) 一种程序开发方法及装置
CN108459967B (zh) 基于用户接口状态流图的Web应用测试用例生成方法
WO2020019490A1 (zh) 一种接口测试方法、电子设备及存储介质
WO2017020459A1 (zh) 一种为宿主配置插件包的方法与装置
CN112230988A (zh) 接口文档的生成方法、装置、计算机设备和存储介质
Vilk et al. BLeak: automatically debugging memory leaks in web applications
US20120036457A1 (en) Integrated development environment for rapid application development
US11188449B2 (en) Automated exception resolution during a software development session based on previous exception encounters
US9274755B2 (en) Infrastructure for generating code using annotation and template generators
WO2023039741A1 (zh) 基于微服务体系的在线开发方法、装置、设备及存储介质
CN110727575B (zh) 一种信息处理方法、系统、装置、以及存储介质
US8739146B2 (en) Systems and methods for generating and distributing executable procedures for technical desk-side support
WO2014197258A1 (en) Declarative configuration elements
US11853196B1 (en) Artificial intelligence driven testing
US11194966B1 (en) Management of concepts and intents in conversational systems
CN103577170A (zh) 网络应用的构建方法及装置
CN109358972B (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