一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

代码校验方法、装置及服务器与流程

2023-02-06 22:14:59 来源:中国专利 TAG:


1.本发明涉及代码风格自动化调整的技术领域,尤其是涉及一种代码校验方法、装置及服务器。


背景技术:

2.不同程序开发人员的代码风格不同,当多人协同开发项目时,不同的代码开发风格会导致程序开发的错误率提升。目前,相关技术提出的开发模式不能在代码提交前自动校验格式,缺少编码风格规则约束,并且,在代码提交之前,对暂存区的文件的脚本和样式文件缺少校验操作和对相关提交信息的约束,从而导致后期问题排查的难度提升。


技术实现要素:

3.有鉴于此,本发明的目的在于提供一种代码校验方法、装置及服务器,利用目标校验规则对代码进行校验调整,提升代码风格的一致性,可以有效减少程序开发错误。
4.第一方面,本发明实施例提供了一种代码校验方法,方法应用于校验平台,方法包括:获取待校验代码和代码配置目标;根据代码配置目标对应的需求配置文件,生成目标校验规则,其中,目标校验规则包括代码格式调整规则;利用目标校验规则对待校验代码执行校验操作。
5.在一种实施方式中,根据代码配置目标对应的需求配置文件,生成目标校验规则的步骤,包括:获取与代码配置目标对应的工程化工具包;根据工程化工具包的类型信息,在校验项目根目录的背包文件中添加赋能配置文件,并利用赋能配置文件调用工程化工具包内的工具;在校验项目根目录中添加需求配置文件,利用需求配置文件调用工具,对基础校验规则进行修改,生成目标校验规则。
6.在一种实施方式中,获取与代码配置目标对应的工程化工具包的步骤,包括:根据代码配置目标获取开源管理工具;利用开源管理工具配置代码配置目标对应的工程化工具包。
7.在一种实施方式中,利用目标校验规则对待校验代码执行校验操作的步骤,包括:对待校验代码进行标记;将标记后的待校验代码存储至暂存数据库,并利用目标校验规则对暂存数据库中的待校验代码执行校验操作。
8.在一种实施方式中,利用目标校验规则对暂存数据库中的待校验代码执行校验操作的步骤,包括:当待校验代码符合目标校验规则时,将待校验代码存储至目标数据库中;当待校验代码不符合目标校验规则时,对待校验代码进行修复。
9.在一种实施方式中,当待校验代码不符合目标校验规则时,对待校验代码进行修复的步骤,包括:当待校验代码不符合目标校验规则时,根据待校验代码缺陷,在规范配置文件集合中选取目标规范配置文件;将目标规范配置文件发送至待校验代码对应的校验项目根目录中,确定代码修复规则;利用代码修复规则和辅助脚本对待校验代码进行修复。
10.在一种实施方式中,利用代码修复规则和辅助脚本对待校验代码进行修复的步
骤,包括:获取工程化辅助脚本和格式化辅助脚本;将工程化辅助脚本和格式化辅助脚本发送至待校验代码对应的校验项目根目录中;利用工程化辅助脚本、格式化辅助脚本和代码修复规则对待校验代码进行修复。
11.第二方面,本发明实施例还提供一种代码校验装置,装置应用于校验平台,装置包括:需求获取模块,获取待校验代码和代码配置目标;工具配置模块,根据代码配置目标对应的需求配置文件,生成目标校验规则,其中,目标校验规则包括代码格式调整规则;代码校验模块,利用目标校验规则对待校验代码执行校验操作。
12.第三方面,本发明实施例还提供一种服务器,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现第一方面提供的任一项的方法。
13.第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现第一方面提供的任一项的方法。
14.本发明实施例带来了以下有益效果:
15.本发明实施例提供的一种代码校验方法、装置及服务器,获取待校验代码和代码配置目标,并根据代码配置目标对应的需求配置文件,生成目标校验规则,其中,目标校验规则包括代码格式调整规则,利用目标校验规则对待校验代码执行校验操作,本发明实施例利用目标校验规则对代码进行校验调整,提升代码风格的一致性,可以有效减少程序开发错误。
16.本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
17.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
18.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本发明实施例提供的一种代码校验方法的流程示意图;
20.图2为本发明实施例提供的另一种代码校验方法的流程示意图;
21.图3为本发明实施例提供的一种代码校验装置的结构示意图;
22.图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
23.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前
提下所获得的所有其他实施例,都属于本发明保护的范围。
24.不同程序开发人员的代码风格不同,当多人协同开发项目时,不同的代码开发风格会导致程序开发的错误率提升,目前,现有项目在代码提交之前,没有进行代码规则检查能够确保进入git库的代码都是符合代码规则的,该形式的开发模式中,javascript相关文件规范依赖插件保提示或者格式,不能在提交前自动校验格式;styl样式文件缺少编码风格规则约束,社区相关插件比较少;并且,在代码提交之前,对暂存区的文件的脚本和样式文件缺少校验与格式操作且对相关提交信息缺少约束,不利于后期排查问题,因此,当前开发对脚本、样式、提交信息的风格缺少自动化校验流程,代码风格不统一,对后期的维护迭代不利,基于此,本发明实施例在项目里引入husky、commitlint、lint-staged及stylelint工程化工具进行代码风格约束,从而减少bug,确定提交到仓库的代码符合约定的语法规范并且对不符合规范的代码进行自动fix操作,本发明基于node项目工程化的前端代码格式化的工具,利用工具生成目标校验规则,并通过目标校验规则对代码进行校验调整,提升代码风格的一致性,可以有效减少程序开发错误。
25.基于图1所示的一种代码校验方法的流程示意图,该方法主要包括以下步骤s102至步骤s106:
26.步骤s102,获取待校验代码和代码配置目标,其中,待校验代码携带有配置文件,即钩子husky,在一种实施方式中,通过获取代码的钩子建立对应的工具吧,将工具包安装在根目录下,从而可以使用工具包。
27.步骤s104,根据代码配置目标对应的需求配置文件,生成目标校验规则,其中,目标校验规则包括代码格式调整规则,需求配置文件可以为commitlint,在一种实施方式中,可以在项目根目录新建commitlint.config.js定制提交规范,利用git commit-m提交格式《type》:《subject》,其中,type包括:更新功能、新功能、修补bug、重构、增加测试和构建过程或辅助工具的变动等,并利用subject对commit目的进行简短描述,从而对代码进行配置,包括:增加功能、修复功能等,从而生成目标配置规则。
28.步骤s106,利用目标校验规则对待校验代码执行校验操作,其中,待校验代码会存放至暂存区,在一种实施方式中,目标校验规则仅对暂存区的待校验代码执行校验操作。
29.本发明实施例提供的上述代码校验方法,利用目标校验规则对代码进行校验调整,提升代码风格的一致性,可以有效减少程序开发错误。
30.本发明实施例还提供了一种生成目标校验规则的实施方式,具体的参见如下(1)至(3):
31.(1)获取与代码配置目标对应的工程化工具包。其中,利用代码携带的钩子确定工具包,工具包为commitlint工具,commitlint工具为代码的提交规范和规范的校验,解决团队协作和快速定位问题的首选工具。在一种实施方式中,根据代码配置目标获取开源管理工具,利用开源管理工具配置代码配置目标对应的工程化工具包。
32.(2)根据工程化工具包的类型信息,在校验项目根目录的背包文件中添加赋能配置文件,并利用赋能配置文件调用工程化工具包内的工具,在一种实施方式中,可以借助yarn或者npm包管理工具安装husky、commitlint、@commitlint/config-conventional、lint-staged、stylus-converter、stylelint、eslint工具包(具体执行命令按照如下版本安装),从而完成关键开发依赖的安装,其中,husky 7.x.x版本后需要添加配置文件才生
效,在项目根目录下package.json的scripts添加"addhusky":"npx husky add.husky/pre-commit'npm test'"执行后生成husky配置文件commit-msg和pre-commit文件,在husky文件夹下确定生成的pre-commit文件,添加npx lint-staged,并在husky文件夹下确定生成的commit-msg文件。
33.(3)在校验项目根目录中添加需求配置文件,利用需求配置文件调用工具,对基础校验规则进行修改,生成目标校验规则,在一种实施方式中,可以在项目根目录新建commitlint.config.js定制提交规范,利用git commit-m提交格式《type》:《subject》,其中,type包括:更新功能、新功能、修补bug、重构、增加测试和构建过程或辅助工具的变动等,并利用subject对commit目的进行简短描述,从而对代码进行配置(诸如,增加功能、修复功能),从而生成目标配置规则。
34.对于前述步骤s106,本发明实施例还提供了一种对待校验代码执行校验操作的实施方式,具体的参见如下(a)至(c):
35.(a)对待校验代码进行标记,将标记后的待校验代码存储至暂存数据库,并利用目标校验规则对暂存数据库中的待校验代码执行校验操作,其中,暂存区为git代码暂存区,通过过滤工具lint-staged可以将将待校验代码存放至代码暂存区,前端文件过滤的工具lint-staged,对于较大型的项目,文件众多,首先遇到的就是性能问题,例如,eslint也有文件过滤配置,但对于匹配文件的全量遍历(诸如,如全量的js文件)达不到性能要求,同时可能误格式化其他代码开发人员的代码,因此引入lint-staged,利用lint-staged仅过滤出git代码暂存区文件(被committed的文件),在一种实施方式中,当待校验代码符合目标校验规则时,将待校验代码存储至目标数据库中,当待校验代码不符合目标校验规则时,对待校验代码进行修复,在另一种实施方式中,根目录新增lint-staged.config.js文件过滤配置文件(一个仅仅过滤git代码暂存区文件,被git add的文件),lint-staged不能进行格式化,因此,当没有代码规则配置文件时,需要通过eslintrc、.stylelintrc等进行配置。当文件变化时,通过git commit文件,启动pre-commit的钩子,从而执行lint-staged命令,利用lint-staged对被commited中的所有.js、.jsx文件执行eslint
‑‑
fix命令,并对所有.less、.scss文件执行stylelint
‑‑
fix命令进行格式化。
36.(b)当待校验代码不符合目标校验规则时,根据待校验代码缺陷,在规范配置文件集合中选取目标规范配置文件;将目标规范配置文件发送至待校验代码对应的校验项目根目录中,确定代码修复规则,其中,针对存在缺陷的待校验代码可以进行格式转换对不符合规则的文件进行修复,也可以针对样式文件进行规范,进行检测和自动修复,格式转换过程包括:stylus-converter工具包,把现有styl后缀的文件转换成less文件,stylelint为一个强大的、现代化的css检测工具,与eslint类似,可以通过定义一系列的编码风格规则,从而避免代码在样式表中出现错误,在一种实施方式中,可以利用安装好的stylus-converter工具包把.styl文件转换成less文件。
37.(c)利用代码修复规则和辅助脚本对待校验代码进行修复,在一种实施方式中,获取工程化辅助脚本和格式化辅助脚本,将工程化辅助脚本和格式化辅助脚本发送至待校验代码对应的校验项目根目录中,利用工程化辅助脚本、格式化辅助脚本和代码修复规则对待校验代码进行修复,其中,校验及修复过程包括:利用stylelint和eslint进行样式和js语法校验和修复,eslint是在ecmascript/javascript代码中识别和报告模式匹配的工具,
它的目标是保证代码的一致性和避免错误,在一种实施方式中,可以在根目录中新增stylelint.config.js样式规范配置文件,并在根目录中新增.eslintrc.js对javascript规范配置文件,在项目的package.json文件中新增scripts工程化和格式化辅助脚本,stylelint检查所以.less后缀名的文件是否符合stlyelint规范;eslint检查所以.js或者jsx后缀名的文件是否符合eslint规范;stylelintfix自动修复stylelint配置文件约定的规范,从而得到校正后的代码。
38.为便于对上述实施例提供的代码校验方法进行理解,本发明实施例提供了一种代码校验方法的应用示例,参见图2所示的另一种代码校验方法的流程示意图,该方法主要包括以下步骤s202至步骤s214:
39.步骤s202,利用待校验代码提交的配置文件调用工具包。其中,配置文件为钩子husky,代码提交钩子husky,在代码被提交到git仓库之前,进行预检查或格式化,即,使用git命令会触发的函数。
40.在一种实施方式中,可以借助yarn或者npm包管理工具安装husky、commitlint、@commitlint/config-conventional、lint-staged、stylus-converter、stylelint、eslint工具包(具体执行命令按照如下版本安装),从而完成关键开发依赖的安装。
41.在一种实施方式中,生成husky配置文件,其中,husky 7.x.x版本后需要添加配置文件才生效,在项目根目录下package.json的scripts添加"addhusky":"npx husky add.husky/pre-commit'npm test'"执行后生成husky配置文件commit-msg和pre-commit文件,在husky文件夹下确定生成的pre-commit文件,添加npx lint-staged,并在husky文件夹下确定生成的commit-msg文件。
42.步骤s204,通过工具包进行规则配置,生成目标校验规则。其中,工具包为commitlint工具,commitlint工具为代码的提交规范和规范的校验,解决团队协作和快速定位问题的首选工具。
43.在一种实施方式中,可以在项目根目录新建commitlint.config.js定制提交规范,利用git commit-m提交格式《type》:《subject》,其中,type包括:更新功能、新功能、修补bug、重构、增加测试和构建过程或辅助工具的变动等,并利用subject对commit目的进行简短描述,从而对代码进行配置(诸如,增加功能、修复功能)。
44.步骤s206,将待校验代码存放至代码暂存区,并对暂存区的代码进行校验。其中,暂存区为git代码暂存区,通过过滤工具lint-staged可以将将待校验代码存放至代码暂存区,前端文件过滤的工具lint-staged,对于较大型的项目,文件众多,首先遇到的就是性能问题,例如,eslint也有文件过滤配置,但对于匹配文件的全量遍历(诸如,如全量的js文件)达不到性能要求,同时可能误格式化其他代码开发人员的代码,因此引入lint-staged,利用lint-staged仅过滤出git代码暂存区文件(被committed的文件)。
45.在一种实施方式中,根目录新增lint-staged.config.js文件过滤配置文件(一个仅仅过滤git代码暂存区文件,被git add的文件),lint-staged不能进行格式化,因此,当没有代码规则配置文件时,需要通过eslintrc、.stylelintrc等进行配置。当文件变化时,通过git commit文件,启动pre-commit的钩子,从而执行lint-staged命令,利用lint-staged对被commited中的所有.js、.jsx文件执行eslint
‑‑
fix命令,并对所有.less、.scss文件执行stylelint
‑‑
fix命令进行格式化。
46.步骤s208,对暂存区内不符合目标校验规则的代码进行格式转换。其中,格式转换过程包括:stylus-converter工具包,把现有styl后缀的文件转换成less文件,stylelint为一个强大的、现代化的css检测工具,与eslint类似,可以通过定义一系列的编码风格规则,从而避免代码在样式表中出现错误。
47.在一种实施方式中,可以利用安装好的stylus-converter工具包把.styl文件转换成less文件。
48.步骤s210,对代码的样式和语法进行校验及修复。其中,校验及修复过程包括:利用stylelint和eslint进行样式和js语法校验和修复,eslint是在ecmascript/javascript代码中识别和报告模式匹配的工具,它的目标是保证代码的一致性和避免错误。
49.在一种实施方式中,可以在根目录中新增stylelint.config.js样式规范配置文件,并在根目录中新增.eslintrc.js对javascript规范配置文件,在项目的package.json文件中新增scripts工程化和格式化辅助脚本,stylelint检查所以.less后缀名的文件是否符合stlyelint规范;eslint检查所以.js或者jsx后缀名的文件是否符合eslint规范;stylelintfix自动修复stylelint配置文件约定的规范,从而得到校正后的代码。
50.综上所述,本发明可以通过钩子(husky)在代码被提交到git仓库之前,进行预检查或格式化,通过提交commitlint工具,提交规范和规范的校验,(诸如,feat:新功能(feature)、fix:修补bug、style:样式修改),方便问题跟踪,利用前端文件过滤的工具lint-staged过滤出git代码暂存区文件(被committed的文件)的工具,从而避免全量遍历和格式其他人代码,利用检测工具stylelint和eslint检查、并自动修复css和js错误代码,从而有效减少程序开发错误。
51.对于前述实施例提供的代码校验方法,本发明实施例提供了一种代码校验装置,该装置应用于校验平台,参见图3所示的一种代码校验装置的结构示意图,该装置包括以下部分:
52.需求获取模块302,获取待校验代码和代码配置目标;
53.工具配置模块304,根据代码配置目标对应的需求配置文件,生成目标校验规则,其中,目标校验规则包括代码格式调整规则;
54.代码校验模块306,利用目标校验规则对待校验代码执行校验操作。
55.本技术实施例提供的上述代码校验装置,利用目标校验规则对代码进行校验调整,提升代码风格的一致性,可以有效减少程序开发错误。
56.一种实施方式中,在进行根据代码配置目标对应的需求配置文件,生成目标校验规则的步骤时,上述工具配置模块304还用于:获取与代码配置目标对应的工程化工具包;根据工程化工具包的类型信息,在校验项目根目录的背包文件中添加赋能配置文件,并利用赋能配置文件调用工程化工具包内的工具;在校验项目根目录中添加需求配置文件,利用需求配置文件调用工具,对基础校验规则进行修改,生成目标校验规则。
57.一种实施方式中,在进行获取与代码配置目标对应的工程化工具包的步骤时,上述工具配置模块304还用于:根据代码配置目标获取开源管理工具;利用开源管理工具配置代码配置目标对应的工程化工具包。
58.一种实施方式中,在进行利用目标校验规则对待校验代码执行校验操作的步骤时,上述代码校验模块306还用于:对待校验代码进行标记;将标记后的待校验代码存储至
暂存数据库,并利用目标校验规则对暂存数据库中的待校验代码执行校验操作。
59.一种实施方式中,在进行利用目标校验规则对暂存数据库中的待校验代码执行校验操作的步骤时,上述代码校验模块306还用于:当待校验代码符合目标校验规则时,将待校验代码存储至目标数据库中;当待校验代码不符合目标校验规则时,对待校验代码进行修复。
60.一种实施方式中,在进行当待校验代码不符合目标校验规则时,对待校验代码进行修复的步骤时,上述代码校验模块306还用于:当待校验代码不符合目标校验规则时,根据待校验代码缺陷,在规范配置文件集合中选取目标规范配置文件;将目标规范配置文件发送至待校验代码对应的校验项目根目录中,确定代码修复规则;利用代码修复规则和辅助脚本对待校验代码进行修复。
61.一种实施方式中,在进行利用代码修复规则和辅助脚本对待校验代码进行修复的步骤时,上述代码校验模块306还用于:获取工程化辅助脚本和格式化辅助脚本;将工程化辅助脚本和格式化辅助脚本发送至待校验代码对应的校验项目根目录中;利用工程化辅助脚本、格式化辅助脚本和代码修复规则对待校验代码进行修复。
62.本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
63.本发明实施例提供了一种电子设备,具体的,该电子设备包括处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被所述处理器运行时执行如上所述实施方式的任一项所述的方法。
64.图4为本发明实施例提供的一种电子设备的结构示意图,该电子设备100包括:处理器40,存储器41,总线42和通信接口43,所述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。
65.其中,存储器41可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
66.总线42可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
67.其中,存储器41用于存储程序,所述处理器40在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。
68.处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现成可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中
的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。
69.本发明实施例所提供的可读存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见前述方法实施例,在此不再赘述。
70.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
71.最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献