public HierarchicalData Build(List <Artifact> artifacts, Dictionary <string, LinesOfCode> metrics) { _metrics = metrics; _hotspotCalculator = new HotspotCalculator(artifacts, metrics); return(Build(artifacts)); }
private object CreateDataGridFriendlyArtifact(Artifact artifact, HotspotCalculator hotspotCalculator, IAliasMapping aliasMapping) { var linesOfCode = (int)hotspotCalculator.GetLinesOfCode(artifact); if (_contributions != null) { var result = new DataGridFriendlyArtifact(); var localFileToContribution = AliasTransformContribution(_contributions, aliasMapping); var key = artifact.LocalPath.ToLowerInvariant(); if (localFileToContribution.ContainsKey(key)) { var contribution = localFileToContribution[key]; var mainDev = contribution.GetMainDeveloper(); // Work related information result.FractalValue = contribution.CalculateFractalValue(); result.MainDev = mainDev.Developer; result.MainDevPercent = mainDev.Percent; } else { result.MainDev = "???"; //Warnings.Add(new WarningMessage("", $"Cannot find contribution for file {key}")); } result.LocalPath = artifact.LocalPath; result.Commits = artifact.Commits; result.Committers = artifact.Committers.Count; result.LOC = linesOfCode; result.WorkItems = artifact.WorkItems.Count; result.CodeAge_Days = (DateTime.Now - artifact.Date).Days; result.Hotspot = hotspotCalculator.GetHotspotValue(artifact); return(result); } else { var result = new DataGridFriendlyArtifactBasic(); result.LocalPath = artifact.LocalPath; result.Commits = artifact.Commits; result.Committers = artifact.Committers.Count; result.LOC = linesOfCode; result.WorkItems = artifact.WorkItems.Count; result.CodeAge_Days = (DateTime.Now - artifact.Date).Days; result.Hotspot = hotspotCalculator.GetHotspotValue(artifact); return(result); } }
public List <object> ExportSummary(IAliasMapping aliasMapping) { LoadContributions(true); // silent var summary = _history.GetArtifactSummary(_extendedDisplayFilter, aliasMapping); var hotspotCalculator = new HotspotCalculator(summary, _metrics); var orderedByLocalPath = summary.OrderBy(x => x.LocalPath).ToList(); var gridData = new List <object>(); foreach (var artifact in orderedByLocalPath) { gridData.Add(CreateDataGridFriendlyArtifact(artifact, hotspotCalculator, aliasMapping)); } var now = DateTime.Now.ToIsoShort(); Csv.Write(Path.Combine(_outputPath, $"summary-{now}.csv"), gridData); return(gridData); }
object CreateDataGridFriendlyArtifact(Artifact artifact, HotspotCalculator hotspotCalculator) { var linesOfCode = (int)hotspotCalculator.GetArea(artifact); if (_contributions != null) { var result = new DataGridFriendlyArtifact(); var artifactContribution = _contributions[artifact.LocalPath.ToLowerInvariant()]; var mainDev = artifactContribution.GetMainDeveloper(); result.LocalPath = artifact.LocalPath; result.Revision = artifact.Revision; result.Commits = artifact.Commits; result.Committers = artifact.Committers.Count; result.LOC = linesOfCode; result.WorkItems = artifact.WorkItems.Count; result.CodeAge_Days = (DateTime.Now - artifact.Date).Days; result.Hotspot = hotspotCalculator.GetHotspot(artifact); // Work related information result.FractalValue = artifactContribution.CalculateFractalValue(); result.MainDev = mainDev.Developer; result.MainDevPercent = mainDev.Percent; return(result); } else { var result = new DataGridFriendlyArtifactBasic(); result.LocalPath = artifact.LocalPath; result.Revision = artifact.Revision; result.Commits = artifact.Commits; result.Committers = artifact.Committers.Count; result.LOC = linesOfCode; result.WorkItems = artifact.WorkItems.Count; result.CodeAge_Days = (DateTime.Now - artifact.Date).Days; result.Hotspot = hotspotCalculator.GetHotspot(artifact); return(result); } }
public List <object> ExportSummary() { LoadHistory(); LoadMetrics(); LoadContributions(true); // silent var summary = _history.GetArtifactSummary(Project.Filter, new HashSet <string>(_metrics.Keys)); var hotspotCalculator = new HotspotCalculator(summary, _metrics); var orderedByLocalPath = summary.OrderBy(x => x.LocalPath).ToList(); var gridData = new List <object>(); foreach (var artifact in orderedByLocalPath) { gridData.Add(CreateDataGridFriendlyArtifact(artifact, hotspotCalculator)); } var now = DateTime.Now.ToIsoShort(); Csv.Write(Path.Combine(Project.Cache, $"summary-{now}.csv"), gridData); return(gridData); }