掌桥专利:专业的专利平台
掌桥专利
首页

代码格式的标准化方法、装置、电子设备和存储介质

文献发布时间:2023-06-19 19:27:02


代码格式的标准化方法、装置、电子设备和存储介质

技术领域

本申请涉及计算机技术领域,尤其涉及一种代码格式的标准化方法、装置、电子设备和存储介质。

背景技术

目前,代码规范工程化是一个始终绕不过去的话题,相关技术中,由于同一个项目是由多人协同开发,但每个人代码风格不尽相同,故写出的代码没有一个完整的规范,导致可读性较差,也不易于扩展和长期维护,因此亟需一套代码格式的标准工程化方案。

发明内容

本申请第一方面实施例提出了一种代码格式的标准化方法,读取原始代码文件;根据读取的原始代码文件生成抽象语法树;根据目标配置文件中记录的标准化规则,遍历所述抽象语法树中各节点,以在遍历到的节点内的语句与所述标准化规则匹配时,根据所述标准化规则对所述遍历到的节点进行语句修改;根据修改后的所述抽象语法树,生成标准化后的目标代码文件。

本申请的一个实施例中,所述根据目标配置文件中记录的标准化规则,遍历所述抽象语法树中各节点,包括:根据格式标准化日志,查询所述原始代码文件是否进行过格式标准化;若进行过格式标准化,则查询所述原始代码文件的修改记录;根据所述修改记录确定所述原始代码文件存在修改的情况下,调用目标插件中的格式标准化方法,执行根据所述目标配置文件中记录的标准化规则,遍历所述抽象语法树中各节点的步骤;若未进行过格式标准化,则调用所述目标插件中的格式标准化方法,执行根据所述目标配置文件中记录的标准化规则,遍历所述抽象语法树中各节点的步骤。

本申请的一个实施例中,所述若进行过格式标准化,则查询所述原始代码文件的修改记录之后,还包括:根据所述修改记录确定所述原始代码文件不存在修改的情况下,则确定无需执行格式标准化。

本申请的一个实施例中,所述根据修改后的所述抽象语法树,生成标准化后的目标代码文件之后,还包括:根据所述原代码文件的文件路径、格式标准化时间和格式标准化状态中的一个或多个组合,更新所述格式标准化日志。

本申请的一个实施例中,所述根据目标配置文件中记录的标准化规则,遍历所述抽象语法树中各节点之前,还包括:根据设定路径,查询所述设定路径下是否存在用户配置文件;存在所述用户配置文件的情况下,根据所述用户配置文件和默认配置文件生成所述目标配置文件;不存在所述用户配置文件的情况下,将所述默认配置文件作为所述目标配置文件。

本申请的一个实施例中,所述存在所述用户配置文件的情况下,根据所述用户配置文件和默认配置文件生成所述目标配置文件,包括:将所述用户配置文件中的标准化规则添加到所述默认配置文件中,以得到所述目标配置文件;和/或,根据所述用户配置文件中的第一指示信息,采用所述用户配置文件中的标准化规则,替换所述默认配置文件中所述第一指示信息对应的标准化规则,以得到所述目标配置文件;和/或,根据所述用户配置文件中的第二指示信息,删除所述默认配置文件中所述第二指示信息对应的标准化规则,以得到所述目标配置文件。

本申请提出一种代码格式的标准化方法,基于读取的原始代码文件,以生成抽象语法树,并根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,以在遍历到的节点内的语句与标准化规则匹配时,根据标准化规则对遍历到的节点进行语句修改,从而得到修改后的抽象语法树,以生成标准化后的目标代码文件,由此,在生成标准化的目标代码文件的过程中,通过遍历原始代码文件生成抽象语法树中的各节点,并结合目标配置文件中记录的标准化规则,得到修改后的抽象语法树,以生成标准化后的目标代码文件,从而在不对原有代码的项目依赖进行变更的情况下,提升代码可读性和规范性,且有效的降低了后期开发和维护成本。

本申请第二方面实施例提出了一种代码格式的标准化装置,包括以下装置:读取模块,用于读取原始代码文件;第一生成模块,用于根据读取的原始代码文件生成抽象语法树;遍历模块,用于根据目标配置文件中记录的标准化规则,遍历所述抽象语法树中各节点,以在遍历到的节点内的语句与所述标准化规则匹配时,根据所述标准化规则对所述遍历到的节点进行语句修改;第二生成模块,用于根据修改后的所述抽象语法树,生成标准化后的目标代码文件。

本申请的一个实施例中,所述遍历模块,包括:第一查询单元,用于根据格式标准化日志,查询所述原始代码文件是否进行过格式标准化;第二查询单元,用于若进行过格式标准化,则查询所述原始代码文件的修改记录;第一遍历单元,用于根据所述修改记录确定所述原始代码文件存在修改的情况下,调用目标插件中的格式标准化装置,执行根据所述目标配置文件中记录的标准化规则,遍历所述抽象语法树中各节点的步骤;第二遍历单元,用于若未进行过格式标准化,则调用所述目标插件中的格式标准化装置,执行根据所述目标配置文件中记录的标准化规则,遍历所述抽象语法树中各节点的步骤。

本申请的一个实施例中,所述第二查询单元,具体用于:根据所述修改记录确定所述原始代码文件不存在修改的情况下,则确定无需执行格式标准化。

本申请的一个实施例中,所述装置,还包括:更新模块,用于根据所述原代码文件的文件路径、格式标准化时间和格式标准化状态中的一个或多个组合,更新所述格式标准化日志。

本申请的一个实施例中,所述装置,还包括:查询模块,用于根据设定路径,查询所述设定路径下是否存在用户配置文件;第三生成模块,用于存在所述用户配置文件的情况下,根据所述用户配置文件和默认配置文件生成所述目标配置文件;判断模块,用于不存在所述用户配置文件的情况下,将所述默认配置文件作为所述目标配置文件。

本申请的一个实施例中,所述第三生成模块,具体用于:将所述用户配置文件中的标准化规则添加到所述默认配置文件中,以得到所述目标配置文件;和/或,根据所述用户配置文件中的第一指示信息,采用所述用户配置文件中的标准化规则,替换所述默认配置文件中所述第一指示信息对应的标准化规则,以得到所述目标配置文件;和/或,根据所述用户配置文件中的第二指示信息,删除所述默认配置文件中所述第二指示信息对应的标准化规则,以得到所述目标配置文件。

本申请提出一种代码格式的标准化装置,基于读取的原始代码文件,以生成抽象语法树,并根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,以在遍历到的节点内的语句与标准化规则匹配时,根据标准化规则对遍历到的节点进行语句修改,从而得到修改后的抽象语法树,以生成标准化后的目标代码文件,由此,在生成标准化的目标代码文件的过程中,通过遍历原始代码文件生成抽象语法树中的各节点,并结合目标配置文件中记录的标准化规则,得到修改后的抽象语法树,以生成标准化后的目标代码文件,从而在不对原有代码的项目依赖进行变更的情况下,提升代码可读性和规范性,且有效的降低了后期开发和维护成本。

本申请第三方面实施例提出了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现代码格式的标准化方法。

本申请第四方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现代码格式的标准化方法。

本申请第五方面实施例提出了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现代码格式的标准化方法。

上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1是本申请实施例所提供的一种代码格式的标准化方法的流程示意图;

图2是本申请实施例所提供的另一种代码格式的标准化方法的流程示意图;

图3是本申请实施例的一个代码格式标准化的系统流程图;

图4是本申请实施例的一个代码格式的标准化装置的结构示意图;

图5是本申请实施例的另一个代码格式的标准化装置的结构示意图;

图6是根据本申请一个实施例的电子设备的框图。

具体实施方式

下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

下面参考附图描述本申请实施例的代码格式的标准化方法、装置和电子设备。

图1是本申请实施例所提供的一种代码格式的标准化方法的流程示意图。其中,需要说明的是,本实施例提供的代码格式的标准化方法的执行主体为代码格式的标准化装置,该代码格式的标准化装置可以由软件和/或硬件的方式实现,该实施例中的代码格式的标准化装置可以配置电子设备中,本实施例中的电子设备可以包括服务器等,该实施例对电子设备不作具体限定。

如图1所示,该代码格式的标准化方法可以包括:

步骤101,读取原始代码文件。

在一些实施例中,原始代码文件中包括但不限于原始变量和原始方法,其中,代码文件用于存放代码。

在本申请的一些实施例中,原始代码文件是指待转换的代码文件,原始代码文件可以直接从开发人员输入中直接获取,也可以是基于编程语言的(JavaScript,JS)运行环境中的文件系统(filesystem,fs)模块读取文件,以及使用ReadFile函数异步读取文件,但不仅限于此,该实施例对此不做具体限定。

步骤102,根据读取的原始代码文件生成抽象语法树。

在一些实施例中,不同的开发人员拥有不同的代码编写风格,针对不同的代码编写风格,在接收到原始代码文件后,可以直接将原始代码文件中的代码直接转化为原始抽象语法树。

步骤103,根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,以在遍历到的节点内的语句与标准化规则匹配时,根据标准化规则对遍历到的节点进行语句修改。

在一些实施例中,目标配置文件可以是用户的格式标准化配置文件,也可以是默认的自由的格式标准化配置文件,但不仅限于此。

在一些实施例中,目标配置文件中记录的标准化规则,是一种优化代码可读性的规则,以方便不同的开发人员去阅读代码,提高代码的可读性。

在一些实施例中,根据原始代码文件中的格式标准化日志,查询原始代码文件是否进行过格式标准化,若进行过格式标准化,则查询原始代码文件的修改记录,在确定修改记录中的原始代码文件存在修改的情况下,调用目标插件中的格式标准化方法,执行根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点的步骤,若未进行过格式标准化,则调用目标插件中的格式标准化方法,执行根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点的步骤。

可以理解的是,若进行过格式标准化,在查询原始代码文件的修改记录之后,确定出修改记录中的原始代码文件不存在修改的情况下,则确定无需执行格式标准化。

在另一些实施例中,在根据目标配置文件中记录的标准化规则,遍历所述抽象语法树中各节点之前,还需要确定出目标配置文件,确定目标配置文件的一种实施方式为,根据原始代码文件的设定路径,查询设定路径下是否存在用户配置文件,在存在用户配置文件的情况下,根据用户配置文件和默认配置文件生成目标配置文件,在不存在用户配置文件的情况下,将默认配置文件作为目标配置文件。

其中,在存在用户配置文件的情况下,根据用户配置文件和默认配置文件生成目标配置文件的第一种实施方式可以为为,将用户配置文件中的标准化规则添加到默认配置文件中,以得到目标配置文件。

第二种实施方式可以为,根据用户配置文件中的第一指示信息,采用用户配置文件中的标准化规则,替换默认配置文件中第一指示信息对应的标准化规则,以得到目标配置文件。

第三种实施方式可以为,根据用户配置文件中的第二指示信息,删除默认配置文件中第二指示信息对应的标准化规则,以得到目标配置文件。

步骤104,根据修改后的抽象语法树,生成标准化后的目标代码文件。

在一些实施例中,在对原始的抽象语法树基于标准化规则进行修改后,得到修改后的抽象语法树,再将修改后的抽象语法树生成标准化后的目标代码文件,得到的目标的代码文件可读性高,还利于后期的开发于维护。

本申请提出一种代码格式的标准化方法,基于读取的原始代码文件,以生成抽象语法树,并根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,以在遍历到的节点内的语句与标准化规则匹配时,根据标准化规则对遍历到的节点进行语句修改,从而得到修改后的抽象语法树,以生成标准化后的目标代码文件,由此,在生成标准化的目标代码文件的过程中,通过遍历原始代码文件生成抽象语法树中的各节点,并结合目标配置文件中记录的标准化规则,得到修改后的抽象语法树,以生成标准化后的目标代码文件,从而在不对原有代码的项目依赖进行变更的情况下,提升代码可读性和规范性,且有效的降低了后期开发和维护成本。

基于上述实施例,在根据修改后的抽象语法树,生成标准化后的目标代码文件之后,还需要根据原代码文件的文件路径、格式标准化时间和格式标准化状态中的一个或多个组合,更新格式标准化日志,以方便后期的维护,其中,每次格式标准化后都需要执行此操作,并记录更新的格式标准化日志。

图2是本申请实施例所提供的另一种代码格式的标准化方法的流程示意图。下面结合图2对实施例的方法进行进一步描述。

步骤201,读取原始代码文件。

在一些实施例中,在读取到有效的原始代码文件后,需要对原始代码文件进行校验,以有效地避免无效代码文件编译时报错。

步骤202,根据读取的原始代码文件生成抽象语法树。

其中,需要说明的是,关于步骤202的具体实现方式,可参见上述实施例中的相关描述。

步骤203,根据格式标准化日志,查询原始代码文件是否进行过格式标准化。

在一些实施例中,根据原始文件中的格式标准化日志,查询原始代码文件是否进行过格式标准化,若已经进行格式标准化,则对其进行拦截,以防止重复格式标准化操作。

步骤204,若进行过格式标准化,则查询原始代码文件的修改记录。

步骤205,根据修改记录确定原始代码文件存在修改的情况下,调用目标插件中的格式标准化方法,执行根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点的步骤。

步骤206,若未进行过格式标准化,则调用目标插件中的格式标准化方法,执行根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点的步骤。

步骤207,在遍历到的节点内的语句与标准化规则匹配时,根据标准化规则对遍历到的节点进行语句修改。

步骤208,根据修改后的抽象语法树,生成标准化后的目标代码文件。

本申请提出一种代码格式的标准化方法,基于读取的原始代码文件,以生成抽象语法树,并根据目标配置文件中的格式标准化日志,查询原始代码文件是否进行过格式标准化,在原始代码文件存在修改的情况下,调用目标插件中的格式标准化方法,执行根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,若未进行过格式标准化,则调用目标插件中的格式标准化方法,执行根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,在遍历到的节点内的语句与标准化规则匹配时,根据标准化规则对遍历到的节点进行语句修改,从而得到修改后的抽象语法树,以生成标准化后的目标代码文件,由此,在生成标准化的目标代码文件的过程中,通过遍历原始代码文件生成抽象语法树中的各节点,并结合目标配置文件中记录的标准化规则,得到修改后的抽象语法树,以生成标准化后的目标代码文件,从而只需配置一套配置信息,让所有开发人员都可以共享这套规范,以提高代码的规范性。

基于上述实施例,如图3所示,本申请在获取到原始文件的文件路径后,检测原始代码文件是否进行过格式标准化,若未进行格式标准化,则调用目标插件中的格式标准化方法,执行根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,若已进行格式标准化,则判断原始代码文件是否修改过,在原始代码文件不存在修改的情况下,则确定无需执行格式标准化,直接输出目标代码文件,在原始代码文件存在修改的情况下,调用目标插件中的格式标准化方法,执行根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,最后判断目标代码文件的文件类型,并进行解析,若编译器不支持解析的文件类型,则直接输出目标代码文件,若编译器不支持解析的文件类型,则先格式标准化文件,在输出目标代码文件。

图4是本申请实施例的一个代码格式的标准化装置的结构示意图。

如图4所示,该代码格式的标准化装置400包括:

读取模块401,用于读取原始代码文件。

第一生成模块402,用于根据读取的原始代码文件生成抽象语法树。

遍历模块403,用于根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,以在遍历到的节点内的语句与标准化规则匹配时,根据标准化规则对遍历到的节点进行语句修改。

第二生成模块404,用于根据修改后的抽象语法树,生成标准化后的目标代码文件。

本申请提出一种代码格式的标准化装置,基于读取的原始代码文件,以生成抽象语法树,并根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,以在遍历到的节点内的语句与标准化规则匹配时,根据标准化规则对遍历到的节点进行语句修改,从而得到修改后的抽象语法树,以生成标准化后的目标代码文件,由此,在生成标准化的目标代码文件的过程中,通过遍历原始代码文件生成抽象语法树中的各节点,并结合目标配置文件中记录的标准化规则,得到修改后的抽象语法树,以生成标准化后的目标代码文件,从而在不对原有代码的项目依赖进行变更的情况下,提升代码可读性和规范性,且有效的降低了后期开发和维护成本。

在本申请的一个实施例中,如图5所示,遍历模块403,包括:

第一查询单元4031,用于根据格式标准化日志,查询原始代码文件是否进行过格式标准化。

第二查询单元4032,用于若进行过格式标准化,则查询原始代码文件的修改记录。

第一遍历单元4033,用于根据修改记录确定原始代码文件存在修改的情况下,调用目标插件中的格式标准化装置,执行根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点的步骤。

第二遍历单元4034,用于若未进行过格式标准化,则调用目标插件中的格式标准化装置,执行根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点的步骤。

在本申请的一个实施例中,第二查询单元4032,具体用于:

根据修改记录确定原始代码文件不存在修改的情况下,则确定无需执行格式标准化。

在本申请的一个实施例中,如图5所示,该装置,还包括:

更新模块405,用于根据原代码文件的文件路径、格式标准化时间和格式标准化状态中的一个或多个组合,更新格式标准化日志。

在本申请的一个实施例中,如图5所示,该装置,还包括:

查询模块406,用于根据设定路径,查询设定路径下是否存在用户配置文件。

第三生成模块407,用于存在用户配置文件的情况下,根据用户配置文件和默认配置文件生成目标配置文件。

判断模块408,用于不存在用户配置文件的情况下,将默认配置文件作为目标配置文件。

在本申请的一个实施例中,第三生成模块407,具体用于:

将用户配置文件中的标准化规则添加到默认配置文件中,以得到目标配置文件。

和/或,根据用户配置文件中的第一指示信息,采用用户配置文件中的标准化规则,替换默认配置文件中第一指示信息对应的标准化规则,以得到目标配置文件。

和/或,根据用户配置文件中的第二指示信息,删除默认配置文件中第二指示信息对应的标准化规则,以得到目标配置文件。

本申请提出一种代码格式的标准化装置,基于读取的原始代码文件,以生成抽象语法树,并根据目标配置文件中记录的标准化规则,遍历抽象语法树中各节点,以在遍历到的节点内的语句与标准化规则匹配时,根据标准化规则对遍历到的节点进行语句修改,从而得到修改后的抽象语法树,以生成标准化后的目标代码文件,由此,在生成标准化的目标代码文件的过程中,通过遍历原始代码文件生成抽象语法树中的各节点,并结合目标配置文件中记录的标准化规则,得到修改后的抽象语法树,以生成标准化后的目标代码文件,从而在不对原有代码的项目依赖进行变更的情况下,提升代码可读性和规范性,且有效的降低了后期开发和维护成本。

根据本申请的实施例,本申请还提供了一种电子设备。

如图6所示,是根据本申请一个实施例的电子设备的框图。

如图6所示,该电子设备包括:

存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机指令。

处理器602执行指令时实现上述实施例中提供的代码格式的标准化方法。

进一步地,电子设备还包括:

通信接口603,用于存储器601和处理器602之间的通信。

存储器601,用于存放可在处理器602上运行的计算机指令。

存储器601可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

处理器602,用于执行程序时实现上述实施例的代码格式的标准化方法。

如果存储器601、处理器602和通信接口603独立实现,则通信接口603、存储器601和处理器602可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器601、处理器602及通信接口603,集成在一块芯片上实现,则存储器601、处理器602及通信接口603可以通过内部接口完成相互间的通信。

处理器602可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。

本申请还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例的代码格式的标准化方法。

本申请还提出一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述实施例的代码格式的标准化方法。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

相关技术
  • 代码测试方法及装置、存储介质、电子设备
  • 报文预定义代码生成方法、装置、电子设备和存储介质
  • 基于哈希值的代码克隆检测方法、电子设备、存储介质
  • 电子设备的显示控制方法、装置、电子设备和存储介质
  • 电子设备控制方法及装置、电子设备及存储介质
  • 一种行业代码标准化方法、装置、电子设备和存储介质
  • 一种行业代码标准化方法、装置、电子设备和存储介质
技术分类

06120115915096