CN109271315B - 脚本代码检测方法、装置、计算机设备及存储介质 - Google Patents

脚本代码检测方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN109271315B
CN109271315B CN201810965804.3A CN201810965804A CN109271315B CN 109271315 B CN109271315 B CN 109271315B CN 201810965804 A CN201810965804 A CN 201810965804A CN 109271315 B CN109271315 B CN 109271315B
Authority
CN
China
Prior art keywords
rule
script
detected
script code
violation
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
Application number
CN201810965804.3A
Other languages
English (en)
Other versions
CN109271315A (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.)
Ping An Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China 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 Ping An Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN201810965804.3A priority Critical patent/CN109271315B/zh
Publication of CN109271315A publication Critical patent/CN109271315A/zh
Application granted granted Critical
Publication of CN109271315B publication Critical patent/CN109271315B/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本申请实施例提供一种脚本代码检测方法、装置、计算机设备及存储介质。所述方法包括:获取待检测脚本文件中的脚本代码;对所述脚本代码进行预处理以得到待检测脚本代码;确定所述待检测脚本代码所需检测的违规规则以及所述违规规则所对应的违规分数;若接收到检测指令,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果,其中,所述检测结果包括所述待检测脚本代码所对应的总违规分数、每个违规位置以及每个违规位置所对应的违规原因。本申请实施例可智能检测脚本代码并根据检测结果一目了然的知道脚本代码不符合规则或者规范的位置以及原因,提高了检测的效率,并且提高了用户的体验。

Description

脚本代码检测方法、装置、计算机设备及存储介质
技术领域
本申请涉及数据处理技术领域,尤其涉及一种脚本代码检测方法、装置、计算机设备及存储介质。
背景技术
对于开发人员来说,不同开发人员所写代码的习惯、风格都有所差异。在统一规范所有开发人员所写代码的过程中,需要对所有开发人员所写代码进行检查,以查看代码是否符合规范。其中,代码可以为脚本代码等。目前在对代码进行检查时,使用的是人工检查,如此很浪费人力,检查的效率也非常低。
发明内容
本申请实施例提供一种脚本代码检测方法、装置、计算机设备及存储介质,可提高脚本代码检测的效率。
第一方面,本申请实施例提供了一种脚本代码检测方法,该方法包括:
获取待检测脚本文件中的脚本代码;对所述脚本代码进行预处理以得到待检测脚本代码;确定所述待检测脚本代码所需检测的违规规则以及所述违规规则所对应的违规分数;若接收到检测指令,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果,其中,所述检测结果包括所述待检测脚本代码所对应的总违规分数、每个违规位置以及每个违规位置所对应的违规原因。
第二方面,本申请实施例提供了一种脚本代码检测装置,该装置包括用于执行上述第一方面所述的方法对应的单元。
第三方面,本申请实施例提供了一种计算机设备,所述计算机设备包括存储器,以及与所述存储器相连的处理器;
所述存储器用于存储计算机程序,所述处理器用于运行所述存储器中存储的计算机程序,以执行上述第一方面所述的方法。
第四方面,本申请实施例提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述第一方面所述的方法。
本申请实施例通过对待检测脚本代码违规规则的检测,生成检测结果,其中,检测结果包括待检测脚本代码所对应的总违规分数、每个违规位置以及每个违规位置所对应的违规原因。通过对脚本代码进行违规规则检测以得到检测结果,根据检测结果一目了然的知道脚本代码不符合规则/规范的位置以及原因,提高了检测的效率,并且提高了用户的体验。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的脚本代码检测方法的流程示意图;
图2是本申请实施例提供的违规规则选择界面的一个示意图;
图3是本申请实施例提供的脚本代码检测方法的子流程示意图;
图4是本申请实施例提供的脚本代码检测方法的子流程示意图;
图5是本申请另一实施例提供的脚本代码检测方法的流程示意图;
图6是本申请实施例提供的脚本代码检测装置的示意性框图;
图7是本申请实施例提供的脚本检测单元的示意性框图;
图8是本申请另一实施例提供的脚本代码检测装置的示意性框图;
图9是本申请实施例提供的一种计算机设备的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1是本申请实施例提供的脚本代码检测方法的流程示意图。如图1所示,该方法包括S101-S104。
S101,获取待检测脚本文件中的脚本代码。
如当接收到导入指令时,导入待检测脚本文件,获取导入的待检测脚本文件中的脚本代码。具体地,按照字节流来获取待检测脚本文件中的脚本代码。其中,当检测到用户点击“导入”或者“选择”等相关按钮时,产生导入指令。接收导入指令后,根据用户所选择的待检测脚本文件以及待检测文件夹,导入待检测脚本文件。其中,所选择的待检测脚本文件可以包括一个文件,也可以包括多个文件。所选择的待检测文件夹中包括该待检测文件夹中的脚本文件,若所选择的是待检测文件夹,那么默认选择该待检测文件夹中的所有脚本文件。需要注意的是,若待检测脚本文件夹中还有其他非脚本文件;那么会过滤其他非脚本文件。具体地,根据脚本文件的后缀名来选择文件夹中的待检测脚本文件,若文件后缀名不是脚本文件所对应的后缀名,则过滤掉该类文件。其中,待检测脚本文件可以是SQL脚本文件、HQL脚本文件、shell脚本文件等,对应地脚本文件后缀名分别为.sql,.hql,.sh,脚本代码分别为SQL脚本代码、HQL脚本代码、shell脚本代码等。
S102,对所述脚本代码进行预处理以得到待检测脚本代码。
预处理包括两个方面的内容,第一方面,替换该脚本代码中的变量元素或者参数等不涉及脚本代码规范性的内容,第二方面,将脚本代码进行分段,以方便进一步对脚本代码的检测。
在一实施例中,步骤S102包括:替换该脚本代码中的引用变量;将该脚本代码进行分段以形成多个脚本段落,将多个脚本段落作为待检测脚本。
其中,待检测脚本文件中的脚本代码中包括了很多的引用变量,如用&db或者{db}来表示一个数据库的引用变量。在待检测脚本代码具体执行时,该引用变量会被一个真实的值替代,如&db引用变量会被一个真实的数据库替代,如student数据库。在本实施例中,引用变量也可以理解为参数。然而在对脚本代码进行检测时,这些引用变量不涉及脚本代码的规范性问题,无需对这些引用变量进行规范性的判断。为了检测的方便,将待检测脚本代码中的引用变量进行替换,如将&db或者{db}替换为db或者abc等。在其他实施例中,替换引用变量,也可以直接去掉引用变量中的符号&或者{}等。
将该脚本代码进行分段以形成多个脚本段落,包括:检测该脚本代码中的分段符号,如“;”等;根据分段符号将该脚本代码进行分段以形成多个脚本段落。可以理解为,在脚本代码中,一句完整的脚本代码写完之后,默认会有一个符号将每句完整的脚本代码分开,将该符号称为分段符号。
S103,确定所述待检测脚本代码所需检测的违规规则以及所述违规规则所对应的违规分数。
可以理解地,预先设置并添加多个违规规则,以及设置每个违规规则所对应的违规分数。可以理解为,脚本代码中可能存在不符合规则/规范的地方,利用违规规则来检测脚本代码中不符合规则/规范的地方。违规规则所对应的违规分数按照不符合规则/规范的所对应重要性程度预先设定。若不符合规则/规范所对应的重要性程度越低,则违规分数越低,若不符合规则/规范所对应的重要性程度越高,则违规分数越高。如可将最高违规分数设置为10等。其中,每个违规规则所对应的违规分数可再次重新设置,可以理解地,对于不同阶段的开发人员来说,同一个违规规则,所对应的重要性程度是不同的,带来的影响也是不同的。具体地,若接收到违规分数设置指令,设置/重置该违规分数。
预先设置并添加的违规规则,如包括:select*关键字;join数与on不相等;段落中含有in/exists子查询;一段脚本代码中关联的表数超过5个等。对应地,可以理解为:一段脚本代码中不允许含有select*关键字;若要有join on,那么join与on的数量要相等;不允许一段脚本代码中含有in/exists子查询;一段脚本代码中关联的表数不能超过5个等。
在一实施例中,步骤S103包括:获取预先设置的所有违规规则;判断是否接收到用户从所有违规规则中选择违规规则的选择指令;若是,根据选择指令获取用户从所有违规规则中选择的目标违规规则,将所获取的目标违规规则作为所述待检测脚本代码所需检测的违规规则,并获取所需检测的违规规则所对应的违规分数;若否,则默认选择所有违规规则,将所有违规规则作为所述待检测脚本代码的违规规则,并获取所有违规规则所对应的违规分数。
可以理解为,所有违规规则有很多,然而对于当前业务场景来说,只需要检测其中几条规则就可以,那么获取用户从所有违规规则中选择的目标违规规则,将所获取的目标违规规则作为该待检测脚本代码所需检测的违规规则。获取目标违规规则后,获取目标违规规则所对应的违规分数作为该待检测脚本代码所需检测的违规规则所对应的违规分数。
在一实施例中,步骤S103包括:获取预先设置的所有违规规则;判断是否接收到用户从所有违规规则中选择违规规则的选择指令;若是,根据选择指令获取用户从所有违规规则中选择的违规规则,将未选择的违规规则作为所述待检测脚本代码所需检测的违规规则,并获取所需检测的违规规则所对应的违规分数;若否,则默认所有违规规则都未选择,将所有违规规则作为所述待检测脚本代码的违规规则,并获取所有违规规则所对应的违规分数。
可以理解为,若所有违规规则有很多,而一般情况下,对待检测脚本代码进行检测时,很多违规规则都需要进行检测。那么可使用排他的方式来选择违规规则,即将用户所选择的违规规则从本次待检测脚本代码检测中剔除,将未选择的违规规则作为待检测脚本代码所需检测的违规规则,以加快确定违规规则的速度。确定违规规则后,获取确定的该违规规则所对应的违规分数。
在一实施例中,若在对待检测脚本代码进行检测时,需要新增一些违规规则,那么可实现新增违规规则。则对应地,步骤S103还包括:新增违规规则。具体地,新增违规规则包括:若接收到新增违规规则指令,添加新增违规规则;设置所述新增违规规则所对应的违规分数;将所述新增违规规则和设置的违规分数添加至所有违规规则中。如此,可快速便捷的实现新增违规规则。
如图2所示,是本申请实施例提供的违规规则选择界面的一个示意图。在该图中,可以看到有很多违规规则,每个违规规则前面有一个选择框,选中违规规则前面所对应的选择框,即意味着该违规规则被选择。如违规规则:一段脚本文件中关联的表数超过5个、非临时表自身插入自身,这两个处于被选择的状态。在该选择界面的左下方,还有“全选/全不选”的按钮。若检测到还有违规规则未选中,那么操作该按钮,如点击,将所有违规规则全选;若检测到所有违规规则全选中,那么操作该按钮,将所有违规规则置于未选择的状态。在该选择界面的右下方,还有“确定”按钮,在选择完成后,点击该按钮,确定所选择的违规规则。需要注意的是,该选择界面上所例举的违规规则只是例举的部分违规规则,并不对本申请中的违规规则构成限定。该选择界面还可以包括有其他的内容,如显示违规规则所对应的违规分数等。
S104,若接收到检测指令,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果。
如检测用户点击“开始检测”、“检测”等相关按钮的操作,若检测到用户的相应操作,则接收到检测指令。若接收到检测指令,则开始对待检测脚本代码进行检测。
在一实施例中,如图3所示,步骤S104包括以下步骤S301-S302。
S301,若接收到检测指令,获取所述待检测脚本代码中的脚本段落。其中,每个脚本段落包括脚本段落所对应的脚本代码,以及脚本段落所在的脚本段落数,即脚本段落位于待检测脚本文件中的第几段。
S302,对于每一个脚本段落所对应的脚本代码,根据所需检测的违规规则进行检测,以完成对所述待检测脚本代码的检测,从而生成检测结果。可以理解为,对每一个脚本段落,根据待检测脚本代码所需检测的违规规则进行检测,即对于每个脚本段落,执行待检测脚本代码所需检测的所有违规规则,以确定该脚本段落是否有不符合规则/规范的地方,以及具体不符合哪一条规则/规范。
具体地,如图4所示,步骤S302包括以下步骤S401-S409。
S401,根据所需检测的违规规则,获取每个所需检测的违规规则的检测方式,所述检测方式包括正则匹配和语法匹配。可以理解为,有一些违规规则只需要正则匹配就可以完成,有一些违规规则需对待检测脚本代码进行语法分析才可以完成。如检测join数与on是否不相等、是否含select*关键字等,通过正则匹配的检测方式即可完成。如检测一段脚本代码中关联的表数不能超过5个,则需要对该段脚本代码进行语法分析后进行语法匹配才可以判断关联的表数是否超过5个。在本实施例中,违规规则的检测方式通过预先确定并保存,如检测方式用参数A表示,其中,A的值对应有两个,分别可以用yes、no表示,如用yes表示正则匹配,用no表示语法匹配;也可以用yes表示正则匹配,非yes表示语法匹配;还可以为0、1表示,如用1表示正则匹配,用0表示语法匹配等。还可以用其他的数字、字母、文字等表示。
S402,对于每一个脚本段落所对应的脚本代码,从所需检测的违规规则中获取其中一个违规规则作为当前违规规则。如可以按照违规规则所对应的排序顺序进行获取。
S403,判断当前违规规则所对应的检测方式。
S404,若当前违规规则所对应的检测方式是正则匹配,则通过正则匹配的方式对所述脚本段落所对应的脚本代码进行检测,以确定所述脚本段落所对应的脚本代码是否与当前违规规则匹配。
S405,若当前违规规则所对应的检测方式是语法匹配,则通过调用预设语法包解析所述脚本段落所对应的脚本代码,对解析后的脚本代码进行检测,以确定所述脚本段落所对应的脚本代码是否与当前违规规则匹配。
其中,预设语法包可以是Hive的官方语法包,如解析HQL脚本代码的语法包,解析SQL脚本代码的语法包等。通过调用预设语法包解析该脚本段落所对应的脚本代码;若不能解析,则确定该脚本段落所对应的脚本代码存在语法问题;获取该脚本段落所对应的脚本端数据,并抛出异常以进行提示,即发出提醒信息。若可以解析,则将该脚本段落所对应的脚本代码转换为语法树;获取语法树中与当前违规规则匹配的数据,如获取脚本代码中关联表的数据;根据获取的数据与当前违规规则进行匹配。
S406,若所述脚本段落所对应的脚本代码与当前违规规则匹配,则确定所述脚本段落所对应的脚本代码符合当前违规规则,并获取所述脚本段落所对应的脚本段落数;若所述脚本段落所对应的脚本代码与当前违规规则不匹配,则确定所述脚本段落所对应的脚本代码不符合当前违规规则。
若跟当前违规规则匹配,则确定该脚本段落所对应的脚本代码满足当前违规规则,即存在当前违规规则规定的不符合规则/规范的地方,若与当前违规规则不匹配,则确定该脚本段落所对应的脚本代码不满足当前违规规则,即不存在当前违规规则规定的不符合规则/规范的地方。
S407,判断所需检测的违规规则是否全部获取。若全部获取,则执行步骤S409;若未全部获取,执行步骤S408。
S408,获取下一个未获取的违规规则作为当前违规规则。接着返回步骤S403。
S409,生成检测结果,其中,所述检测结果包括所述待检测脚本代码所对应的总违规分数、每个违规位置以及每个违规位置所对应的违规原因。
若对多个待检测脚本文件都进行了脚本代码检测,那么每个待检测脚本文件都对应有检测结果,即每个待检测脚本文件都对应有该待检测脚本代码所对应的总违规分数、每个违规位置以及每个违规位置所对应的违规原因。其中,总违规分数是将待检测脚本代码中所有与违规规则匹配的违规规则所对应的违规分数相加而得到。如待检测脚本代码中与违规规则匹配的违规规则所对应的违规分数分别为8、4、2,那么所对应的总违规分数为14。其中,违规位置可以用脚本段落数来表示,也可以用该脚本段落数所对应的行数来表示。违规位置所对应的违规原因,可以直接以对应的违规规则表示。
表1检测结果示意图
检测结果可如表1所示。表1中显示了本次共检测的待检测脚本文件总数量、本次所有待检测脚本文件的违规总分数的违规汇总、本次检测的每个待检测脚本文件的具体违规位置和违规原因等。如违规汇总中显示待检测脚本文件abc.sh的总违规分数为0;edf.sh的总违规分数为28;gh.sh的总违规分数为0。如待检测脚本文件abc.sh中显示:解析abc.sh中的某段hql出错,hql可能存在语法问题;Line39:missing EOF at‘.’near‘D’。表示abc.sh中的第39行中在‘D’附近少了‘.’,导致解析abc.sh出错。如待检测脚本文件edf.sh中显示:违规:[1_683,5]非建表脚本中包括”create table”关键字。表示edf.sh中总共有683行,在第5个脚本段落中出现了违规,具体违规原因是:非建表脚本中包括”createtable”关键字。如待检测脚本文件gh.sh中显示:很好!gh.sh中暂未发现违规项。表示gh.sh文件中没有发现与所需检测的违规规则匹配的违规项。
需要注意的是,表1中所示的检测结果仅仅是示例,检测结果中还可以包括有其他的内容,如待检测脚本文件的导入路径等。表1中所示的检测结果只是为了说明检测结果所包括的一些内容,并不构成对检测结果具体显示格式和显示结构的限定,检测结果还可以用其他的显示格式和显示结构显示。
上述实施例通过对脚本代码进行违规规则检测以得到检测结果,根据检测结果一目了然的知道脚本代码不符合规则/规范的位置以及原因,提高了检测的效率,并且提高了用户的体验。
图5是本申请另一实施例提供的脚本代码检测方法的示意性框图。如图5所示,该方法包括S501-S507。该实施例与图1所示的实施例的区别在于:增加了步骤S504-S506。下面将详细描述区别之处,其他步骤请参看图1实施例对应的描述,在此不再赘述。
S504,若接收到检测指令,判断当前接收到检测指令的时间与上一次接收到检测指令的时间间隔是否小于预设时间间隔。若小于预设时间间隔,则执行步骤S505;否则,执行步骤S507。其中,若不存在上一次接收检测指令,则认为时间间隔大于预设时间间隔。
S505,判断当前待检测脚本代码和所需检测的违规规则与上一次检测的待检测脚本代码和所需检测的违规规则是否相同。若相同,则执行步骤S506,若不相同,则执行步骤S507。
S506,发出提醒信息。如提示“是否需要重复检测等”。若检测到用户点击了“是”,则执行步骤507;若检测到用户点击了“否”,则结束。
S507,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果。
该实施例对是否是重复检测进行了判断,增加了用户的体验。
图6是本申请实施例提供的脚本代码检测装置的示意性框图。该装置包括用于执行上述脚本代码检测方法所对应的单元。如图6所示,该装置60包括获取单元601、预处理单元602、确定单元603、检测单元604。
获取单元601,用于获取待检测脚本文件中的脚本代码。
预处理单元602,用于对所述脚本代码进行预处理以得到待检测脚本代码。
在一实施例中,预处理单元602包括替换单元、分段单元。其中,替换单元,用于替换所述脚本代码中的引用变量。分段单元,用于将替换后的脚本代码进行分段以形成多个脚本段落,将多个脚本段落作为待检测脚本。
确定单元603,用于确定所述待检测脚本代码所需要检测的违规规则以及所述违规规则所对应的违规分数。
在一实施例中,确定单元603包括所有规则获取单元、接收判断单元以及第一规则确定单元。其中,所有规则获取单元,用于获取预先设置的所有违规规则。接收判断单元,用于判断是否接收到用户从所有违规规则中选择违规规则的选择指令。第一规则确定单元,用于若接收到用户从所有违规规则中选择违规规则的选择指令,根据选择指令获取用户从所有违规规则中选择的目标违规规则,将所获取的目标违规规则作为所述待检测脚本代码所需检测的违规规则,并获取所需检测的违规规则所对应的违规分数;若未接收到用户从所有违规规则中选择违规规则的选择指令,默认选择所有违规规则,将所有违规规则作为所述待检测脚本代码的违规规则,并获取所有违规规则所对应的违规分数。
在一实施例中,确定单元603包括所有规则获取单元、接收判断单元以及第二规则确定单元。其中,所有规则获取单元,用于获取预先设置的所有违规规则。接收判断单元,用于判断是否接收到用户从所有违规规则中选择违规规则的选择指令。第二规则确定单元,用于若接收到用户从所有违规规则中选择违规规则的选择指令,根据选择指令获取用户从所有违规规则中选择的违规规则,将未选择的违规规则作为所述待检测脚本代码所需检测的违规规则,并获取所需检测的违规规则所对应的违规分数;若否,则默认所有违规规则都未选择,将所有违规规则作为所述待检测脚本代码的违规规则,并获取所有违规规则所对应的违规分数。
检测单元604,用于若接收到检测指令,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果。
在一实施例中,检测单元604包括脚本获取单元、脚本检测单元。其中,脚本获取单元,用于若接收到检测指令,获取所述待检测脚本代码中的脚本段落。脚本检测单元,用于对于每一个脚本段落所对应的脚本代码,根据所需检测的违规规则进行检测,以完成对所述待检测脚本代码的检测,从而生成检测结果。
在一实施例中,如图7所示,脚本检测单元70包括检测方式获取单元701、当前规则确定单元702、检测方式判断单元703、正则匹配单元704、语法匹配单元705、匹配确定单元706、获取判断单元707以及结果生成单元708。
其中,检测方式获取单元701,用于根据所需检测的违规规则,获取每个所需检测的违规规则的检测方式,所述检测方式包括正则匹配和语法匹配。当前规则确定单元702,用于对于每一个脚本段落所对应的脚本代码,从所需检测的违规规则中获取其中一个违规规则作为当前违规规则。检测方式判断单元703,用于判断当前违规规则所对应的检测方式。正则匹配单元704,用于若当前违规规则所对应的检测方式是正则匹配,则通过正则匹配的方式对所述脚本段落所对应的脚本代码进行检测,以确定所述脚本段落所对应的脚本代码是否与当前违规规则匹配。语法匹配单元705,用于若当前违规规则所对应的检测方式是语法匹配,则通过调用预设语法包解析所述脚本段落所对应的脚本代码,对解析后的脚本代码进行检测,以确定所述脚本段落所对应的脚本代码是否与当前违规规则匹配。匹配确定单元706,用于若所述脚本段落所对应的脚本代码与当前违规规则匹配,则确定所述脚本段落所对应的脚本代码符合当前违规规则,并获取所述脚本段落所对应的脚本段落数;若所述脚本段落所对应的脚本代码与当前违规规则不匹配,则确定所述脚本段落所对应的脚本代码不符合当前违规规则。获取判断单元707,用于判断所需检测的违规规则是否全部获取。当前规则确定单元702,还用于若所需检测的违规规则未全部获取,获取下一个未获取的违规规则作为当前违规规则。接着触发检测方式判断单元703。结果生成单元708,用于若所需检测的违规规则全部获取,生成检测结果,其中,所述检测结果包括所述待检测脚本代码所对应的总违规分数、每个违规位置以及每个违规位置所对应的违规原因。
图8是本发明另一实施例提供的脚本代码检测装置的示意性框图。该装置80包括:获取单元801、预处理单元802、确定单元803、时间判断单元804、相同判断单元805、提示单元806、检测单元807。该装置与图6所示的装置的区别在于:增加了时间判断单元804、相同判断单元805、提示单元806。其他单元请参看图6实施例所对应的描述,在此不再赘述。
时间判断单元804,用于判断当前接收到检测指令的时间与上一次接收到检测指令的时间间隔是否小于预设时间间隔。
相同判断单元805,用于若当前接收到检测指令的时间与上一次接收到检测指令的时间间隔小于预设时间间隔,判断当前待检测脚本代码和所需检测的违规规则与上一次检测的待检测脚本代码和所需检测的违规规则是否相同。
提示单元806,用于若当前待检测脚本代码和所需检测的违规规则与上一次检测的待检测脚本代码和所需检测的违规规则相同,则发出提醒信息。
检测单元807,还用于若当前待检测脚本代码和所需检测的违规规则与上一次检测的待检测脚本代码和所需检测的违规规则不相同,或者若当前接收到检测指令的时间与上一次接收到检测指令的时间间隔不小于预设时间间隔,根据确定的所述违规规则,对所述待检测脚本代码进行检测以生成检测结果。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述装置可以实现为一种计算机程序的形式,计算机程序可以在如图9所示的计算机设备上运行。
图9为本申请实施例提供的一种计算机设备的示意性框图。该设备90包括通过系统总线901连接的处理器902、存储器和网络接口903,其中,存储器可以包括非易失性存储介质904和内存储器905。
该非易失性存储介质904可存储操作系统9041和计算机程序9042。该非易失性存储介质中所存储的计算机程序9042被处理器902执行时,可实现上述所述的发票审核方法。该处理器902用于提供计算和控制能力,支撑整个设备90的运行。该内存储器905为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器902执行时,可使得处理器902执行上述所述的发票审核方法。该网络接口903用于进行网络通信。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的设备90的限定,具体的设备90可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器902用于运行存储在存储器中的计算机程序,以实现如下步骤:
获取待检测脚本文件中的脚本代码;对所述脚本代码进行预处理以得到待检测脚本代码;确定所述待检测脚本代码所需检测的违规规则以及所述违规规则所对应的违规分数;若接收到检测指令,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果,其中,所述检测结果包括所述待检测脚本代码所对应的总违规分数、每个违规位置以及每个违规位置所对应的违规原因。
在一实施例中,所述处理器902在执行所述若接收到检测指令,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果时,具体执行:
若接收到检测指令,获取所述待检测脚本代码中的脚本段落;对于每一个脚本段落所对应的脚本代码,根据所需检测的违规规则进行检测,以完成对所述待检测脚本代码的检测,从而生成检测结果。
在一实施例中,每一个脚本段落包括脚本段落所对应的脚本代码,以及脚本段落所在的脚本段落数;所述处理器902在执行所述对于每一个脚本段落所对应的脚本代码,根据所需检测的违规规则进行检测,以完成对所述待检测脚本代码的检测时,具体执行:
根据所需检测的违规规则,获取每个所需检测的违规规则的检测方式,所述检测方式包括正则匹配和语法匹配;对于每一个脚本段落所对应的脚本代码,从所需检测的违规规则中获取其中一个违规规则作为当前违规规则;判断当前违规规则所对应的检测方式;若当前违规规则所对应的检测方式是正则匹配,则通过正则匹配的方式对所述脚本段落所对应的脚本代码进行检测,以确定所述脚本段落所对应的脚本代码是否与当前违规规则匹配;若当前违规规则所对应的检测方式是语法匹配,则通过调用预设语法包解析所述脚本段落所对应的脚本代码,对解析后的脚本代码进行检测,以确定所述脚本段落所对应的脚本代码是否与当前违规规则匹配;若所述脚本段落所对应的脚本代码与当前违规规则匹配,则确定所述脚本段落所对应的脚本代码符合当前违规规则,并获取所述脚本段落所对应的脚本段落数;若所述脚本段落所对应的脚本代码与当前违规规则不匹配,则确定所述脚本段落所对应的脚本代码不符合当前违规规则;判断所需检测的违规规则是否全部获取;若所需检测的违规规则未全部获取,获取下一个未获取的违规规则作为当前违规规则;接着触发判断当前违规规则所对应的检测方式的步骤。
在一实施例中,所述在接收到检测指令之后,所述处理器902还具体执行:
判断当前接收到检测指令的时间与上一次接收到检测指令的时间间隔是否小于预设时间间隔;若当前接收到检测指令的时间与上一次接收到检测指令的时间间隔小于预设时间间隔,判断当前待检测脚本代码和所需检测的违规规则与上一次检测的待检测脚本代码和所需检测的违规规则是否相同;若当前待检测脚本代码和所需检测的违规规则与上一次检测的待检测脚本代码和所需检测的违规规则相同,则发出提醒信息;否则,则执行所述根据所需检测的违规规则,对所述待检测脚本代码进行检测的步骤。
在一实施例中,所述处理器902在执行所述对所述脚本代码进行预处理以得到待检测脚本代码时,具体执行:
替换所述脚本代码中的引用变量;将替换后的脚本代码进行分段以形成多个脚本段落,将多个脚本段落作为待检测脚本。
在一实施例中,所述处理器902在执行所述确定所述待检测脚本代码所需要检测的违规规则以及所述违规规则所对应的违规分数时,具体执行:
获取预先设置的所有违规规则;获取用户从所有违规规则中选择的目标违规规则,将所获取的目标违规规则作为所述待检测脚本代码所需检测的违规规则,并获取所需检测的违规规则所对应的违规分数;或者
获取预先设置的所有违规规则;获取用户从所有违规规则中选择的违规规则,将未选择的违规规则作为所述待检测脚本代码所需检测的违规规则,并获取所需检测的违规规则所对应的违规分数。
在一实施例中,所述处理器902还具体执行:
若接收到新增违规规则指令,添加新增违规规则;设置所述新增违规规则所对应的违规分数;将所述新增违规规则和设置的违规分数添加至所有违规规则中。
应当理解,在本申请实施例中,所称处理器902可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(应用程序lication Specific IntegratedCircuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本申请的另一实施例中提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序当被处理器执行时实现以下步骤:
获取待检测脚本文件中的脚本代码;对所述脚本代码进行预处理以得到待检测脚本代码;确定所述待检测脚本代码所需检测的违规规则以及所述违规规则所对应的违规分数;若接收到检测指令,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果,其中,所述检测结果包括所述待检测脚本代码所对应的总违规分数、每个违规位置以及每个违规位置所对应的违规原因。
在一实施例中,所述处理器在执行所述若接收到检测指令,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果时,具体实现:
若接收到检测指令,获取所述待检测脚本代码中的脚本段落;对于每一个脚本段落所对应的脚本代码,根据所需检测的违规规则进行检测,以完成对所述待检测脚本代码的检测,从而生成检测结果。
在一实施例中,每一个脚本段落包括脚本段落所对应的脚本代码,以及脚本段落所在的脚本段落数;所述处理器在执行所述对于每一个脚本段落所对应的脚本代码,根据所需检测的违规规则进行检测,以完成对所述待检测脚本代码的检测时,具体实现:
根据所需检测的违规规则,获取每个所需检测的违规规则的检测方式,所述检测方式包括正则匹配和语法匹配;对于每一个脚本段落所对应的脚本代码,从所需检测的违规规则中获取其中一个违规规则作为当前违规规则;判断当前违规规则所对应的检测方式;若当前违规规则所对应的检测方式是正则匹配,则通过正则匹配的方式对所述脚本段落所对应的脚本代码进行检测,以确定所述脚本段落所对应的脚本代码是否与当前违规规则匹配;若当前违规规则所对应的检测方式是语法匹配,则通过调用预设语法包解析所述脚本段落所对应的脚本代码,对解析后的脚本代码进行检测,以确定所述脚本段落所对应的脚本代码是否与当前违规规则匹配;若所述脚本段落所对应的脚本代码与当前违规规则匹配,则确定所述脚本段落所对应的脚本代码符合当前违规规则,并获取所述脚本段落所对应的脚本段落数;若所述脚本段落所对应的脚本代码与当前违规规则不匹配,则确定所述脚本段落所对应的脚本代码不符合当前违规规则;判断所需检测的违规规则是否全部获取;若所需检测的违规规则未全部获取,获取下一个未获取的违规规则作为当前违规规则;接着触发判断当前违规规则所对应的检测方式的步骤。
在一实施例中,所述在接收到检测指令之后,所述处理器还具体实现:
判断当前接收到检测指令的时间与上一次接收到检测指令的时间间隔是否小于预设时间间隔;若当前接收到检测指令的时间与上一次接收到检测指令的时间间隔小于预设时间间隔,判断当前待检测脚本代码和所需检测的违规规则与上一次检测的待检测脚本代码和所需检测的违规规则是否相同;若当前待检测脚本代码和所需检测的违规规则与上一次检测的待检测脚本代码和所需检测的违规规则相同,则发出提醒信息;否则,则执行所述根据所需检测的违规规则,对所述待检测脚本代码进行检测的步骤。
在一实施例中,所述处理器在执行所述对所述脚本代码进行预处理以得到待检测脚本代码时,具体实现:
替换所述脚本代码中的引用变量;将替换后的脚本代码进行分段以形成多个脚本段落,将多个脚本段落作为待检测脚本。
在一实施例中,所述处理器在执行所述确定所述待检测脚本代码所需要检测的违规规则以及所述违规规则所对应的违规分数时,具体实现:
获取预先设置的所有违规规则;获取用户从所有违规规则中选择的目标违规规则,将所获取目标违规规则作为所述待检测脚本代码所需检测的违规规则,并获取所需检测的违规规则所对应的违规分数;或者
获取预先设置的所有违规规则;获取用户从所有违规规则中选择的违规规则,将未选择的违规规则作为所述待检测脚本代码所需检测的违规规则,并获取所需检测的违规规则所对应的违规分数。
在一实施例中,所述处理器还具体实现:
若接收到新增违规规则指令,添加新增违规规则;设置所述新增违规规则所对应的违规分数;将所述新增违规规则和设置的违规分数添加至所有违规规则中。
所述存储介质包括计算机可读存储介质,所述存储介质可以是前述任一实施例所述的终端的内部存储单元,例如终端的硬盘或内存。所述存储介质也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡等。进一步地,所述存储介质还可以既包括所述终端的内部存储单元也包括外部存储设备。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置、设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (6)

1.一种脚本代码检测方法,其特征在于,所述方法包括:
获取待检测脚本文件中的脚本代码;
对所述脚本代码进行预处理以得到待检测脚本代码,其中,所述预处理包括替换所述脚本代码中不涉及脚本代码规范性的内容以及将替换后的所述脚本代码进行分段;
确定所述待检测脚本代码所需检测的违规规则以及所述违规规则所对应的违规分数;
若接收到检测指令,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果,其中,所述检测结果包括所述待检测脚本代码所对应的总违规分数、每个违规位置以及每个违规位置所对应的违规原因;
其中,所述若接收到检测指令,根据所需检测的违规规则,对所述待检测脚本代码进行检测以生成检测结果,包括:
若接收到检测指令,获取所述待检测脚本代码中的脚本段落;
对于每一个脚本段落所对应的脚本代码,根据所需检测的违规规则进行检测,以完成对所述待检测脚本代码的检测,从而生成检测结果,其中,所述每一个脚本段落包括脚本段落所对应的脚本代码,以及脚本段落所在的脚本段落数;
其中,所述对于每一个脚本段落所对应的脚本代码,根据所需检测的违规规则进行检测,以完成对所述待检测脚本代码的检测,包括:
根据所需检测的违规规则,获取每个所需检测的违规规则的检测方式,所述检测方式包括正则匹配和语法匹配;
对于每一个脚本段落所对应的脚本代码,从所需检测的违规规则中获取其中一个违规规则作为当前违规规则;
判断当前违规规则所对应的检测方式;
若当前违规规则所对应的检测方式是正则匹配,则通过正则匹配的方式对所述脚本段落所对应的脚本代码进行检测,以确定所述脚本段落所对应的脚本代码是否与当前违规规则匹配;
若当前违规规则所对应的检测方式是语法匹配,则通过调用预设语法包解析所述脚本段落所对应的脚本代码,对解析后的脚本代码进行检测,以确定所述脚本段落所对应的脚本代码是否与当前违规规则匹配;
若所述脚本段落所对应的脚本代码与当前违规规则匹配,则确定所述脚本段落所对应的脚本代码符合当前违规规则,并获取所述脚本段落所对应的脚本段落数;
若所述脚本段落所对应的脚本代码与当前违规规则不匹配,则确定所述脚本段落所对应的脚本代码不符合当前违规规则;
判断所需检测的违规规则是否全部获取;
若所需检测的违规规则未全部获取,获取下一个未获取的违规规则作为当前违规规则;接着触发判断当前违规规则所对应的检测方式的步骤;
所述对所述脚本代码进行预处理以得到待检测脚本代码,包括:
替换所述脚本代码中的引用变量;
将替换后的脚本代码进行分段以形成多个脚本段落,将多个脚本段落作为待检测脚本;
所述确定所述待检测脚本代码所需要检测的违规规则以及所述违规规则所对应的违规分数,包括:
获取预先设置的所有违规规则;
获取用户从所有违规规则中选择的目标违规规则,将所获取的目标违规规则作为所述待检测脚本代码所需检测的违规规则,并获取所需检测的违规规则所对应的违规分数;或者
获取用户从所有违规规则中选择的违规规则,将未选择的违规规则作为所述待检测脚本代码所需检测的违规规则,并获取所需检测的违规规则所对应的违规分数。
2.根据权利要求1所述的方法,其特征在于,所述若接收到检测指令之后,所述方法还包括:
判断当前接收到检测指令的时间与上一次接收到检测指令的时间间隔是否小于预设时间间隔;
若当前接收到检测指令的时间与上一次接收到检测指令的时间间隔小于预设时间间隔,判断当前待检测脚本代码和所需检测的违规规则与上一次检测的待检测脚本代码和所需检测的违规规则是否相同;
若当前待检测脚本代码和所需检测的违规规则与上一次检测的待检测脚本代码和所需检测的违规规则相同,则发出提醒信息;否则,则执行所述根据所需检测的违规规则,对所述待检测脚本代码进行检测的步骤。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若接收到新增违规规则指令,添加新增违规规则;
设置所述新增违规规则所对应的违规分数;
将所述新增违规规则和设置的违规分数添加至所有违规规则中。
4.一种脚本代码检测装置,其特征在于,所述脚本代码检测装置包括用于执行如权利要求1-3任一项所述方法的单元。
5.一种计算机设备,其特征在于,所述计算机设备包括存储器,以及与所述存储器相连的处理器;
所述存储器用于存储计算机程序;所述处理器用于运行所述存储器中存储的计算机程序,以执行如权利要求1-3任一项所述的方法。
6.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1-3任一项所述的方法。
CN201810965804.3A 2018-08-23 2018-08-23 脚本代码检测方法、装置、计算机设备及存储介质 Active CN109271315B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810965804.3A CN109271315B (zh) 2018-08-23 2018-08-23 脚本代码检测方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810965804.3A CN109271315B (zh) 2018-08-23 2018-08-23 脚本代码检测方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN109271315A CN109271315A (zh) 2019-01-25
CN109271315B true CN109271315B (zh) 2024-05-10

Family

ID=65154105

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810965804.3A Active CN109271315B (zh) 2018-08-23 2018-08-23 脚本代码检测方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN109271315B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110008707A (zh) * 2019-03-22 2019-07-12 杭州优云软件有限公司 一种it系统自动化运维脚本执行的安全保障方法
CN110517010B (zh) * 2019-07-31 2023-07-11 平安科技(深圳)有限公司 一种数据处理方法、系统及存储介质
CN110704298A (zh) * 2019-08-23 2020-01-17 北京奇艺世纪科技有限公司 一种代码验证的方法、装置、终端设备及存储介质
CN115048161A (zh) * 2021-02-26 2022-09-13 华为技术有限公司 应用的控制方法及其电子设备、装置和介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1785848A1 (en) * 2005-10-20 2007-05-16 Hewlett-Packard Development Company, L.P. Method and apparatus for semantic checking of program code
CN104778412A (zh) * 2015-05-05 2015-07-15 中国农业银行股份有限公司 一种脚本检查方法及系统
US9361070B1 (en) * 2012-01-27 2016-06-07 Andrew Nuss Compiling regular expression side-effects to java or C# code
CN105704099A (zh) * 2014-11-26 2016-06-22 国家电网公司 一种检测隐藏在网站脚本中非法链接的方法
CN106845227A (zh) * 2016-12-27 2017-06-13 哈尔滨安天科技股份有限公司 一种基于ragel状态机的恶意脚本检测方法及系统
CN106919612A (zh) * 2015-12-25 2017-07-04 中国移动通信集团浙江有限公司 一种上线结构化查询语言脚本的处理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2702351A1 (en) * 2010-05-14 2010-10-07 Ibm Canada Limited - Ibm Canada Limitee Identifying universal resource locator rewriting rules

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1785848A1 (en) * 2005-10-20 2007-05-16 Hewlett-Packard Development Company, L.P. Method and apparatus for semantic checking of program code
US9361070B1 (en) * 2012-01-27 2016-06-07 Andrew Nuss Compiling regular expression side-effects to java or C# code
CN105704099A (zh) * 2014-11-26 2016-06-22 国家电网公司 一种检测隐藏在网站脚本中非法链接的方法
CN104778412A (zh) * 2015-05-05 2015-07-15 中国农业银行股份有限公司 一种脚本检查方法及系统
CN106919612A (zh) * 2015-12-25 2017-07-04 中国移动通信集团浙江有限公司 一种上线结构化查询语言脚本的处理方法及装置
CN106845227A (zh) * 2016-12-27 2017-06-13 哈尔滨安天科技股份有限公司 一种基于ragel状态机的恶意脚本检测方法及系统

Also Published As

Publication number Publication date
CN109271315A (zh) 2019-01-25

Similar Documents

Publication Publication Date Title
CN109271315B (zh) 脚本代码检测方法、装置、计算机设备及存储介质
CN111290956B (zh) 基于脑图的测试方法、装置、电子设备及存储介质
CN109376069B (zh) 一种测试报告的生成方法及设备
WO2019169760A1 (zh) 测试用例范围确定方法、装置及存储介质
CN110389941B (zh) 数据库校验方法、装置、设备及存储介质
CN107316156B (zh) 一种数据处理方法、装置、服务器及存储介质
CN111273891A (zh) 基于规则引擎的业务决策方法、装置及终端设备
CN109670091A (zh) 一种基于数据标准的元数据智能维护方法和装置
CN110287700B (zh) 一种iOS应用安全分析方法及装置
CN110046086B (zh) 用于测试的期望数据生成方法及装置和电子设备
CN110019762B (zh) 一种问题定位方法、存储介质和服务器
CN112671878A (zh) 一种区块链的信息订阅方法、装置、服务器和存储介质
CN110262870A (zh) 利用dump文件定位异常的方法、装置、计算机设备及存储介质
JP2016057715A (ja) 図形式プログラム解析装置
CN111274143B (zh) 埋点测试方法、装置、设备及存储介质
CN110362498B (zh) 页面热点的测试方法、装置及服务器
CN109840213B (zh) 一种gui测试的测试数据创建方法、装置、终端及存储介质
CN113868137A (zh) 埋点数据的处理方法、装置、系统和服务器
CN112363915A (zh) 用于页面性能测试的方法、装置、终端设备及存储介质
CN112464242A (zh) 一种网页平台漏洞采集方法、系统、终端及存储介质
CN108235324B (zh) 一种短信模板的测试方法及服务器
WO2021104027A1 (zh) 代码性能检测方法、装置、设备及存储介质
CN111258628A (zh) 一种规则文件比对方法、装置、可读存储介质及终端设备
CN110865932A (zh) 一种程序内部接口测试方法、系统、终端及存储介质
US9753798B1 (en) Method and apparatus for electronic design automation

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