一种基于服务器诊断的代码管控方法、设备及存储介质与流程

文档序号:30930613发布日期:2022-07-30 00:25阅读:54来源:国知局
一种基于服务器诊断的代码管控方法、设备及存储介质与流程

1.本技术涉及编程技术领域,尤其涉及一种基于服务器诊断的代码管控方法、设备及存储介质。


背景技术:

2.版本控制在软件开发领域有着极其重要的作用,主要是实现对代码的管控,以解决代码冲突、代码备份等问题,从而提高软件开发的效率。目前比较常规的管控方法是仅仅借助svn(subversion,开放源代码的版本控制系统)工具完成代码的提交和备份。关于代码的规范性没有一个统一的定义,也未能定义有效的发布和回退机制,这些工作人工干预的部分比较多一些。
3.通过较多的人工介入实现代码管控,对实施人员的技术要求比较高,且容易出错。由于代码的变更与发布频率较高,而人工发布程序繁琐,无法实现安全生产与降本增效的宗旨。


技术实现要素:

4.本技术实施例提供了一种基于服务器诊断的代码管控方法、设备及存储介质,用以解决现有的人工代码管控程序繁琐、效率较低的技术问题。
5.一方面,本技术实施例提供了一种基于服务器诊断的代码管控方法,所述方法包括:在服务器上拉取最新版本代码,对所述最新版本代码进行新增或修改操作;对新增或修改后的代码进行规范性及鲁棒性检查;对多个所述新增或修改后的代码进行版本合并;生成版本合并后的更新程序包,并同步至各个工厂生产服务器。
6.在本技术的一种实现方式中,所述方法还包括:在进行所述新增或者修改操作之前,将所拉取的所述最新版本代码锁定,并对所述版本合并后形成的代码解锁。
7.在本技术的一种实现方式中,在服务器上拉取最新版本代码之前,所述方法还包括:获取本次项目的所有配置项;其中,所述配置项用于管理所有开发人员对代码的访问控制权限,所述配置项包括:拉取代码、新增代码、修改代码、删除代码;确定当前开发人员所需要的配置项,并将多余的配置项删除。
8.在本技术的一种实现方式中,所述对新增或修改后的代码进行规范性及鲁棒性检查,具体为:捕获异常代码并退回;检测代码是否满足系统预期,若不满足则退回;检测代码是否按照预设布局方式进行布局,若不是按照预设布局方式布局,则重新布局;检测代码命名是否预设命名规范一致,若不一致则按预设命名规则重新命名。
9.在本技术的一种实现方式中,在检测代码命名是否与预设命名规范一致之后,所述方法还包括:确定本次项目涉及的所有第三方库;基于本次项目要实现的功能,从所述所有第三方库中匹配最优方案。
10.在本技术的一种实现方式中,所述对多个所述新增或修改后的代码进行版本合并,具体为:将第一版本的内容附加至第二版本中和/或合并第一版本以及第二版本的内容
形成第三版本。
11.在本技术的一种实现方式中,使用svn工具合并版本,从工作目录中拉取对应的代码文件;其中,所述代码文件包括:无需编译的shell脚本、需要编译的python脚本、配置文件以及刷新工具。
12.在本技术的一种实现方式中,所述方法还包括:登录各个工厂系统服务器,检测当前用于生产的程序版本;将当前用于生产的程序进行备份;在所述更新程序包同步出现异常时,中断升级进程并退回至当前用于生产的程序版本。
13.另一方面,本技术实施例还提供了一种基于服务器诊断的代码管控设备,所述设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:在服务器上拉取最新版本代码,对所述最新版本代码进行新增或修改操作;对新增或修改后的代码进行规范性及鲁棒性检查;对多个所述新增或修改后的代码进行版本合并;生成版本合并后的更新程序包,并同步至各个工厂生产服务器。
14.另外,本技术实施例还提供了基于服务器诊断的代码管控的非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令设置为:在服务器上拉取最新版本代码,对所述最新版本代码进行新增或修改操作;对新增或修改后的代码进行规范性及鲁棒性检查;对多个所述新增或修改后的代码进行版本合并;生成版本合并后的更新程序包,并同步至各个工厂生产服务器。
15.本技术实施例提供的一种基于服务器诊断的代码管控方法,通过自动化的流程实现代码提交、代码规范检查、合并版本分支等过程,解决了当前规模日益庞大且不断创新研制的产品库,需要实时升级诊断系统的难题。通过代码管控有效解决版本的同步以及不同开发者之间协作开发的冲突。通过检查代码的规范性以及鲁棒性,保证了代码可以正常运行。通过锁定编写有效解决了版本的同步以及不同开发者之间协作开发的冲突,检查提交的代码是否符合预先定义的规范,保证了代码运行的准确率,且能够通过版本备份,在升级异常时,快速回退到原始版本,减少了人工方式干预造成的低效率以及低准确率。
附图说明
16.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
17.图1为本技术实施例提供的一种基于服务器诊断的代码管控方法流程图;
18.图2为本技术实施例提供的检测代码规范性和鲁棒性方法流程图;
19.图3为本技术实施例提供的一种基于服务器诊断的代码管控设备示意图。
具体实施方式
20.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
21.版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更
的管理,是软件配置管理的核心思想之一。对于一个规模庞大且应用成熟的软件系统来说,通常是由一个团队协助完成日常的功能开发与程序漏洞的修复。
22.在开发的过程中,可能会遇到以下场景:多名成员同时修改提交同一个文件,可能会因为没有及时有效的沟通,造成修改内容的冲突,给代码的合并带来很大的困难;在已经发布的程序中添加新的功能,测试验证后没有问题,才能提交发布。在测试验证期间,为了不影响系统的正常运行,需要备份多份源代码。而版本控制思想就是为了解决上述问题而提出的。在互联网的发展过程中,版本控制有着举足轻重的地位。使用有效的版本控制,能够大大提升软件开发的效率。
23.为了应对规模庞大且不断创新研制的产品库,需要实时升级诊断系统,并且实时同步到不同工厂,因此代码的升级和发布就显得尤为重要。本技术是在使用svn的基础上,定义一套代码管控和发布自动化流程,记录代码和文档的变更历史,有效解决版本的同步以及不同开发者之间协作开发的冲突,检查提交的代码是否符合预先定义的规范。
24.目前,比较常规的管控方法是仅仅借助svn工具完成代码的提交和备份。关于代码的规范性没有一个统一的定义,也未能定义有效的发布和回退机制,这些工作人工干预的部分比较多一些。通过较多的人工介入实现代码管控,对实施人员的技术要求比较高,且容易出错。由于代码的变更与发布频率较高,而人工发布程序繁琐,无法实现安全生产与降本增效的宗旨。
25.本技术实施例提供了一种基于服务器诊断的代码管控方法,用以解决现有的人工代码管控程序繁琐、效率较低的技术问题。
26.下面通过附图对本技术实施例提出的技术方案进行详细的说明。
27.图1为本技术实施例提供的一种基于服务器诊断的代码管控方法流程图。如图1所示,该方法主要包括以下步骤:
28.步骤101、拉取最新版本代码,对最新版本代码进行新增或修改操作。
29.在本技术实施例中,编写代码之前首先通过svn客户端,从服务器上拉取最新版本的代码,然后在最新版本的基础上进行新增或修改,以实现本次程序开发所需要的功能。
30.在开发人员进行代码变更操作之后,系统会自动生成代码变更的日志,以记录代码变更的历史,方便开发人员及时知悉代码变更情况。
31.本技术实施例中,软件开发人员对源代码的修改不能在svn服务器中进行,需要依赖基本的文件系统,然后在各自的工作空间下进行程序编写。svn服务器定义了不同的访问控制权限,这些访问控制权限,就是通过相应项目的配置项来完成的。这可以使得团队的协作开发更具效率和安全性。
32.具体来说,配置项包括:拉取代码、新增代码、修改代码、删除代码。有的开发人员可能仅需要拉取代码进行查看,并不一定需要对代码进行实际的编写或者增删查改,那么管理人员获取到该开发人员的实际需求后,可以将其余的配置项删除,仅保留拉取代码这一个权限即可。有的开发人员可能需要拉取代码并进行新增修改,那就保留相应的配置项权限,把多余的配置项删除。
33.在本身的一个实施例中,开发人员在从服务器上拉取最新版本的代码后,后台系统自动将拉取完成后的代码进行锁定,然后开发人员在锁定后的最新版本上进行新增或者修改代码,完成程序编写操作后,再将代码进行解锁。
34.由于编程操作是一个中心化的,相当于把代码放到服务器里,同一个团队会从这服务器里拉取代码,更新代码,然后上传代码。当多个人同时操作一个代码,如果事前没有进行沟通,所有的开发人员同时把这个代码提交上去,有的修改了一部分,有的修改了另一个部分,这两个部分正好是有内容重叠,这样就会产生一个冲突,后提交的会把先提交的给覆盖掉。增加锁定操作之后别人就不允许提交了,只能先进行开发的人员提交之后解锁放开,然后别人才能进行修改代码,提交代码。锁定和解锁操作相对于没有锁定,是一个较优的实施例,若没有设置锁定操作,也是能够实现编程操作的。
35.本技术实施例中,还可以通过同步控制来实现确保不同的开发人员并发执行代码修改不会发生混乱和冲突,同步控制的实质是版本的检入检出控制。检入就是把软件配置项从用户的工作环境存入到软件配置库的过程,检出就是把软件配置项从软件配置库中取出的过程。检入是检出的逆过程。
36.步骤102、检查修改后代码的规范性及鲁棒性。
37.本技术实施例中,在完成代码新增或者修改之后,预先定义的钩子函数,会监控到代码发生变化,然后根据版本变更日志自动将发生变更的代码文件同步到指定工作目录,钩子函数实际上是一种消息处理机制,通过这种机制可以监视某种消息,而且被监视的消息可以使用其他进程创建的。当被监视的消息到达时,钩子函数机制允许操作系统拦截处理这类消息或事件。
38.本技术实施例中,在完成代码编写之后,需要对代码进行行规范性和鲁棒性检查,确保代码能够正常运行,鲁棒性在编程操作里是指程序在遇到规范之外的输入错误和异常时仍能正常运行的能力。简单来说,鲁棒性强的代码的适应性很强,不会因为一些异常就导致程序崩溃,因此要对编写完的代码进行规范性和鲁棒性检查。图2为本技术实施例提供的检测代码规范性和鲁棒性方法流程图,如图2所示,具体通过以下操作步骤来完成检测:
39.步骤1021、检测代码是否存在异常,捕获异常代码。
40.对于异常的代码不做捕获处理,不仅导致功能与预期不符,甚至会导致系统中断,影响正常生产。捕获异常处理是代码里的一种规范,不是一个强制的要求,但如果加上捕获异常这种机制会令代码更加安全健壮性更好。随便不加这个代码,正常代码也能正常执行,错误的代码就会直接报错。也就是说加上捕获处理机制,正常代码还是会正常执行,错误代码就会被这个机制捕捉到,捕获之后把错误代码挑出来,给管理者以提示,不至于发生代码混乱,导致程序无法继续运行。
41.步骤1022、检查代码是否满足系统预期。
42.如果输入不满足系统预期,要尽早退回,或是主动报错。这里的输入包括接口的返回结果或者函数的参数等。例如当输入一串数字的时候,可以通过预先设定的规范来判断是否是输入的身份证号码,如果输入的一串数字是连续数字或者是重复性较高的话,就显然不是身份证号码,这样就不能满足输入身份证这个系统预期,因此系统可以将代码进行返回或者报错。
43.步骤1023、检测代码布局。
44.代码布局要有层次性,要按照预设的布局方式进行布局,即便是对于shell语法这种不要求强制缩进的代码,也要依照相应的逻辑,并按照预设的布局方式进行布局,以方便代码的阅读和修改。
45.步骤1024、检测代码的命名方式是否规范。
46.命名规范是指对参数变量、函数名等的命名方式要符合规范性和一致性,按照预设的命名方式进行命名。规范的命名方式能够大大提升阅读代码和编写代码的效率。
47.步骤1025、检测第三方库的选择是否合理。
48.第三方库是开源的社区,里面会有很多程序开发人员贡献的其他开源的功能,以及复杂的操作代码。类似第三方库会有很多,本次项目开发人员可以选择合理的第三方库作为参考,以防止出现重复的造轮子,确保项目功能的合理实现。具体选择过程可以是,选择相应第三方库中,下载量最大的一个。下载量能够反映出该方案相对来说是优选的。系统进行代码规范性和鲁棒性检查,要检测本次开发所用到的第三方库是否合理。
49.本技术实施例中,通过相应的程序定时扫描工作目录的代码,按照定制好的规范检查代码的规范性和鲁棒性,生成报告通过邮件发送给代码管理者,代码管理者检查、核对后,将检查结果通报给代码提交者。对于代码中存在的,会影响到代码发布的重大问题,可以及时检测出来,并通知开发人员尽快解决问题,以保证程序正常运行。对于不符合编写规范的情况,提醒开发人员在下一次提交时修正这个问题,但不会影响到本次代码的正常发布。
50.步骤103、对多个新增或修改后的代码进行版本合并。
51.本技术实施例中,主要通过两种方式来完成版本合并:将第一版本的内容附加到第二版本上,还可以通过将第一版本和第二版本的内容进行合并以形成一个第三版本。
52.版本合并主要是解决由于锁定不及时,造成多个开发人员同时提交代码导致的冲突,形成了在主干上的多个分支,通过版本合并可以将两个分支合并成为一个正常的主干。
53.本技术实施例会根据代码编写过程中产生的日志文件以及版本分支情况,使用svn工具合并版本的分支,并统计本次需要迭代发布的版本序列,从工作目录中拉取对应的代码文件,代码文件包括:无需编译的shell脚本、需要编译的python脚本、配置文件以及刷新工具。对于无需编译的shell脚本以及配置文件以及刷新工具,直接按目录层级压缩至待发布的版本包中即可。对于需要编译的python脚本编译完成后再压缩至待发布的版本包中。
54.步骤104、生成版本合并后的更新程序包,并同步至各个工厂生产服务器。
55.本技术实施例中,使用ssh(secure shell,远程登录会话和其他网络服务提供安全性协议)方式自动登录各个工厂的系统服务器,然后将当前用于生产的程序版本进行监测,然后自动备份该版本的程序。
56.进一步地,使用sftp(secret file transfer protocol,安全文件传送协议)将经过编写、新增修改、备份、规范性鲁棒性检测的的代码文件生成更新程序包。然后将更新程序包中的代码文件覆盖在当前版本程序上,完成升级操作,之后的生产使用最新版本的程序。
57.需要说明的是,在更新程序包覆盖过程中,出现异常或失败时,系统自动中断当前升级进程,并退回至备份的正在使用的程序,以免影响正常的生产。
58.本技术实施例提供的一种基于服务器诊断的代码管控方法,通过自动化的流程实现代码提交、代码规范检查、合并版本分支等过程,解决了当前规模日益庞大且不断创新研制的产品库,需要实时升级诊断系统的难题。通过代码管控有效解决版本的同步以及不同
开发者之间协作开发的冲突。通过检查代码的规范性以及鲁棒性,保证了代码可以正常运行。通过锁定编写有效解决了版本的同步以及不同开发者之间协作开发的冲突,检查提交的代码是否符合预先定义的规范,保证了代码运行的准确率,且能够通过版本备份,在升级异常时,快速回退到原始版本,减少了人工方式干预造成的低效率以及低准确率。
59.以上是本技术实施例提供的一种基于服务器诊断的代码管控方法,基于同样的发明构思,本技术实施例还提供了一种基于服务器诊断的代码管控设备,图3为本技术实施例提供的一种基于服务器诊断的代码管控设备示意图,如图3示,该设备主要包括:至少一个处理器301;以及,与至少一个处理器通信连接的存储器302;其中,存储器302存储有可被至少一个处理器301执行的指令,指令被至少一个处理器301执行,以使至少一个处理器301能够完成:在服务器上拉取最新版本代码,对所述最新版本代码进行新增或修改操作;对新增或修改后的代码进行规范性及鲁棒性检查;对多个所述新增或修改后的代码进行版本合并;生成版本合并后的更新程序包,并同步至各个工厂生产服务器。
60.除此之外,本技术实施例还提供了一种基于服务器诊断的代码管控的非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令设置为:在服务器上拉取最新版本代码,对所述最新版本代码进行新增或修改操作;对新增或修改后的代码进行规范性及鲁棒性检查;对多个所述新增或修改后的代码进行版本合并;生成版本合并后的更新程序包,并同步至各个工厂生产服务器。
61.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
62.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
63.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
64.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
65.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
66.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包
括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
67.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1