Ejemplo n.º 1
0
        public DbObject ProcessObjectCoverage(DbObject dbObject)
        {
            var dbObjectClone = dbObject.Get();

            if (dbObjectClone.Code == null)
            {
                return(dbObjectClone);
            }

            if (dbObjectClone.CoveredSegments.Count > 0)
            {
                var codeWithHighlights = _dbCodeFormatter.FormatCodeWithHighlights(dbObjectClone.Code,
                                                                                   dbObjectClone.CoveredSegments);
                dbObjectClone.CoveredSegments = ProcessHighlightedCode(codeWithHighlights);

                var functionalHighlightedCode = _dataScrubber.Scrub(codeWithHighlights, "floc.scrub");
                var functionalSegments        = ProcessHighlightedCode(functionalHighlightedCode);
                foreach (var functionalSegment in functionalSegments)
                {
                    dbObjectClone.CoveredCharacters  += functionalSegment.EndByte - functionalSegment.StartByte;
                    dbObjectClone.CoveredLinesOfCode += functionalSegment.LinesOfCode;
                }
            }

            var functionalCode = _dataScrubber.Scrub(dbObjectClone.Code, "floc.scrub");

            dbObjectClone.TotalLoc        = dbObjectClone.Code.Split('\n').Length;
            dbObjectClone.TotalCharacters = dbObjectClone.Code.Length;

            dbObjectClone.TotalFloc = functionalCode.Split('\n').Length;
            dbObjectClone.TotalFunctionalCharacters = functionalCode.Length;

            dbObjectClone.CoveredPercent = (decimal)dbObjectClone.CoveredCharacters / dbObjectClone.TotalFunctionalCharacters;

            return(dbObjectClone);
        }