System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请属于软件开发的,特别涉及基于信息熵的开发者贡献度分析方法及装置。
技术介绍
1、在典型的软件开发环境中,开发者将代码贡献给软件项目存储库。每个开发者的代码贡献通常通过简单的度量来表征,所述度量例如可归因于每个开发者的提交数量或代码行数。
2、例如,github使用noc对软件项目的开发者进行排序。
3、expertise browser——用于识别开发者专业知识的经典工具——使用更改的loc的数量作为每个开发者的贡献的指标。这样的度量衡量每个开发者的代码贡献量,而不是代码贡献的价值。例如,位于应用逻辑核心的函数通常比辅助脚本更有价值,但常规的代码贡献度量无法捕获这种区别。
4、专利cn102254250a 采用文件提交次数的聚类系数评价,但是未考虑到开发者提交内容的实际作用,仅仅是在次数的维度上进行了统计,没有对项目整体数据进行分析以获取符合客观规律的结果。
5、专利cn108876031a 采用情感挖掘方法从开源代码托管网站的社交关系的角度分析潜在的贡献,没有考虑代码带来的实际的信息量的大小。
6、专利cn114365095a通过开发者贡献的函数被调用的概率来定义代码价值,一定程度上量化了开发者贡献的价值,但被调用的次数较少的代码不一定不重要,这样的基于调用次数的量化方式有一定的偏差。
7、针对上述问题,提出本申请中的基于信息熵的开发者贡献度分析方法及装置。
技术实现思路
1、为了解决所述现有技术的不足
2、本申请所要达到的技术效果通过以下方案实现:
3、第一方面,本申请实施例提供一种基于信息熵的开发者贡献度分析方法,包括:
4、获取多个项目和多个开发者的相关信息,并且统计每个所述开发者的每个动作的概率分布,以及所述动作之间的联合概率分布;
5、为第i个项目的所有动作维度计算权重向量hi, hi的计算公式如下:
6、 ,
7、其中,pi(x,y)表示所述第i个项目中的动作x和动作y之间的联合概率分布,pi(x)表示所述第i个项目中的动作x的概率分布,且i表示第i个项目,n表示所述第i个项目中的动作数量;
8、计算目标开发者的动作步数的总数t;
9、为所述第i个项目的所有动作维度计算权重向量 wi,所述 wi是 hi归一化后的数值,满足,其中t表示第t步动作;
10、统计所述目标开发者在所述第i个项目的第k轮迭代中的所述第t步动作被执行的次数;
11、对于所有的项目,采用如下公式计算所述目标开发者的贡献度c(i,k):
12、,
13、其中,表示 c(i,k)在所述第i个项目第k轮迭代中,所述目标开发者的所有动作的贡献度, w(i,k)是根据条件熵模型计算得出的h(i,k)进行了归一化后的权重向量。
14、在一些实施例中,所述多个项目包括项目一,项目二和项目三,所述多个开发者包括开发者一,开发者二,开发者三和开发者四。
15、在一些实施例中,所述方法还包括:
16、根据统计项目数量和迭代数信息,计算得出所述目标开发者在所有项目中的总的贡献度。
17、在一些实施例中,所述多个项目和所述多个开发者之间存在交叉对应的情况,包括:所述开发者一,所述开发者二,所述开发者三和所述开发者四分别对所述项目一,所述项目二和所述项目三做出了贡献。
18、第二方面,本申请实施例提供一种基于信息熵的开发者贡献度分析装置,所述装置包括:
19、获取模块,用于获取多个项目和多个开发者的相关信息,并且统计每个所述开发者的每个动作的概率分布,以及所述动作之间的联合概率分布;
20、第一计算模块,用于为第i个项目的所有动作维度计算权重向量 hi,hi的计算公式如下:
21、 ,
22、其中, pi(x,y)表示所述第i个项目中的动作x和动作y之间的联合概率分布, pi(x)表示所述第i个项目中的动作x的概率分布,且i表示第i个项目,n表示所述第i个项目中的动作数量;
23、第二计算模块,用于计算目标开发者的动作步数的总数t;
24、第三计算模块,用于为所述第i个项目的所有动作维度计算权重向量 wi,所述wi是hi归一化后的数值,满足,其中t表示第t步动作;
25、统计模块,用于统计所述目标开发者在所述第i个项目的第k轮迭代中的所述第t步动作被执行的次数;
26、贡献度模块,用于对于所有的项目,采用如下公式计算所述目标开发者的贡献度c(i,k):
27、,
28、其中,表示c(i,k)在所述第i个项目第k轮迭代中,所述目标开发者的所有动作的贡献度, w(i,k)是根据条件熵模型计算得出的h(i,k)进行了归一化后的权重向量。
29、在一些实施例中,所述多个项目包括项目一,项目二和项目三,所述多个开发者包括开发者一,开发者二,开发者三和开发者四。
30、在一些实施例中,所述贡献度模块还用于:
31、根据统计项目数量和迭代数信息,计算得出所述目标开发者在所有项目中的总的贡献度。
32、在一些实施例中,所述多个项目和所述多个开发者之间存在交叉对应的情况,且所述开发者一,所述开发者二,所述开发者三和所述开发者四分别对所述项目一,所述项目二和所述项目三做出了贡献。
33、第三方面,本申请实施例提供一种电子设备,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述任意一项所述的方法。
34、第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一项所述的方法。
35、通过本申请实施例提供的基于信息熵的开发者贡献度分析方法及装置,该方法基于联合概率分布且引入信息熵的概念来度量动作的识别度,且针对不满足熵定律的独立性假设问题,通过计算条件熵来解决条件独立性假设问题,充分考虑了各个计算指标或者说动作之间的关联关系,进而并不是孤立地针对各个开发者的单一维度指标进行贡献度计算,通过多个关联的维度来计算各个开发者的贡献度,可以将开发者贡献的量化,提高了开发者贡献度计算的准确性,进而更加准确地确定各位开发者的绩效和贡献度,便于节约人力管理成本,有利于实现管理系统智能化。
本文档来自技高网...【技术保护点】
1.一种基于信息熵的开发者贡献度分析方法,其特征在于,所述方法包括:
2.如权利要求1所述的基于信息熵的开发者贡献度分析方法,其特征在于,所述多个项目包括项目一,项目二和项目三,所述多个开发者包括开发者一,开发者二,开发者三和开发者四。
3.如权利要求1或者2所述的基于信息熵的开发者贡献度分析方法,其特征在于,所述方法还包括:
4.如权利要求3所述的基于信息熵的开发者贡献度分析方法,其特征在于,所述多个项目和所述多个开发者之间存在交叉对应的情况,包括:所述开发者一,所述开发者二,所述开发者三和所述开发者四分别对所述项目一,所述项目二和所述项目三做出了贡献。
5. 一种基于信息熵的开发者贡献度分析装置,其特征在于, 所述装置包括:
6.如权利要求5所述的基于信息熵的开发者贡献度分析装置,其特征在于,所述多个项目包括项目一,项目二和项目三,所述多个开发者包括开发者一,开发者二,开发者三和开发者四。
7.如权利要求5或者6所述的基于信息熵的开发者贡献度分析装置,其特征在于,所述贡献度模块还用于:
8.如
9.一种电子设备,其特征在于,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4中任意一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1至4任意一项所述的方法。
...【技术特征摘要】
1.一种基于信息熵的开发者贡献度分析方法,其特征在于,所述方法包括:
2.如权利要求1所述的基于信息熵的开发者贡献度分析方法,其特征在于,所述多个项目包括项目一,项目二和项目三,所述多个开发者包括开发者一,开发者二,开发者三和开发者四。
3.如权利要求1或者2所述的基于信息熵的开发者贡献度分析方法,其特征在于,所述方法还包括:
4.如权利要求3所述的基于信息熵的开发者贡献度分析方法,其特征在于,所述多个项目和所述多个开发者之间存在交叉对应的情况,包括:所述开发者一,所述开发者二,所述开发者三和所述开发者四分别对所述项目一,所述项目二和所述项目三做出了贡献。
5. 一种基于信息熵的开发者贡献度分析装置,其特征在于, 所述装置包括:
6.如权利要求5所述的基于信息熵的开发者贡献度分析装置,其特征在于,所述多个项目包括项目一,项目二和项目三,所述多...
【专利技术属性】
技术研发人员:崔佳佳,黄茗,杨军,徐勇勇,冷彪,
申请(专利权)人:中国电子科技集团公司第十五研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。