예제 #1
0
 private static void WriteCodeCoverageInfo(List <BlockLineRange> lines, CodeCoverageInfo mi, StreamWriter file)
 {
     file.WriteLine("Method {0}{1}{2}{3}{4} has:",
                    mi.NamespaceName == null ? "" : mi.NamespaceName,
                    string.IsNullOrEmpty(mi.NamespaceName) ? "" : ".",
                    mi.ClassName == null ? "" : mi.ClassName,
                    string.IsNullOrEmpty(mi.ClassName) ? "" : ".",
                    mi.MethodName
                    );
     Console.WriteLine("Method {0}{1}{2}{3}{4} has:",
                       mi.NamespaceName == null ? "" : mi.NamespaceName,
                       string.IsNullOrEmpty(mi.NamespaceName) ? "" : ".",
                       mi.ClassName == null ? "" : mi.ClassName,
                       string.IsNullOrEmpty(mi.ClassName) ? "" : ".",
                       mi.MethodName
                       );
     Console.WriteLine("    {0} blocks covered", mi.Statistics.BlocksCovered);
     Console.WriteLine("    {0} blocks not covered", mi.Statistics.BlocksNotCovered);
     Console.WriteLine("    {0} lines covered", mi.Statistics.LinesCovered);
     Console.WriteLine("    {0} lines partially covered", mi.Statistics.LinesPartiallyCovered);
     Console.WriteLine("    {0} lines not covered", mi.Statistics.LinesNotCovered);
     file.WriteLine("    {0} blocks covered", mi.Statistics.BlocksCovered);
     file.WriteLine("    {0} blocks not covered", mi.Statistics.BlocksNotCovered);
     file.WriteLine("    {0} lines covered", mi.Statistics.LinesCovered);
     file.WriteLine("    {0} lines partially covered", mi.Statistics.LinesPartiallyCovered);
     file.WriteLine("    {0} lines not covered", mi.Statistics.LinesNotCovered);
     lines.Clear();
 }
예제 #2
0
        public static void DoAnalysis(String inputFile)
        {
            using (CoverageInfo info = CoverageInfo.CreateFromFile(inputFile))
            {
                List <BlockLineRange>   lines      = new List <BlockLineRange>();
                System.IO.StreamWriter  file       = new System.IO.StreamWriter(@"C:\CodeCoverage\myTest.txt");
                List <CodeCoverageInfo> ccInfoList = new List <CodeCoverageInfo>();
                uint totalBlocksCovered            = 0;
                uint totalBlocksNotCovered         = 0;

                foreach (ICoverageModule module in info.Modules)
                {
                    byte[] coverageBuffer = module.GetCoverageBuffer(null);

                    using (ISymbolReader reader = module.Symbols.CreateReader())
                    {
                        uint   methodId;
                        string methodName;
                        string undecoratedMethodName;
                        string className;
                        string namespaceName;

                        lines.Clear();
                        while (reader.GetNextMethod(
                                   out methodId,
                                   out methodName,
                                   out undecoratedMethodName,
                                   out className,
                                   out namespaceName,
                                   lines))
                        {
                            CodeCoverageInfo   ccInfo = new CodeCoverageInfo();
                            CoverageStatistics stats  = CoverageInfo.GetMethodStatistics(coverageBuffer, lines);

                            ccInfo.MethodId              = methodId;
                            ccInfo.MethodName            = methodName;
                            ccInfo.UndecoratedMethodName = undecoratedMethodName;
                            ccInfo.ClassName             = className;
                            ccInfo.NamespaceName         = namespaceName;
                            ccInfo.Statistics            = stats;

                            totalBlocksCovered    += ccInfo.Statistics.BlocksCovered;
                            totalBlocksNotCovered += ccInfo.Statistics.BlocksNotCovered;

                            ccInfoList.Add(ccInfo);
                            lines.Clear();
                        }
                    }
                }

                WriteCodeCoverageTotalCoverage(totalBlocksCovered, totalBlocksNotCovered, file);
                IEnumerable <CodeCoverageInfo> sortedList = ccInfoList.OrderBy(mi => mi.NamespaceName + mi.ClassName + mi.MethodName);
                foreach (var mi in sortedList)
                {
                    WriteCodeCoverageInfo(lines, mi, file);
                }


                file.Close();
            }
        }