public HierarchicalDataContext AnalyzeKnowledge(IBrushFactory brushFactory, IAliasMapping aliasMapping) { LoadHistory(); LoadMetrics(); LoadContributions(false); var localFileToContribution = AliasTransformContribution(_contributions, aliasMapping); var summary = _history.GetArtifactSummary(GetDisplayFilter(), aliasMapping); var fileToMainDeveloper = localFileToContribution.ToDictionary(pair => pair.Key, pair => pair.Value.GetMainDeveloper()); // Assign a color to each developer var mainDevelopers = fileToMainDeveloper.Select(pair => pair.Value.Developer).Distinct().ToList(); var legend = new LegendBitmap(mainDevelopers, brushFactory); legend.CreateLegendBitmap(Path.Combine(_outputPath, "knowledge_color.bmp")); // Build the knowledge data var builder = new KnowledgeBuilder(); var hierarchicalData = builder.Build(summary, _metrics, fileToMainDeveloper); var dataContext = new HierarchicalDataContext(hierarchicalData, brushFactory); dataContext.AreaSemantic = Strings.LinesOfCode; dataContext.WeightSemantic = Strings.NotAvailable; return(dataContext); }
public HierarchicalDataContext AnalyzeHotspots() { // Get summary of all files var summary = _history.GetArtifactSummary(_extendedDisplayFilter, new NullAliasMapping()); var builder = new HotspotBuilder(); var hierarchicalData = builder.Build(summary, _metrics); var dataContext = new HierarchicalDataContext(hierarchicalData); dataContext.AreaSemantic = Strings.LinesOfCode; dataContext.WeightSemantic = Strings.NumberOfCommits; return(dataContext); }
public void ShowHierarchicalDataAsTreeMap(string title, HierarchicalDataContext context, HierarchicalDataCommands commands, bool toForeground) { // Note: The same color scheme is used for both treemap and circle packing. if (context == null) { return; } var tm = new TreeMapViewModel(); tm.Commands = commands; tm.Data = context; tm.Title = title; ShowTab(tm, toForeground); }
public void ShowHierarchicalDataAsCirclePackaging(string title, HierarchicalDataContext context, HierarchicalDataCommands commands, bool toForeground) { // Note: The same color scheme is used for both treemap and circle packing. if (context == null) { return; } var cp = new CirclePackingViewModel(); cp.Commands = commands; cp.Data = context; cp.Title = title; ShowTab(cp, toForeground); }
public HierarchicalDataContext AnalyzeCodeAge() { LoadHistory(); LoadMetrics(); // Get summary of all files var summary = _history.GetArtifactSummary(GetDisplayFilter(), new NullAliasMapping()); var builder = new CodeAgeBuilder(); var hierarchicalData = builder.Build(summary, _metrics); var dataContext = new HierarchicalDataContext(hierarchicalData); dataContext.AreaSemantic = Strings.LinesOfCode; dataContext.WeightSemantic = Strings.CodeAge_Days; return(dataContext); }
/// <summary> /// Analyzes the fragmentation per file. /// </summary> public HierarchicalDataContext AnalyzeFragmentation(IAliasMapping aliasMapping) { LoadContributions(false); var localFileToContribution = AliasTransformContribution(_contributions, aliasMapping); var summary = _history.GetArtifactSummary(_extendedDisplayFilter, aliasMapping); var fileToFractalValue = localFileToContribution.ToDictionary(pair => pair.Key, pair => pair.Value.CalculateFractalValue()); var builder = new FragmentationBuilder(); var hierarchicalData = builder.Build(summary, _metrics, fileToFractalValue); var dataContext = new HierarchicalDataContext(hierarchicalData); dataContext.AreaSemantic = Strings.LinesOfCode; dataContext.WeightSemantic = Strings.Fragmentation; return(dataContext); }
/// <summary> /// Same as knowledge but uses a different color scheme /// </summary> public HierarchicalDataContext AnalyzeKnowledgeLoss(string developer, IBrushFactory brushFactory, IAliasMapping aliasMapping) { LoadContributions(false); var localFileToContribution = AliasTransformContribution(_contributions, aliasMapping); developer = aliasMapping.GetAlias(developer); var summary = _history.GetArtifactSummary(_extendedDisplayFilter, aliasMapping); var fileToMainDeveloper = localFileToContribution.ToDictionary(pair => pair.Key, pair => pair.Value.GetMainDeveloper()); // Build the knowledge data var builder = new KnowledgeBuilder(developer); var hierarchicalData = builder.Build(summary, _metrics, fileToMainDeveloper); var dataContext = new HierarchicalDataContext(hierarchicalData, brushFactory); dataContext.AreaSemantic = Strings.LinesOfCode; dataContext.WeightSemantic = Strings.NotAvailable; return(dataContext); }