Ejemplo n.º 1
0
        public void Add(Period period, string filePath, string developerName, CommitBlobBlame commitBlobBlame)
        {
            var periodId = period.Id;

            if (!map.ContainsKey(periodId))
            {
                map[periodId] = new BlameSnapshot();
            }

            map[periodId].Add(period, filePath, developerName, commitBlobBlame);
        }
Ejemplo n.º 2
0
        public static void AddFileOwnership(KnowledgeDistributionMap knowledgeDistributionMap, BlameSnapshot blameSnapshot, Dictionary <string, DeveloperKnowledge> developersKnowledge, string filePath, Dictionary <string, string> canononicalPathMapper)
        {
            var canonicalPath = canononicalPathMapper[filePath];

            CalculateModificationExpertise();
            CalculateReviewExpertise();

            void CalculateModificationExpertise()
            {
                var fileCommitsDetail = knowledgeDistributionMap.CommitBasedKnowledgeMap[canonicalPath];

                if (fileCommitsDetail == null)
                {
                    return;
                }

                foreach (var devCommitDetail in fileCommitsDetail.Values)
                {
                    var devName = devCommitDetail.Developer.NormalizedName;

                    var fileBlame = blameSnapshot[canonicalPath]?.GetValueOrDefault(devName, null);

                    var totalAuditedLines = fileBlame != null ? fileBlame.TotalAuditedLines : 0;

                    AddModificationOwnershipDetail(developersKnowledge, devCommitDetail, totalAuditedLines);
                }
            }

            void CalculateReviewExpertise()
            {
                var fileReviewDetails = knowledgeDistributionMap.ReviewBasedKnowledgeMap[canonicalPath];

                if (fileReviewDetails == null)
                {
                    return;
                }

                foreach (var devReviewDetail in fileReviewDetails.Values)
                {
                    var devName = devReviewDetail.Developer.NormalizedName;
                    AddReviewOwnershipDetail(developersKnowledge, devReviewDetail);
                }
            }
        }