Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
        /// <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);
        }