private void AddDuplicatesStartedFromLine(DuplicateResultFull result, int i) { var fileLine1 = GetSortedFileLine(i); for (int j = i + 1; j < GetLinesCount(); j++) { var fileLine2 = GetSortedFileLine(j); if (fileLine1.Line != fileLine2.Line) { break; } if (IsPartiallyLinked(i, j)) { continue; } var duplicateInfo = GetEqualLines(i, j, _parameters.Language); if (duplicateInfo.GetLinesCount() < _parameters.NumberOfLinesLowerLimit) { continue; } SetPartialLinks(duplicateInfo); var firstPair = duplicateInfo.GetFirstIndexPair(); result.Add(duplicateInfo.GetLinesCount(), GetFileLine(firstPair.Index1), GetFileLine(firstPair.Index2)); } }
private DuplicateResultFull GetGivenResult() { var duplicateResultFull = new DuplicateResultFull(); var duplicateResult1 = new DuplicateResult(5); duplicateResult1.AddUnit("1.txt", 10); duplicateResult1.AddUnit("2.txt", 20); duplicateResult1.AddUnit("3.txt", 30); duplicateResultFull.Add(duplicateResult1); var duplicateResult2 = new DuplicateResult(20); duplicateResult2.AddUnit("1.txt", 100); duplicateResult2.AddUnit("1.txt", 200); duplicateResult2.AddUnit("2.txt", 50); duplicateResultFull.Add(duplicateResult2); return(duplicateResultFull); }
public DuplicateResultFull FindDuplicates() { var result = new DuplicateResultFull(); for (int i = 0; i < GetLinesCount(); i++) { var currentLine = GetSortedFileLine(i).Line; if (_parameters.Language.CannotStart(currentLine)) { continue; } AddDuplicatesStartedFromLine(result, i); } return(result); }
private void CreateHtmlReport(DuplicateResultFull lastResultFull) { if (!Directory.Exists(_htmlReportFolder)) { Directory.CreateDirectory(_htmlReportFolder); } File.WriteAllText(Path.Combine(_htmlReportFolder, "fullduplicates.html"), lastResultFull.GetHtmlReport()); var indexHtml = new StringBuilder(); indexHtml.AppendLine("<html>"); indexHtml.AppendLine("<head><title>Duplicate Reports</title>"); indexHtml.AppendLine("<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />"); indexHtml.AppendLine("</head>"); indexHtml.AppendLine("<body>"); indexHtml.AppendLine("<h2>REPORT</h2>"); indexHtml.AppendLine("<a href=\"fullduplicates.html\">Full duplicates report</a><br>"); indexHtml.AppendLine("<table><tr><th>Revision</th><th>Plus</th><th>Minus</th></tr>"); DuplicateResultFull previousResult = lastResultFull; DuplicateResultFull currentResult; int counter = 0; for (int i = CommitsList.Count - 2; i >= 0; i--) { if (++counter > _reportDepthLimit) { break; } currentResult = previousResult; previousResult = new DuplicateResultFull(); var xmlFileName = Path.Combine(_workingFolder, CommitsList[i].ToString(), "duplicate.xml"); var xml = File.ReadAllText(xmlFileName); previousResult.InitFromXml(xml); var comparison = new DuplicateResultComparison(previousResult, currentResult); string comparisonFileName = "comparison" + CommitsList[i] + "-" + CommitsList[i + 1] + ".html"; File.WriteAllText(Path.Combine(_htmlReportFolder, comparisonFileName), comparison.GetHtmlReport()); indexHtml.AppendLine("<tr><td><a href=\"" + comparisonFileName + "\">" + CommitsList[i + 1] + "</a></td>"); indexHtml.AppendLine("<td>+" + comparison.PlusCount + "</td>"); indexHtml.AppendLine("<td>-" + comparison.MinusCount + "</td></tr>"); } indexHtml.AppendLine("</table>"); indexHtml.AppendLine("</body>"); indexHtml.AppendLine("</html>"); File.WriteAllText(Path.Combine(_htmlReportFolder, "index.html"), indexHtml.ToString()); }
static void TestXml() { var resultFull = new DuplicateResultFull(); var result1 = new DuplicateResult(5); result1.AddUnit("1.txt", 222); result1.AddUnit("2.txt", 333); var result2 = new DuplicateResult(10); resultFull.Add(result1); resultFull.Add(result2); var xml = resultFull.ToXml(); Console.WriteLine(xml); var newResultFull = new DuplicateResultFull(); newResultFull.InitFromXml(xml); Console.ReadKey(); }