private async Task GetFormattedDiff(RenderedCodeFile renderedCodeFile, ReviewRevisionModel lastRevision, StringBuilder stringBuilder) { RenderedCodeFile autoReview = await _codeFileRepository.GetCodeFileAsync(lastRevision, false); var autoReviewTextFile = autoReview.RenderText(showDocumentation: false, skipDiff: true); var prCodeTextFile = renderedCodeFile.RenderText(showDocumentation: false, skipDiff: true); var diffLines = InlineDiff.Compute(autoReviewTextFile, prCodeTextFile, autoReviewTextFile, prCodeTextFile); if (diffLines == null || diffLines.Length == 0 || diffLines.Count(l => l.Kind != DiffLineKind.Unchanged) > 10) { return; } stringBuilder.Append(Environment.NewLine).Append("**API changes**").Append(Environment.NewLine); stringBuilder.Append("```diff").Append(Environment.NewLine); foreach (var line in diffLines) { if (line.Kind == DiffLineKind.Added) { stringBuilder.Append("+ ").Append(line.Line.DisplayString).Append(Environment.NewLine); } else if (line.Kind == DiffLineKind.Removed) { stringBuilder.Append("- ").Append(line.Line.DisplayString).Append(Environment.NewLine); } } stringBuilder.Append("```"); }
private async Task <bool> IsReviewSame(ReviewRevisionModel revision, RenderedCodeFile renderedCodeFile) { //This will compare and check if new code file content is same as revision in parameter var lastRevisionFile = await _codeFileRepository.GetCodeFileAsync(revision); var lastRevisionTextLines = lastRevisionFile.RenderText(showDocumentation: false, skipDiff: true); var fileTextLines = renderedCodeFile.RenderText(showDocumentation: false, skipDiff: true); return(lastRevisionTextLines.SequenceEqual(fileTextLines)); }
private async Task <bool> IsReviewSame(ReviewModel review, CodeFile newCodeFile) { //This will compare and check if new code file content is same as last revision of given review in parameter //Get latest revision of review and check diff var lastRevisionFile = await _codeFileRepository.GetCodeFileAsync(review.Revisions.Last()); var lastRevisionTextLines = lastRevisionFile.RenderText(false); var renderedCodeFile = new RenderedCodeFile(newCodeFile); var fileTextLines = renderedCodeFile.RenderText(false); return(lastRevisionTextLines.SequenceEqual(fileTextLines)); }