public CloneGroups()

in DuplicateCodeDetector/CloneGroups.cs [26:59]


        public CloneGroups(IEnumerable<(string File1, string File2)> clonePairs)
        {
            foreach (var (f1, f2) in clonePairs)
            {
                AddElementNonTransitive(f1, f2);
                AddElementNonTransitive(f2, f1);
            }
            Console.WriteLine($"Found {FileToCloneSet.Count} files that are cloned.");
            var numCloneClusters = MakeCloneSetTransitive();
            Console.WriteLine($"Number of unique clone clusters {numCloneClusters}");

            var duplicationFactors = CloneSets.Select(c => c.Count).ToList();

            if (duplicationFactors.Count > 0)
            {
                Console.WriteLine($"Avg Duplication Factor: {duplicationFactors.Average()}");
                duplicationFactors.Sort();
                double median;
                int midpoint = duplicationFactors.Count > 2 ? duplicationFactors.Count / 2 : 0;
                if (duplicationFactors.Count % 2 == 0)
                {
                    median = (duplicationFactors[midpoint] + duplicationFactors[midpoint + 1]) / 2;
                }
                else
                {
                    median = duplicationFactors[midpoint];
                }
                Console.WriteLine($"Median Duplication Factor: {median}");
            }
            else
            {
                Console.WriteLine("No duplicates found.");
            }
        }