Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
fc85afda
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,发现更多精彩内容 >>
提交
fc85afda
编写于
10月 04, 2016
作者:
H
Heejae Chang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added unit test
上级
72f32fcf
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
39 addition
and
8 deletion
+39
-8
src/EditorFeatures/Core/Shared/Preview/PreviewSolutionCrawlerRegistrationService.cs
...ared/Preview/PreviewSolutionCrawlerRegistrationService.cs
+1
-1
src/EditorFeatures/Test/SolutionCrawler/WorkCoordinatorTests.cs
...itorFeatures/Test/SolutionCrawler/WorkCoordinatorTests.cs
+35
-4
src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs
...ble/SolutionCrawler/SolutionCrawlerRegistrationService.cs
+1
-1
src/Workspaces/Core/Portable/SolutionCrawler/ISolutionCrawlerRegistrationService.cs
...le/SolutionCrawler/ISolutionCrawlerRegistrationService.cs
+1
-1
src/Workspaces/Core/Portable/SolutionCrawler/NullSolutionCrawlerRegisterationService.cs
...olutionCrawler/NullSolutionCrawlerRegisterationService.cs
+1
-1
未找到文件。
src/EditorFeatures/Core/Shared/Preview/PreviewSolutionCrawlerRegistrationService.cs
浏览文件 @
fc85afda
...
...
@@ -109,7 +109,7 @@ public async void Unregister(Workspace workspace, bool blockingShutdown = false)
_owner
.
_analyzerService
.
ShutdownAnalyzerFrom
(
_workspace
);
}
public
void
RegisterIncremental
AnalyzerProvider
(
IIncrementalAnalyzerProvider
provider
,
IncrementalAnalyzerProviderMetadata
metadata
)
public
void
Add
AnalyzerProvider
(
IIncrementalAnalyzerProvider
provider
,
IncrementalAnalyzerProviderMetadata
metadata
)
{
// preview solution crawler doesn't support adding and removing analyzer dynamically
throw
new
NotSupportedException
();
...
...
src/EditorFeatures/Test/SolutionCrawler/WorkCoordinatorTests.cs
浏览文件 @
fc85afda
...
...
@@ -42,6 +42,37 @@ public async Task RegisterService()
}
}
[
Fact
]
public
async
Task
DynamicallyAddAnalyzer
()
{
using
(
var
workspace
=
new
WorkCoordinatorWorkspace
(
SolutionCrawler
))
{
// create solution and wait for it to settle
var
solution
=
GetInitialSolutionInfo
(
workspace
);
workspace
.
OnSolutionAdded
(
solution
);
await
WaitWaiterAsync
(
workspace
.
ExportProvider
);
// create solution crawler and add new analyzer provider dynamically
var
service
=
new
SolutionCrawlerRegistrationService
(
SpecializedCollections
.
EmptyEnumerable
<
Lazy
<
IIncrementalAnalyzerProvider
,
IncrementalAnalyzerProviderMetadata
>>(),
GetListeners
(
workspace
.
ExportProvider
));
service
.
Register
(
workspace
);
var
provider
=
new
AnalyzerProvider
(
new
Analyzer
());
service
.
AddAnalyzerProvider
(
provider
,
Metadata
.
Crawler
);
// wait for everything to settle
await
WaitAsync
(
service
,
workspace
);
service
.
Unregister
(
workspace
);
// check whether everything ran as expected
Assert
.
Equal
(
10
,
provider
.
Analyzer
.
SyntaxDocumentIds
.
Count
);
Assert
.
Equal
(
10
,
provider
.
Analyzer
.
DocumentIds
.
Count
);
}
}
[
Fact
,
WorkItem
(
747226
,
"http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/747226"
)]
public
async
Task
SolutionAdded_Simple
()
{
...
...
@@ -997,23 +1028,23 @@ protected override void Dispose(bool finalize)
private
class
AnalyzerProvider
:
IIncrementalAnalyzerProvider
{
p
rivate
readonly
Analyzer
_a
nalyzer
;
p
ublic
readonly
Analyzer
A
nalyzer
;
public
AnalyzerProvider
(
Analyzer
analyzer
)
{
_a
nalyzer
=
analyzer
;
A
nalyzer
=
analyzer
;
}
public
IIncrementalAnalyzer
CreateIncrementalAnalyzer
(
Workspace
workspace
)
{
return
_a
nalyzer
;
return
A
nalyzer
;
}
}
internal
class
Metadata
:
IncrementalAnalyzerProviderMetadata
{
public
Metadata
(
params
string
[]
workspaceKinds
)
:
base
(
new
Dictionary
<
string
,
object
>
{
{
"WorkspaceKinds"
,
workspaceKinds
},
{
"HighPriorityForActiveFile"
,
false
}
})
:
base
(
new
Dictionary
<
string
,
object
>
{
{
"WorkspaceKinds"
,
workspaceKinds
},
{
"HighPriorityForActiveFile"
,
false
}
,
{
"Name"
,
"TestAnalyzer"
}
})
{
}
...
...
src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs
浏览文件 @
fc85afda
...
...
@@ -85,7 +85,7 @@ public void Unregister(Workspace workspace, bool blockingShutdown = false)
SolutionCrawlerLogger
.
LogUnregistration
(
coordinator
.
CorrelationId
);
}
public
void
RegisterIncremental
AnalyzerProvider
(
IIncrementalAnalyzerProvider
provider
,
IncrementalAnalyzerProviderMetadata
metadata
)
public
void
Add
AnalyzerProvider
(
IIncrementalAnalyzerProvider
provider
,
IncrementalAnalyzerProviderMetadata
metadata
)
{
// now update all existing work coordinator
lock
(
_gate
)
...
...
src/Workspaces/Core/Portable/SolutionCrawler/ISolutionCrawlerRegistrationService.cs
浏览文件 @
fc85afda
...
...
@@ -12,6 +12,6 @@ internal interface ISolutionCrawlerRegistrationService : IWorkspaceService
void
Register
(
Workspace
workspace
);
void
Unregister
(
Workspace
workspace
,
bool
blockingShutdown
=
false
);
void
RegisterIncremental
AnalyzerProvider
(
IIncrementalAnalyzerProvider
provider
,
IncrementalAnalyzerProviderMetadata
metadata
);
void
Add
AnalyzerProvider
(
IIncrementalAnalyzerProvider
provider
,
IncrementalAnalyzerProviderMetadata
metadata
);
}
}
src/Workspaces/Core/Portable/SolutionCrawler/NullSolutionCrawlerRegisterationService.cs
浏览文件 @
fc85afda
...
...
@@ -23,7 +23,7 @@ public void Unregister(Workspace workspace, bool blockingShutdown = false)
// base implementation do nothing.
}
public
void
RegisterIncremental
AnalyzerProvider
(
IIncrementalAnalyzerProvider
provider
,
IncrementalAnalyzerProviderMetadata
metadata
)
public
void
Add
AnalyzerProvider
(
IIncrementalAnalyzerProvider
provider
,
IncrementalAnalyzerProviderMetadata
metadata
)
{
// base implementation do nothing.
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录