CN117493199A - 代码校验方法、装置、计算机设备和存储介质 - Google Patents

代码校验方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN117493199A
CN117493199A CN202311517269.2A CN202311517269A CN117493199A CN 117493199 A CN117493199 A CN 117493199A CN 202311517269 A CN202311517269 A CN 202311517269A CN 117493199 A CN117493199 A CN 117493199A
Authority
CN
China
Prior art keywords
type
verification
script
check
content
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
CN202311517269.2A
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.)
Industrial and Commercial Bank of China Ltd ICBC
ICBC Technology Co Ltd
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
ICBC 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 Industrial and Commercial Bank of China Ltd ICBC, ICBC Technology Co Ltd filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202311517269.2A priority Critical patent/CN117493199A/zh
Publication of CN117493199A publication Critical patent/CN117493199A/zh
Pending legal-status Critical Current

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/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

本申请涉及一种代码校验方法、装置、计算机设备、存储介质和计算机程序产品,涉及自动化校验技术领域。可用于金融科技领域或其他相关领域。所述方法包括:响应于用户的校验请求,获取用户反馈的待提交内容;待提交内容包括第一类型内容和第二类型内容;基于第一类型脚本对第一类型内容进行正则校验,得到第一校验结果;第一类型脚本在至少包括分支名校验规则;基于第二类型脚本和预设校验工具对第二类型内容进行校验,得到第二校验结果;将第一校验结果和第二校验结果输出反馈。采用本方法能够提高代码校验的效率。

Description

代码校验方法、装置、计算机设备和存储介质
技术领域
本申请涉及自动化校验技术领域,特别是涉及一种代码校验方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着软件开发的发展,软件开发的体量越来越大,开发人员的代码提交要求也随之变高,或存在多人协同开发的情况,不同开发人员的代码风格可能不同,因此,在代码提交前需要进行检查。
传统方法中,公司企业内具有代码提交信息和代码风格的说明文档,或者,公司企业内的每个开发任务具有特定的说明文档,该说明文档用于约束代码提交信息和代码风格。在应用过程中,需要公司企业内的员工学习并遵守说明文档的内容,在代码开发的过程中按照说明文档约束的代码风格进行编写,或者按照说明文档对代码提交信息的约束进行代码提交和检查。
然而,传统方法中,按照说明文档,采用人工的方式对代码提交信息的约束进行代码提交和检查,导致代码校验的效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种代码校验方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种代码校验方法,包括:
响应于用户的校验请求,获取用户反馈的待提交内容;所述待提交内容包括第一类型内容和第二类型内容;
基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果;所述第一类型脚本在至少包括分支名校验规则;
基于第二类型脚本和预设校验工具对所述第二类型内容进行校验,得到第二校验结果;
将所述第一校验结果和所述第二校验结果输出反馈。
在其中一个实施例中,所述基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果,包括:
获取第一类型脚本;
在触发所述第一类型内容对应的校验钩子时,获取所述第一类型脚本中的预设正则表达式;
按照所述预设正则表达式对所述第一类型内容进行校验,得到第一校验结果。
在其中一个实施例中,所述方法还包括:
检测是否存在所述第一类型脚本对应的底层依赖,在不存在所述底层依赖的情况下,创建底层依赖并检测是否存在工作流节点;
在存在所述工作流节点的情况下,根据所述工作流节点分别触发第一校验钩子、第二校验钩子,并执行所述基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果的步骤。
在其中一个实施例中,所述响应于用户的校验请求,获取用户反馈的待提交内容之前,所述方法还包括:
响应于用户的配置命令,读取用户上传的工作流节点配置文件;所述工作流节点配置文件包括第一类型脚本和第二类型脚本中的至少一个;所述工作流节点配置文件用于配置工作流节点,构建测试环境。
在其中一个实施例中,所述第二类型内容包括代码格式和样式格式,所述第二类型脚本包括代码格式校验脚本和样式格式校验脚本;所述预设校验工具包括代码格式校验工具和样式格式校验工具。
在其中一个实施例中,所述基于第二类型脚本和预设校验工具对所述第二类型内容进行校验,得到第二校验结果,包括:
获取配置完成的所述代码格式校验脚本和所述样式格式校验脚本;
将所述配置完成的所述代码格式校验脚本添加至所述代码格式校验工具的待校验文件中;
将所述配置完成的所述样式格式校验脚本添加至所述样式格式校验工具的待校验文件中;
根据所述代码格式校验工具和所述样式格式校验工具分别对所述代码格式和所述样式格式进行校验,得到代码格式校验结果和样式格式校验结果,作为第二校验结果。
在其中一个实施例中,所述将所述第一校验结果和所述第二校验结果输出反馈之后,所述方法还包括:
若所述第一校验结果和所述第二校验结果均为验证通过,将所述待提交内容上传至目标服务器;所述目标服务器用于汇总代码。
第二方面,本申请还提供了一种代码校验装置,包括:
获取模块,用于响应于用户的校验请求,获取用户反馈的待提交内容;所述待提交内容包括第一类型内容和第二类型内容;
第一校验模块,用于基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果;所述第一类型脚本在至少包括分支名校验规则;
第二校验模块,用于基于第二类型脚本和预设校验工具对所述第二类型内容进行校验,得到第二校验结果;
输出模块,用于将所述第一校验结果和所述第二校验结果输出反馈。
在其中一个实施例中,第一校验模块具体用于获取第一类型脚本;
在触发所述第一类型内容对应的校验钩子时,获取所述第一类型脚本中的预设正则表达式;
按照所述预设正则表达式对所述第一类型内容进行校验,得到第一校验结果。
在其中一个实施例中,所述装置还包括:
创建模块,用于检测是否存在所述第一类型脚本对应的底层依赖,在不存在所述底层依赖的情况下,创建底层依赖并检测是否存在工作流节点;
触发模块,用于在存在所述工作流节点的情况下,根据所述工作流节点分别触发第一校验钩子、第二校验钩子,并执行所述基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果的步骤。
在其中一个实施例中,所述装置还包括:
读取模块,用于响应于用户的配置命令,读取用户上传的工作流节点配置文件;所述工作流节点配置文件包括第一类型脚本和第二类型脚本中的至少一个;所述工作流节点配置文件用于配置工作流节点,构建测试环境。
在其中一个实施例中,所述第二类型内容包括代码格式和样式格式,所述第二类型脚本包括代码格式校验脚本和样式格式校验脚本;所述预设校验工具包括代码格式校验工具和样式格式校验工具。
在其中一个实施例中,所述第二校验模块具体用于获取配置完成的所述代码格式校验脚本和所述样式格式校验脚本;
将所述配置完成的所述代码格式校验脚本添加至所述代码格式校验工具的待校验文件中;
将所述配置完成的所述样式格式校验脚本添加至所述样式格式校验工具的待校验文件中;
根据所述代码格式校验工具和所述样式格式校验工具分别对所述代码格式和所述样式格式进行校验,得到代码格式校验结果和样式格式校验结果,作为第二校验结果。
在其中一个实施例中,所述装置还包括:
上传模块,用于若所述第一校验结果和所述第二校验结果均为验证通过,将所述待提交内容上传至目标服务器;所述目标服务器用于汇总代码。
第三方面,本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
响应于用户的校验请求,获取用户反馈的待提交内容;所述待提交内容包括第一类型内容和第二类型内容;
基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果;所述第一类型脚本在至少包括分支名校验规则;
基于第二类型脚本和预设校验工具对所述第二类型内容进行校验,得到第二校验结果;
将所述第一校验结果和所述第二校验结果输出反馈。
第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
响应于用户的校验请求,获取用户反馈的待提交内容;所述待提交内容包括第一类型内容和第二类型内容;
基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果;所述第一类型脚本在至少包括分支名校验规则;
基于第二类型脚本和预设校验工具对所述第二类型内容进行校验,得到第二校验结果;
将所述第一校验结果和所述第二校验结果输出反馈。
第五方面,本申请还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
响应于用户的校验请求,获取用户反馈的待提交内容;所述待提交内容包括第一类型内容和第二类型内容;
基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果;所述第一类型脚本在至少包括分支名校验规则;
基于第二类型脚本和预设校验工具对所述第二类型内容进行校验,得到第二校验结果;
将所述第一校验结果和所述第二校验结果输出反馈。
上述代码校验方法、装置、计算机设备、存储介质和计算机程序产品,响应于用户的校验请求,获取用户反馈的待提交内容,通过集成的至少包括分支名校验内容的第一类型脚本自动对第一类型内容进行正则校验,并通过第二校验脚本和预设校验工具对第二类型内容进行校验,分别得到第一校验结果和第二校验结果,可以提高代码校验的效率。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中代码校验方法的流程示意图;
图2为一个实施例中执行第一类型脚本的命令的流程示意图;
图3为一个实施例中检测环境配置的流程示意图;
图4为另一个实施例中执行第二类型脚本的命令的流程示意图;
图5为一个实施例中代码校验工具的系统架构示意图;
图6为一个实施例中代码校验工具的方法流程图;
图7为一个实施例中代码校验装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种代码校验方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
步骤102,响应于用户的校验请求,获取用户反馈的待提交内容。
其中,待提交内容包括第一类型内容和第二类型内容。
本申请实施例中,在用户完成代码撰写后,需要提交已完成代码,以及需要共同提交的已完成代码相关的其他信息,例如,相关的其他信息可以包括提交信息和分支名等,已完成代码、提交信息和分支名构成待提交内容。进而,管理人员可以得到多个用户提交的代码并进行分析处理。本申请实施例中的代码校验方法可以集成于代码校验工具中,该代码校验工具可以安装于用户的终端中,用户提交已完成代码和其他信息之前,根据该代码校验工具对待提交内容进行检测,以确保待提交内容满足预先规定的规则,具体地,代码校验方法可以集成为一个npm(node package management,JavaScript运行时Node.js的默认程序包管理器)安装包,在用户完成该npm的安装后,终端可以运行该代码校验工具,并根据该代码校验工具中内置的命令进行第一类型内容和第二类型内容的校验。
在开发人员完成代码的编写后,将代码上传至该代码校验工具中进行反馈,然后,开发人员作为用户,点击“校验”按钮发送校验请求。
终端响应于用户的校验请求,获取用户上传的待提交内容,待提交内容可以包括代码内容、分支名和提交信息。
步骤104,基于第一类型脚本对第一类型内容进行正则校验,得到第一校验结果。
其中,第一类型脚本在至少包括分支名校验规则。
本申请实施例中,在得到用户上传的待提交内容后,终端可以基于包括分支名校验规则的第一类型脚本对第一类型的内容进行正则校验,其中,第一类型的内容为文字描述性的内容,例如,分支名和提交信息。分支名为针对项目工程不同的版本,以及当前用户所负责的部分的描述性文字;提交信息为针对本次提交代码的信息描述的描述性文字。
由于在团队或者公司的开发要求中,第一类型内容具有严格的命名规则或描述规则,因此,可以使用正则表达式进行强校验,终端根据至少包含分支名校验规则的一类型脚本对至少包含分支名的第一类型内容进行强校验,得到第一类型内容对应的第一校验结果。
步骤106,基于第二类型脚本和预设校验工具对第二类型内容进行校验,得到第二校验结果。
本申请实施例中,第二类型内容可以为代码内容,包括用户以代码语言编写的逻辑语句等代码内容,第二类型脚本可以为调用预设校验工具的执行动作,在预设校验工具内包含预先配置的代码校验规则,例如,强制使用一致的双引号或单引号等。终端通过第二类型脚本调用预设校验工具,通过预设校验工具对第二类型内容进行校验,得到第二校验结果。
步骤108,将第一校验结果和第二校验结果输出反馈。
本申请实施例中,第一校验结果可以为第一类型内容校验通过或第一类型内容存在异常,例如命名格式错误等,第二校验结果可以为预设校验工具针对第二类型内容的校验结果。在得到第一校验结果和预设校验工具反馈的第二校验结果后,终端将该第一校验结果和第二校验结果输出反馈至用户界面,提示用户已完成提交或展示提交失败的原因。
上述代码校验方法中,响应于用户的校验请求,获取用户反馈的待提交内容,通过集成的至少包括分支名校验内容的第一类型脚本自动对第一类型内容进行正则校验,并通过第二校验脚本和预设校验工具对第二类型内容进行校验,分别得到第一校验结果和第二校验结果,可以提高代码校验的效率。
在一个示例性的实施例中,如图2所示,步骤104包括步骤202至步骤206。
其中:
步骤202,获取第一类型脚本。
本申请实施例中,终端根据npm中的fs-extra命令将scripts(脚本)文件中的脚本复制到目标工程中,目标工程为本申请实施例中应用代码校验方法的代码校验工具,实现获取第一类型脚本。
在一个可选的实施例中,第一类型脚本包括校验分支名命令和校验提交信息命令,以及分支名对应的校验规则和提交信息对应的校验规则。
步骤204,在触发第一类型内容对应的校验钩子时,获取第一类型脚本中的预设正则表达式,。
本申请实施例中,代码校验工具中包含默认的用于第一类型内容校验的脚本文件,本申请实施例以git(分布式版本控制系统)下的代码校验为例进行说明,终端在触发git的pre-push钩子时,运行用户预先保存的校验脚本,即第一类型脚本。具体地,终端可以使用husky等第三方工具在各个git生命周期的钩子触发校验钩子,获取第一类型脚本中包含的预设正则表达式。
在一个可选的实施例中,终端在分别触发分支名校验钩子和提交信息校验钩子时,终端获取分支名校验脚本中的预设正则表达式,并在完成针对分支名的校验后,终端获取提交信息校验脚本中的预设正则表达式。
在一个可选的实施例中,在获取第一类型脚本后,终端校验当前用户终端是否安装husky,并检查当前用户终端中是否存在husky配置,在不存在husky的情况下,终端下载husky并在package(底层依赖)中添加该第一类型脚本,并更新package文件。
步骤206,按照预设正则表达式对第一类型内容进行校验,得到第一校验结果。
本申请实施例中,终端按照与现保存的预设正则表达式中的校验规则,对第一类型内容进行校验,其中,预设正则表达式中的校验规则至少包括分支名校验规则,然后,终端根据该分支名校验规则对第一类型内容中的分支名进行校验,得到分支名校验结果,作为第一校验结果。
在一个可选的实施例中,预设正则表达式中还可以包含提交信息校验规则,终端可以基于分支名校验的相同方法对提交信息进行校验。例如,常见的提交信息包括type(类别):build(用于表示修改项目构建系统的提交)、ci(用于表示修改项目继续集成流程的提交,例如Travis,Jenkins等)、docs(用于表示针对文档的更新)、feat(用于表示新增功能)、fix(用于表示修复bug)等。终端可以通过husky配置commit-msg钩子的第一类型脚本,另外,为了提高提交内容的效率,终端可以使用commitizen(一种自动撰写提交内容的工具)生成提交信息,并在package.json中添加scripts脚本,以运行git-cz。
本实施例中,在触发第一类型内容对应的校验钩子时,获取第一类型校验脚本,通过第一类型校验脚本对第一类型内容进行正则校验,可以以统一的标准对第一类型内容进行校验,实现第一类型内容的规范化,并提高代码校验的效率。
在一个示例性的实施例中,如图3所示,该方法还包括步骤302至步骤304。
其中:
步骤302,检测是否存在第一类型脚本对应的底层依赖,在不存在底层依赖的情况下,创建底层依赖并检测是否存在工作流节点。
本申请实施例中,终端在执行第一类型脚本和第二类型脚本之前,可以对第一类型脚本的底层依赖进行检测,即检测是否存在第一类型脚本对应的package.json,在不存在该底层依赖的情况下,执行创建底层依赖的命令,并安装对应的husky。
在存在第一类型脚本对应的底层依赖时,终端检测是否存在husky,在存在husky的情况下,检查hooks(钩子)配置,并更新package;在不存在husky的情况下,执行下载指令进行husky的下载。
步骤304,在存在工作流节点的情况下,根据工作流节点分别触发第一校验钩子、第二校验钩子,并执行基于第一类型脚本对第一类型内容进行正则校验,得到第一校验结果的步骤。
本申请实施例中,工作流节点为git中配置的git-hooks,用于执行预先配置的git动作。在存在工作流节点的情况下,说明终端可以根据预先配置的执行动作触发第一校验钩子和第二校验钩子。在第一校验钩子出发后,运行用户预先保存的第一类型脚本,执行步骤104,对于对第一类型内容进行正则校验得到第一校验结果的具体实施过程,本实施例不再进行赘述。
本实施例中,通过检测第一类型脚本对应的底层依赖是否存在,并在不存在该底层依赖时自动进行该底层依赖的创建,进而在存在工作流节点的情况下执行第一类型脚本的步骤,进而提高代码校验的效率。
在一个示例性的实施例中,步骤102之前,该方法还包括步骤1021。其中:
步骤1021,响应于用户的配置命令,读取用户上传的工作流节点配置文件。
其中,工作流节点配置文件包括第一类型脚本和第二类型脚本中的至少一个。
其中,工作流节点配置文件用于配置工作流节点,构建测试环境。
本申请实施例中,用户可以自定义第一类型脚本和第二类型脚本的校验规则,用户将配置完成的脚本文件上传至代码校验工具中,在用户点击“快速配置”按钮后,终端将配置完成的脚本文件复制到用户目标工程的根目录下,并读取用户上传的工作流节点配置文件。终端按照工作流节点中包含的执行命令,执行步骤104或步骤106中的至少一个,例如,终端根据用户的点击操作,执行“checkbranch命令”进行针对分支名的校验逻辑;或者执行“checkmessage命令”进行提交信息的校验;或者执行“checkcode”进行代码的校验,或者执行“all命令”分别对分支名、提交信息和代码的校验。
本实施例中,通过读取用户上传的工作流节点配置文件,根据用户上传的工作流节点执行校验命令,实现用户自定义校验内容的功能。
在一个示例性的实施例中,第二类型内容包括代码格式和样式格式,第二类型脚本包括代码格式校验脚本和样式格式校验脚本;预设校验工具包括代码格式校验工具和样式格式校验工具。如图4所示,步骤106包括步骤402至步骤408。其中:
步骤402,获取配置完成的代码格式校验脚本和样式格式校验脚本。
本申请实施例中,终端在用户工程的根目录下获取配置完成的代码格式校验脚本和样式格式校验脚本,通过husky与lint-staged(代码规范化工具)执行配置完成的代码格式校验脚本和样式格式校验脚本。
步骤404,将配置完成的代码格式校验脚本添加至代码格式校验工具的校验文件中。
本申请实施例中,终端将配置完成的代码格式校验脚本添加至代码格式校验工具中校验列表中。以保证终端可以通过代码格式校验工具中的校验列表,逐级校验待提交内容中的代码文件,实现对代码格式的校验。其中,代码格式为js文件,代码格式校验工具为eslint。
步骤406,将配置完成的样式格式校验脚本添加至样式格式校验工具的校验文件中。
本申请实施例中,终端将配置完成的样式格式校验脚本添加至样式格式校验工具中的校验文件中,本申请实施例不再赘述。样式格式校验工具可以根据校验列表来校验待提交内容中的样式格式,以确保其符合预先定义的样式格式规则。其中样式格式为css文件,样式格式校验工具为stylelint。
步骤408,根据代码格式校验工具和样式格式校验工具分别对代码格式和样式格式进行校验,得到代码格式校验结果和样式格式校验结果,作为第二校验结果。
本申请实施例中,终端通过代码格式校验工具和样式格式校验工具会对待提交内容中代码部分的代码格式和样式格式进行校验,检测代码格式是否满足用户上传的代码格式校验规则,以及样式格式是否满足用户上传的样式格式校验规则。通过代码格式校验工具和样式格式校验工具分别生成代码格式校验结果和样式格式校验结果,包括指出不符合规范的位置和详细信息,作为第二校验结果。该第二校验结果用于进一步的处理或显示给开发团队以便修正代码格式和样式格式的违规情况。
本实施例中,通过代码格式校验脚本和样式格式校验脚本,以及集成的代码格式校验工具和样式格式校验工具分别对代码格式和样式格式进行校验,可以规范化代码管理的工具,降低用户代码检测的时间成本,提高代码检测的效率。
在一个示例性的实施例中,步骤108之后,还包括,:
若第一校验结果和第二校验结果均为验证通过,将待提交内容上传至目标服务器。
其中,目标服务器用于汇总代码。
本申请实施例中,在待提交内容中的分支名、提交信息、代码格式以及样式格式均满足用户预设的检验规则的情况下,终端自动将待提交内容上传至目标服务器,进而完成对分支名部分、提交信息部分和代码部分的提交。
在一个可选的实施例中,代码校验工具还包括一键集成功能。在用户安装该工具后,用户可以单独执行第一类型脚本,或者单独执行第二类型脚本,除了上述执行方法外,用户还可以根据一键集成功能,当工作项进行时,在该工作项结尾根据预先设置的流程顺序一次执行所有的针对分支名、提交信息、代码格式以及样式格式的校验,在校验流程中使用正则强校验工作项的各部分内容是否满足预设检验规则,不需要人为的约束,还可以节约后续管理人员(架构师)的等待时间,提高工作效率。
本实施例中,通过在满足检验规则的情况下将待提交内容提交至目标服务器,可以提高用户在代码提交的整个流程的效率。
在一个具体的实施例中,如图5所示,图5为代码校验工具的系统架构图,该代码校验工具集成了代码校验方法。该代码校验工具包括用户侧的安装方法和执行命令。工程结构包括:bin目录、dist目录、lib目录、scripts和项目配置,bin目录下为该代码校验工具的主要源码文件,包括入口文件,通过commander实现各种命令,其中,bin目录下的主要命令脚本包括快速配置命令、分支名检查命令、提交信息检查命令和提交代码检查命令。
快速命令配置使用inquirer实现选择的命令列表,并实现用户选择快速执行任一命令,或者全部执行;分支名检查命令、提交信息检查命令和提交代码检查命令分别使用fs-extra实现将scripts目录下的脚本,复制到目标工程中,实现规则的统一与支持自定义。
lib目录下是一些用到的公共方法,实现一些工具类,其作用是在在命令脚本中使用。
在一个具体的实施例中,如图6所示,图6为代码校验工具的方法流程图。包括快速配置方法、校验分支名、校验提交信息和校验代码内容,其中,快速配置命方法用于供用户选择所要执行的校验命令。
在终端执行校验分支名方法时,终端会校验当前目录下是否存在底层依赖,即校验package.json文件。然后,终端获取第一类型脚本的脚本文件地址,复制该脚本文件,检查是否存在husky,在存在husky的情况下配置husky脚本,获取最新配置文件并更新package;在不存在husky的情况下下载husky,获取最新配置文件并更新package。
在终端执行校验提交信息方法时,终端会校验当前目录下是否存在底层依赖,即校验package.json文件。然后,终端获取第一类型脚本的脚本文件地址,复制该脚本文件,安装git-cz并检查是否存在husky,在存在husky的情况下配置husky脚本,获取最新配置文件并更新package;在不存在husky的情况下下载husky,获取最新配置文件并更新package。
在终端执行校验代码内容方法时,终端会检查是否存在底层依赖package.json,在不存在底层依赖的情况下自动创建底层依赖,并安装相关包(package),例如husky、lint-staged等,创建并写入.eslintrc和.satylelintrc文件,最终更新package文件,以保证校验代码内容方法的可用性。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的代码校验方法的代码校验装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个代码校验装置实施例中的具体限定可以参见上文中对于代码校验方法的限定,在此不再赘述。
在一个示例性的实施例中,如图7所示,提供了一种代码校验装置700,包括:获取模块701、第一校验模块702、第二校验模块703和输出模块704,其中:
获取模块701,用于响应于用户的校验请求,获取用户反馈的待提交内容;待提交内容包括第一类型内容和第二类型内容;
第一校验模块702,用于基于第一类型脚本对第一类型内容进行正则校验,得到第一校验结果;第一类型脚本在至少包括分支名校验规则;
第二校验模块703,用于基于第二类型脚本和预设校验工具对第二类型内容进行校验,得到第二校验结果;
输出模块704,用于将第一校验结果和第二校验结果输出反馈。
在其中一个实施例中,第一校验模块702具体用于获取第一类型脚本;
在触发第一类型内容对应的校验钩子时,获取第一类型脚本中的预设正则表达式;
按照预设正则表达式对第一类型内容进行校验,得到第一校验结果。
在其中一个实施例中,该装置700还包括:
创建模块,用于检测是否存在第一类型脚本对应的底层依赖,在不存在底层依赖的情况下,创建底层依赖并检测是否存在工作流节点;
触发模块,用于在存在工作流节点的情况下,根据工作流节点分别触发第一校验钩子、第二校验钩子,并执行基于第一类型脚本对第一类型内容进行正则校验,得到第一校验结果的步骤。
在其中一个实施例中,该装置700还包括:
读取模块,用于响应于用户的配置命令,读取用户上传的工作流节点配置文件;工作流节点配置文件包括第一类型脚本和第二类型脚本中的至少一个;工作流节点配置文件用于配置工作流节点,构建测试环境。
在其中一个实施例中,第二类型内容包括代码格式和样式格式,第二类型脚本包括代码格式校验脚本和样式格式校验脚本;预设校验工具包括代码格式校验工具和样式格式校验工具。
在其中一个实施例中,第二校验模块703具体用于获取配置完成的代码格式校验脚本和样式格式校验脚本;
将配置完成的代码格式校验脚本添加至代码格式校验工具的待校验文件中;
将配置完成的样式格式校验脚本添加至样式格式校验工具的待校验文件中;
根据代码格式校验工具和样式格式校验工具分别对代码格式和样式格式进行校验,得到代码格式校验结果和样式格式校验结果,作为第二校验结果。
在其中一个实施例中,该装置700还包括:
上传模块,用于若第一校验结果和第二校验结果均为验证通过,将待提交内容上传至目标服务器;目标服务器用于汇总代码。
上述代码校验装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个示例性的实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储脚本数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码校验方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个示例性的实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
响应于用户的校验请求,获取用户反馈的待提交内容;待提交内容包括第一类型内容和第二类型内容;
基于第一类型脚本对第一类型内容进行正则校验,得到第一校验结果;第一类型脚本在至少包括分支名校验规则;
基于第二类型脚本和预设校验工具对第二类型内容进行校验,得到第二校验结果;
将第一校验结果和第二校验结果输出反馈。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取第一类型脚本;
在触发第一类型内容对应的校验钩子时,获取第一类型脚本中的预设正则表达式;
按照预设正则表达式对第一类型内容进行校验,得到第一校验结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
检测是否存在第一类型脚本对应的底层依赖,在不存在底层依赖的情况下,创建底层依赖并检测是否存在工作流节点;
在存在工作流节点的情况下,根据工作流节点分别触发第一校验钩子、第二校验钩子,并执行基于第一类型脚本对第一类型内容进行正则校验,得到第一校验结果的步骤。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
响应于用户的配置命令,读取用户上传的工作流节点配置文件;工作流节点配置文件包括第一类型脚本和第二类型脚本中的至少一个;工作流节点配置文件用于配置工作流节点,构建测试环境。
在一个实施例中,第二类型内容包括代码格式和样式格式,第二类型脚本包括代码格式校验脚本和样式格式校验脚本;预设校验工具包括代码格式校验工具和样式格式校验工具。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取配置完成的代码格式校验脚本和样式格式校验脚本;
将配置完成的代码格式校验脚本添加至代码格式校验工具的待校验文件中;
将配置完成的样式格式校验脚本添加至样式格式校验工具的待校验文件中;
根据代码格式校验工具和样式格式校验工具分别对代码格式和样式格式进行校验,得到代码格式校验结果和样式格式校验结果,作为第二校验结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若第一校验结果和第二校验结果均为验证通过,将待提交内容上传至目标服务器;目标服务器用于汇总代码。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要符合相关规定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (11)

1.一种代码校验方法,其特征在于,所述方法包括:
响应于用户的校验请求,获取用户反馈的待提交内容;所述待提交内容包括第一类型内容和第二类型内容;
基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果;所述第一类型脚本在至少包括分支名校验规则;
基于第二类型脚本和预设校验工具对所述第二类型内容进行校验,得到第二校验结果;
将所述第一校验结果和所述第二校验结果输出反馈。
2.根据权利要求1所述的方法,其特征在于,所述基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果,包括:
获取第一类型脚本;
在触发所述第一类型内容对应的校验钩子时,获取所述第一类型脚本中的预设正则表达式;
按照所述预设正则表达式对所述第一类型内容进行校验,得到第一校验结果。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测是否存在所述第一类型脚本对应的底层依赖,在不存在所述底层依赖的情况下,创建底层依赖并检测是否存在工作流节点;
在存在所述工作流节点的情况下,根据所述工作流节点分别触发第一校验钩子、第二校验钩子,并执行所述基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果的步骤。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述响应于用户的校验请求,获取用户反馈的待提交内容之前,所述方法还包括:
响应于用户的配置命令,读取用户上传的工作流节点配置文件;所述工作流节点配置文件包括第一类型脚本和第二类型脚本中的至少一个;所述工作流节点配置文件用于配置工作流节点,构建测试环境。
5.根据权利要求1所述的方法,其特征在于,所述第二类型内容包括代码格式和样式格式,所述第二类型脚本包括代码格式校验脚本和样式格式校验脚本;所述预设校验工具包括代码格式校验工具和样式格式校验工具。
6.根据权利要求5所述的方法,其特征在于,所述基于第二类型脚本和预设校验工具对所述第二类型内容进行校验,得到第二校验结果,包括:
获取配置完成的所述代码格式校验脚本和所述样式格式校验脚本;
将所述配置完成的所述代码格式校验脚本添加至所述代码格式校验工具的待校验文件中;
将所述配置完成的所述样式格式校验脚本添加至所述样式格式校验工具的待校验文件中;
根据所述代码格式校验工具和所述样式格式校验工具分别对所述代码格式和所述样式格式进行校验,得到代码格式校验结果和样式格式校验结果,作为第二校验结果。
7.根据权利要求1所述的方法,其特征在于,所述将所述第一校验结果和所述第二校验结果输出反馈之后,所述方法还包括:
若所述第一校验结果和所述第二校验结果均为验证通过,将所述待提交内容上传至目标服务器;所述目标服务器用于汇总代码。
8.一种代码校验装置,其特征在于,所述装置包括:
获取模块,用于响应于用户的校验请求,获取用户反馈的待提交内容;所述待提交内容包括第一类型内容和第二类型内容;
第一校验模块,用于基于第一类型脚本对所述第一类型内容进行正则校验,得到第一校验结果;所述第一类型脚本在至少包括分支名校验规则;
第二校验模块,用于基于第二类型脚本和预设校验工具对所述第二类型内容进行校验,得到第二校验结果;
输出模块,用于将所述第一校验结果和所述第二校验结果输出反馈。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
11.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202311517269.2A 2023-11-14 2023-11-14 代码校验方法、装置、计算机设备和存储介质 Pending CN117493199A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311517269.2A CN117493199A (zh) 2023-11-14 2023-11-14 代码校验方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311517269.2A CN117493199A (zh) 2023-11-14 2023-11-14 代码校验方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN117493199A true CN117493199A (zh) 2024-02-02

Family

ID=89684608

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311517269.2A Pending CN117493199A (zh) 2023-11-14 2023-11-14 代码校验方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN117493199A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117786666A (zh) * 2024-02-26 2024-03-29 九音科技(南京)有限公司 功能代码的启动校验方法、装置、电子设备及存储介质
CN117786666B (zh) * 2024-02-26 2024-05-31 九音科技(南京)有限公司 功能代码的启动校验方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117786666A (zh) * 2024-02-26 2024-03-29 九音科技(南京)有限公司 功能代码的启动校验方法、装置、电子设备及存储介质
CN117786666B (zh) * 2024-02-26 2024-05-31 九音科技(南京)有限公司 功能代码的启动校验方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US10565095B2 (en) Hybrid testing automation engine
US10572249B2 (en) Software kit release management
US10868675B2 (en) Automated management of endpoints
US10146672B2 (en) Method and system for automated user interface (UI) testing through model driven techniques
US8381176B1 (en) Software build orchestration framework
US20180210719A1 (en) Mechanisms for Declarative Expression Of Data Types For Data Storage
US10642863B2 (en) Management of structured, non-structured, and semi-structured data in a multi-tenant environment
US9384020B2 (en) Domain scripting language framework for service and system integration
García-Domínguez et al. EUnit: a unit testing framework for model management tasks
US20150350806A1 (en) High-Speed Application for Installation on Mobile Devices for Permitting Remote Configuration of Such Mobile Devices
US20140208169A1 (en) Domain scripting language framework for service and system integration
US20080276221A1 (en) Method and apparatus for relations planning and validation
US20200183683A1 (en) Application architecture generation
US8661414B2 (en) Method and system for testing an order management system
CN114138748A (zh) 数据库映射文件生成方法、装置、设备及存储介质
US11086696B2 (en) Parallel cloned workflow execution
CN114443039A (zh) 输入参数校验方法、装置、电子设备及存储介质
US11977473B2 (en) Providing a pseudo language for manipulating complex variables of an orchestration flow
CN116599881A (zh) 云平台租户建模测试的方法、装置、设备及存储介质
US11366658B1 (en) Seamless lifecycle stability for extensible software features
CN117493199A (zh) 代码校验方法、装置、计算机设备和存储介质
BR102014030880A2 (pt) método para realização de testes automatizados
US20240160558A1 (en) Automatic testing of interrelated components of a software application
US20240176796A1 (en) Bypassing database automations
Portwood II Mastering Yii

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