CN116088846A - 一种持续集成代码格式的处理方法、相关装置及设备 - Google Patents

一种持续集成代码格式的处理方法、相关装置及设备 Download PDF

Info

Publication number
CN116088846A
CN116088846A CN202111308528.1A CN202111308528A CN116088846A CN 116088846 A CN116088846 A CN 116088846A CN 202111308528 A CN202111308528 A CN 202111308528A CN 116088846 A CN116088846 A CN 116088846A
Authority
CN
China
Prior art keywords
target
node element
code
code information
abnormal
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
CN202111308528.1A
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202111308528.1A priority Critical patent/CN116088846A/zh
Publication of CN116088846A publication Critical patent/CN116088846A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种持续集成代码格式的处理方法、相关装置及设备,相关实施例可应用于云技术、人工智能等各种场景,用于提高代码质量、代码开发效率以及维护代码安全。本申请实施例方法包括:获取异常原始代码信息,对异常原始代码信息进行抽象语法树解析,得到异常原始代码信息的抽象语法结构树状表示,其中,抽象语法结构树状表示包括目标异常节点元素和原始正常节点元素,对目标异常节点元素进行格式化处理,得到目标正常节点元素,将原始正常节点元素和目标正常节点元素转化为目标代码信息,将目标代码信息合入主干代码信息。

Description

一种持续集成代码格式的处理方法、相关装置及设备
技术领域
本申请实施例涉及网络安全管理技术领域,尤其涉及一种持续集成代码格式的处理方法、相关装置及设备。
背景技术
随着计算机网络的快速发展,互联网软件的开发和发布也给人们生活带来了许多的便利,但是在互联网软件的开发和发布的过程中也面临许多实际的代码开发效率和安全问题。
因此,为了让互联网软件的代码可以更加快速迭代,同时还能保持高质量,通常是通过对互联网软件的目标增量代码进行格式诊断,但是,在诊断的过程中如果有不合格的代码就会宣告检测失败不能通过格式诊断,并会通知代码的开发者代码检测失败,然后,需要开发者在本地重新手动修改不合格的代码后再重新提交修改好的代码,进而,服务器会对提交的代码再次重新执行上一次检测时已经执行的各项代码检测测试,不仅需要耗费大量的人力成本以及时间成本,还需要重复执行各项代码检测测试,容易造成重复的冗余检测,从而导致代码的开发效率降低。
发明内容
本申请实施例提供了一种持续集成代码格式的处理方法、相关装置及设备,用于通过将异常原始代码信息进行抽象语法树解析来实现异常代码自动格式化,以获取修复后的目标代码信息,无需耗费通过人工在本地修改代码后再重新提交,能够节省大量的人力成本和时间成本,从而提高代码的开发效率。
本申请实施例一方面提供了一种持续集成代码格式的处理方法,包括:
获取异常原始代码信息;
对异常原始代码信息进行抽象语法树解析,得到异常原始代码信息的抽象语法结构树状表示,其中,抽象语法结构树状表示包括目标异常节点元素和原始正常节点元素;
对目标异常节点元素进行格式化处理,得到目标正常节点元素;
将原始正常节点元素和目标正常节点元素转化为目标代码信息;
将目标代码信息合入主干代码信息。
本申请另一方面提供了一种持续集成代码格式的处理装置,包括:
获取单元,用于获取异常原始代码信息;
处理单元,用于对异常原始代码信息进行抽象语法树解析,得到异常原始代码信息的抽象语法结构树状表示,其中,抽象语法结构树状表示包括多个节点元素;
确定单元,用于从多个节点元素中确定目标异常节点元素和原始正常节点元素;
处理单元,还用于对目标异常节点元素进行格式化处理,得到目标正常节点元素;
处理单元,还用于将原始正常节点元素和目标正常节点元素转化为目标代码信息;
处理单元,还用于将目标代码信息合入主干代码信息。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,
处理单元,还用于对抽象语法结构树状表示进行深度优选遍历,得到多个节点元素;
确定单元,还用于从多个节点元素中确定目标异常节点元素和原始正常节点元素。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,确定单元具体可以用于:
获取每个节点元素的语法结构信息;
若语法结构信息符合标准结构信息,则将节点元素确定为原始正常节点元素;
若语法结构信息不符合标准结构信息,则将节点元素确定为目标异常节点元素。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
按照标准结构信息对目标异常节点元素进行格式化处理,得到目标正常节点元素,其中,格式化处理包括节点元素替换、节点元素增加或节点元素删除。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
根据抽象语法结构与代码之间的映射关系,将原始正常节点元素和目标正常节点元素还原为目标代码;
按照节点元素的节点位置,将目标代码写入对应的代码位置,生成目标代码信息。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
将目标代码信息提交至目标服务平台,以覆盖历史代码信息;
通过目标服务平台,将目标代码信息合入主干代码信息。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,
处理单元,还用于根据原始正常节点元素、目标正常节点元素以及目标代码信息,生成异常代码修复报告;
处理单元,还用于将异常代码修复报告发送至目标终端设备。
本申请另一方面提供了一种计算机设备,包括:存储器、收发器、处理器以及总线系统;
其中,存储器用于存储程序;
处理器用于执行存储器中的程序时实现如上述各方面的方法;
总线系统用于连接存储器以及处理器,以使存储器以及处理器进行通信。
本申请的另一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
本申请的一个方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一方面所提供的文本类别的确定方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
获取异常原始代码信息,对异常原始代码信息进行抽象语法树解析,得到包括有目标异常节点元素和原始正常节点元素的抽象语法结构树状表示,并对目标异常节点元素进行格式化处理,以获取目标正常节点元素,然后,将原始正常节点元素和目标正常节点元素转化为目标代码信息,并将目标代码信息合入主干代码信息。通过上述方式,能够将异常原始代码信息通过抽象语法树解析来实现异常代码自动格式化,以获取修复后的目标代码信息,无需耗费通过人工在本地修改代码后再重新提交,以及提交后重复执行各项代码检测测试,节省了大量的人力成本和时间成本,从而提高代码的开发效率。
附图说明
图1是本申请实施例中代码控制系统的一个架构示意图;
图2是本申请实施例中代码控制系统的一个交互示意图;
图3是本申请实施例中持续集成代码格式的处理方法的一个实施例流程图;
图4是本申请实施例中持续集成代码格式的处理方法的一个原理流程示意图;
图5是本申请实施例中持续集成代码格式的处理方法的一个抽象语法树示意图;
图6是本申请实施例中持续集成代码格式的处理方法的一个节点代码处理示意图;
图7是本申请实施例中持续集成代码格式的处理方法的一个代码提交流程示意图;
图8是本申请实施例中持续集成代码格式的处理装置的一个实施例示意图;
图9是本申请实施例中计算机设备的一个实施例示意图。
具体实施方式
本申请实施例提供了一种持续集成代码格式的处理方法、相关装置及设备,用于通过将异常原始代码信息进行抽象语法树解析来实现异常代码自动格式化,以获取修复后的目标代码信息,无需耗费通过人工在本地修改代码后再重新提交,能够节省大量的人力成本和时间成本,从而提高代码的开发效率。
本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
而随着信息的飞速发展,云技术(Cloud technology)也逐渐走入人们生活的方方面面。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
其中,云安全(Cloud Security)是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。本申请实施例提供的持续集成代码格式的处理方法就可以通过云计算技术以及云安全技术来实现。
应理解,本申请提供的持续集成代码格式的处理方法可以应用于云技术、人工智能、智慧交通等领域,用于通过修复代码完成代码软件开发的场景中,作为示例,例如通过修复游戏软件开发代码完成游戏软件代码软件开发;作为另一示例,例如通过修复手机应用软件开发代码完成手机应用软件代码软件开发;例如,例如通过修复办公软件开发代码完成办公软件代码软件开发,在上述种种场景中,为了实现修复代码,通常是通过对互联网软件的目标增量代码进行格式诊断,但是,在诊断的过程中如果有不合格的代码就会宣告检测失败不能通过格式诊断,并会通知代码的开发者代码检测失败,然后,需要开发者在本地重新手动修改不合格的代码后再重新提交修改好的代码,需要耗费大量的人力资源以及时间成本,容易造成重复的代码冗余检测,从而导致代码的开发效率降低。
为了解决上述问题,本申请提出了一种持续集成代码格式的处理方法,该方法应用于图1所示的代码控制系统,请参阅图1,图1为本申请实施例中代码控制系统的一个架构示意图,如图1所示,应用服务器通过获取终端设备上传的异常原始代码信息,对异常原始代码信息进行抽象语法树解析,得到包括有目标异常节点元素和原始正常节点元素的抽象语法结构树状表示,并对目标异常节点元素进行格式化处理,以获取目标正常节点元素,然后,将原始正常节点元素和目标正常节点元素转化为目标代码信息,并通过平台服务器将目标代码信息合入主干代码信息。通过上述方式,能够将异常原始代码信息通过抽象语法树解析来实现异常代码自动格式化,以获取修复后的目标代码信息,无需耗费通过人工在本地修改代码后再重新提交,以及提交后重复执行各项代码检测测试,节省了大量的人力成本和时间成本,从而提高代码的开发效率。
其中,平台服务器与终端设备端之间通信连接,平台服务器与应用服务器之间通信连接。可以理解的是,图1中仅示出了一种终端设备,在实际场景中可以由更多种类的终端设备参与到数据处理的过程中,终端设备包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等,具体数量和种类因实际场景而定,具体此处不做限定。另外,图1中示出了一个服务器,但在实际场景中,也可以有多个服务器的参与,特别是在多模型训练交互的场景中,服务器的数量因实际场景而定,具体此处不做限定。
需要注意的是,本实施例中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(contentdelivery network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,终端设备以及服务器可以连接组成区块链网络,本申请在此不做限制。
为了解决上述问题,本申请提出了一种持续集成代码格式的处理方法,该方法一般由服务器或终端设备执行,相应地,应用于持续集成代码格式的处理装置一般设置于服务器或终端设备中。
可以理解的是,如本申请所公开的持续集成代码格式的处理方法、相关装置以及设备,其中多个服务器或终端设备可以组成为一区块链,而服务器或终端设备为区块链上的节点。在实际应用中,可以在区块链中需要进行节点与节点之间的数据共享,每个节点上可以存储有代码数据等。
为了便于理解,请参阅图2,图2为本申请实施例中代码控制系统的一个交互示意图,如图所示,在步骤S1中,即代码开发事务开始时,当开发者准备开发一个互联网软件的新功能时,可以按照编程语言的语言规则编辑可以实现新功能的可执行代码,但是如果开发者需要较长一段时间如两周才能完成代码的编写,而第一周开发者只编写了50%的代码,如果立刻提交至代码库,会由于新功能的代码还没写完,导致代码库中的代码不完整,从而导致其他开发者不能进行与该不完整代码相关的其他编写工作,或者,如果要等待开发者将代码全部写完再提交,又容易出现丢失每天进度的巨大风险,这种情况下,就可以调用平台服务器,在平台服务器中创建功能分支,用于随时存储代码进度。
在步骤S2中,即代码进度保存事务进行中,开发者通过目标终端设备可以将编辑好的功能代码通过推送命令(git push)推送至平台服务器中,可以通过平台服务器的分支管理策略利用功能(feature)分支对每个功能的代码进行进度保存,即开发者可以创建了一个属于该新功能的分支,各个开发者创建的分支之间是无法相互干涉的,只能在各自对应的分支上正常工作,而开发者可以通过自己创建的分支,实现随时提交。假设开发者需要两周才能完成代码的编写,而第一天开发者只编写了10%的代码,就可以通过推送命令将编写好的10%的代码到功能分支中,并通过一个进度标识来接收、存储这10%的代码以及记录10%的代码的提交时间。
在步骤S3中,即代码异常检测进行中,当开发者通过目标终端设备可以将编辑好的功能代码通过推送命令推送至平台服务器时,可以向应用服务器如持续集成(Jenkins)平台的发出自动化构建请求,可以通过应用服务器对接收到的功能分支中的代码进行自动化的问题检测,如格式问题或者编译问题或者与develop分支有冲突等问题。
在步骤S4中,即代码异常修复进行中,当接收到自动化构建请求后,可以通过应用服务器拉取功能分支中的代码,并对拉取到的代码执行静态代码检查、单元测试、UI自动化测试等等自动化的问题检测,如果检测到有格式问题的异常原始代码信息,则可以自动格式化对异常原始代码信息进行异常代码修复,修复完毕后自动提交至平台服务器中。
在步骤S5中,即代码开发完毕,修复完毕后自动提交至平台服务器后,直到各个功能分支的代码都提交至平台服务器中,即新功能的代码开发完毕后,那么就可以向开发分支发送的合并请求(merge request),来将各功能分支的代码合入到主干代码中,形成一个完整的可执行代码。
在步骤S6中,即代码检测成功代码开发完毕或代码问题检测成功后,应用服务器通知平台服务器代码开发事务正式完全结束。同时应用服务器告诉终端设备各功能代码最后的检测结果,比如代码检查报告中有多少代码问题,单元测试报告中有多少单元问题以及异常代码修复报告有多少异常已修复等等信息。
下面将对本申请中持续集成代码格式的处理方法进行介绍,请参阅图3以及图4,本申请实施例中持续集成代码格式的处理方法一个实施例包括:
在步骤S101中,获取异常原始代码信息;
在本实施例中,当开发者通过目标终端设备将编辑好的功能代码推送至平台服务器时,平台服务器可以向应用服务器的发出自动化构建请求,使得应用服务器可以对接收到的自动化构建请求,从平台服务器中拉取功能分支中的原始代码信息进行自动化的问题检测,如果检测到存在格式问题的异常原始代码信息,则可以通过应用服务器中的自动格式化单元获取该异常原始代码信息,以使后续自动格式化单元可以对获取到的异常原始代码进行自动化修复。
其中,平台服务器具体可以表现为分布式版本控制系统(Git),也可以表现为其他版本控制系统,如开放源代码的版本控制系统(Subversion,SVN)等,此处不作具体限制。应用服务器具体可以表现为持续集成(Jenkins)平台,还可以是其他持续集成工具,如持续集成开源软件Strider、持续集成开源项目Travis或Codeship等,此处不作具体限制,其中,Jenkins是一个开源的持续集成工具,使用Jenkins搭建持续集成环境,可以进行自动构建、自动编译以及自动部署等功能。异常原始代码信息指的是有格式问题的异常代码,格式问题具体可以表现为多余的空格、不完整的括号、错误的操作符或者错误的特殊符号等,还可以是其他格式问题,此处不作具体限制。
具体地,如图4所示,本实施例可以应用于持续集成(Continuous integration,简称CI)系统的代码开发场景中,而根据持续集成的设计,代码从提交到生产,整个过程包括提交、第一轮测试、构建、第二轮测试以及部署等步骤,因此,当开发者准备开发一个互联网软件的新功能时,首先可以按照编程语言的语言规则编辑新功能的可执行代码,然后,可以通过git push命令,将编辑好的代码推送至平台服务器中,即提交代码,其中,git push命令用于将本地分支代码的更新,并更新的代码推送到远程主机中。
进一步地,平台服务器可以通过配置的钩子(hook)函数,对接收到的代码或者合并进主干的代码进行自动化测试,比如,单元测试、集成测试以及端对端测试等,其中,单元测试是针对函数或模块的测试;集成测试是针对整体产品的某个功能的测试,又称功能测试;以及端对端测试是从用户界面直达数据库的全链路测试,其中,第一轮测试至少会进行单元测试。
进一步地,当第一轮测试结束后,平台服务器可以进行构建(build),具体可以是向应用服务器发送自动化构建请求,然后,应用服务器可以根据自动化构建请求,拉取平台服务器中的源代码进行构建。其中,构建指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等等。
进一步地,当应用服务器拉取平台服务器中的源代码构建为实际代码后,可以在应用服务器中对构建好的实际代码进行第二轮测试,由于第二轮是全面测试,不仅会进行自动化的单元测试和集成测试,还可以进行自动化的端对端测试,因此,可以准确地检测到代码中是否存在有格式问题的异常原始代码信息,然后,无需进行异常报错,可以直接通过应用服务器中的自动格式化单元获取该异常原始代码信息,以使后续自动格式化单元可以对获取到的异常原始代码进行自动格式化修复。
可以理解的是,如果第一轮测试已经涵盖了所有测试内容,则第二轮测试可以省略,当然,这时构建步骤也要移到第一轮测试前面执行。
在步骤S102中,对异常原始代码信息进行抽象语法树解析,得到异常原始代码信息的抽象语法结构树状表示,其中,抽象语法结构树状表示包括目标异常节点元素和原始正常节点元素;
在本实施例中,在获取到异常原始代码信息后,因为格式化代码就是要改变原来的代码结构,以及由于不同的编程语言有不同的词法语法规则定义,因此,本实施例可以通过将异常原始代码信息转换为抽象语法树的树状表示,能够在原始代码的结构改变之前可以先对异常原始代码信息在原程序中的信息以及存在的各种层次归属关系保存起来,并且可以通过抽象语法树不依赖于具体的文法以及不依赖于语言的细节的特性,可以很好地对异常原始代码信息进行句法分析和语法分析,能够更好更准确地获取到异常原始代码信息中的丰富信息。
具体地,如图4所示,对异常原始代码信息进行抽象语法树解析,是将异常原始代码信息从纯代码文本转换成树形结构的数据,其中,每个条目和树中的节点元素一一对应。对异常原始代码信息进行抽象语法树解析具体可以是先通过对异常原始代码信息进行词法分析(Lexical Analysis),即扫描(scanner),通过读取异常原始代码信息,然后把异常原始代码信息中的每个代码按照预定的规则合并成一个个的标识,即将由字符组成的字符串分解成有意义的代码块,这些代码块统称为词法单元(token),直到整个异常原始代码信息将被分割进一个tokens列表(或者说一维数组)中。
例如,let a=1,这段代码通常会被分解成为下面这些词法单元:“let”、“a”、“=”以及“1”,其中,空格是否被当成词法单元,取决于空格在当前语言中的意义。
进一步地,当对异常原始代码信息完成词法分析后,可以对异常原始代码信息进行语法分析(Syntax Analysis),具体可以是将词法分析出来的数组转换成树形的形式,即将词法单元流转换成一个由元素嵌套所组成的代表了程序语法结构的树。
进一步地,当通过语法分析生成异常原始代码信息的抽象语法结构树状表示时,可以对抽象语法结构树状表示中的节点元素进行逐个遍历,可以获取到目标异常节点元素和原始正常节点元素,其中,目标异常节点元素指的是语法结构信息存在格式错误的代码条目,原始正常节点元素指的是语法结构信息不存在格式错误的代码条目。
例如,对var answer=6*7进行抽象语法树解析,先对这段代码进行词法解析,可以将这段代码分解成为这些词法单元:“var”、“answer”、“=”、“6”、“*”以及“7”,然后,可以将这些词法单元转换成一个由元素嵌套所组成的语法结构树,具体输出如图6所示的抽象语法结构树状表示。
可以理解的是,对异常原始代码信息进行抽象语法树解析具体可以是采用javascript编译器(babel)、构建用户界面的渐进式框架(Vue)或者构建用户界面的javascript库(react)等,还可以是其他框架工具,此处不作具体限制。
可以理解的是,由于本实施例中获取到的异常原始代码信息是存在格式问题的异常代码,如果是针对其他问题如编译问题的异常原始代码信息的代码修复,本实施例还可以是采用例如空指针或者数组越界等能够充分考虑到代码编译上下文的算法来捕捉异常原始代码信息中的异常元素,并对捕捉到的异常元素进行自动化修复。
在步骤S103中,对目标异常节点元素进行格式化处理,得到目标正常节点元素;
在本实施例中,在获取到目标异常节点元素后,可以通过对目标异常节点元素进行格式化处理,来实现对目标异常节点元素的格式问题的修复,以获取目标正常节点元素。
具体地,如图4所示,在获取到目异常节点元素后,对目标异常节点元素进行格式化处理具体可以是通过接收异常原始代码信息的抽象语法结构树状表示并对其进行遍历,同时,在遍历到目标异常节点元素时,对该目标异常节点元素进行添加、更新及移除等操作,例如,应用服务器可以采用Babel工具通过babel-traverse算法对获取到的异常原始代码信息的抽象语法结构树状表示进行深度优先遍历,不仅可以维护异常原始代码信息的抽象语法结构树状表示的整体状态,而且可以完成对目标异常节点元素的替换、删除或者增加等格式化处理,得到处理后的目标正常节点元素。
例如,如图6所示,假设有一个目标异常节点元素为“type”:“literal;”是“literal”中出现了多余的“;”的格式问题,因此,可以对目标异常节点元素为“type”:“literal;”进行节点元素替换,如将“type”:“literal;”替换为“type”:“literal”,即可以得到目标正常节点元素“type”:“literal”。
在步骤S104中,将原始正常节点元素和目标正常节点元素转化为目标代码信息;
在本实施例中,在获取到目标正常节点元素和原始正常节点元素之后,应用服务器可以将修复后目标正常节点元素返回结果至抽象语法结构树状表示中,即合入原始正常节点元素,生成修复后的抽象语法结构树状表示,然后,可以将修复后的抽象语法结构树状表示还原为目标代码信息,以使后续可以将各个格式问题修复后目标代码信息及时提交至平台服务器中,从而在一定程度上提高代码的开发效率。
具体地,如图4所示,将原始正常节点元素和目标正常节点元素转化为目标代码信息具体可以是采用Babel工具通过babel-generator算法将原始正常节点元素和目标正常节点元素再转换成js代码,或者,还可以是采用Vue对抽象语法结构树状表示打上静态标签(tag),能够防止对节点元素的重复渲染,然后,可以通过generate函数生成render函数字符串,并通过render函数字符串获取还原后的目标代码信息,或者,还可以是采用react工具通过ReactDOM.render方法将抽象语法结构树状表示转换为分片的数据结构(fiber),并在分片的数据结构中填入许多调度、更新以及diff相关数据,然后,再将转换抽象语法结构树状表示为文档(dom)树,具体可以是先获取分片的数据结构中的节点关系结构,然后,从下往上的渲染一个一个的元素,进而可以将渲染后的所有的节点元素添加到最外面的一层dom上面,并赋值给最外层的fiber.stateNode以获取目标代码信息,其中,fiber.stateNode为将插入页面的dom元素,还可以是采用其他算法工具转化目标代码信息,此处不作具体限制。
在步骤S105中,将目标代码信息合入主干代码信息。
在本实施例中,在获取到目标代码信息后,可以将目标代码信息提交至平台服务器中,当平台服务器接收到各个功能分支对应的目标代码信息后,可以将各个功能分支对应的目标代码信息合入主干代码信息中,形成开发代码软件的各项新功能对应的可执行代码,从而完成代码开发。
具体地,如图4所示,在获取到目标代码信息后,可以将目标代码信息提交至平台服务器中,并可以向开发分支发送代码合并请求,使得平台服务器可以将接收到目标代码信息合入至开发分支中,即将目标代码信息合入至主干代码信息中。
其中,功能分支都是基于开发分支下创建的,开发分支能够保持代码开发生产环境稳定,以及新建开发环境,功能分支来源于开发分支,最终回归到开发分支,功能分支可以按照功能回归的时间不同,可以分为远期分支和近期分支,远期分支准备合并到未来代码版本,近期分支合并到下一个即将发布的代码版本。
在本申请实施例中,提供了一种持续集成代码格式的处理方法,通过上述方式,能够将异常原始代码信息通过抽象语法树解析来实现异常代码自动格式化,以获取修复后的目标代码信息,无需耗费通过人工在本地修改代码后再重新提交,以及提交后重复执行各项代码检测测试,节省了大量的人力成本和时间成本,从而提高代码的开发效率。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理方法另一个可选实施例中,在对目标异常节点元素进行格式化处理,得到目标正常节点元素之前,该方法还包括:
对抽象语法结构树状表示进行深度优选遍历,得到多个节点元素;
从多个节点元素中确定目标异常节点元素和原始正常节点元素。
在本实施例中,在对获取到异常原始代码信息的抽象语法结构树状表示后,可以对抽象语法结构树状表示进行深度优选遍历,能够对抽象语法结构树状表示中的每个节点元素进行逐个遍历,能够从多个节点元素中准确获取目标异常节点元素和原始正常节点元素,以使后续可以对获取到的目标异常节点元素进行增删改查,以维护抽象语法结构树状表示的整体状态的稳定,实现对异常原始代码信息的及时准确地修复,以提高代码质量维护代码安全,从而在一定程度上提高代码的开发效率。
其中,深度优选遍历可以理解为是从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止。然后,回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点为止。
具体地,如图5所示,在对获取到异常原始代码信息的抽象语法结构树状表示后,可以采用Babel工具通过babel-traverse算法对抽象语法结构树状表示进行深度优选遍历,可以遍历到多个节点元素。
进一步,每当遍历到一个节点元素时,都可以将每个节点元素与标准节点元素进行比对,其中,标准节点元素是根据编程语言编制的规范结构元素,能够用于查找和修改错误节点元素,然后,可以将与标准节点元素一致的节点元素确定为原始正常节点元素,同理,可以将与标准节点元素不一致的节点元素确定为目标异常节点元素。
例如,如图6所示,假设有一个标准节点元素为“type”:“literal”,当遍历到一个节点元素为“type”:“literal;”,可知该节点元素与标准节点元素不一致,即在“literal”中出现了多余的“;”的格式问题,因此,可以将该节点元素“type”:“literal;”确定为目标异常节点元素。
可以理解的是,在获取到异常原始代码信息的抽象语法结构树状表示后,为了能够更加准确地识别到异常原始代码信息的抽象语法结构树状表示中的目标异常节点元素,本实施例还可以使用深度卷机神经网络进行缺陷模型学习,以获取训练好的缺陷模型,然后,可以将异常原始代码信息的抽象语法结构树状表示输入至训练好的缺陷模型中进行缺陷识别,能够准确识别目标异常节点元素,以使后续可以对目标异常节点元素进行精准修复,从而可以在一定程度上提高代码质量和维护代码安全。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理方法另一个可选实施例中,从多个节点元素中确定目标异常节点元素和原始正常节点元素,包括:
获取每个节点元素的语法结构信息;
若语法结构信息符合标准结构信息,则将节点元素确定为原始正常节点元素;
若语法结构信息不符合标准结构信息,则将节点元素确定为目标异常节点元素。
在本实施例中,在对抽象语法结构树状表示进行深度优选遍历,获取到多个节点元素时,可以获取每个节点元素的语法结构信息,其中,语法结构信息包括每个节点元素中的字段,每个字段的位置和字段含义等,然后,可以将每个节点元素的语法结构信息与标准结构信息进行比对,能够从多个节点元素中准确获取目标异常节点元素和原始正常节点元素,以使后续可以对获取到的目标异常节点进行增删改查,以维护抽象语法结构树状表示的整体状态的稳定,实现对异常原始代码信息的及时准确地修复,以提高代码质量维护代码安全,从而在一定程度上提高代码的开发效率。
具体地,如图6所示,在获取到抽象语法结构树状表示,可知在抽象语法结构树状表示中包含了丰富的代码信息,因此,本实施例可以利用抽象语法结构树状表示的各个节点元素中反应的各行各列格式的信息,与标准的代码规范格式进行对比,便可以准确查找出存在格式错误的节点位置和目标异常节点元素,如图5所示,具体可以是先根据语法规则对遍历到的每个元素进行语法结构信息的提取,然后,可以将提取到的语法结构信息与标准结构信息进行对比,如果语法结构信息符合标准结构信息,即语法结构信息与标准结构信息一致或符合语法使用规范,则可以将该节点元素确定为原始正常节点元素,如果语法结构信息不符合标准结构信息,即语法结构信息与标准结构信息不一致或不符合语法使用规范,则可以将该节点元素确定为目标异常节点元素,其中,标准结构信息是根据语言开发标准规范生成的结构信息。
例如,在对如图6所示的抽象语法结构树状表示进行深度优选遍历,获取到多个节点元素后,可以对图6所示意的每个节点元素进行语法结构信息的提取,以获取到如表1所示的每个节点元素的语法结构信息:
表1
Figure BDA0003341003950000101
Figure BDA0003341003950000111
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理方法另一个可选实施例中,对目标异常节点元素进行格式化处理,得到目标正常节点元素,包括:
按照标准结构信息对目标异常节点元素进行格式化处理,得到目标正常节点元素,其中,格式化处理包括节点元素替换、节点元素增加或节点元素删除。
在本实施例中,在获取到目标异常节点元素之后,可以按照标准结构信息对目标异常节点元素进行格式化处理,以获取到目标正常节点元素,从而可以获取到修复后的抽象语法结构树状表示,可以维护抽象语法结构树状表示的整体状态的稳定,实现对异常原始代码信息的及时准确地修复,以提高代码质量维护代码安全,从而在一定程度上提高代码的开发效率,同时,能够直接在持续集成系统上通过抽象语法树解析来实现异常原始代码信息的自动格式化,无需将异常代码信息返回至目标终端设备进行代码的本地修改,从而节省了应用服务器的服务运行资源,能够有效节约时间成本和人力成本。
具体地,如图5所示,在获取到目异常节点元素后,对目标异常节点元素进行格式化处理具体可以是通过应用服务器采用Babel工具通过babel-traverse算法对接收到的异常原始代码信息的抽象语法结构树状表示进行遍历,并根据标准结构信息从遍历到的多个节点元素中准确获取目标异常节点元素之后,可以先使用标准结构信息确定该目标异常节点元素的格式问题,然后,可以再根据格式问题确定需要对目标异常节点元素进行格式化处理的方式,如进行添加、更新或者移除等操作,不仅可以维护异常原始代码信息的抽象语法结构树状表示的整体状态,而且可完成对目标异常节点元素的替换、删除或者增加等格式化处理,从而准确获取到处理后的目标正常节点元素。
例如,如图6所示,假设有一个原始正常节点元素(“operator”:“*”,)与另一个原始正常节点元素(“left”:{)之间有一个目标异常节点元素“}”,通过标准结构信息为(“operator”:“*”,)可以确定该目标异常节点元素的格式问题是“,”后出现了多余的“}”,因此,可以根据标准结构信息为(“operator”:“*”,)确定对目标异常节点元素的格式问题的格式化处理方式是删除,即可以采用节点元素删除的方式,将(“operator”:“*”,)的“,”后的“}”删除,即可以得到的目标正常节点元素为(“operator”:“*”,)。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理方法另一个可选实施例中,将原始正常节点元素和目标正常节点元素转化为目标代码信息,包括:
根据抽象语法结构与代码之间的映射关系,将原始正常节点元素和目标正常节点元素还原为目标代码;
按照节点元素的节点位置,将目标代码写入对应的代码位置,生成目标代码信息。
在本实施例中,在获取到原始正常节点元素和目标正常节点元素之后,应用服务器可以将修复后目标正常节点元素返回结果至抽象语法结构树状表示中相应的节点位置,进而,可以与原始正常节点元素一起生成修复后的抽象语法结构树状表示,然后,可以根据抽象语法结构与代码之间的映射关系,将修复后的抽象语法结构树状表示还原为目标代码,并根据修复后的抽象语法结构树状表示中每个节点元素所在的位置,将还原后的目标代码写入对应的程序代码位置中,以获取目标代码信息,以使后续可以将各个格式问题修复后目标代码信息及时提交至平台服务器中,从而在一定程度上提高代码的开发效率。
具体地,如图7所示,在获取到原始正常节点元素和目标正常节点元素之后,应用服务器可以采用Babel工具通过babel-generator算法,按照抽象语法结构与代码之间的映射关系,即通过babel-generator算法的生成原则,将修复后的抽象语法结构树状表示转换成字符串形式的代码,即目标代码,然后,根据修复后的抽象语法结构树状表示中节点元素的节点位置,将转换成字符串形式的目标代码写入相应的程序代码位置中,可以生成相应的代码文件,即目标代码信息。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理方法另一个可选实施例中,将目标代码信息合入主干代码信息,包括:
将目标代码信息提交至目标服务平台,以覆盖历史代码信息;
通过目标服务平台,将目标代码信息合入主干代码信息。
在本实施例中,在获取到目标代码信息后,应用服务器可以将生成的目标代码信息自动提交至目标服务平台,其中目标服务平台具体可以表现为平台服务器,以使平台服务器可以利用获取到的目标代码信息来覆盖历史代码信息,能够及时更新平台服务器中的代码,以维护平台服务器中的代码保持最新的代码状态,并通过平台服务器,可以将更新后的目标代码信息合入主干代码信息中,生成可执行代码,以及时完成代码开发,能够提高平台服务器中的代码质量,维护代码安全,从而可以在一定程度上提高代码的开发效率。
其中,历史代码信息是与目标代码信息属于相同功能分支,在历史时间段内提交的代码信息。
具体地,如图7所示,在获取到目标代码信息后,应用服务器可以通过提交命令(git commit)将生成的目标代码信息自动提交至目标服务平台,即平台服务器中,然后,平台服务器可以对接收到的目标代码信息赋予唯一的目标代码标识以及目标时间标识,其中,目标代码标识用于指示接收的目标代码信息,目标时间标识用于指示接收到目标代码标识的时间。
进一步地,可以将获取到目标代码信息覆盖历史代码信息,及时更新平台服务器中的代码信息,然后,在更新目标代码信息后,可以向开发分支发送合并请求,进而,可以将更新后的目标代码信息合入主干代码信息中生成可执行代码,以及时完成代码开发。
可以理解的是,当平台服务器中更新了目标代码信息后,还可以等待应用服务器向平台服务器发送与自动格式化异常原始代码信息并发执行的单元测试、代码检查等任务结束的结束提示,再向开发分支发送合并请求,进而,可以将更新后的目标代码信息合入主干代码信息中生成可执行代码,能够避免重复的代码冗余检测,从而能够在一定程度上提高代码的开发效率,以及时完成代码的开发。
可以理解的是,本实施例中只是将获取到目标代码信息覆盖历史代码信息,但并不是删除历史代码信息,以及历史代码信息对应的历史代码标识和历史时间标识,如果后续开发者需要查询历史代码信息时,仍然可以通过历史代码标识和历史时间标识在平台服务器中查询到对应的历史代码信息,以避免提交至平台服务器中的代码信息丢失的情况,能够维护代码安全,维护平台服务器中的代码信息的完整性。
例如,假设有一个功能分支A在平台服务器中有相应的历史代码信息S1,以及与历史代码信息对应的历史代码标识001和历史时间标识S01,当平台服务器接收到修复后的目标代码信息S2时,可以分配给该目标代码信息S2相应的目标代码标识002,以及记录当前提交目标代码信息S2的时间并分配相应的目标时间标识S02,然后,可以将目标代码信息S2,以及与目标代码信息S2对应的目标代码标识002和目标时间标识S02覆盖住历史代码信息S1,以及与历史代码信息对应的历史代码标识001和历史时间标识S01,并显示最新的目标代码信息,以使后续可以将最新的目标代码信息合入到主干代码信息中,以维护主干代码信息的准确性和稳定性。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理方法另一个可选实施例中,在将原始正常节点元素和目标正常节点元素转化为目标代码信息之后,该方法还包括:
根据原始正常节点元素、目标正常节点元素以及目标代码信息,生成异常代码修复报告;
将异常代码修复报告发送至目标终端设备。
在本实施例中,在获取到原始正常节点元素、目标正常节点元素以及目标代码信息后,可以理解为异常原始代码信息已修复完毕,因此,可以根据获取到的原始正常节点元素、目标正常节点元素以及目标代码信息,生成相应的异常代码修复报告,然后,可以将生成的异常代码修复报告及时发送至目标终端设备,以使开发者可以通过目标终端设备及时接收到异常代码修复报告,并根据异常代码修改报告及时了解开发者已提交的代码所出现的格式问题以及对异常原始代码信息的修复情况等,使得开发者可以更好地实现对代码的维护和管理。
具体地,在获取到原始正常节点元素、目标正常节点元素以及目标代码信息后,可以采用复制的方式生成异常代码修复报告,具体可以是将异常原始代码信息中的原始正常节点元素对应的代码和代码位置,目标异常节点元素对应的代码和代码位置,目标正常节点元素对应的代码和代码位置,完全复制文件中生成异常代码修改报告,以便于开发者通过目标终端设备获取完整的代码修复信息;或者,还可以是采用标签标注或注释形式,对目标异常节点元素对应的代码和代码位置进行标注或解释,以及对目标正常节点元素对应的代码和代码位置进行标注或解释,从而根据目标异常节点元素对应的代码、代码位置和注解,以及目标正常节点元素对应的代码、代码位置和注解生成异常代码修复报告,使得开发者通过目标终端设备快速获取关键的代码修复信息,还可以是采用其他的方式生成异常代码修复报告,此处不作具体限制。
可以理解的是,当平台服务器中更新了目标代码信息后,还可以等待应用服务器向平台服务器发送与自动格式化异常原始代码信息并发执行的单元测试、代码检查等任务结束的结束提示,可以理解为应用服务器还完成了对从平台服务器中拉取到的代码的单元测试、代码检查等任务,此时,也可以根据单元测试、代码检查等任务的任务结果生成相应的代码检查报告、单元测试报告、调试包以及开发包等,并可以将生成的代码检查报告、单元测试报告、调试包以及开发包等及时发送至目标终端设备,以使开发者可以通过目标终端设备及时接收到代码检查报告、单元测试报告、调试包以及开发包,并根据接收到代码检查报告以及单元测试报告及时了解提交的代码诊断情况、单元以及集成的测试情况等,使得开发者可以更好地实现对代码的维护和管理,以及通过接收到的调试包以及开发包,方便开发者对代码进行进一步地开发和调试。
下面对本申请中的持续集成代码格式的处理装置进行详细描述,请参阅图8,图8为本申请实施例中持续集成代码格式的处理装置的一个实施例示意图,持续集成代码格式的处理装置20包括:
获取单元201,用于获取异常原始代码信息;
处理单元202,用于对异常原始代码信息进行抽象语法树解析,得到异常原始代码信息的抽象语法结构树状表示,其中,抽象语法结构树状表示包括多个节点元素;
确定单元203,用于从多个节点元素中确定目标异常节点元素和原始正常节点元素;
处理单元202,还用于对目标异常节点元素进行格式化处理,得到目标正常节点元素;
处理单元202,还用于将原始正常节点元素和目标正常节点元素转化为目标代码信息;
处理单元202,还用于将目标代码信息合入主干代码信息。
可选地,在上述图8对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理装置的另一实施例中,
处理单元202,还用于对抽象语法结构树状表示进行深度优选遍历,得到多个节点元素;
确定单元203,还用于从多个节点元素中确定目标异常节点元素和原始正常节点元素。
可选地,在上述图8对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理装置的另一实施例中,确定单元203具体可以用于:
获取每个节点元素的语法结构信息;
若语法结构信息符合标准结构信息,则将节点元素确定为原始正常节点元素;
若语法结构信息不符合标准结构信息,则将节点元素确定为目标异常节点元素。
可选地,在上述图8对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理装置的另一实施例中,处理单元202具体可以用于:
按照标准结构信息对目标异常节点元素进行格式化处理,得到目标正常节点元素,其中,格式化处理包括节点元素替换、节点元素增加或节点元素删除。
可选地,在上述图8对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理装置的另一实施例中,处理单元202具体可以用于:
根据抽象语法结构与代码之间的映射关系,将原始正常节点元素和目标正常节点元素还原为目标代码;
按照节点元素的节点位置,将目标代码写入对应的代码位置,生成目标代码信息。
可选地,在上述图8对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理装置的另一实施例中,处理单元202具体可以用于:
将目标代码信息提交至目标服务平台,以覆盖历史代码信息;
通过目标服务平台,将目标代码信息合入主干代码信息。
可选地,在上述图8对应的实施例的基础上,本申请实施例提供的持续集成代码格式的处理装置的另一实施例中,
处理单元202,还用于根据原始正常节点元素、目标正常节点元素以及目标代码信息,生成异常代码修复报告;
处理单元202,还用于将异常代码修复报告发送至目标终端设备。
本申请另一方面提供了另一种计算机设备示意图,如图9所示,图9是本申请实施例提供的一种计算机设备结构示意图,该计算机设备300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)310(例如,一个或一个以上处理器)和存储器320,一个或一个以上存储应用程序331或数据332的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器320和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对计算机设备300中的一系列指令操作。更进一步地,中央处理器310可以设置为与存储介质330通信,在计算机设备300上执行存储介质330中的一系列指令操作。
计算机设备300还可以包括一个或一个以上电源340,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口360,和/或,一个或一个以上操作系统333,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述计算机设备300还用于执行如图3对应的实施例中的步骤。
本申请的另一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如图3所示实施例描述的方法中的步骤。
本申请的另一方面提供了一种包含指令的计算机程序产品当其在计算机或处理器上运行时,使得所述计算机或处理器执行如图3所示实施例描述的方法中的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (10)

1.一种持续集成代码格式的处理方法,其特征在于,包括:
获取异常原始代码信息;
对所述异常原始代码信息进行抽象语法树解析,得到所述异常原始代码信息的抽象语法结构树状表示,其中,抽象语法结构树状表示包括目标异常节点元素和原始正常节点元素;
对所述目标异常节点元素进行格式化处理,得到目标正常节点元素;
将所述原始正常节点元素和所述目标正常节点元素转化为目标代码信息;
将所述目标代码信息合入主干代码信息。
2.根据权利要求1所述的方法,其特征在于,所述对所述目标异常节点元素进行格式化处理,得到目标正常节点元素之前,所述方法还包括:
对所述抽象语法结构树状表示进行深度优选遍历,得到多个节点元素;
从所述多个节点元素中确定所述目标异常节点元素和所述原始正常节点元素。
3.根据权利要求2所述的方法,其特征在于,所述从所述多个节点元素中确定所述目标异常节点元素和所述原始正常节点元素,包括:
获取每个节点元素的语法结构信息;
若所述语法结构信息符合标准结构信息,则将所述节点元素确定为所述原始正常节点元素;
若所述语法结构信息不符合标准结构信息,则将所述节点元素确定为所述目标异常节点元素。
4.根据权利要求3所述的方法,其特征在于,所述对所述目标异常节点元素进行格式化处理,得到目标正常节点元素,包括:
按照所述标准结构信息对所述目标异常节点元素进行格式化处理,得到所述目标正常节点元素,其中,所述格式化处理包括节点元素替换、节点元素增加或节点元素删除。
5.根据权利要求1所述的方法,其特征在于,所述将所述原始正常节点元素和所述目标正常节点元素转化为目标代码信息,包括:
根据抽象语法结构与代码之间的映射关系,将所述原始正常节点元素和所述目标正常节点元素还原为目标代码;
按照节点元素的节点位置,将所述目标代码写入对应的代码位置,生成所述目标代码信息。
6.根据权利要求1所述的方法,其特征在于,所述将所述目标代码信息合入主干代码信息,包括:
将所述目标代码信息提交至目标服务平台,以覆盖历史代码信息;
通过所述目标服务平台,将所述目标代码信息合入所述主干代码信息。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述将所述原始正常节点元素和所述目标正常节点元素转化为目标代码信息之后,所述方法还包括:
根据所述原始正常节点元素、所述目标正常节点元素以及目标代码信息,生成异常代码修复报告;
将所述异常代码修复报告发送至目标终端设备。
8.一种持续集成代码格式的处理装置,其特征在于,包括:
获取单元,用于获取异常原始代码信息;
处理单元,用于对所述异常原始代码信息进行抽象语法树解析,得到所述异常原始代码信息的抽象语法结构树状表示,其中,抽象语法结构树状表示包括多个节点元素;
确定单元,用于从所述多个节点元素中确定目标异常节点元素和原始正常节点元素;
所述处理单元,还用于对所述目标异常节点元素进行格式化处理,得到目标正常节点元素;
所述处理单元,还用于将所述原始正常节点元素和所述目标正常节点元素转化为目标代码信息;
所述处理单元,还用于将所述目标代码信息合入主干代码信息。
9.一种计算机设备,其特征在于,包括:存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序时实现如权利要求1至7中任一项所述的方法;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
10.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至7中任一项所述的方法。
CN202111308528.1A 2021-11-05 2021-11-05 一种持续集成代码格式的处理方法、相关装置及设备 Pending CN116088846A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111308528.1A CN116088846A (zh) 2021-11-05 2021-11-05 一种持续集成代码格式的处理方法、相关装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111308528.1A CN116088846A (zh) 2021-11-05 2021-11-05 一种持续集成代码格式的处理方法、相关装置及设备

Publications (1)

Publication Number Publication Date
CN116088846A true CN116088846A (zh) 2023-05-09

Family

ID=86185569

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111308528.1A Pending CN116088846A (zh) 2021-11-05 2021-11-05 一种持续集成代码格式的处理方法、相关装置及设备

Country Status (1)

Country Link
CN (1) CN116088846A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116627402A (zh) * 2023-07-19 2023-08-22 云筑信息科技(成都)有限公司 一种基于React在低代码平台中实现自定义组件配置化的方法
CN117573235A (zh) * 2024-01-17 2024-02-20 山东浪潮数据库技术有限公司 一种持续集成构建配置管理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116627402A (zh) * 2023-07-19 2023-08-22 云筑信息科技(成都)有限公司 一种基于React在低代码平台中实现自定义组件配置化的方法
CN116627402B (zh) * 2023-07-19 2023-10-20 云筑信息科技(成都)有限公司 一种基于React在低代码平台中实现自定义组件配置化的方法
CN117573235A (zh) * 2024-01-17 2024-02-20 山东浪潮数据库技术有限公司 一种持续集成构建配置管理方法

Similar Documents

Publication Publication Date Title
CN110928772B (zh) 一种测试方法及装置
US10621211B2 (en) Language tag management on international data storage
US20020188890A1 (en) System and method for testing an application
CN116088846A (zh) 一种持续集成代码格式的处理方法、相关装置及设备
CN111324619B (zh) 微服务系统中的对象更新方法、装置、设备和存储介质
CN114138244A (zh) 模型类文件自动生成方法、装置、存储介质及电子设备
CN111930489B (zh) 一种任务调度方法、装置、设备及存储介质
US10310961B1 (en) Cognitive dynamic script language builder
CN114564726A (zh) 一种基于大数据办公的软件漏洞分析方法及系统
CN114385148A (zh) 一种实现联动功能的方法、装置、设备和存储介质
CN111796855B (zh) 一种增量版本更新方法、装置、存储介质及计算机设备
CN113515303A (zh) 一种项目转型方法、装置和设备
CN112632333A (zh) 查询语句生成方法、装置、设备及计算机可读存储介质
CN111966382A (zh) 机器学习模型的在线部署方法、装置及相关设备
CN111913706B (zh) 一种调度自动化系统拓扑构建方法、存储介质和计算设备
CN114296726A (zh) 一种代码生成方法、装置、计算机设备和存储介质
CN110321130B (zh) 基于系统调用日志的不可重复编译定位方法
CN115705297A (zh) 代码调用检测方法、装置、计算机设备以及存储介质
CN117171800B (zh) 一种基于零信任防护体系的敏感数据识别方法及装置
Perera et al. A traceability management framework for artefacts in self-adaptive systems
US20230315399A1 (en) Instinctive Cipher Compilation and Implementation
CN117056637B (zh) 无障碍网页生成方法、装置、计算机设备和存储介质
RU2385485C1 (ru) Система и способ контроля за выполнением программ с помощью трассировки бинарных приложений
CN113626423B (zh) 业务数据库的日志管理方法、装置、系统
US20220244975A1 (en) Method and system for generating natural language content from recordings of actions performed to execute workflows in an application

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