CN110704298A - 一种代码验证的方法、装置、终端设备及存储介质 - Google Patents

一种代码验证的方法、装置、终端设备及存储介质 Download PDF

Info

Publication number
CN110704298A
CN110704298A CN201910786763.6A CN201910786763A CN110704298A CN 110704298 A CN110704298 A CN 110704298A CN 201910786763 A CN201910786763 A CN 201910786763A CN 110704298 A CN110704298 A CN 110704298A
Authority
CN
China
Prior art keywords
code
source code
file
target
target code
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
Application number
CN201910786763.6A
Other languages
English (en)
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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201910786763.6A priority Critical patent/CN110704298A/zh
Publication of CN110704298A publication Critical patent/CN110704298A/zh
Pending legal-status Critical Current

Links

Images

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/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种代码验证的方法、装置、终端设备及存储介质,所述方法包括以下步骤:获取对源代码的修改操作,以及与所述源代码修改后得到的目标代码对应的目标代码文件;检测所述源代码的修改操作是否符合预设修改规则;当所述源代码的修改操作不符合预设修改规则时,中断所述目标代码文件的提交操作。本申请有效避免了开发人员引入外部的第三方依赖库,减小了代码验证的工作量,避免了人工验证可能产生的误操作,提高了代码验证的效率和准确率,降低了人力成本和时间成本。

Description

一种代码验证的方法、装置、终端设备及存储介质
技术领域
本申请涉及计算机软件应用技术领域,尤其涉及一种代码验证的方法、装置、终端设备及存储介质。
背景技术
基础库的实际开发过程中,可能会存在多个开发人员同时修改基础库的情况,如果开发人员的修改操作不规范或者基础库的设计不合理,将会容易引入其它第三方的依赖库,使得基础库较为庞杂,在使用和维护方便比较困难。
现有技术提出了对开发人员修改的代码进行检查的方法,该方法将修改的代码提交到指定的人员进行检查,这种人工检查代码的方式由于操作过程繁琐,导致检查效率较低和人力成本高,而且在人工检查的过程中有可能产生误操作。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种代码验证的方法、装置、终端设备及存储介质。
有鉴于此,第一方面,本申请提供了一种代码验证的方法,所述方法包括以下步骤:
获取对源代码的修改操作,以及与所述源代码修改后得到的目标代码对应的目标代码文件;
检测所述源代码的修改操作是否符合预设修改规则;
当所述源代码的修改操作不符合预设修改规则时,中断所述目标代码文件的提交操作。
结合第一方面,在第一方面第一种可能的实施方式中,所述方法还包括:
获取所述源代码修改后得到的目标代码的代码位置和代码信息;
所述检测所述源代码的修改操作是否符合预设修改规则,包括:
确定所述源代码中待验证的至少一个代码范围;
判断所述目标代码的代码位置是否落在所述代码范围内,以及,基于所述目标代码的代码信息,判断所述目标代码与所述源代码是否匹配。
结合第一方面,在第一方面第二种可能的实施方式中,利用所述源代码和所述目标代码生成差异比对文件,其中,所述差异比对文件用于根据所述源代码和所述目标代码进行源代码修改前后的比对;
所述代码信息包括字符串信息,所述基于所述目标代码的代码信息,判断所述目标代码与所述源代码是否匹配,包括:
利用所述差异比对文件,将所述目标代码与所述源代码进行字符串匹配;
当所述目标代码与所述源代码的字符串匹配成功时,确定所述目标代码与所述源代码相匹配;否则,确定所述目标代码与所述源代码匹配失败。
结合第一方面,在第一方面第三种可能的实施方式中,所述利用所述差异比对文件,将所述目标代码与所述源代码进行字符串匹配,包括:
确定所述差异比对文件中的目标代码的待匹配字符串的格式;
根据所述待匹配字符串的格式,确定所述待匹配字符串的匹配类型,所述匹配类型包括段模式和/或行模式;
根据所述匹配类型选择预设数量个分隔符;
利用所选择的所述分隔符将所述待匹配字符串分割为多个待匹配子字符串,所述分隔符包括以下至少之一:换行符和空格;
将各个所述待匹配子字符串依次与所述差异比对文件中的源代码进行匹配,得到匹配结果;
当所述匹配结果满足预设条件时,确定所述目标代码与所述源代码的字符串匹配成功;否则确定所述目标代码与所述源代码的字符串匹配失败。
结合第一方面,在第一方面第四种可能的实施方式中,所述方法还包括:
当所述源代码的修改操作不符合预设修改规则时,执行与所述目标代码对应的修改对象的身份验证操作;
若所述目标代码对应的修改对象的身份验证成功,则执行所述目标代码文件的提交操作;
若所述目标代码对应的修改对象的身份验证失败,则执行所述中断所述目标代码文件的提交操作的步骤。
结合第一方面,在第一方面第五种可能的实施方式中,所述方法还包括:
当所述源代码的修改操作符合预设修改规则时,执行所述目标代码文件的提交操作。
第二方面,本申请提供了一种代码验证的装置,所述装置包括:
第一获取单元,用于获取对源代码的修改操作,以及与所述源代码修改后得到的目标代码对应的目标代码文件;
检测单元,用于检测所述源代码的修改操作是否符合预设修改规则;以及
第一中断单元,用于当所述源代码的修改操作不符合预设修改规则时,中断所述目标代码文件的提交操作。
结合第二方面,在第二方面第一种可能的实施方式中,所述装置还包括:
第二获取单元,用于获取所述源代码修改后得到的目标代码的代码位置和代码信息;
所述检测单元包括:
第一确定子单元,用于确定所述源代码中待验证的至少一个代码范围;
判断子单元,用于判断所述目标代码的代码位置是否落在所述代码范围内,以及,基于所述目标代码的代码信息,判断所述目标代码与所述源代码是否匹配。
结合第二方面,在第二方面第二种可能的实施方式中,所述装置还包括:
生成单元,用于利用所述源代码和所述目标代码生成差异比对文件,其中,所述差异比对文件用于根据所述源代码和所述目标代码进行源代码修改前后的比对;
所述代码信息包括字符串信息,所述判断子单元包括:
字符串匹配子单元,用于利用所述差异比对文件,将所述目标代码与所述源代码进行字符串匹配;
第二确定子单元,用于当所述目标代码与所述源代码的字符串匹配成功时,确定所述目标代码与所述源代码相匹配;否则,确定所述目标代码与所述源代码匹配失败。
结合第二方面,在第二方面第三种可能的实施方式中,所述字符串匹配子单元包括:
第三确定子单元,用于确定所述差异比对文件中的目标代码的待匹配字符串的格式;
第四确定子单元,用于根据所述待匹配字符串的格式,确定所述待匹配字符串的匹配类型,所述匹配类型包括段模式和/或行模式;
选择子单元,用于根据所述匹配类型选择预设数量个分隔符;
分割子单元,用于利用所选择的所述分隔符将所述待匹配字符串分割为多个待匹配子字符串,所述分隔符包括以下至少之一:换行符和空格;
匹配子单元,用于将各个所述待匹配子字符串依次与所述差异比对文件中的源代码进行匹配,得到匹配结果;
第五确定子单元,用于当所述匹配结果满足预设条件时,确定所述目标代码与所述源代码的字符串匹配成功;否则确定所述目标代码与所述源代码的字符串匹配失败。
结合第二方面,在第二方面第四种可能的实施方式中,所述装置还包括:
身份验证单元,用于当所述源代码的修改操作不符合预设修改规则时,执行与所述目标代码对应的修改对象的身份验证操作;
第一提交单元,用于若所述目标代码对应的修改对象的身份验证成功,则执行所述目标代码文件的提交操作;
第二中断单元,用于若所述目标代码对应的修改对象的身份验证失败,则执行所述中断所述目标代码文件的提交操作的步骤。
结合第二方面,在第二方面第五种可能的实施方式中,所述装置还包括:
第二提交单元,用于当所述源代码的修改操作符合预设修改规则时,执行所述目标代码文件的提交操作。
第三方面,本申请提供了一种终端设备,所述终端设备包括:至少一个处理器、存储器、至少一个网络接口和用户接口;
所述至少一个处理器、存储器、至少一个网络接口和用户接口通过总线***耦合在一起;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如第一方面所述的代码验证的方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有代码验证的程序,所述代码验证的程序被处理器执行时实现如第一方面所述的代码验证的方法的步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的一种代码验证的方法、装置、终端设备及存储介质,该方法通过获取对源代码的修改操作,以及与所述源代码修改后得到的目标代码对应的目标代码文件;检测所述源代码的修改操作是否符合预设修改规则;当所述源代码的修改操作不符合预设修改规则时,中断所述目标代码文件的提交操作。
本申请实施例在基础库运行时触发脚本文件,脚本文件中提前设置有代码的修改规则,根据开发人员修改后得到的目标代码文件,检测源代码的修改操作是否符合脚本文件中提前设置好的预设修改规则,当不符合预设修改规则时中断目标代码文件的提交操作,从而禁止该目标代码文件提交到远端仓库,有效避免了开发人员引入外部的第三方依赖库,与现有人工验证修改代码的方案相比,减小了代码验证的工作量,避免了人工验证可能产生的误操作,提高了代码验证的效率和准确率,降低了人力成本和时间成本。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种代码验证的方法的流程示意图;
图2为本申请实施例提供的另一种代码验证的方法的流程示意图;
图3为本申请实施例提供的另一种代码验证的方法的流程示意图;
图4为本申请实施例提供的另一种代码验证的方法的流程示意图;
图5为本申请实施例提供的一种代码验证的装置的结构示意图;
图6为本申请实施例提供的一种移动终端的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
现在将参考附图描述实现本申请各个实施例的服务器。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
终端设备可以以各种形式来实施。例如,本申请中描述的终端设备可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable Media Player,PMP)等移动终端,以及诸如数字TV、台式计算机等固定终端。
后续描述中将以移动终端为例进行说明,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本申请的实施方式的构造也能够应用于固定类型的终端。
在基础库的开发过程中,要求基础库的功能比较单一,没有依赖或者较少的依赖外部的第三方库,以便于APP开发过程中直接使用基础库,且无需因此引入更多的依赖库。然而在实际开发过程中,当多人(如开发人员)同时修改基础库时,如果开发人员的操作不规范或者基础库的设计不合理,都会很容易引入其他第三方库的依赖库,使得基础库变的更为庞杂、难以维护和使用。为了解决上述问题,本申请实施例提供了一种代码验证的方法,如图1所示,该方法可以包括以下步骤:
S101、获取对源代码的修改操作,以及与源代码修改后得到的目标代码对应的目标代码文件。
本申请实施例可以应用于需要多个开发人员合作开发的普通基础库或者普通项目工程的开发领域,基础库包括但不限于IOS基础库、安卓基础库,本申请实施例对此不做限定,本申请实施例下面以多个开发人员开发的基础库为例进行说明。
在开发人员将修改源代码得到的目标代码对应的目标代码文件提交之前(提交给远端仓库之前),当基础库运行时会触发脚本文件,判断该脚本文件是否安装过GITHOOK的可执行文件,如果安装过,则判断是否需要将当前的脚本文件调用写入到已有的可执行文件中;如果没有安装过GITHOOK的可执行文件,则将当前的可执行文件拷贝到GITHOOK的指定目录下。
开发人员修改完源代码,将源代码修改后得到的目标代码对应的目标代码文件准备提交时会触发GIT的HOOK机制,调用GITHOOK的可执行文件中的脚本文件,基于目标代码文件开始检查源代码的修改操作是否符合预设修改规则。首先,获取目标代码文件的目标文件标识信息,根据预设文件标识信息与配置文件的对应关系,确定与目标文件标识信息对应的配置文件。例如,目标文件标识信息包括但不限于文件名或后缀名等关键词,在当前项目目录下通过文件名或后缀名匹配找到与目标代码文件对应的配置文件,读取配置文件,通过字符串截取和字符串匹配的方式找到需要进行权限控制的内容。
S102、检测源代码的修改操作是否符合预设修改规则,若不符合,执行步骤S103;若符合,执行步骤S104。
S103、当源代码的修改操作不符合预设修改规则时,中断目标代码文件的提交操作。
可选的,预设修改规则依据基础库的设计原则进行设定,可以自动化完成基础库开发中对开发人员的权限控制,禁止向基础库中引入其它的依赖库。例如,预设修改规则可以是设置相应的代码不允许开发人员进行新增、删除或修改,本申请实施例对此不做限定。
S104、当源代码的修改操作符合预设修改规则时,执行目标代码文件的提交操作。
可选的,将目标代码文件提交到远端仓库。
本申请实施例当源代码的修改操作不符合预设修改规则时,中断源代码修改后得到的目标代码对应的目标代码文件的提交操作,从而禁止该目标代码文件提交到远端仓库,有效避免了开发人员在修改源代码时由于修改操作不符合规范而引入新的依赖库,导致的基础库变的更为庞杂、难以维护和使用的问题。与现有人工验证修改代码的方案相比,减小了代码验证的工作量,避免了人工验证可能产生的误操作,提高了代码验证的效率和准确率,降低了人力成本和时间成本。
如图2所示,本申请实施例还提供了一种代码验证的方法,该方法在图1所示实施例的基础上,包括以下步骤:
S201、获取对源代码的修改操作,与所述源代码修改后得到的目标代码对应的目标代码文件,以及目标代码的代码位置和代码信息。
S202、确定源代码中待验证的至少一个代码范围。
S203、判断所述目标代码的代码位置是否落在所述代码范围内,以及,基于所述目标代码的代码信息,判断所述目标代码与所述源代码是否匹配;若代码位置落在代码范围内且目标代码与源代码匹配失败,执行步骤S204;若代码位置未落在代码范围内和/或目标代码与源代码匹配成功,执行步骤S205。
在本申请实施例中,该代码验证的方法还包括:利用所述源代码和所述目标代码生成差异比对文件(如diff文件),其中,所述差异比对文件用于根据所述源代码和所述目标代码进行源代码修改前后的比对;代码信息包括字符串信息,则在上述步骤S203中,基于所述目标代码的代码信息,判断所述目标代码与所述源代码是否匹配,包括:
利用所述差异比对文件,将所述目标代码与所述源代码进行字符串匹配;
当所述目标代码与所述源代码的字符串匹配成功时,确定所述目标代码与所述源代码相匹配;否则,确定所述目标代码与所述源代码匹配失败。
S204、确定源代码的修改操作不符合预设修改规则,中断所述目标代码文件的提交操作。
S205、确定源代码的修改操作符合预设修改规则,执行目标代码文件的提交操作。
为了提高代码验证的效率,本申请实施例将目标代码拆分成多个目标代码片段,利用差异比对文件将各个目标代码片段逐一与源代码进行字符串匹配,参照图3,利用所述差异比对文件,将所述目标代码与所述源代码进行字符串匹配,包括以下步骤:
S301、将目标代码进行拆分得到预设数量个目标代码片段。
S302、利用预设数量个目标代码片段以及与目标代码片段对应的修改前的源代码生成差异比对文件(如diff文件)。
S303、确定差异比对文件中的目标代码片段的待匹配字符串的格式。
S304、根据所述待匹配字符串的格式,确定所述待匹配字符串的匹配类型,所述匹配类型包括段模式和/或行模式。
S305、根据所述匹配类型选择预设数量个分隔符。
S306、利用所选择的所述分隔符将所述待匹配字符串分割为多个待匹配子字符串。
可选的,分隔符包括以下至少之一:换行符和空格,通过换行符将待匹配字符串分割为不同段落的多个子字符串,或者,通过空格将待匹配字符串分割为相同段落或不同段落的多个子字符串。
S307、将各个所述待匹配子字符串依次与所述差异比对文件中的源代码进行匹配,得到匹配结果。
S308、当匹配结果满足预设条件时,确定所述目标代码与所述源代码的字符串匹配成功;否则确定所述目标代码与所述源代码的字符串匹配失败。
diff文件包括源代码修改前后得到的差异代码片段,工程管理人员写好脚本,并将脚本放入工程,开发人员运行工程时将脚本文件安装到git的hook中,当开发人员准备提交目标代码文件时开始检查源代码的修改操作是否符合预设修改规则。将目标代码划分为预设数量个(如,预设数量为10,预设数量还可以为其它值,仅用于对本申请实施例进行说明,而不用于限定本申请实施例)目标代码片段,通过预设数量个目标代码片段以及该预设数量个目标代码片段修改前的源代码片段的差异对比得到diff文件(diff文件的生成通过git的hook机制实现);然后检查修改后的源代码是否符合预设修改规则,确定源代码中需要验证的模块的数据,记做A(即待验证的至少一个代码范围);然后通过GIT命令读取本次修改操作的diff文件,检查diff文件是否包含与源代码的代码信息不匹配的目标代码片段,如果diff文件包含与源代码的代码信息不匹配的目标代码片段,则将该目标代码片段记做B,并确定B的代码位置,然后再验证B的代码位置是否包含在代码范围A内,即通过A验证B的方式来确定目标代码片段是否确定存在指定的代码位置不符合预设修改规则的部分,如果B的代码位置包含在代码范围A内,则确定目标代码不符合预设修改规则。预设修改规则可以设置为某个文件的相应代码位置的代码不允许新增、删除或修改等,或者某个库不允许引入新的依赖库。
由于修改后的目标代码文件不能区分本次修改具体修改了源代码的哪一部分,所以不能根据目标代码文件直接判断本次修改符不符合预设修改规则。diff文件本身包括的是代码片段,B是通过字符串匹配方式得到的检查结果,匹配的检查结果不一定准确,而修改后的目标代码文件是全量的,可以按照匹配规则很精确的得到结果,所以进行了二次验证,通过A再次验证B。
如图4所示,本申请实施例还提供了一种代码验证的方法,该方法在图1所示实施例的基础上,还包括以下步骤:
S401、当源代码的修改操作不符合预设修改规则时,执行与目标代码对应的修改对象的身份验证操作。
S402、判断所述目标代码对应的修改对象的身份验证是否成功,如果身份验证成功,执行步骤S403;如果身份验证失败,执行步骤S404。
S403、执行所述目标代码文件的提交操作。
S404、执行所述中断所述目标代码文件的提交操作的步骤。
可选的,若目标代码对应的修改对象的身份验证失败,提示修改对象不具有目标代码的修改权限。
如果源代码的修改操作不符合预设修改规则,则中断目标代码文件的提交操作,同时提示开发人员,需要开发人员输入密码进行身份验证完成授权修改,如果开发人员身份验证成功,则继续提交目标代码文件;如果开发人员身份验证失败,则中断目标代码文件的提交,还可以提示开发人员没有该目标代码的修改权限,不允许提交目标代码文件到远端仓库,还可以提醒开发人员联系工程管理人员或提醒开发人员对源代码重新修改。
下面结合各个实施例对本申请的实现流程进行详细说明。
本申请实施例在开始检查开发人员修改后的目标代码文件之前还需要做一些基础的辅助工作的准备,首先,需要按照实际的需求在脚本文件中写好需要检查的模块以及对该模块的详细的权限控制规则,即预设修改规则。
比如:需要检查工程依赖库,以确保开发人员不会引入新的依赖库,则本次需要检查的模板为工程配置文件中的LIBRARY_SEARCH_PATHS模块和USER_HEADER_SEARCH_PATHS模块。在每次提交修改的目标代码文件之前均需要检查这两个模块,本次检查设置的权限控制规则为LIBRARY_SEARCH_PATHS模块和USER_HEADER_SEARCH_PATHS模块是否有修改,如果开发人员对这两个模块做了修改,检测开发人员所做的修改是否引入了新的依赖库。
设置好脚本文件之后,将该脚本文件存放在指定的目录,在修改的目标代码文件提交之前,将会触发该脚本文件,对目标代码文件进行自动检查。例如,在git(开源的分布式版本控制***)的pre-commit文件中触发脚本文件,具体的实现步骤为:
在提交代码的工程每一次运行时,首先,会自动触发setup.py脚本文件;然后,检查setup.py脚本文件中是否存在.git/hooks/pre-commit可执行文件;如果setup.py脚本文件中不存在.git/hooks/pre-commit可执行文件,则拷贝一个新的pre-commit文件到.git/hooks/pre-commit目录下;如果setup.py脚本文件中存在.git/hooks/pre-commit可执行文件,则打开该.git/hooks/pre-commit可执行文件,通过字符串匹配的方式搜索setup.py脚本文件的路径(即setup.py脚本文本所在的目录位置)“./gitTools/gitCommit”,如果根据搜索结果确认存在“./gitTools/gitCommit”脚本文件,则说明已经添加了该“./gitTools/gitCommit”脚本文件的调用逻辑,不对“./gitTools/gitCommit”脚本文件做处理;如果不存在“./gitTools/gitCommit”脚本文件,则添加“./gitTools/gitCommit”脚本文件的调用。
代码检查前的准备工作做好后,开发人员修改源代码得到目标代码,准备提交时,会自动触发上述的setup.py脚本文件进行检查,检查过程为:首先,在目标代码检查工程中,通过文件后缀名.xcodeproj查找到目标代码检查工程的配置文件,查找到需要验证的模块的数据,即LIBRARY_SEARCH_PATHS和USER_HEADER_SEARCH_PATHS模块的部分;通过按行读取和特殊字符串分割的方法将需要验证的模块的数据解析成单个的子字符串,将子字符串存储到数组,记做A。
然后,读取开发人员本次修改的diff文件(利用目标代码片段以及与所述目标代码片段对应的修改前的源代码片段生成diff文件);同理,查找后缀名为.xcodeproj的文件,若查找到,则说明对源代码做了修改,继续判断是否修改了需要验证的模块的数据,即LIBRARY_SEARCH_PATHS模块和USER_HEADER_SEARCH_PATHS模块的内容;如果修改了LIBRARY_SEARCH_PATHS模块和USER_HEADER_SEARCH_PATHS模块的内容,根据修改的内容,将各个子字符串分别与目标代码片段对应的修改前的源代码片段进行匹配,若不匹配,确定diff文件中包含不符合预设修改规则的源代码修改后得到的目标代码片段,即源代码的修改操作不符合预设修改规则。
例如,判断本次修改操作是对这两个模块新增了内容或者是替换了这两个模块的路径,如果是,那么本次修改操作就不符合预设修改规则,表示开发人员修改了不允许修改的内容,此时如果提交修改后的目标代码的话就会在代码提交界面提示错误,不允许开发人员提交目标代码文件到远端。在开发人员的修改操作不符合预设修改规则时,还可以提醒开发人员输入密码进行身份验证操作,例如,在代码提交界面弹出错误告警标识,并对错误内容进行提示,提示方式可以是文字提醒,提示信息的内容可以是“本库禁止新增新的头文件索引”、“如果确认要修改请输入密码”等。如果开发人员输入的密码错误,则提示开发人员没有该目标代码的修改权限,可以提示开发人员联系此工程的相关负责人。
本申请实施例在基础库运行时触发脚本文件,脚本文件中提前设置有代码的修改规则,根据开发人员修改后得到的目标代码文件,检测源代码的修改操作是否符合脚本文件中提前设置好的修改规则,当不符合修改规则时中断目标代码文件的提交操作,从而禁止该目标代码文件提交到远端仓库,有效避免了开发人员引入外部的第三方依赖库,与现有人工验证修改代码的方案相比,减小了代码验证的工作量,避免了人工验证可能产生的误操作,提高了代码验证的效率和准确率,降低了人力成本。
本申请实施例还提供了一种代码验证的装置,如图5所示,该装置包括:
第一获取单元11,用于获取对源代码的修改操作,以及与源代码修改后得到的目标代码对应的目标代码文件;
检测单元12,用于检测源代码的修改操作是否符合预设修改规则;以及
第一中断单元13,配置用于当源代码的修改操作不符合预设修改规则时,中断目标代码文件的提交操作。
在本申请另一个实施例中,该装置还包括:
第二获取单元,用于获取所述源代码修改后得到的目标代码的代码位置和代码信息;
所述检测单元包括:
第一确定子单元,用于确定所述源代码中待验证的至少一个代码范围;
判断子单元,用于判断所述目标代码的代码位置是否落在所述代码范围内,以及,基于所述目标代码的代码信息,判断所述目标代码与所述源代码是否匹配。
在本申请另一个实施例中,所述装置还包括:
生成单元,用于利用所述源代码和所述目标代码生成差异比对文件,其中,所述差异比对文件用于根据所述源代码和所述目标代码进行源代码修改前后的比对;
所述代码信息包括字符串信息,所述判断子单元包括:
字符串匹配子单元,用于利用所述差异比对文件,将所述目标代码与所述源代码进行字符串匹配;
第二确定子单元,用于当所述目标代码与所述源代码的字符串匹配成功时,确定所述目标代码与所述源代码相匹配;否则,确定所述目标代码与所述源代码匹配失败。
在本申请另一个实施例中,所述字符串匹配子单元包括:
第三确定子单元,用于确定所述差异比对文件中的目标代码的待匹配字符串的格式;
第四确定子单元,用于根据所述待匹配字符串的格式,确定所述待匹配字符串的匹配类型,所述匹配类型包括段模式和/或行模式;
选择子单元,用于根据所述匹配类型选择预设数量个分隔符;
分割子单元,用于利用所选择的所述分隔符将所述待匹配字符串分割为多个待匹配子字符串,所述分隔符包括以下至少之一:换行符和空格;
匹配子单元,用于将各个所述待匹配子字符串依次与所述差异比对文件中的源代码进行匹配,得到匹配结果;
第五确定子单元,用于当所述匹配结果满足预设条件时,确定所述目标代码与所述源代码的字符串匹配成功;否则确定所述目标代码与所述源代码的字符串匹配失败。
在本申请另一个实施例中,所述装置还包括:
身份验证单元,用于当所述源代码的修改操作不符合预设修改规则时,执行与所述目标代码对应的修改对象的身份验证操作;
第一提交单元,用于若所述目标代码对应的修改对象的身份验证成功,则执行所述目标代码文件的提交操作;
第二中断单元,用于若所述目标代码对应的修改对象的身份验证失败,则执行所述中断所述目标代码文件的提交操作的步骤。
在本申请另一个实施例中,所述装置还包括:第二提交单元,用于当所述源代码的修改操作符合预设修改规则时,执行所述目标代码文件的提交操作。
图6是本申请另一个实施例提供的移动终端的结构示意图。图6所示的移动终端600包括:至少一个处理器601、存储器602、至少一个网络接口604和其他用户接口603。移动终端600中的各个组件通过总线***605耦合在一起。可理解,总线***605用于实现这些组件之间的连接通信。总线***605除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线***605。
其中,用户接口603可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
可以理解,本申请实施例中的存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(ProgrammableROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(ElectricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(RandomAccessMemory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(StaticRAM,SRAM)、动态随机存取存储器(DynamicRAM,DRAM)、同步动态随机存取存储器(SynchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(DoubleDataRateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(SynchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambusRAM,DRRAM)。本文描述的存储器602旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器602存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作***6021和应用程序6022。
其中,操作***6021,包含各种***程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序6022,包含各种应用程序,例如媒体播放器(MediaPlayer)、浏览器(Browser)等,用于实现各种应用业务。实现本申请实施例方法的程序可以包含在应用程序6022中。
在本申请实施例中,通过调用存储器602存储的程序或指令,具体的,可以是应用程序6022中存储的程序或指令,处理器601用于执行各方法实施例所提供的方法步骤,例如包括:
获取对源代码的修改操作,以及与源代码修改后得到的目标代码对应的目标代码文件;
检测源代码的修改操作是否符合预设修改规则;
当源代码的修改操作不符合预设修改规则时,中断目标代码文件的提交操作。
上述本申请实施例揭示的方法可以应用于处理器601中,或者由处理器601实现。处理器601可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器601中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器601可以是通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecific IntegratedCircuit,ASIC)、现成可编程门阵列(FieldProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器602,处理器601读取存储器602中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecificIntegratedCircuits,ASIC)、数字信号处理器(DigitalSignalProcessing,DSP)、数字信号处理设备(DSPDevice,DSPD)、可编程逻辑设备(ProgrammableLogicDevice,PLD)、现场可编程门阵列(Field-ProgrammableGateArray,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有代码验证的程序,所述代码验证的程序被处理器执行时实现如各方法实施例所述的方法的步骤,例如包括:
获取对源代码的修改操作,以及与所述源代码修改后得到的目标代码对应的目标代码文件;
检测所述源代码的修改操作是否符合预设修改规则;
当所述源代码的修改操作不符合预设修改规则时,中断目标代码文件的提交操作。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或***实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本申请的保护之内。

Claims (10)

1.一种代码验证的方法,其特征在于,所述方法包括以下步骤:
获取对源代码的修改操作,以及与所述源代码修改后得到的目标代码对应的目标代码文件;
检测所述源代码的修改操作是否符合预设修改规则;
当所述源代码的修改操作不符合预设修改规则时,中断所述目标代码文件的提交操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述源代码修改后得到的目标代码的代码位置和代码信息;
所述检测所述源代码的修改操作是否符合预设修改规则,包括:
确定所述源代码中待验证的至少一个代码范围;
判断所述目标代码的代码位置是否落在所述代码范围内,以及,基于所述目标代码的代码信息,判断所述目标代码与所述源代码是否匹配。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
利用所述源代码和所述目标代码生成差异比对文件,其中,所述差异比对文件用于根据所述源代码和所述目标代码进行源代码修改前后的比对;
所述代码信息包括字符串信息,所述基于所述目标代码的代码信息,判断所述目标代码与所述源代码是否匹配,包括:
利用所述差异比对文件,将所述目标代码与所述源代码进行字符串匹配;
当所述目标代码与所述源代码的字符串匹配成功时,确定所述目标代码与所述源代码相匹配;否则,确定所述目标代码与所述源代码匹配失败。
4.根据权利要求3所述的方法,其特征在于,所述利用所述差异比对文件,将所述目标代码与所述源代码进行字符串匹配,包括:
确定所述差异比对文件中的目标代码的待匹配字符串的格式;
根据所述待匹配字符串的格式,确定所述待匹配字符串的匹配类型,所述匹配类型包括段模式和/或行模式;
根据所述匹配类型选择预设数量个分隔符;
利用所选择的所述分隔符将所述待匹配字符串分割为多个待匹配子字符串,所述分隔符包括以下至少之一:换行符和空格;
将各个所述待匹配子字符串依次与所述差异比对文件中的源代码进行匹配,得到匹配结果;
当所述匹配结果满足预设条件时,确定所述目标代码与所述源代码的字符串匹配成功;否则确定所述目标代码与所述源代码的字符串匹配失败。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述源代码的修改操作不符合预设修改规则时,执行与所述目标代码对应的修改对象的身份验证操作;
若所述目标代码对应的修改对象的身份验证成功,则执行所述目标代码文件的提交操作;
若所述目标代码对应的修改对象的身份验证失败,则执行所述中断所述目标代码文件的提交操作的步骤。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述源代码的修改操作符合预设修改规则时,执行所述目标代码文件的提交操作。
7.一种代码验证的装置,其特征在于,所述装置包括:
第一获取单元,用于获取对源代码的修改操作,以及与所述源代码修改后得到的目标代码对应的目标代码文件;
检测单元,用于检测所述源代码的修改操作是否符合预设修改规则;以及
第一中断单元,用于当所述源代码的修改操作不符合预设修改规则时,中断所述目标代码文件的提交操作。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二获取单元,用于获取所述源代码修改后得到的目标代码的代码位置和代码信息;
所述检测单元包括:
第一确定子单元,用于确定所述源代码中待验证的至少一个代码范围;
判断子单元,用于判断所述目标代码的代码位置是否落在所述代码范围内,以及,基于所述目标代码的代码信息,判断所述目标代码与所述源代码是否匹配。
9.一种终端设备,其特征在于,所述终端设备包括:至少一个处理器、存储器、至少一个网络接口和用户接口;
所述至少一个处理器、存储器、至少一个网络接口和用户接口通过总线***耦合在一起;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1至6中任意一项所述的代码验证的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有代码验证的程序,所述代码验证的程序被处理器执行时实现如权利要求1至6中任意一项所述的代码验证的方法的步骤。
CN201910786763.6A 2019-08-23 2019-08-23 一种代码验证的方法、装置、终端设备及存储介质 Pending CN110704298A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910786763.6A CN110704298A (zh) 2019-08-23 2019-08-23 一种代码验证的方法、装置、终端设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910786763.6A CN110704298A (zh) 2019-08-23 2019-08-23 一种代码验证的方法、装置、终端设备及存储介质

Publications (1)

Publication Number Publication Date
CN110704298A true CN110704298A (zh) 2020-01-17

Family

ID=69194028

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910786763.6A Pending CN110704298A (zh) 2019-08-23 2019-08-23 一种代码验证的方法、装置、终端设备及存储介质

Country Status (1)

Country Link
CN (1) CN110704298A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111400256A (zh) * 2020-03-16 2020-07-10 北京五八信息技术有限公司 一种应用程序调用资源文件的方法及装置
CN111984531A (zh) * 2020-07-31 2020-11-24 五八有限公司 一种代码耦合检测的方法及装置
CN113672512A (zh) * 2021-08-20 2021-11-19 泰康保险集团股份有限公司 代码检查规则生成方法、代码检查方法、装置、介质
CN113722639A (zh) * 2021-08-25 2021-11-30 北京奇艺世纪科技有限公司 网站访问验证方法、装置、电子设备和可读存储介质
CN115774864A (zh) * 2023-02-10 2023-03-10 闪捷信息科技有限公司 基于git hook脚本的代码外泄保护方法和装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110271246A1 (en) * 2009-02-26 2011-11-03 Panasonic Corporation Software development support tool
CN102609459A (zh) * 2012-01-12 2012-07-25 神州数码网络(北京)有限公司 基于正则表达式的字符串匹配方法和装置
CN103092761A (zh) * 2013-02-05 2013-05-08 烽火通信科技股份有限公司 基于差异信息文件识别和检查修改代码块的方法及装置
CN104461578A (zh) * 2014-12-26 2015-03-25 广州唯品会信息科技有限公司 代码自动合并方法和***
CN104780076A (zh) * 2015-03-19 2015-07-15 杭州华三通信技术有限公司 一种代码检查方法和设备
CN106055334A (zh) * 2016-06-01 2016-10-26 努比亚技术有限公司 代码管理***及方法
CN106294164A (zh) * 2016-08-15 2017-01-04 中国银行股份有限公司 一种代码检查方法及装置
CN106484606A (zh) * 2015-09-01 2017-03-08 阿里巴巴集团控股有限公司 一种代码提交方法和设备
CN108459962A (zh) * 2018-01-23 2018-08-28 平安普惠企业管理有限公司 代码规范性检测方法、装置、终端设备及存储介质
CN109271315A (zh) * 2018-08-23 2019-01-25 中国平安财产保险股份有限公司 脚本代码检测方法、装置、计算机设备及存储介质
CN109284225A (zh) * 2018-08-22 2019-01-29 深圳点猫科技有限公司 一种多人协同开发编程代码的质量检测方法及电子设备

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110271246A1 (en) * 2009-02-26 2011-11-03 Panasonic Corporation Software development support tool
CN102609459A (zh) * 2012-01-12 2012-07-25 神州数码网络(北京)有限公司 基于正则表达式的字符串匹配方法和装置
CN103092761A (zh) * 2013-02-05 2013-05-08 烽火通信科技股份有限公司 基于差异信息文件识别和检查修改代码块的方法及装置
CN104461578A (zh) * 2014-12-26 2015-03-25 广州唯品会信息科技有限公司 代码自动合并方法和***
CN104780076A (zh) * 2015-03-19 2015-07-15 杭州华三通信技术有限公司 一种代码检查方法和设备
CN106484606A (zh) * 2015-09-01 2017-03-08 阿里巴巴集团控股有限公司 一种代码提交方法和设备
CN106055334A (zh) * 2016-06-01 2016-10-26 努比亚技术有限公司 代码管理***及方法
CN106294164A (zh) * 2016-08-15 2017-01-04 中国银行股份有限公司 一种代码检查方法及装置
CN108459962A (zh) * 2018-01-23 2018-08-28 平安普惠企业管理有限公司 代码规范性检测方法、装置、终端设备及存储介质
CN109284225A (zh) * 2018-08-22 2019-01-29 深圳点猫科技有限公司 一种多人协同开发编程代码的质量检测方法及电子设备
CN109271315A (zh) * 2018-08-23 2019-01-25 中国平安财产保险股份有限公司 脚本代码检测方法、装置、计算机设备及存储介质

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111400256A (zh) * 2020-03-16 2020-07-10 北京五八信息技术有限公司 一种应用程序调用资源文件的方法及装置
CN111400256B (zh) * 2020-03-16 2023-03-21 北京五八信息技术有限公司 一种应用程序调用资源文件的方法及装置
CN111984531A (zh) * 2020-07-31 2020-11-24 五八有限公司 一种代码耦合检测的方法及装置
CN111984531B (zh) * 2020-07-31 2022-01-28 五八有限公司 一种代码耦合检测的方法及装置
CN113672512A (zh) * 2021-08-20 2021-11-19 泰康保险集团股份有限公司 代码检查规则生成方法、代码检查方法、装置、介质
CN113722639A (zh) * 2021-08-25 2021-11-30 北京奇艺世纪科技有限公司 网站访问验证方法、装置、电子设备和可读存储介质
CN113722639B (zh) * 2021-08-25 2023-08-25 北京奇艺世纪科技有限公司 网站访问验证方法、装置、电子设备和可读存储介质
CN115774864A (zh) * 2023-02-10 2023-03-10 闪捷信息科技有限公司 基于git hook脚本的代码外泄保护方法和装置

Similar Documents

Publication Publication Date Title
CN110704298A (zh) 一种代码验证的方法、装置、终端设备及存储介质
CN109032611B (zh) 脚本部署方法、装置、计算机设备及存储介质
CN110297813B (zh) 数据迁移方法、装置、计算机设备及存储介质
CN107729198B (zh) 一种Android***固件校验方法及装置
CN111507086B (zh) 本地化应用程序中翻译文本位置的自动发现
CN108763951B (zh) 一种数据的保护方法及装置
JP5399397B2 (ja) セキュアブート方法、セキュアブート装置、プログラムおよび集積回路
US11036479B2 (en) Devices, systems, and methods of program identification, isolation, and profile attachment
US20170169069A1 (en) Data integrity checking in a distributed filesystem using object versioning
CN110008758B (zh) 一种id获取方法、装置、电子设备及存储介质
CN113434395A (zh) 测试用例的自动化生成方法、装置、设备及介质
CN112083851A (zh) Bios配置选项的界面定位方法和装置、服务器、计算机可读存储介质
CN106529281B (zh) 一种可执行文件处理方法及装置
Hong et al. Dicos: Discovering insecure code snippets from stack overflow posts by leveraging user discussions
CN106708897B (zh) 一种数据仓库质量保障方法、装置和***
WO2008155198A1 (en) Method and apparatus for changing and adding activation keys for functions of digital content without having to change and recompile the digital content
CN111581344B (zh) 一种接口信息审核方法、装置、计算机设备及存储介质
WO2018175607A1 (en) System and method for providing secure access to production files in a code deployment environment
WO2020233044A1 (zh) 一种插件校验方法、设备、服务器及计算机可读存储介质
JP2021140372A (ja) 構成管理装置、構成管理方法、及び、構成管理プログラム
JP2014130546A (ja) ファイル管理プログラム、ファイル管理装置およびファイル管理方法
US11740995B2 (en) Source quality check service
He et al. Automatically identifying cve affected versions with patches and developer logs
CN111695327B (zh) 一种乱码修复方法、装置、电子设备及可读存储介质
CN112632946A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200117

RJ01 Rejection of invention patent application after publication