Skip to content

Commit 60925ca

Browse files
Implement SkipDiff (#8666)
* Implement SkippDiff * Skip Docs when comparing APIRevisions
1 parent 4f440fb commit 60925ca

File tree

4 files changed

+33
-14
lines changed

4 files changed

+33
-14
lines changed

src/dotnet/APIView/APIViewWeb/Helpers/CodeFileHelpers.cs

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,11 @@ private static void BuildTokensForDiffNodes(CodePanelData codePanelData, CodePan
394394
{
395395
var token = beforeTokens[beforeIndex++];
396396

397+
if (codePanelRawData.ApplySkipDiff && token.TagsObj.Contains(StructuredToken.SKIPP_DIFF))
398+
{
399+
continue;
400+
}
401+
397402
if (token.Kind == StructuredTokenKind.LineBreak)
398403
{
399404
break;
@@ -416,19 +421,27 @@ private static void BuildTokensForDiffNodes(CodePanelData codePanelData, CodePan
416421

417422
if (beforeTokenRow.Count > 0)
418423
{
419-
beforeTokensInProcess.Enqueue(new DiffLineInProcess()
424+
if (!(codePanelRawData.SkipDocsWhenDiffing && beforeRowGroupId == StructuredToken.DOCUMENTATION))
420425
{
421-
GroupId = beforeRowGroupId,
422-
RowOfTokens = beforeTokenRow,
423-
TokenIdsInRow = new HashSet<string>(beforeTokenIdsInRow)
424-
});
426+
beforeTokensInProcess.Enqueue(new DiffLineInProcess()
427+
{
428+
GroupId = beforeRowGroupId,
429+
RowOfTokens = beforeTokenRow,
430+
TokenIdsInRow = new HashSet<string>(beforeTokenIdsInRow)
431+
});
432+
}
425433
beforeTokenIdsInRow.Clear();
426434
}
427435

428436
while (afterIndex < afterTokens.Count)
429437
{
430438
var token = afterTokens[afterIndex++];
431439

440+
if (codePanelRawData.ApplySkipDiff && token.TagsObj.Contains(StructuredToken.SKIPP_DIFF))
441+
{
442+
continue;
443+
}
444+
432445
if (token.Kind == StructuredTokenKind.LineBreak)
433446
{
434447
break;
@@ -451,12 +464,15 @@ private static void BuildTokensForDiffNodes(CodePanelData codePanelData, CodePan
451464

452465
if (afterTokenRow.Count > 0)
453466
{
454-
afterTokensInProcess.Enqueue(new DiffLineInProcess()
467+
if (!(codePanelRawData.SkipDocsWhenDiffing && afterRowGroupId == StructuredToken.DOCUMENTATION))
455468
{
456-
GroupId = afterRowGroupId,
457-
RowOfTokens = afterTokenRow,
458-
TokenIdsInRow = new HashSet<string>(afterTokenIdsInRow)
459-
});
469+
afterTokensInProcess.Enqueue(new DiffLineInProcess()
470+
{
471+
GroupId = afterRowGroupId,
472+
RowOfTokens = afterTokenRow,
473+
TokenIdsInRow = new HashSet<string>(afterTokenIdsInRow)
474+
});
475+
}
460476
afterTokenIdsInRow.Clear();
461477
}
462478

src/dotnet/APIView/APIViewWeb/LeanModels/ReviewRevisionPageModels.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ public class CodePanelRawData
6767
public List<APITreeNode> APIForest { get; set; } = new List<APITreeNode>();
6868
public CodeDiagnostic[] Diagnostics { get; set; } = new CodeDiagnostic[0];
6969
public string Language { get; set; }
70+
public bool ApplySkipDiff { get; set; }
71+
public bool SkipDocsWhenDiffing { get; set; }
7072
}
7173

7274
public class CodePanelRowData

src/dotnet/APIView/APIViewWeb/Managers/CodeFileManager.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
using APIViewWeb.Managers.Interfaces;
1010
using APIViewWeb.Models;
1111
using APIViewWeb.Repositories;
12-
using Microsoft.CodeAnalysis.Host;
1312

1413
namespace APIViewWeb.Managers
1514
{
@@ -208,11 +207,13 @@ public async Task<bool> AreAPICodeFilesTheSame(RenderedCodeFile codeFileA, Rende
208207

209208
if (LanguageServiceHelpers.UseTreeStyleParser(codeFileA.CodeFile.Language))
210209
{
211-
var diffTree =CodeFileHelpers.ComputeAPIForestDiff(codeFileA.CodeFile.APIForest, codeFileB.CodeFile.APIForest);
210+
var diffTree = CodeFileHelpers.ComputeAPIForestDiff(codeFileA.CodeFile.APIForest, codeFileB.CodeFile.APIForest);
212211
var codePanelRawData = new CodePanelRawData()
213212
{
214213
APIForest = diffTree,
215-
Language = codeFileA.CodeFile.Language
214+
Language = codeFileA.CodeFile.Language,
215+
SkipDocsWhenDiffing = true,
216+
ApplySkipDiff = true
216217
};
217218
var result = await CodeFileHelpers.GenerateCodePanelDataAsync(codePanelRawData);
218219
return !result.HasDiff;

src/dotnet/APIView/apiview.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ parameters:
44
default: 'https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json'
55
- name: CSharpAPIParserVersion
66
type: string
7-
default: '1.0.0-dev.20240716.16'
7+
default: '1.0.0-dev.20240719.1'
88

99
trigger:
1010
branches:

0 commit comments

Comments
 (0)