Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
28f33524
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
28f33524
编写于
3月 17, 2020
作者:
C
Cyrus Najmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make more of the incremental analyzer async
上级
1a3e3c4f
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
87 addition
and
66 deletion
+87
-66
src/EditorFeatures/Core/Implementation/TodoComment/TodoCommentIncrementalAnalyzer.cs
...lementation/TodoComment/TodoCommentIncrementalAnalyzer.cs
+5
-3
src/EditorFeatures/Test/SolutionCrawler/WorkCoordinatorTests.cs
...itorFeatures/Test/SolutionCrawler/WorkCoordinatorTests.cs
+6
-4
src/Features/Core/Portable/Diagnostics/DefaultDiagnosticAnalyzerService.cs
.../Portable/Diagnostics/DefaultDiagnosticAnalyzerService.cs
+5
-4
src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer_IncrementalAnalyzer.cs
...neV2/DiagnosticIncrementalAnalyzer_IncrementalAnalyzer.cs
+20
-20
src/Features/Core/Portable/IncrementalCaches/SymbolTreeInfoIncrementalAnalyzerProvider.cs
...mentalCaches/SymbolTreeInfoIncrementalAnalyzerProvider.cs
+3
-2
src/Features/Core/Portable/Notification/SemanticChangeNotificationService.cs
...ortable/Notification/SemanticChangeNotificationService.cs
+5
-5
src/Features/Core/Portable/SolutionCrawler/AggregateIncrementalAnalyzer.cs
.../Portable/SolutionCrawler/AggregateIncrementalAnalyzer.cs
+4
-4
src/Features/Core/Portable/SolutionCrawler/IncrementalAnalyzerBase.cs
.../Core/Portable/SolutionCrawler/IncrementalAnalyzerBase.cs
+4
-2
src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.LowPriorityProcessor.cs
...e/SolutionCrawler/WorkCoordinator.LowPriorityProcessor.cs
+3
-3
src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.NormalPriorityProcessor.cs
...olutionCrawler/WorkCoordinator.NormalPriorityProcessor.cs
+5
-5
src/VisualStudio/Core/Impl/CodeModel/CodeModelIncrementalAnalyzer.cs
...tudio/Core/Impl/CodeModel/CodeModelIncrementalAnalyzer.cs
+4
-2
src/VisualStudio/Core/Test/Diagnostics/DefaultDiagnosticUpdateSourceTests.vb
...re/Test/Diagnostics/DefaultDiagnosticUpdateSourceTests.vb
+2
-2
src/Workspaces/Core/Portable/ExternalAccess/UnitTesting/UnitTestingIncrementalAnalyzer.cs
...ernalAccess/UnitTesting/UnitTestingIncrementalAnalyzer.cs
+11
-5
src/Workspaces/Core/Portable/SolutionCrawler/IIncrementalAnalyzer.cs
...ces/Core/Portable/SolutionCrawler/IIncrementalAnalyzer.cs
+2
-2
src/Workspaces/Remote/Core/Telemetry/ApiUsageIncrementalAnalyzerProvider.cs
...ote/Core/Telemetry/ApiUsageIncrementalAnalyzerProvider.cs
+5
-2
src/Workspaces/Remote/ServiceHub/Services/ProjectTelemetry/RemoteProjectTelemetryIncrementalAnalyzer.cs
...ectTelemetry/RemoteProjectTelemetryIncrementalAnalyzer.cs
+3
-1
未找到文件。
src/EditorFeatures/Core/Implementation/TodoComment/TodoCommentIncrementalAnalyzer.cs
浏览文件 @
28f33524
...
...
@@ -195,11 +195,12 @@ private void RaiseTaskListUpdated(Workspace workspace, Solution solution, Docume
}
}
public
void
RemoveDocument
(
DocumentId
documentId
)
public
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
_state
.
Remove
(
documentId
);
RaiseTaskListUpdated
(
_workspace
,
null
,
documentId
,
ImmutableArray
<
TodoItem
>.
Empty
);
return
Task
.
CompletedTask
;
}
public
bool
NeedsReanalysisOnOptionChanged
(
object
sender
,
OptionChangedEventArgs
e
)
...
...
@@ -247,8 +248,9 @@ public Task AnalyzeProjectAsync(Project project, bool semanticsChanged, Invocati
return
Task
.
CompletedTask
;
}
public
void
RemoveProject
(
ProjectId
projectId
)
public
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
return
Task
.
CompletedTask
;
}
#
endregion
}
...
...
src/EditorFeatures/Test/SolutionCrawler/WorkCoordinatorTests.cs
浏览文件 @
28f33524
...
...
@@ -1514,14 +1514,16 @@ public Task AnalyzeSyntaxAsync(Document document, InvocationReasons reasons, Can
return
Task
.
CompletedTask
;
}
public
void
RemoveDocument
(
DocumentId
documentId
)
public
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
InvalidateDocumentIds
.
Add
(
documentId
);
return
Task
.
CompletedTask
;
}
public
void
RemoveProject
(
ProjectId
projectId
)
public
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
InvalidateProjectIds
.
Add
(
projectId
);
return
Task
.
CompletedTask
;
}
private
void
Process
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
...
...
@@ -1589,8 +1591,8 @@ public Task AnalyzeDocumentAsync(Document document, SyntaxNode bodyOpt, Invocati
public
Task
DocumentResetAsync
(
Document
document
,
CancellationToken
cancellationToken
)
=>
Task
.
CompletedTask
;
public
Task
AnalyzeSyntaxAsync
(
Document
document
,
InvocationReasons
reasons
,
CancellationToken
cancellationToken
)
=>
Task
.
CompletedTask
;
public
Task
AnalyzeProjectAsync
(
Project
project
,
bool
semanticsChanged
,
InvocationReasons
reasons
,
CancellationToken
cancellationToken
)
=>
Task
.
CompletedTask
;
public
void
RemoveDocument
(
DocumentId
documentId
)
{
}
public
void
RemoveProject
(
ProjectId
projectId
)
{
}
public
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
=>
Task
.
CompletedTask
;
public
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
=>
Task
.
CompletedTask
;
#
endregion
}
...
...
src/Features/Core/Portable/Diagnostics/DefaultDiagnosticAnalyzerService.cs
浏览文件 @
28f33524
...
...
@@ -183,7 +183,7 @@ private static IEnumerable<DiagnosticAnalyzer> GetAnalyzers(HostDiagnosticAnalyz
return
hostAnalyzers
.
CreateDiagnosticAnalyzersPerReference
(
project
).
Values
.
SelectMany
(
v
=>
v
);
}
public
void
RemoveDocument
(
DocumentId
documentId
)
public
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
// a file is removed from a solution
//
...
...
@@ -194,13 +194,13 @@ public void RemoveDocument(DocumentId documentId)
// both of them at the end generates semantic errors
RaiseEmptyDiagnosticUpdated
(
AnalysisKind
.
Syntax
,
documentId
);
RaiseEmptyDiagnosticUpdated
(
AnalysisKind
.
Semantic
,
documentId
);
return
Task
.
CompletedTask
;
}
public
Task
DocumentResetAsync
(
Document
document
,
CancellationToken
cancellationToken
)
{
// no closed file diagnostic and file is not opened, remove any existing diagnostics
RemoveDocument
(
document
.
Id
);
return
Task
.
CompletedTask
;
return
RemoveDocumentAsync
(
document
.
Id
,
cancellationToken
);
}
public
Task
DocumentCloseAsync
(
Document
document
,
CancellationToken
cancellationToken
)
...
...
@@ -229,8 +229,9 @@ public Task NewSolutionSnapshotAsync(Solution solution, CancellationToken cancel
return
Task
.
CompletedTask
;
}
public
void
RemoveProject
(
ProjectId
projectId
)
public
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
return
Task
.
CompletedTask
;
}
private
class
DefaultUpdateArgsId
:
BuildToolId
.
Base
<
int
,
DocumentId
>,
ISupportLiveUpdate
...
...
src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer_IncrementalAnalyzer.cs
浏览文件 @
28f33524
...
...
@@ -197,7 +197,7 @@ private void RaiseDiagnosticsRemovedIfRequiredForClosedOrResetDocument(Document
RaiseDiagnosticsRemovedForDocument
(
document
.
Id
,
stateSets
);
}
public
void
RemoveDocument
(
DocumentId
documentId
)
public
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
using
(
Logger
.
LogBlock
(
FunctionId
.
Diagnostics_RemoveDocument
,
GetRemoveLogMessage
,
documentId
,
CancellationToken
.
None
))
{
...
...
@@ -208,14 +208,14 @@ public void RemoveDocument(DocumentId documentId)
var
changed
=
_stateManager
.
OnDocumentRemoved
(
stateSets
,
documentId
);
// if there was no diagnostic reported for this document, nothing to clean up
if
(!
changed
)
// this is Perf to reduce raising events unnecessarily.
if
(
changed
)
{
// this is Perf to reduce raising events unnecessarily.
return
;
RaiseDiagnosticsRemovedForDocument
(
documentId
,
stateSets
);
}
RaiseDiagnosticsRemovedForDocument
(
documentId
,
stateSets
);
}
return
Task
.
CompletedTask
;
}
private
void
RaiseDiagnosticsRemovedForDocument
(
DocumentId
documentId
,
IEnumerable
<
StateSet
>
stateSets
)
...
...
@@ -233,7 +233,7 @@ private void RaiseDiagnosticsRemovedForDocument(DocumentId documentId, IEnumerab
});
}
public
void
RemoveProject
(
ProjectId
projectId
)
public
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellation
)
{
using
(
Logger
.
LogBlock
(
FunctionId
.
Diagnostics_RemoveProject
,
GetRemoveLogMessage
,
projectId
,
CancellationToken
.
None
))
{
...
...
@@ -244,22 +244,22 @@ public void RemoveProject(ProjectId projectId)
var
changed
=
_stateManager
.
OnProjectRemoved
(
stateSets
,
projectId
);
// if there was no diagnostic reported for this project, nothing to clean up
if
(!
changed
)
{
// this is Perf to reduce raising events unnecessarily.
return
;
}
// remove all diagnostics for the project
AnalyzerService
.
RaiseBulkDiagnosticsUpdated
(
raiseEvents
=>
// this is Perf to reduce raising events unnecessarily.
if
(
changed
)
{
foreach
(
var
stateSet
in
stateSets
)
// remove all diagnostics for the project
AnalyzerService
.
RaiseBulkDiagnosticsUpdated
(
raiseEvents
=>
{
// clear all project diagnostics
RaiseDiagnosticsRemoved
(
projectId
,
solution
:
null
,
stateSet
,
raiseEvents
);
}
});
foreach
(
var
stateSet
in
stateSets
)
{
// clear all project diagnostics
RaiseDiagnosticsRemoved
(
projectId
,
solution
:
null
,
stateSet
,
raiseEvents
);
}
});
}
}
return
Task
.
CompletedTask
;
}
public
Task
NewSolutionSnapshotAsync
(
Solution
solution
,
CancellationToken
cancellationToken
)
...
...
src/Features/Core/Portable/IncrementalCaches/SymbolTreeInfoIncrementalAnalyzerProvider.cs
浏览文件 @
28f33524
...
...
@@ -291,11 +291,12 @@ private Task UpdateReferencesAsync(Project project, CancellationToken cancellati
metadataInfo
.
ReferencingProjects
.
Add
(
project
.
Id
);
}
public
override
void
RemoveProject
(
ProjectId
projectId
)
public
override
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
_projectToInfo
.
TryRemove
(
projectId
,
out
var
info
);
RemoveMetadataReferences
(
projectId
);
return
Task
.
CompletedTask
;
}
private
void
RemoveMetadataReferences
(
ProjectId
projectId
)
...
...
src/Features/Core/Portable/Notification/SemanticChangeNotificationService.cs
浏览文件 @
28f33524
...
...
@@ -45,19 +45,20 @@ public NotificationService(SemanticChangeNotificationService owner)
_owner
=
owner
;
}
public
void
RemoveDocument
(
DocumentId
documentId
)
public
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
// now it runs for all workspace, make sure we get rid of entry from the map
// as soon as it is not needed.
// this whole thing will go away when workspace disable itself from solution crawler.
_map
.
TryRemove
(
documentId
,
out
var
unused
);
return
Task
.
CompletedTask
;
}
public
void
RemoveProject
(
ProjectId
projectId
)
public
async
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
foreach
(
var
documentId
in
_map
.
Keys
.
Where
(
id
=>
id
.
ProjectId
==
projectId
).
ToArray
())
{
RemoveDocument
(
documentId
);
await
RemoveDocumentAsync
(
documentId
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
...
...
@@ -68,8 +69,7 @@ public Task DocumentCloseAsync(Document document, CancellationToken cancellation
public
Task
DocumentResetAsync
(
Document
document
,
CancellationToken
cancellationToken
)
{
RemoveDocument
(
document
.
Id
);
return
Task
.
CompletedTask
;
return
RemoveDocumentAsync
(
document
.
Id
,
cancellationToken
);
}
public
bool
NeedsReanalysisOnOptionChanged
(
object
sender
,
OptionChangedEventArgs
e
)
...
...
src/Features/Core/Portable/SolutionCrawler/AggregateIncrementalAnalyzer.cs
浏览文件 @
28f33524
...
...
@@ -99,24 +99,24 @@ private bool TryGetAnalyzer(Project project, out IIncrementalAnalyzer analyzer)
return
true
;
}
public
void
RemoveDocument
(
DocumentId
documentId
)
public
async
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
foreach
(
var
(
_
,
analyzer
)
in
Analyzers
)
{
if
(
analyzer
.
IsValueCreated
)
{
a
nalyzer
.
Value
.
RemoveDocument
(
documentId
);
a
wait
analyzer
.
Value
.
RemoveDocumentAsync
(
documentId
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
}
public
void
RemoveProject
(
ProjectId
projectId
)
public
async
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
foreach
(
var
(
_
,
analyzer
)
in
Analyzers
)
{
if
(
analyzer
.
IsValueCreated
)
{
a
nalyzer
.
Value
.
RemoveProject
(
projectId
);
a
wait
analyzer
.
Value
.
RemoveProjectAsync
(
projectId
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
}
...
...
src/Features/Core/Portable/SolutionCrawler/IncrementalAnalyzerBase.cs
浏览文件 @
28f33524
...
...
@@ -54,12 +54,14 @@ public virtual Task AnalyzeProjectAsync(Project project, bool semanticsChanged,
return
Task
.
CompletedTask
;
}
public
virtual
void
RemoveDocument
(
DocumentId
documentId
)
public
virtual
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
return
Task
.
CompletedTask
;
}
public
virtual
void
RemoveProject
(
ProjectId
projectId
)
public
virtual
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellation
)
{
return
Task
.
CompletedTask
;
}
}
}
src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.LowPriorityProcessor.cs
浏览文件 @
28f33524
...
...
@@ -152,7 +152,7 @@ private async Task ProcessProjectAsync(ImmutableArray<IIncrementalAnalyzer> anal
{
SolutionCrawlerLogger
.
LogProcessProjectNotExist
(
Processor
.
_logAggregator
);
RemoveProject
(
projectId
);
await
RemoveProjectAsync
(
projectId
,
cancellationToken
).
ConfigureAwait
(
false
);
}
if
(!
cancellationToken
.
IsCancellationRequested
)
...
...
@@ -183,11 +183,11 @@ private async Task ProcessProjectAsync(ImmutableArray<IIncrementalAnalyzer> anal
}
}
private
void
RemoveProject
(
ProjectId
projectId
)
private
async
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
foreach
(
var
analyzer
in
Analyzers
)
{
a
nalyzer
.
RemoveProject
(
projectId
);
a
wait
analyzer
.
RemoveProjectAsync
(
projectId
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
...
...
src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.NormalPriorityProcessor.cs
浏览文件 @
28f33524
...
...
@@ -359,7 +359,7 @@ private async Task ProcessDocumentAsync(ImmutableArray<IIncrementalAnalyzer> ana
{
SolutionCrawlerLogger
.
LogProcessDocumentNotExist
(
Processor
.
_logAggregator
);
RemoveDocument
(
documentId
);
await
RemoveDocumentAsync
(
documentId
,
cancellationToken
).
ConfigureAwait
(
false
);
}
if
(!
cancellationToken
.
IsCancellationRequested
)
...
...
@@ -451,16 +451,16 @@ private async Task ProcessReanalyzeDocumentAsync(WorkItem workItem, Document doc
}
}
private
void
RemoveDocument
(
DocumentId
documentId
)
private
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
RemoveDocument
(
Analyzers
,
documentId
);
return
RemoveDocumentAsync
(
Analyzers
,
documentId
,
cancellationToken
);
}
private
static
void
RemoveDocument
(
ImmutableArray
<
IIncrementalAnalyzer
>
analyzers
,
DocumentId
documentId
)
private
static
async
Task
RemoveDocumentAsync
(
ImmutableArray
<
IIncrementalAnalyzer
>
analyzers
,
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
foreach
(
var
analyzer
in
analyzers
)
{
a
nalyzer
.
RemoveDocument
(
documentId
);
a
wait
analyzer
.
RemoveDocumentAsync
(
documentId
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
...
...
src/VisualStudio/Core/Impl/CodeModel/CodeModelIncrementalAnalyzer.cs
浏览文件 @
28f33524
...
...
@@ -67,10 +67,11 @@ public Task AnalyzeSyntaxAsync(Document document, InvocationReasons reasons, Can
return
Task
.
CompletedTask
;
}
public
void
RemoveDocument
(
DocumentId
documentId
)
public
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
// REVIEW: do we need to fire events when a document is removed from the solution?
FireEvents
(
documentId
,
CancellationToken
.
None
);
return
Task
.
CompletedTask
;
}
public
void
FireEvents
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
...
...
@@ -138,8 +139,9 @@ public Task AnalyzeProjectAsync(Project project, bool semanticsChanged, Invocati
return
Task
.
CompletedTask
;
}
public
void
RemoveProject
(
ProjectId
projectId
)
public
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
return
Task
.
CompletedTask
;
}
#
endregion
}
...
...
src/VisualStudio/Core/Test/Diagnostics/DefaultDiagnosticUpdateSourceTests.vb
浏览文件 @
28f33524
...
...
@@ -183,10 +183,10 @@ class A
Dim
document
=
workspace
.
CurrentSolution
.
Projects
.
First
().
Documents
.
First
()
Dim
analyzer
=
miscService
.
CreateIncrementalAnalyzer
(
workspace
)
Await
analyzer
.
AnalyzeSyntaxAsync
(
document
,
InvocationReasons
.
Empty
,
CancellationToken
.
None
)
Await
analyzer
.
AnalyzeDocumentAsync
(
document
,
Nothing
,
InvocationReasons
.
Empty
,
CancellationToken
.
None
)
analyzer
.
RemoveDocument
(
document
.
Id
)
Await
analyzer
.
RemoveDocumentAsync
(
document
.
Id
,
CancellationToken
.
None
)
Dim
listenerProvider
=
workspace
.
ExportProvider
.
GetExportedValue
(
Of
IAsynchronousOperationListenerProvider
)
Await
listenerProvider
.
GetWaiter
(
FeatureAttribute
.
DiagnosticService
).
ExpeditedWaitAsync
()
...
...
src/Workspaces/Core/Portable/ExternalAccess/UnitTesting/UnitTestingIncrementalAnalyzer.cs
浏览文件 @
28f33524
...
...
@@ -41,11 +41,17 @@ public bool NeedsReanalysisOnOptionChanged(object sender, OptionChangedEventArgs
public
Task
NewSolutionSnapshotAsync
(
Solution
solution
,
CancellationToken
cancellationToken
)
=>
_implementation
.
NewSolutionSnapshotAsync
(
solution
,
cancellationToken
);
public
void
RemoveDocument
(
DocumentId
documentId
)
=>
_implementation
.
RemoveDocument
(
documentId
);
public
void
RemoveProject
(
ProjectId
projectId
)
=>
_implementation
.
RemoveProject
(
projectId
);
public
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
_implementation
.
RemoveDocument
(
documentId
);
return
Task
.
CompletedTask
;
}
public
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
_implementation
.
RemoveProject
(
projectId
);
return
Task
.
CompletedTask
;
}
// Unit testing incremental analyzer only supports full solution analysis scope.
// In future, we should add a separate option to allow users to configure background analysis scope for unit testing.
...
...
src/Workspaces/Core/Portable/SolutionCrawler/IIncrementalAnalyzer.cs
浏览文件 @
28f33524
...
...
@@ -24,8 +24,8 @@ internal interface IIncrementalAnalyzer
Task
AnalyzeDocumentAsync
(
Document
document
,
SyntaxNode
bodyOpt
,
InvocationReasons
reasons
,
CancellationToken
cancellationToken
);
Task
AnalyzeProjectAsync
(
Project
project
,
bool
semanticsChanged
,
InvocationReasons
reasons
,
CancellationToken
cancellationToken
);
void
RemoveDocument
(
DocumentId
documentId
);
void
RemoveProject
(
ProjectId
projectId
);
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
);
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
);
bool
NeedsReanalysisOnOptionChanged
(
object
sender
,
OptionChangedEventArgs
e
);
}
...
...
src/Workspaces/Remote/Core/Telemetry/ApiUsageIncrementalAnalyzerProvider.cs
浏览文件 @
28f33524
...
...
@@ -41,12 +41,14 @@ private sealed class Analyzer : IIncrementalAnalyzer
private
readonly
HashSet
<
ProjectId
>
_reported
=
new
HashSet
<
ProjectId
>();
public
void
RemoveProject
(
ProjectId
projectId
)
public
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
lock
(
_reported
)
{
_reported
.
Remove
(
projectId
);
}
return
Task
.
CompletedTask
;
}
public
async
Task
AnalyzeProjectAsync
(
Project
project
,
bool
semanticsChanged
,
InvocationReasons
reasons
,
CancellationToken
cancellationToken
)
...
...
@@ -227,8 +229,9 @@ public Task NewSolutionSnapshotAsync(Solution solution, CancellationToken cancel
return
Task
.
CompletedTask
;
}
public
void
RemoveDocument
(
DocumentId
documentId
)
public
Task
RemoveDocumentAsync
(
DocumentId
documentId
,
CancellationToken
cancellationToken
)
{
return
Task
.
CompletedTask
;
}
}
}
...
...
src/Workspaces/Remote/ServiceHub/Services/ProjectTelemetry/RemoteProjectTelemetryIncrementalAnalyzer.cs
浏览文件 @
28f33524
...
...
@@ -74,12 +74,14 @@ public override async Task AnalyzeProjectAsync(Project project, bool semanticsCh
cancellationToken
).
ConfigureAwait
(
false
);
}
public
override
void
RemoveProject
(
ProjectId
projectId
)
public
override
Task
RemoveProjectAsync
(
ProjectId
projectId
,
CancellationToken
cancellationToken
)
{
lock
(
_gate
)
{
_projectToInfo
.
Remove
(
projectId
);
}
return
Task
.
CompletedTask
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录