public override void ComputeResults(Results results, ICollection files, Hashtable htBin, ICollection filters) { Visit scan = new Visit(); scan.Collectors.Register("DesignFragment", new DesignFragmentCollector()); scan.DoScan(files, htBin, filters); DesignFragmentCollector seqs = (DesignFragmentCollector)scan.Collectors["DesignFragment"]; MakeDataTable(); ArrayList inspectSeqs = (ArrayList)seqs.Values; Hashtable methodMap = (Hashtable)seqs.Value; Hashtable frags = new Hashtable(); for (int i = 0; i < inspectSeqs.Count; i++) { for (int j = i + 1; j < inspectSeqs.Count; j++) { int[] a = (int[])inspectSeqs[i]; int[] b = (int[])inspectSeqs[j]; int[] sequence; int matchLength = LongestCommonSubstring(a, b, out sequence); if (matchLength > 3) { HashableArray s = new HashableArray(sequence); if (!frags.Contains(s)) { frags[s] = 0; } frags[s] = (int)frags[s] + 1; } } } foreach (HashableArray sequence in frags.Keys) { string[] list = Map <int, string>(delegate(int x) { return((string)methodMap[x]); }, sequence.me); m_fragments.Rows.Add(string.Join(";", list), frags[sequence], sequence.me.Length); } results.PluginTables.Add(m_fragments); }