一种代码持续集成的方法及装置与流程

文档序号:14860244发布日期:2018-07-04 06:47阅读:209来源:国知局
一种代码持续集成的方法及装置与流程

本发明涉及持续集成技术领域,尤其涉及一种代码持续集成的方法及装置。



背景技术:

随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题,如何能在不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。

持续集成正是针对这一类问题的一种软件开发实践,它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成,而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。

在持续集成软件开发的项目中,代码库中的代码可能会经常被修改,在某些情况下,如果项目组成员将未经过检视的代码编写到代码库中,则项目经理以及关注代码库的相关人员并不能第一时间知晓代码库中代码的变化情况,项目经理或者关注代码库的相关人员,只能不定期的到代码库中查看代码,并确定代码库中代码的变化情况,此种方式不但效率低下,而且若项目经理或者关注代码库的相关人员未及时发现代码库中的代码修改,还可能导致代码质量缺陷以及实现功能有偏差等问题。

综上所述,现有技术中通过不定期到代码库中查看代码是否发生变化的方式,不仅效率低下,而且可能因未及时发现代码库中的代码修改,导致代码质量缺陷以及实现功能有偏差等问题。



技术实现要素:

本发明实施例提供了一种代码持续集成的方法及装置,用以在代码库内目标对象中的代码被修改时,及时通知订阅代码库的用户,提高用户发现目标对象中代码被修改的效率,避免因未经过检视的代码编写到代码库中所导致的代码质量缺陷以及实现功能有偏差的问题。

本发明实施例提供的一种代码持续集成的方法,该方法包括:检测代码库内目标对象中的代码是否被修改,其中,所述目标对象包括代码库中的文件和/或文件夹;在检测到所述目标对象中的代码被修改的条件下,获取所述目标对象中的代码,并将所述目标对象中的代码与预先存储的所述目标对象中修改前的代码进行比对,生成比对结果;在根据所述比对结果确定所述目标对象中的代码发生变化的条件下,将所述比对结果发送至订阅所述目标对象的用户。

本发明实施例提供的上述方法中,通过检测代码库内目标对象中的代码是否被修改,在检测到目标对象中的代码被修改的条件下,获取目标对象中的代码,并将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果,在根据比对结果确定目标对象中的代码发生变化的条件下,将比对结果发送至订阅目标对象的用户,也即在目标对象中的代码发生变化时,及时将目标对象中代码的变化情况发送至订阅目标对象的用户,使得订阅目标对象的用户能够及时获知目标对象中的代码发生变化,与现有技术中通过不定期到代码库中查看代码是否发生变化的方式相比,不仅提高了用户发现目标对象中代码被修改的效率,而且能够避免因未经过检视的代码编写到代码库中所导致的代码质量缺陷以及实现功能有偏差的问题。

在一种可能的实施方式中,本发明实施例提供的上述方法中,该方法还包括:将用于触发登录所述代码库查看目标对象中代码的链接地址发送至订阅所述目标对象的用户。

在一种可能的实施方式中,本发明实施例提供的上述方法中,所述将所述比对结果发送至订阅所述目标对象的用户,包括:根据预先存储的订阅列表以及所述目标对象,确定订阅所述目标对象的用户,并将所述比对结果发送至确定出的用户,其中,所述订阅列表中存储有每个目标对象与订阅该目标对象的用户之间的对应关系。

在一种可能的实施方式中,本发明实施例提供的上述方法中,所述根据所述比对结果确定所述目标对象中的代码发生变化,包括:判断所述比对结果中是否仅包含在代码中增加和/或删除预设字符,若判定结果为否,则确定目标对象中的代码发生变化。

在一种可能的实施方式中,本发明实施例提供的上述方法中,所述预设字符包括以下一种或多种:空格符、制表符以及换行符。

由于在代码中增加和/或删除空格符、制表符以及换行符时,通常不认为代码发生变化,但是增加和/或删除空格符、制表符以及换行符,属于代码被修改的情况,因此,本发明实施例提供的上述方法中,在将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果之后,判断比对结果中是否仅包含在代码中增加和/或删除预设字符,其中,预设字符包括以下一种或多种:空格符、制表符以及换行符,若判定结果为是,则确定目标对象中的代码未发生变化,若判定结果为否,则确定目标对象中的代码发生变化,而只有在确定目标对象中的代码发生变化时,才向订阅目标对象的用户发送对比结果,避免了向订阅目标对象的用户发送仅增加和/或删除空格符、制表符以及换行符的无效修改信息。

本发明实施例提供的一种代码持续集成的装置,该装置包括:检测单元,用于检测代码库内目标对象中的代码是否被修改,其中,所述目标对象包括代码库中的文件和/或文件夹;处理单元,用于在检测到所述目标对象中的代码被修改的条件下,获取所述目标对象中的代码,并将所述目标对象中的代码与预先存储的所述目标对象中修改前的代码进行比对,生成比对结果;判断单元,用于根据所述比对结果确定所述目标对象中的代码是否发生变化,以及在根据所述比对结果确定所述目标对象中的代码发生变化的条件下,通知发送单元将所述比对结果发送至订阅所述目标对象的用户;所述发送单元,用于将所述比对结果发送至订阅所述目标对象的用户。

本发明实施例提供的上述装置中,通过检测代码库内目标对象中的代码是否被修改,在检测到目标对象中的代码被修改的条件下,获取目标对象中的代码,并将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果,在根据比对结果确定目标对象中的代码发生变化的条件下,将比对结果发送至订阅目标对象的用户,也即在目标对象中的代码发生变化时,及时将目标对象中代码的变化情况发送至订阅目标对象的用户,使得订阅目标对象的用户能够及时获知目标对象中的代码发生变化,与现有技术中通过不定期到代码库中查看代码是否发生变化的方式相比,不仅提高了用户发现目标对象中代码被修改的效率,而且能够避免因未经过检视的代码编写到代码库中所导致的代码质量缺陷以及实现功能有偏差的问题。

在一种可能的实施方式中,本发明实施例提供的上述装置中,所述发送单元,还用于:将用于触发登录所述代码库查看目标对象中代码的链接地址发送至订阅所述目标对象的用户。

在一种可能的实施方式中,本发明实施例提供的上述装置中,所述发送单元,具体用于:根据预先存储的订阅列表以及所述目标对象,确定订阅所述目标对象的用户,并将所述比对结果发送至确定出的用户,其中,所述订阅列表中存储有每个目标对象与订阅该目标对象的用户之间的对应关系。

在一种可能的实施方式中,本发明实施例提供的上述装置中,所述判断单元根据所述比对结果确定所述目标对象中的代码是否发生变化,具体用于:判断所述比对结果中是否仅包含在代码中增加和/或删除预设字符,若判定结果为是,则确定所述目标对象中的代码未发生变化,若判定结果为否,则确定目标对象中的代码发生变化。

在一种可能的实施方式中,本发明实施例提供的上述装置中,所述预设字符包括以下一种或多种:空格符、制表符以及换行符。

由于在代码中增加和/或删除空格符、制表符以及换行符时,通常不认为代码发生变化,但是增加和/或删除空格符、制表符以及换行符,属于代码被修改的情况,因此,本发明实施例提供的上述方法中,在将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果之后,判断比对结果中是否仅包含在代码中增加和/或删除预设字符,其中,预设字符包括以下一种或多种:空格符、制表符以及换行符,若判定结果为是,则确定目标对象中的代码未发生变化,若判定结果为否,则确定目标对象中的代码发生变化,而只有在确定目标对象中的代码发生变化时,才向订阅目标对象的用户发送对比结果,避免了向订阅目标对象的用户发送仅增加和/或删除空格符、制表符以及换行符的无效修改信息。

附图说明

图1为本发明实施例提供的一种代码持续集成的方法的示意流程图;

图2为本发明实施例提供的一种代码持续集成的方法的具体流程的示意流程图;

图3为本发明实施例提供的一种代码持续集成的装置的结构示意图。

具体实施方式

下面结合附图,对本发明实施例提供的一种代码持续集成的方法及装置的具体实施方式进行详细地说明。

需要说明的是,本发明实施例提供的代码持续集成的方法,主要针对java代码,代码库不仅支持svn代码库和git代码库,还支持vss代码库。

本发明实施例提供的一种代码持续集成的方法,如图1所示,该方法包括:

步骤102,检测代码库内目标对象中的代码是否被修改,其中,目标对象包括代码库中的文件和/或文件夹。

本步骤中,检测代码库内目标对象中的代码是否被修改,也即实时监测代码库内目标对象中的代码是否被修改,或者以较短的周期(例如:5分钟)监测代码库内目标对象中的代码是否被修改,具体实施时,可以采用现有技术中的方式,此处不再赘述。

需要说明的是,目标对象为代码库中的文件时,目标对象中的代码被修改,是指文件中记录代码的增加和/或删除,而当目标对象为代码库中的文件夹时,目标对象中的代码被修改,不仅包括文件夹内记录代码的文件中的代码的增加和/或删除,还包括文件夹中记录代码的文件的增加和/或删除。

步骤104,在检测到目标对象中的代码被修改的条件下,获取目标对象中的代码,并将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果。

本步骤中,在检测到目标对象中的代码被修改的条件下,获取目标对象中的代码,也即获取目标对象中修改后的代码,具体实施时,本发明实施例利用jenkins的自动构建功能,预先配置jenkins持续集成环境,在目标对象中的代码被修改的条件下,立即触发构建,获取目标对象中修改后的代码。

值得说明的是,在检测到目标对象中的代码被修改的条件下,获取目标对象中的代码,当目标对象为代码库内的文件时,获取目标对象中的代码,即获取文件中记录的代码,当目标对象为代码库内的文件夹时,获取目标对象中的代码包括获取文件夹中记录代码的文件以及文件中记录的代码。

本发明实施例中,获取目标对象中修改后的代码之后,将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果,具体比对时,是将获取到的目标对象中修改后的源代码与预先存储的目标对象中修改前的源代码进行逐行对比,得到修改后的源代码相比于修改前的源代码增加和/或删除的内容,生成比对结果。当然,本领域技术人员应当理解的是,目标对象为代码库内的文件夹时,不仅需要将文件夹内每个文件中记录的代码进行逐行比对,还要对文件夹中记录代码的文件进行逐个比对,以确定是否增加和/或删除记录代码的文件。

需要说明的是,本发明实施例中需要存储每个版本(也即每次修改后)目标对象中的代码,以在目标对象中的代码被修改之后进行比对使用。当然,具体存储时,可以每个版本目标对象中的代码均存储,为了节省存储空间,也可以在每次存储时,覆盖上一次存储的内容。

步骤106,在根据比对结果确定目标对象中的代码发生变化的条件下,将比对结果发送至订阅目标对象的用户。

本步骤中,在根据比对结果确定目标对象中的代码发生变化的条件下,将比对结果发送至订阅目标对象的用户,当然,在根据比对结果确定目标对象中的代码未发生变化的条件下,则不将比对结果发送至订阅目标对象的用户。

具体实施时,根据比对结果确定目标对象中的代码发生变化,包括:判断比对结果中是否仅包含在代码中增加和/或删除预设字符,若判定结果为否,则确定目标对象中的代码发生变化。当然,若判定结果为是,则确定目标对象中的代码未发生变化,其中,预设字符包括以下一种或多种:空格符、制表符以及换行符。

具体来说,由于在代码中增加和/或删除空格符、制表符以及换行符时,通常不认为代码发生变化,但是增加和/或删除空格符、制表符以及换行符,属于代码被修改的情况,因此,本发明实施例在将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果之后,判断比对结果中是否仅包含在代码中增加和/或删除预设字符,若判定结果为是,则确定目标对象中的代码未发生变化,若判定结果为否,则确定目标对象中的代码发生变化,而只有在确定目标对象中的代码发生变化时,才向订阅目标对象的用户发送对比结果,避免了向订阅目标对象的用户发送仅增加和/或删除空格符、制表符以及换行符的无效修改信息。

当然,本领域技术人员应当理解的是,预设字符包括但不限于:空格符、换行符以及制表符,还可以包括一些其它的符号,只要在代码中增加和/或删除这些符号对程序无影响即可。

具体实施时,将比对结果发送至订阅目标对象的用户,包括:根据预先存储的订阅列表以及目标对象,确定订阅目标对象的用户,并将比对结果发送至确定出的用户,其中,订阅列表中存储有每个目标对象与订阅该目标对象的用户之间的对应关系。

值得说明的是,针对每个目标对象,订阅列表中存储该目标对象与订阅该目标对象的用户之间的对应关系,其中,在订阅列表中,目标对象可以使用目标对象的标识来表示,目标对象的标识用于唯一标识一个目标对象,其可以是目标对象的名称,也可以是用户自定义的标识,例如:目标对象a、目标对象b等,较为优选地,目标对象的标识即为目标对象的名称,在目标对象的标识与订阅目标对象的用户之间是一种多对多的关系,具体来说,一个用户可以订阅多个目标对象,一个目标对象也可以被多个用户订阅。

由于订阅列表中存储有每个目标对象与订阅该目标对象的用户之间的对应关系,因此,在获知被修改的目标对象之后,即可根据预先存储的订阅列表以及目标对象,确定订阅被修改的目标对象的用户,并将比对结果发送至确定出的用户。具体将比对结果发送至确定出的用户时,可以采用邮件的方式,也可以采用其系统通知消息的方式,当然,在本发明其它实施例中,还可以采用其它的通知方式,本发明对此不做限定。较为优选地,使用邮件的方式通知订阅目标对象的用户。

本发明实施例提供的方法中,通过检测代码库内目标对象中的代码是否被修改,在检测到目标对象中的代码被修改的条件下,获取目标对象中的代码,并将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果,在根据比对结果确定目标对象中的代码发生变化的条件下,将比对结果发送至订阅目标对象的用户,也即在目标对象中的代码发生变化时,及时将目标对象中代码的变化情况发送至订阅目标对象的用户,使得订阅目标对象的用户能够及时获知目标对象中的代码发生变化,与现有技术中通过不定期到代码库中查看代码是否发生变化的方式相比,不仅提高了用户发现目标对象被修改的效率,而且能够避免因未经过检视的代码编写到代码库中所导致的代码质量缺陷以及实现功能有偏差的问题。

较为优选地,该方法还包括:将用于触发登录代码库查看目标对象中代码的链接地址发送至订阅目标对象的用户。

具体实施时,将用于触发登录代码库查看目标对象中代码的链接地址发送至订阅目标对象的用户,使得用户可以通过点击链接地址,进入代码库查看目标对象中被修改的代码。当然,本领域技术人员应当理解的是,用户进入代码库需要经过身份认证,而且每个用户具有不同的查看权限,用户通过身份认证进入代码库之后,可以在自身权限范围内查看代码库内目标对象中的代码,方便用户查看目标对象中修改后的详细代码。

下面结合图2对本发明实施例提供的代码持续集成的方法进行详细说明。如图2所示,目标对象以代码库中的某个文件为例进行说明,本发明实施例提供的代码持续集成的方法的具体步骤,包括:

步骤202,配置jenkins,以在代码库内文件中的代码被修改时,获取文件中的代码;

步骤204,检测代码库内文件中的代码被修改,若文件中的代码被修改,执行步骤206,否则,执行步骤214;

步骤206,在文件中的代码被修改的条件下,获取文件中的代码;

步骤208,将获取到的文件中的代码与预先存储的文件中修改前的代码进行比对,生成比对结果;

步骤210,判断比对结果中是否仅包含在代码中增加和/或删除预设字符,若是,则执行步骤214,否则,执行步骤212;

步骤212,将比对结果以及用于触发登录代码库查看文件中代码的链接地址发送至订阅文件的用户;

步骤214,在文件中代码未被修改,或者根据比对结果中确定文件中代码的修改仅包含在代码中增加和/或删除预设字符时,不做任何处理。

本发明实施例提供的一种代码持续集成的装置,如图3所示,该装置包括:检测单元302,用于检测代码库内目标对象中的代码是否被修改,其中,目标对象包括代码库中的文件和/或文件夹;处理单元304,用于在检测到目标对象中的代码被修改的条件下,获取目标对象中的代码,并将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果;判断单元306,用于根据比对结果确定目标对象中的代码是否发生变化,以及在根据比对结果确定目标对象中的代码发生变化的条件下,通知发送单元308将比对结果发送至订阅目标对象的用户;发送单元308,用于将比对结果发送至订阅目标对象的用户。

本发明实施例提供的装置中,通过检测代码库内目标对象中的代码是否被修改,在检测到目标对象中的代码被修改的条件下,获取目标对象中的代码,并将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果,在根据比对结果确定目标对象中的代码发生变化的条件下,将比对结果发送至订阅目标对象的用户,也即在目标对象中的代码发生变化时,及时将目标对象中代码的变化情况发送至订阅目标对象的用户,使得订阅目标对象的用户能够及时获知目标对象中的代码发生变化,与现有技术中通过不定期到代码库中查看代码是否发生变化的方式相比,不仅提高了用户发现目标对象中代码被修改的效率,而且能够避免因未经过检视的代码编写到代码库中所导致的代码质量缺陷以及实现功能有偏差的问题。

在一种可能的实施方式中,本发明实施例提供的装置中,发送单元308,还用于:将用于触发登录代码库查看目标对象中代码的链接地址发送至订阅目标对象的用户。

在一种可能的实施方式中,本发明实施例提供的装置中,发送单元308,具体用于:根据预先存储的订阅列表以及目标对象,确定订阅目标对象的用户,并将比对结果发送至确定出的用户,其中,订阅列表中存储有每个目标对象与订阅该目标对象的用户之间的对应关系。

在一种可能的实施方式中,本发明实施例提供的装置中,判断单元306根据比对结果确定目标对象中的代码是否发生变化,具体用于:判断比对结果中是否仅包含在代码中增加和/或删除预设字符,若判定结果为是,则确定目标对象中的代码未发生变化,若判定结果为否,则确定目标对象中的代码发生变化。

在一种可能的实施方式中,本发明实施例提供的装置中,预设字符包括以下一种或多种:空格符、制表符以及换行符。

由于在代码中增加和/或删除空格符、制表符以及换行符时,通常不认为代码发生变化,但是增加和/或删除空格符、制表符以及换行符,属于代码被修改的情况,因此,本发明实施例提供的方法中,在将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果之后,判断比对结果中是否仅包含在代码中增加和/或删除预设字符,其中,预设字符包括以下一种或多种:空格符、制表符以及换行符,若判定结果为是,则确定目标对象中的代码未发生变化,若判定结果为否,则确定目标对象中的代码发生变化,而只有在确定目标对象中的代码发生变化时,才向订阅目标对象的用户发送对比结果,避免了向订阅目标对象的用户发送仅增加和/或删除空格符、制表符以及换行符的无效修改信息。

本发明实施例提供的代码持续集成的装置,可以作为一个插件,集成在jenkins中,用于在代码库内目标对象中的代码发生变化时,及时通知订阅目标对象的用户,其中,检测单元302、处理单元304以及判断单元306均可以采用cpu处理器,发送单元308可以是邮件服务器等。

综上所述,本发明实施例提供的一种代码持续集成的方法及装置,通过检测代码库内目标对象中的代码是否被修改,在检测到目标对象中的代码被修改的条件下,获取目标对象中的代码,并将目标对象中的代码与预先存储的目标对象中修改前的代码进行比对,生成比对结果,在根据比对结果确定目标对象中的代码发生变化的条件下,将比对结果发送至订阅目标对象的用户,也即在目标对象中的代码发生变化时,及时将目标对象中代码的变化情况发送至订阅目标对象的用户,使得订阅目标对象的用户能够及时获知目标对象中的代码发生变化,不仅提高了用户发现目标对象中代码被修改的效率,而且能够避免因未经过检视的代码编写到代码库中所导致的代码质量缺陷以及实现功能有偏差的问题。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1