源代码文件推荐通知的制作方法

文档序号:24062372发布日期:2021-02-26 18:21
源代码文件推荐通知的制作方法
源代码文件推荐通知


背景技术:

[0001]
当分布式版本控制系统的用户对项目数据库中的源代码文件做出改变时,这些改变除影响用户修改的文件以外,可以影响其他源代码文件。在一些情况下,用户可能忘记对被改变影响的其他源代码文件做出对应的改变。例如,用户可以改变源代码文件在项目数据库中的文件系统位置,但没有改变引用该文件系统位置的另一源代码文件。当用户忘记更新其他文件时,在编译或运行时可能出现错误。


技术实现要素:

[0002]
根据本公开的一个方面,提供了一种计算设备,包括非易失性存储设备和处理器,处理器被配置为执行被存储在非易失性存储设备中的分布式版本控制系统。处理器可以被配置为:经由分布式版本控制系统,接收用于将一个或多个源代码文件的第一集合应用于项目数据库的拉取请求。响应于接收到拉取请求,处理器还可以被配置为:至少部分地基于推荐规则集来标识一个或多个源代码文件的第二集合,推荐规则集包括一个或多个关联规则,一个或多个关联规则针对被应用于训练项目数据库的多个训练拉取请求而被标识。推荐规则集可以至少部分地基于每个训练拉取请求的相应最后迭代而被确定。处理器还可以被配置为输出源代码文件推荐通知,该源代码文件推荐通知包括对一个或多个源代码文件的第二集合中的每个源代码文件的指示。
[0003]
提供本发明内容以简化形式介绍一些概念,这些概念将在下面的具体实施方式中进一步被描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中指出的任何或所有缺点的实施方式。
附图说明
[0004]
图1示出了根据本公开的一个实施例的示例计算设备的示意图,该示例计算设备包括被配置为执行分布式版本控制系统的处理器。
[0005]
图2示出了根据图1的实施例的示例分布式版本控制系统的示意图。
[0006]
图3示出了根据图1的实施例的对项目数据库的修改的示例描绘。
[0007]
图4示出了根据图1的实施例的示例源代码文件推荐通知。
[0008]
图5示出了根据图1的实施例的示例机器学习算法。
[0009]
图6示出根据图1的实施例的对关联规则集的示例确定。
[0010]
图7示出了可以由图1的计算设备执行的示例方法的流程图。
[0011]
图8示出了根据图7的实施例的训练机器学习算法的示例方法的流程图。
[0012]
图9示出了在执行图7的方法时,可以在一些实施例中执行的附加步骤。
[0013]
图10示出了示例计算环境的示意图,在该示例计算环境中可以实现图8的计算设备。
具体实施方式
[0014]
为了解决上述问题,提供了一种计算设备10。计算设备10可以包括非易失性存储设备12,并且还可以包括易失性存储设备14。计算设备10还可以包括处理器16,处理器16被配置为执行存储在非易失性存储设备12中的分布式版本控制系统30。计算设备10还可以包括输入设备套件18,输入设备套件18包括被可操作地耦合到处理器16的一个或多个输入设备20。一个或多个输入设备20可以包括下述的一个或多个:触摸屏、键盘、触控板、鼠标、按钮、麦克风、相机和/或加速度计。计算设备10还可以包括输出设备套件22,输出设备套件22可以包括被可操作地耦合到处理器16的一个或多个输出设备24。一个或多个输出设备24可以包括显示器26,显示器26被配置为显示分布式版本控制系统30的图形用户界面(gui)28。在一些实施例中,计算设备10可以包括其他输出设备,诸如一个或多个扬声器或触觉反馈设备。计算设备10的一些实施例中可以包括其他类型的输入设备20和/或输出设备24。
[0015]
计算设备10可以被配置为在网络70上与至少一个其他计算设备60通信。在一些实施例中,计算设备10可以是服务器计算设备,其至少部分地通过在网络70上与一个或多个客户端计算设备进行通信,来执行分布式版本控制系统30。备选地,计算设备10可以是客户端计算设备,其至少部分通过在网络70上与服务器计算设备和/或一个或多个其他客户端计算设备进行通信,来执行分布式版本控制系统。本文描述的计算设备10的特征可以被实施在单个计算设备中或跨多个连接的计算设备分布。
[0016]
经由分布式版本控制系统30,处理器16还可以被配置为接收用于将一个或多个源代码文件36的第一集合34应用于项目数据库50的拉取请求32。拉取请求在本文中被定义为对修改用户没有写权限的项目数据库50的请求。响应于拉取请求32,一个或多个源代码文件36可以在由另一用户批准之后被应用于项目数据库50。在一个或多个源代码文件36应用于项目数据库50之前,一个或多个源代码文件36可以被添加到拉取请求32、从拉取请求32删除、和/或以一个或多个迭代被编辑。
[0017]
项目数据库50可以被存储在计算设备10的非易失性存储设备12中。备选地,项目数据库50可以被存储在另一个计算设备处或分布在多个计算设备之间。在一些实施例中,分布式版本控制系统30可以包括被存储在相应计算设备10处的多个项目数据库50。如图1的示例中所示,其他计算设备60存储另一项目数据库64。在这样的实施例中,多个项目数据库50中的项目数据库50可以是被存储在服务器计算设备处的主项目数据库。多个客户端计算设备可以将源代码文件36应用于主项目数据库。
[0018]
在计算设备10是服务器计算设备的实施例中,可以从客户端计算设备接收拉取请求32。在计算设备10是客户端计算设备的实施例中,可以经由一个或多个输入设备20接收拉取请求32。备选地,可以从另一客户端计算设备接收拉取请求32。
[0019]
响应于接收到拉取请求32,处理器16还可以被配置为对一个或多个源代码文件36的第二集合44进行标识。第二集合44中包括的一个或多个源代码文件36可以被存储在项目数据库50中,如图1中所示。在项目数据库50被存储在另一个计算设备处的实施例中,第二集合44中包括的一个或多个源代码文件36中的一些或全部可以替代地被本地存储在非易失性存储设备12中。
[0020]
处理器16可以至少部分地基于被应用于项目数据库50的一个或多个先前拉取请求52,来标识一个或多个源代码文件36的第二集合44。例如,第二集合44可以包括在一个或
多个先前拉取请求52中被修改的一个或多个源代码文件36。一个或多个先前拉取请求52可能已经在计算设备10处被做出。附加地或备选地,一个或多个先前拉取请求52可以包括经由网络70在项目数据库50处从其他计算设备60接收的至少一个先前拉取请求52。在这样的实施例中,一个或多个先前拉取请求52可以最初在其他计算设备60处被做出,并且可能已经修改了被存储在其他计算设备60处的另一项目数据库64。一个或多个先前拉取请求52可以各自包括一个或多个先前源代码文件56,一个或多个先前源代码文件56可以被存储在项目数据库50中。
[0021]
在一些实施例中,一个或多个源代码文件36的第一集合34可以包括对一个或多个先前源代码文件56的修改,一个或多个先前源代码文件56响应于一个或多个先前拉取请求52而被应用。在这样的实施例中的分布式版本控制系统30的示例示意图在图2中被示出。在图2的实施例中,被包括在拉取请求32中的一个或多个源代码文件36的第一集合34包括第一源代码文件36a、第二源代码文件36b和第三源代码文件36c。第一源代码文件36a包括对被包括在先前源代码文件56的先前集合54中的第一先前源代码文件56a的修改38。第二源代码文件36b和第三源代码文件36c可以例如是不包括对先前源代码文件的修改的新添加的源代码文件。
[0022]
在图2的示例实施例中,先前集合54还包括未被第一源代码文件36a修改的第二先前源代码文件56b和第三先前源代码文件56c。被包括在一个或多个源代码文件36的第二集合44中的源代码文件36可以是被包括在先前集合54中的先前源代码文件56。在图2的示例中,第二集合44包括第二先前源代码文件56b和第三先前源代码文件56c。
[0023]
一个或多个源代码文件36的第二集合44可以基于被包括在第一集合34和/或第二集合44中的一个或多个源代码文件36的特性而被标识,如在下面提供的示例中所讨论的。处理器16可以使用机器学习算法100来确定相关特性,如下面参考图5所讨论的。
[0024]
在一些实施例中,一个或多个源代码文件36的第二集合44可以至少部分地基于一个或多个源代码文件36的第一集合34的一个或多个相应文件系统位置而被标识。例如,如图3中所示,处理器16可以确定:由被包括在拉取请求32中的源代码文件36进行的修改38,通过将先前源代码文件56a从第一文件夹80移动到第二文件夹82中,来修改项目数据库50的文件结构。响应于确定了修改38以这样的方式修改文件结构,处理器16可以将第一文件夹80中包括的一个或多个其他先前源代码文件56添加到一个或多个源代码文件36的第二集合44中。在图3的实施例中,处理器16将第一文件夹80中包括的第二先前源代码文件56b添加到一个或多个源代码文件36的第二集合44。
[0025]
返回图1,在一个或多个源代码文件36的第二集合44已被标识之后,处理器16还可以被配置为输出源代码文件推荐通知40,源通知文件推荐通知40包括对一个或多个源代码文件36的第二集合44中的每个源代码文件36的指示46。可以向用户通知一个或多个源代码文件36,该一个或多个源代码文件36可能期望添加到拉取请求32或应用在后续的拉取请求中。
[0026]
在处理器16还被配置为输出分布式版本控制系统30的gui 28以用于在显示器26上显示的实施例中,处理器16还可以被配置为在gui 28中显示源代码文件推荐通知40。图4示出了示例源代码文件推荐通知40,其可以被显示在分布式版本控制系统30的gui 28中。在图4的示例中,源代码文件推荐通知40被显示在窗口90内。窗口90包括针对被包括在第二
集合44中的每个源代码文件36的相应指示46。图4的示例窗口90包括第一指示46a、第二指示46b、第三指示46c和第四指示46d。在拉取请求32包括对一个或多个先前源代码文件56的修改38的实施例中,窗口90可以包括经修改的文件指示92,其示出了被修改的一个或多个先前源代码文件56。
[0027]
返回图2,对于一个或多个源代码文件36的第二集合44中的每个源代码文件36,源代码文件推荐通知40可以包括相应选项48以修改该源代码文件36。如图2中所示,源代码文件推荐通知40包括相应选项48b和相应选项48c,以分别修改第二先前源代码文件56b和第三先前源代码文件56c。在一个或多个源代码文件36的第一集合34包括对响应于一个或多个先前拉取请求52而被应用的一个或多个先前源代码文件56的修改38的实施例中,用以修改第二集合44中的每个源代码文件36的相应选项48可以包括一个或多个相应选项48,以修改一个或多个附加的先前源代码文件56,一个或多个附加的先前源代码文件56被包括在第二集合44中,但是未被第一集合34中包括的一个或多个源代码文件36修改。响应于对选项48的选择来修改至少一个源代码文件36,至少一个源代码文件36可以在gui 28中被显示,使得用户可以编辑该至少一个源代码文件36。因此,分布式版本控制系统30可以提醒用户必须对一个或多个源代码文件36进行的改变,以便避免编译或运行时期间的错误。
[0028]
返回图4,以供修改一个或多个源代码文件36的一个或多个相应选项48可以作为一个或多个可交互的gui元素而被显示在源代码文件推荐通知40中。图4的窗口90包括与第一指示46a、第二指示46b、第三指示46c和第四指示46d中的各个相关联的第一选项48a、第二选项48b、第三选项48c和第四选项48d。第一选项48a、第二选项48b、第三选项48c和第四选项48d中的每个由被标记为“编辑文件”的相应的可交互gui元素指示。响应于对这样的gui元素的选择,处理器16可以在分布式版本控制系统30的gui 28中打开相关联的源代码文件36。源代码文件36可以被显示在窗口90中或者可以备选地被显示在gui 28的另一窗口或区域中。在图4的示例中,指示46a、46b、46c和46d中的每个还具有相应的“隐藏”gui元素98a、98b、98c和98d。响应于用户选择与指示46相关联的“隐藏”gui元素,处理器16可以从窗口90移除该指示46。
[0029]
返回图1,在一些实施例中,处理器16可以通过所估计的相关性对源代码文件推荐通知40中包括的一个或多个指示46进行排名。对于一个或多个源代码文件36的第二集合44中的每个源代码文件36,处理器16还可以被配置为:确定对源代码文件36的修改38将被添加到拉取请求32的估计概率76。第二集合44中的每个源代码文件36将被添加到拉取请求32的估计概率76可以由机器学习算法100确定。在处理器16被配置为确定一个或多个估计概率76的实施例中,基于每个源代码文件36被添加到拉取请求32的相应的估计概率76,一个或多个源代码文件36的第二集合44在源代码文件推荐通知40中被排名。一个或多个源代码文件36可以按升序或降序被排名。
[0030]
现在提供特性的附加示例,特性的附加示例可以在一个或多个源代码文件36的第一集合34中被标识并且被用于确定一个或多个源代码文件36的第二集合44。如上所述,处理器16可以被配置为:至少部分地基于第一集合34中包括的一个或多个源代码文件36的一个或多个相应文件系统位置,来确定第二集合44。在这样的实施例中,处理器16还可以基于第二集合44中包括的一个或多个源代码文件36的一个或多个相应文件系统位置,来标识一个或多个源代码文件36的第二集合44。例如,处理器16可以在第二集合44中包括与第一集
合34中的源代码文件36位于相同文件夹中的一个或多个源代码文件36。
[0031]
附加地或备选地,处理器16可以被配置为:至少部分地基于一个或多个文件名中包括的一个或多个令牌,来确定一个或多个源代码文件36的第二集合44。一个或多个令牌可以是一个或多个文件名的子字符串。例如,当用户编辑名为“stringcomparer.cs”的文件时,用户可能还会修改名为“stringcomparertests.cs”的文件。处理器16可以标识两个文件都包括令牌“stringcomparer”,并且因此可以将“stringcomparertests.cs”添加到第二集合44。在一些实施例中,可以使用一个或多个正则表达式来标识一个或多个令牌。
[0032]
处理器16可以附加地或备选地被配置为:至少部分地基于第一集合34中包括的至少一个源代码文件36的文件类型,来确定一个或多个源代码文件36的第二集合44。例如,处理器16可以基于第一集合34中包括的一个或多个源代码文件36的第一文件类型,来确定第一集合34的一个或多个源代码文件36以第一编程语言被编写。基于该确定,处理器可以确定也以第一编程语言被编写的源代码文件36具有与用户相关的较高概率,和/或确定以第二编程语言被编写的源代码文件36具有相关性的较低的概率。在一些实施例中,处理器16可以被配置为:检查第一集合34的一个或多个源代码文件36的语法特征,以便即使在编程语言未在相应的文件类型中被指定时,也确定那些源代码文件36的相应编程语言。附加地或备选地,处理器16可以被配置为:至少部分地基于一个或多个源代码文件的一个或多个相应文件扩展名,来确定第二集合44。例如,处理器16可以确定具有“.html”扩展名的文档文件和具有“.png”扩展名的文档文件经常被一起编辑,并且因此当具有“.html”扩展名的源代码文件36被编辑时,更有可能将具有“.png”扩展名的源代码文件36添加到第二集合44。
[0033]
在一些实施例中,处理器16可以至少部分地通过应用机器学习算法来确定第二集合44。示例机器学习算法100在图5中被示出。在图5的实施例中,处理器16被配置为基于多个训练拉取请求104来训练机器学习算法100。多个训练拉取请求104可以是以供修改训练项目数据库120的请求。训练项目数据库120可以与图1的项目数据库50不同。因此,机器学习算法100可以适用于除在其上训练了机器学习算法100的项目以外的项目。在一些实施例中,多个训练拉取请求104可以是以供修改多个训练项目数据库120的请求。在这样的实施例中,来自多个项目的训练拉取请求104可以被用于训练机器学习算法100。
[0034]
每个训练拉取请求104包括第一迭代108,第一迭代108包括一个或多个训练源代码文件106。第一迭代108是一个或多个训练源代码文件106的集合,在最初做出训练拉取请求时,该集合被包括在训练拉取请求104中。每个训练拉取请求104还包括最后迭代110,最后迭代110包括一个或多个训练源代码文件106,在将训练拉取请求应用于训练项目数据库120时,该一个或多个训练源代码文件106被包括在训练拉取请求104中。一些训练拉取请求104可以包括仅单个迭代。在这样的训练拉取请求104中,第一迭代108是最后迭代110。在一些实施例中,训练拉取请求104中的一个或多个训练拉取请求可以包括在第一迭代108和最后迭代110之间的一个或多个中间迭代。
[0035]
处理器16还可以被配置为基于多个训练拉取请求104来确定训练集102和测试集122。训练集102和测试集122可以各自包括多个训练拉取请求104中所包括的多个迭代。在图5的示例中,训练集102包括训练拉取请求104的最后迭代110中的每个最后迭代。测试集122包括第一迭代108中的每个第一迭代以及最后迭代110中的每个最后迭代。在一些其他
实施例中,训练集102和/或测试集122可以包括一个或多个中间迭代。
[0036]
在图5的示例中,通过将先验算法应用于多个训练拉取请求104中包括的最后迭代110中的每个最后迭代来训练机器学习算法100。当处理器16将先验算法应用于训练集102中包括的多个最后迭代110时,处理器16可以生成事务矩阵112,其中每个最后迭代110中包括的训练源代码文件106的相应集合定义事务114。对于每个事务114,事务矩阵112可以指示该事务114是否包括对训练项目数据库120中包括的每个训练源代码文件106的修改。
[0037]
基于事务矩阵112,处理器16还被配置为确定包括一个或多个关联规则118的关联规则集116。参考图6更详细地示出关联规则集116的确定。如图6中所示,每个关联规则118指示两个或更多的训练源代码文件106。关联规则集116包括一个或多个关联规则118,针对该一个或多个关联规则118的两个或更多的训练源代码文件106在相同训练拉取请求104中经常被一起修改。
[0038]
在一个示例中,为了确定两个或更多的训练源代码文件106是否经常被一起修改,处理器16可以确定针对两个或更多训练源代码文件106的集合的关联规则118具有大于预定义支持度阈值132的支持度130。关联规则118的支持度130被定义为其中关联规则118中所指示的两个或更多的训练源代码文件106被一起修改的事务114的数目除以事务114的总数目。
[0039]
处理器16可以附加地或备选地确定关联规则118中包括的每个训练源代码文件106的置信度134。关联规则118中包括的训练源代码文件106的置信度134被定义为:包括训练源代码文件106的事务114的数目与关联规则118对其保持(hold)的事务114的数目的比率。在一些实施例中,如果针对那些训练源代码文件106的关联规则118的置信度134超过预定义置信度阈值136,则处理器16可以确定两个或更多的训练源代码文件106经常被一起修改。因此,具有超过预定义置信度阈值136的置信度134的一个或多个关联规则118可以被包括在关联规则集116中。
[0040]
附加地或备选地,处理器16可以确定关联规则118的提升度138。关联规则18的提升度138被定义为:针对关联规则118的支持度130除以关联规则118中包括的每个训练源代码文件106的支持度130的乘积。单个训练源代码文件106的支持度130被定义为:包括该训练源代码文件106的事务114的数目除以事务114的总数目。在一些实施例中,处理器16可以确定关联规则118具有超过预定义提升度阈值140的提升度138,并且可以基于该确定将关联规则118包括在关联规则集116中。
[0041]
在一些实施例中,预定义支持度阈值132、预定义置信度阈值136和预定义提升度阈值140中的一个或多个可以至少部分地基于由关联规则118推荐的训练源代码文件106被添加到在第一迭代108和最后迭代110之间的训练拉取请求10的估计概率而被设置。该估计概率可以至少部分地通过比较多个第一迭代108与多个第二迭代110而被确定。处理器16还可以被配置为:选择预定义支持度阈值132、预定义置信度阈值136、和/或预定义提升度阈值140,以包括超过预定义估计概率的一个或多个关联规则118。
[0042]
在一些实施例中,可以使用除了支持度130、置信度134和提升度138以外的关联规则品质度量。
[0043]
在一些实施例中,对于每个规则的训练源代码文件106的最大数目,处理器16可以确定一个或多个关联规则18。例如,处理器16可以被配置为确定各自指示两个或三个训练
源代码文件106的一个或多个关联规则118。附加地或备选地,处理器16可以仅确定针对在多于阈值数目的训练拉取请求104中出现的训练源代码文件106的关联规则118。例如,处理器16可以确定仅针对如下训练源代码文件106的一个或多个关联规则118:训练源代码文件106在训练集102中包括的多个训练拉取请求104中被修改了五次或更多次。
[0044]
返回图5,处理器16可以确定测试集122,其包括多个训练拉取请求104的每个第一迭代108和每个最后迭代110,如上面所述的那样。处理器16还可以被配置为:确定一组第一迭代108与最后迭代110之间的差异128,以对于每个训练拉取请求104,标识在第一迭代108之后被添加到训练拉取请求104的任何训练源代码文件106。这样的训练源代码文件106可以是在生成训练拉取请求104时由用户最初忘记的训练源代码文件106。
[0045]
基于关联规则集116和差异128,处理器16还可以被配置为确定推荐规则集124,推荐规则集124包括关联规则集116中包括的关联规则118中的一个或多个关联规则。推荐规则集124可以包括针对一个或多个训练源代码文件106的关联规则118,该一个或多个训练源代码文件106经常被包括在训练拉取请求104的最后迭代110中,但不被包括在第一迭代108中。在一些其他实施例中,处理器16可以被配置为:基于一个或多个关联规则118和一个或多个最后迭代110确定推荐规则集124,而无需确定一个或多个第一迭代108与一个或多个最后迭代110之间的差异128。
[0046]
在一些实施例中,推荐规则集124还可以至少部分地基于与一个或多个训练源代码文件106的一个或多个用户交互126而被确定。例如,用户可以至少通过提供如下输入来训练机器学习算法100:该输入指示由一个或多个关联规则118推荐的一个或多个训练源代码文件106是否相关。基于一个或多个用户交互126,机器学习算法100可以增加或减少应用推荐规则集124中包括的关联规则118的概率。
[0047]
在运行时处,一个或多个源代码文件36的第二集合44可以通过将推荐规则集124中包括的一个或多个关联规则118应用于一个或多个源代码文件36的第一集合34而被确定。
[0048]
图7示出了可以在计算设备的处理器处执行的示例方法200的流程图。在其处执行方法200的计算设备可以是图1的计算设备10,或备选地可以是一些其他计算设备。在步骤202处,方法200可以包括执行分布式版本控制系统。在一些实施例中,方法200还可以包括,在步骤204处,输出以用于在显示器上显示分布式版本控制系统的图形用户界面(gui)以用于在显示器上显示。显示器可以被包括在在其处执行该方法的计算设备中,或者备选地可以被包括在被通信耦合到该计算设备的另一计算设备中。
[0049]
在步骤206处,方法200还可以包括:经由分布式版本控制系统,接收用于将一个或多个源代码文件的第一集合应用于项目数据库的拉取请求。项目数据库可以被存储在计算设备处、另一计算设备处,或者分布在多个计算设备之上。一个或多个源代码文件的第一集合可以包括对一个或多个先前源代码文件的修改,一个或多个先前源代码文件响应于一个或多个先前拉取请求而被应用。
[0050]
在步骤208,方法200还可以包括:响应于接收到拉取请求,至少部分地基于推荐规则集来标识一个或多个源代码文件的第二集合,该推荐规则集包括被标识以用于被应用于训练项目数据库的多个训练拉取请求的一个或多个关联规则。
[0051]
转到图8,示出了用于确定推荐规则集的示例方法300的流程图。在图8的示例中,
方法300是用于训练机器学习算法的方法,该方法可以在执行图7的方法200之前被执行。方法300可以包括,在步骤302处,接收多个训练拉取请求,每个训练拉取请求包括一个或多个迭代。每个迭代可以包括一个或多个训练源代码文件。在一些实施例中,一个或多个训练拉取请求可以是对训练项目数据库的拉取请求,该训练项目数据库可以与步骤206的项目数据库不同。
[0052]
在步骤304处,方法300还可以包括确定训练集,该训练集包括每个训练拉取请求的相应最后迭代。在图8的示例中,先验算法被用来生成针对训练集中包括的一个或多个训练源代码文件的一个或多个关联规则。在步骤306处,方法300还可以包括基于每个最后迭代中包括的一个或多个训练源代码文件来生成事务矩阵。相应最后迭代中包括的一个或多个训练源代码文件的每个集合可以被表示为事务矩阵中的事务。在步骤308处,方法300还可以包括:基于事务矩阵,确定包括一个或多个关联规则的关联规则集。尽管在图8的示例中使用先验算法来生成关联规则集,但是在一些其他实施例中可以使用其他算法。
[0053]
在一些实施例中,确定关联规则集可以包括确定针对一个或多个关联规则的支持度、置信度和提升度中的至少一项。在这样的实施例中,可以至少部分地基于对关联规则超过预定义支持度阈值、置信度阈值、和/或提升度阈值的确定,将关联规则包括在关联规则集中。
[0054]
在步骤310处,方法300还可以包括确定测试集,该测试集包括每个训练拉取请求的相应的第一迭代和最后迭代。对于仅包括一个迭代的训练拉取请求,第一迭代是最后迭代。但是,在包括两个或更多迭代的训练拉取请求中,可以在第一迭代之后的一个或多个迭代中,将一个或多个训练源代码文件添加到训练拉取请求。一个或多个被添加的训练源代码文件可以是用户最初忘记添加到拉取请求的文件。因此,可能期望训练机器学习算法,以推荐类似于所添加的训练源代码文件的源代码文件。为了确定一个或多个被添加的训练源代码文件,方法300还可以包括,在步骤312处,确定每个训练拉取请求的相应的第一迭代和最后迭代之间的差异。
[0055]
在步骤314处,方法300还可以包括:基于关联规则集和每个训练拉取请求的相应最后迭代,确定包括关联规则集中的一个或多个关联规则的推荐规则集。在执行步骤312的实施例中,可以至少部分地基于每个训练拉取请求的相应的第一迭代和最后迭代之间的差异来确定推荐规则集。在一些实施例中,推荐规则集的确定还可以基于与机器学习算法的一个或多个用户交互。
[0056]
推荐规则集中包括的一个或多个关联规则可以是基于训练集中包括的一个或多个训练源代码文件的各种特性。在运行时处,机器学习算法可以在一个或多个源代码文件的第一集合中检查那些属性,以确定一个或多个源代码文件的第二集合。在一些实施例中,可以至少部分地基于一个或多个源代码文件的第一集合的一个或多个相应文件系统位置,来标识一个或多个源代码文件的第二集合。附加地或备选地,可以至少部分地基于一个或多个源代码文件的第一集合的相应文件名中包括的一个或多个子字符串,来标识一个或多个源代码文件的第二集合。可以至少部分地通过将一个或多个正则表达式应用于一个或多个源代码文件的相应文件名,来标识相应文件名中包括的一个或多个子字符串,和/或可以将该一个或多个子字符串与一个或多个源代码文件的第二集合匹配。附加地或备选地,可以至少部分地基于一个或多个源代码文件的第一集合的相应文件扩展名,来标识一个或多
个源代码文件的第二集合。
[0057]
返回图7,在步骤210处,方法200还可以包括输出源代码文件推荐通知,源代码文件推荐通知包括对一个或多个源代码文件的第二集合中的每个源代码文件的指示。在分布式版本控制系统的gui被输出以用于在显示器上显示的实施例中,源代码文件推荐通知可以被包括在gui中。例如,示出源代码文件推荐通知的窗口可以被输出以用于显示。
[0058]
方法200在一些实施例中可以包括的附加步骤在图9中被示出。图9示出了可以在一些实施例中被执行以确定源代码文件推荐通知的布局的附加步骤。在步骤212处,方法200可以包括,对于一个或多个源代码文件的第二集合中的每个源代码文件,确定对源代码文件的修改将在后续迭代中被添加到拉取请求的估计概率。例如可以至少部分地基于经由与至少一个先前的源代码文件推荐通知的交互所提供的用户反馈,来确定估计概率。在步骤214处,方法200还可以包括:基于被添加到拉取请求的每个源代码文件的相应的估计概率,在源代码文件推荐通知中对一个或多个源代码文件的第二集合进行排名。可以按照被添加到拉取请求的估计概率的升序或降序,对源代码文件推荐通知中指示的一个或多个源代码文件进行排名。
[0059]
在一些实施例中,本文描述的方法和过程可以绑定到一个或多个计算设备的计算系统。特别地,这样的方法和过程可以被实施为计算机应用程序或服务、应用编程接口(api)、库、和/或其他计算机程序产品。
[0060]
图10示意性示出了可以实现上述方法和过程中的一个或多个的计算系统400的非限制性实施例。计算系统400以简化形式被示出。计算系统400可以实施上文描述和图1中图示的计算设备10。计算系统400可以采取以下形式:一个或多个个人计算机、服务器计算机、平板电脑、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)、和/或其他计算设备、以及诸如智能手表和头戴式增强现实设备等可穿戴式计算设备。
[0061]
计算系统400包括逻辑处理器402、易失性存储器404和非易失性存储设备406。计算系统400可以可选地包括显示子系统408、输入子系统410、通信子系统412、和/或图10中未示出的其他部件。
[0062]
逻辑处理器402包括被配置为执行指令的一个或多个物理设备。例如,逻辑处理器可以被配置为执行如下指令,这些指令是作为一个或多个应用、程序、例程、库、对象、部件、数据结构或其他逻辑构造的部分。这样的指令可以被实现以执行任务,实现数据类型,变换一个或多个部件的状态,实现技术效果,或以其他方式达到期望的结果。
[0063]
逻辑处理器可以包括被配置为执行软件指令的一个或多个物理处理器(硬件)。附加或备选地,逻辑处理器可以包括被配置为执行硬件实现的逻辑或固件指令的一个或多个硬件逻辑电路或固件设备。逻辑处理器402的处理器可以是单核或多核的,并且在其上执行的指令可以被配置用于顺序、并行和/或分布式处理。逻辑处理器的各个部件可以可选地分布在两个或更多个分开的设备中,这些设备可以被远程定位和/或被配置用于协调处理。逻辑处理器的各方面可以通过以云计算配置来配置的远程可访问联网计算设备来虚拟化和执行。在这样的情况下,这些虚拟化的方面在各种不同机器的不同物理逻辑处理器上运行,这是可以理解的。
[0064]
非易失性存储设备406包括被配置为保存由逻辑处理器可执行以实施本文中描述
的方法和过程的指令的一个或多个物理设备。当实施这样的方法和过程时,非易失性存储设备406的状态可以被变换,例如以保存不同的数据。
[0065]
非易失性存储设备406可以包括可移除和/或内置的物理设备。非易失性存储设备406可以包括光存储器(例如,cd、dvd、hd-dvd、蓝光盘等)、半导体存储器(例如,rom、eprom、eeprom、闪存等)和/或磁存储器(例如,硬盘驱动、软盘驱动、磁带驱动、mram等)、或其他大容量存储设备技术。非易失性存储设备406可以包括非易失性、动态、静态、读/写、只读、顺序访问、位置可寻址、文件可寻址、和/或内容可寻址设备。应当理解,非易失性存储设备406被配置为即使当到非易失性存储设备406的电力被切断时也保存指令。
[0066]
易失性存储器404可以包括包含随机存取存储器的物理设备。易失性存储器404通常由逻辑处理器402用来在软件指令的处理期间临时存储信息。应当理解,当到易失性存储器404的电力被切断时,易失性存储器404通常不会继续存储指令。
[0067]
逻辑处理器402、易失性存储器404和非易失性存储设备406的各方面可以被一起集成到一个或多个硬件逻辑部件中。例如,这些硬件逻辑部件可以包括现场可编程门阵列(fpga)、程序集成电路和应用特定集成电路(pasic/asic)、程序和应用特定标准产品(pssp/assp)、片上系统芯片(soc)和复杂可编程逻辑器件(cpld)。
[0068]
可以使用术语“模块”、“程序”和“引擎”来描述通常由处理器以软件实现以使用易失性存储器的部分来执行特定功能的计算系统400的一方面,该功能涉及专门将处理器配置成执行该功能的转换处理。因此,经由逻辑处理器402使用易失性存储器404的部分执行由非易失性存储设备406保存的指令,可以实例化模块、程序或引擎。应当理解,不同的模块、程序和/或引擎可以从相同的应用、服务、代码块、对象、库、例程、api、函数等来实例化。同样,相同的模块、程序和/或引擎可以由不同的应用、服务、代码块、对象、例程、api、功能等来实例化。术语“模块”、“程序”和“引擎”可以包括单个或一组可执行文件、数据文件、库、驱动程序、脚本、数据库记录等。
[0069]
当被包括时,显示子系统408可以用来呈现由非易失性存储设备406保存的数据的可视表示。视觉表示可以采取图形用户界面(gui)的形式。当本文中描述的方法和过程改变由非易失性存储设备保存的数据并且因此转换非易失性存储设备的状态时,显示子系统408的状态可以同样地被转换以可视地表示底层数据的变化。显示子系统408可以包括实际上利用任何类型的技术的一个或多个显示设备。这样的显示设备可以与共享外壳中的逻辑处理器402、易失性存储器404和/或非易失性存储设备406组合,或者这样的显示设备可以是外围显示设备。
[0070]
当被包括时,输入子系统410可以包括一个或多个用户输入设备(诸如键盘、鼠标、触摸屏或游戏控制器)或与这些用户输入设备对接。在一些实施例中,输入子系统可以包括选定的自然用户输入(nui)部件或与该部件对接。这样的部件可以是集成的或外围的,并且输入动作的转换和/或处理可以在板上或板外处理。示例nui部件可以包括用于语音和/或声音识别的麦克风;用于机器视觉和/或手势识别的红外、彩色、立体和/或深度相机;用于运动检测和/或意图识别的头部追踪器、眼动仪、加速度计和/或陀螺仪;以及用于评估大脑活动的电场感测部件;和/或任何其他合适的传感器。
[0071]
当被包括时,通信子系统412可以被配置为将本文中描述的各种计算设备彼此通信耦合,并且与其他设备通信耦合。通信子系统412可以包括与一个或多个不同的通信协议
兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置用于经由无线电话网络或者有线或无线局域网或广域网进行通信,诸如通过wi-fi连接的hdmi。在一些实施例中,通信子系统可以允许计算系统400经由诸如因特网等网络向其他设备发送和/或从其他设备接收消息。
[0072]
根据本公开的一个方面,提供了一种计算设备,计算设备包括非易失性存储设备和处理器。处理器可以被配置为执行被存储在非易失性存储设备中的分布式版本控制系统。处理器还可以被配置为:经由分布式版本控制系统,接收用于将一个或多个源代码文件的第一集合应用于项目数据库的拉取请求。响应于接收到拉取请求,处理器还可以被配置为:至少部分地基于推荐规则集来标识一个或多个源代码文件的第二集合,推荐规则集包括一个或多个关联规则,一个或多个关联规则针对被应用于训练项目数据库的多个训练拉取请求而被标识。推荐规则集可以至少部分地基于每个训练拉取请求的相应最后迭代而被确定。处理器还可以被配置为输出源代码文件推荐通知,源代码文件推荐通知包括对一个或多个源代码文件的第二集合中的每个源代码文件的指示。
[0073]
根据该方面,在推荐规则集中包括的每个关联规则可以具有超过预定义支持度阈值的支持度。
[0074]
根据该方面,在推荐规则集中包括的每个关联规则可以具有超过预定义置信度阈值的置信度。
[0075]
根据该方面,在推荐规则集中包括的每个关联规则可以具有超过预定义提升度阈值的提升度。
[0076]
根据该方面,一个或多个源代码文件的第一集合可以包括对一个或多个先前源代码文件的修改,一个或多个先前源代码文件响应于一个或多个先前拉取请求而被应用于项目数据库。
[0077]
根据该方面,一个或多个源代码文件的第二集合可以至少部分地基于一个或多个源代码文件的第一集合的一个或多个相应文件系统位置而被标识。
[0078]
根据该方面,一个或多个源代码文件的第二集合可以至少部分地基于一个或多个源代码文件的第一集合的相应文件名中包括的一个或多个子字符串而被标识。
[0079]
根据该方面,一个或多个源代码文件的第二集合可以至少部分地基于一个或多个源代码文件的第一集合的相应文件扩展名而被标识。
[0080]
根据该方面,计算设备还可以包括显示器。处理器还可以被配置为输出分布式版本控制系统的gui以用于在显示器上显示。源代码文件推荐通知可以被包括在gui中。
[0081]
根据该方面,对于一个或多个源代码文件的第二集合中的每个源代码文件,处理器还可以被配置为:确定对源代码文件的修改将被添加到拉取请求的估计概率。基于每个源代码文件被添加到拉取请求的相应的估计概率,一个或多个源代码文件的第二集合可以在源代码文件推荐通知中被排名。
[0082]
根据本公开的另一方面,提供了一种在计算设备的处理器处执行的方法。方法可以包括执行分布式版本控制系统。方法还可以包括:经由分布式版本控制系统,接收用于将一个或多个源代码文件的第一集合应用于项目数据库的拉取请求。响应于接收到拉取请求,方法还可以包括:至少部分地基于推荐规则集来标识一个或多个源代码文件的第二集合,推荐规则集包括一个或多个关联规则,一个或多个关联规则针对被应用于训练项目数
据库的多个训练拉取请求而被标识。推荐规则集可以至少部分地基于每个训练拉取请求的相应最后迭代而被确定。方法还可以包括输出源代码文件推荐通知,源代码文件推荐通知包括对一个或多个源代码文件的第二集合中的每个源代码文件的指示。
[0083]
根据该方面,在推荐规则集中包括的每个关联规则可以具有超过预定义置信度阈值的置信度。
[0084]
根据该方面,在推荐规则集中包括的每个关联规则可以具有超过预定义提升度阈值的提升度。
[0085]
根据该方面,一个或多个源代码文件的第一集合可以包括对一个或多个先前源代码文件的修改,一个或多个先前源代码文件响应于一个或多个先前拉取请求而被应用于项目数据库。
[0086]
根据该方面,一个或多个源代码文件的第二集合可以至少部分地基于一个或多个源代码文件的第一集合的一个或多个相应文件系统位置而被标识。
[0087]
根据该方面,一个或多个源代码文件的第二集合可以至少部分地基于一个或多个源代码文件的第一集合的相应文件名中包括的一个或多个子字符串而被标识。
[0088]
根据该方面,在推荐规则集中包括的每个关联规则可以具有超过预定义支持度阈值的支持度。
[0089]
根据该方面,一个或多个源代码文件的第二集合可以至少部分地基于一个或多个源代码文件的第一集合的相应文件名中包括的一个或多个子字符串而被标识。
[0090]
根据该方面,一个或多个源代码文件的第二集合可以至少部分地基于一个或多个源代码文件的第一集合的相应文件扩展名而被标识。
[0091]
根据该方面,方法还可以包括输出分布式版本控制系统的gui以用于在显示器上显示。源代码文件推荐通知可以被包括在gui中。
[0092]
根据本公开的另一方面,提供了一种客户端计算设备,包括非易失性存储设备和处理器。处理器可以被配置为执行被存储在非易失性存储设备中的分布式版本控制系统。处理器还可以被配置为:输出分布式版本控制系统的图形用户界面(gui)以用于在显示器上显示。经由分布式版本控制系统,处理器还可以被配置为:传达用于将一个或多个源代码文件的第一集合应用于被存储在服务器计算设备处的项目数据库的拉取请求。响应于传达拉取请求,处理器还可以被配置为:至少部分地基于推荐规则集来标识一个或多个源代码文件的第二集合,推荐规则集包括一个或多个关联规则,一个或多个关联规则针对被应用于训练项目数据库的多个训练拉取请求而被标识。推荐规则集可以至少部分地基于每个训练拉取请求的相应最后迭代而被确定。处理器还可以被配置为在gui处输出源代码文件推荐通知,源代码文件推荐通知包括一个或多个源代码文件的第二集合中的每个源代码文件的指示。
[0093]
应当理解,本文描述的配置和/或方法本质上是示例性的,并且这些具体实施例或示例不应当以限制性意义来考虑,因为很多变化是可能的。本文描述的具体例程或方法可以表示任何数目的处理策略中的一个或多个。如此,所示出和/或描述的各种动作可以以所示和/或描述的顺序、以其他顺序、并行执行,或者被省略。类似地,可以改变上述过程的顺序。
[0094]
本公开的主题包括本文公开的各种过程、系统和配置以及其他特征、功能、动作
和/或特性,以及其任何和所有等同物的所有新颖的和非显而易见的组合和子组合。
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1
中文字幕极速在线观看