Ejemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NamespaceStatistics"/> class.
        /// </summary>
        /// <param name="module">Module containing the namespace.</param>
        /// <param name="name">Namespace name.</param>
        internal NamespaceStatistics(ModuleStatistics module, string name)
        {
            if (module == null) throw new ArgumentNullException("module");
            if (string.IsNullOrEmpty(name)) throw new ArgumentNullException("name");

            Module = module;
            NamespaceName = name;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates a module coverage statistics based on given coverage buffer.
        /// </summary>
        /// <param name="files">List to which instrumented files are added.</param>
        /// <param name="module">Information about module coverage.</param>
        /// <param name="lineStartId">Starting identification number for method lines.</param>
        /// <returns>New <see cref="ModuleStatistics"/> instance.</returns>
        internal static ModuleStatistics Create(FileSpecList files, ICoverageModule module, ref long lineStartId)
        {
            var moduleStats = new ModuleStatistics(module.Name, module.Signature, module.ImageSize, module.ImageLinkTime);

            var lines = new List<BlockLineRange>();
            var coverageBuffer = module.GetCoverageBuffer(null /* tests */);
            using (var symbolReader = module.Symbols.CreateReader())
            {
                uint methodId;
                string methodName;
                string undecoratedMethodName;
                string className;
                string namespaceName;

                while (symbolReader.GetNextMethod(out methodId, out methodName, out undecoratedMethodName, out className, out namespaceName, lines))
                {
                    var namespaceStats = moduleStats.GetOrAddNamespace(namespaceName);
                    var classStats = namespaceStats.GetOrAddClass(className);

                    var methodStats = MethodStatistics.Create(methodId, methodName, undecoratedMethodName, coverageBuffer, lines, files, ref lineStartId);
                    classStats.AddMethod(methodStats);

                    // Clear the method list to be ready for next method.
                    lines.Clear();
                }
            }
            return moduleStats;
        }