Example #1
0
        public HierarchicalData Build(List <Artifact> artifacts, Dictionary <string, LinesOfCode> metrics)
        {
            _metrics           = metrics;
            _hotspotCalculator = new HotspotCalculator(artifacts, metrics);

            return(Build(artifacts));
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
        }