/// <summary>
        ///  Debugging aid which writes each full name and the number of occurrences of it
        /// </summary>
        /// <param name="writer">TextWriter to write the tree to</param>
        public void WriteDuplicateWeight(TextWriter writer)
        {
            ConvertToImmutable();

            // Walk and compute total weight (duplicates x members) for the tree
            int[] duplicateWeight = new int[this.MergedMembers.Count];
            DuplicateWeight(0, duplicateWeight);

            // Write types/namespaces with over 1,000 weight
            writer.WriteLine("FullName,Count,Weight");

            for (int i = 0; i < this.MergedMembers.Count; ++i)
            {
                if (duplicateWeight[i] > 1000)
                {
                    Path8 fullName = new Path8(this.StringStore, this.MergedMembers, i, '.', this.MergedMembers.GetDepth(i));
                    fullName.WriteTo(writer);
                    writer.Write(",");
                    writer.Write(this.MergedMemberDuplicateCount[i]);
                    writer.Write(",");
                    writer.Write(duplicateWeight[i]);
                    writer.WriteLine();
                }
            }
        }
Exemple #2
0
        public static void WriteMatchesForToolUse(TextWriter writer, PartialArray <Symbol> results)
        {
            for (int i = 0; i < results.Count; ++i)
            {
                Symbol result        = results[i];
                Path8  containerName = result.ContainerName;
                if (!containerName.IsEmpty)
                {
                    containerName.WriteTo(writer);
                    writer.Write('.');
                }

                result.WriteSignature(writer);
                writer.Write('\t');

                // Write full location (local/found code) or package (package index)
                if (result.HasLocation)
                {
                    result.FilePath.WriteTo(writer);
                    writer.Write('(');
                    writer.Write(result.Line);
                    writer.Write(')');
                }
                else
                {
                    result.PackageName.WriteTo(writer);
                }

                writer.WriteLine();
            }
        }
Exemple #3
0
        private static void WriteContainerHeading(TextWriter writer, Symbol result)
        {
            if (result.HasLocation)
            {
                result.FilePath.Name.WriteTo(writer);
                writer.Write('(');
                writer.Write(result.Line);
                writer.Write(')');
            }
            else
            {
                result.PackageName.WriteTo(writer);
            }

            writer.Write('\t');

            Path8 containerName = result.ContainerName;

            if (!containerName.IsEmpty)
            {
                containerName.WriteTo(writer);
                writer.Write('.');
            }

            result.WriteSignature(writer);

            writer.WriteLine();
        }
        /// <summary>
        ///  Debugging aid which writes each full name and the number of occurrences of it
        /// </summary>
        /// <param name="writer">TextWriter to write the tree to</param>
        public void WriteDuplicateCounts(TextWriter writer)
        {
            ConvertToImmutable();

            writer.WriteLine("FullName,OccurrenceCount");

            for (int i = 0; i < this.MergedMembers.Count; ++i)
            {
                int duplicateCount = this.MergedMemberDuplicateCount[i];
                if (duplicateCount > 1)
                {
                    Path8 fullName = new Path8(this.StringStore, this.MergedMembers, i, '.', this.MergedMembers.GetDepth(i) - 1);
                    fullName.WriteTo(writer);
                    writer.Write(",");
                    writer.Write(duplicateCount);
                    writer.WriteLine();
                }
            }
        }