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); }
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); } } }