Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
949201f9
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,发现更多精彩内容 >>
提交
949201f9
编写于
5月 23, 2017
作者:
H
Heejae Chang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
made tests to pass
上级
16464c82
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
16 addition
and
3 deletion
+16
-3
src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticAnalyzerExecutor.cs
...rtable/Diagnostics/EngineV2/DiagnosticAnalyzerExecutor.cs
+8
-1
src/VisualStudio/Core/Test.Next/Services/VisualStudioDiagnosticAnalyzerExecutorTests.cs
...t/Services/VisualStudioDiagnosticAnalyzerExecutorTests.cs
+8
-2
未找到文件。
src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticAnalyzerExecutor.cs
浏览文件 @
949201f9
...
@@ -91,7 +91,8 @@ public AnalyzerExecutor(AbstractHostDiagnosticUpdateSource hostDiagnosticUpdateS
...
@@ -91,7 +91,8 @@ public AnalyzerExecutor(AbstractHostDiagnosticUpdateSource hostDiagnosticUpdateS
private
async
Task
<
DiagnosticAnalysisResultMap
<
DiagnosticAnalyzer
,
DiagnosticAnalysisResult
>>
AnalyzeInProcAsync
(
private
async
Task
<
DiagnosticAnalysisResultMap
<
DiagnosticAnalyzer
,
DiagnosticAnalysisResult
>>
AnalyzeInProcAsync
(
CompilationWithAnalyzers
analyzerDriver
,
Project
project
,
CancellationToken
cancellationToken
)
CompilationWithAnalyzers
analyzerDriver
,
Project
project
,
CancellationToken
cancellationToken
)
{
{
if
(
analyzerDriver
.
Analyzers
.
Length
==
0
)
if
(
analyzerDriver
==
null
||
analyzerDriver
.
Analyzers
.
Length
==
0
)
{
{
// quick bail out
// quick bail out
return
DiagnosticAnalysisResultMap
.
Create
(
ImmutableDictionary
<
DiagnosticAnalyzer
,
DiagnosticAnalysisResult
>.
Empty
,
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalyzerTelemetryInfo
>.
Empty
);
return
DiagnosticAnalysisResultMap
.
Create
(
ImmutableDictionary
<
DiagnosticAnalyzer
,
DiagnosticAnalysisResult
>.
Empty
,
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalyzerTelemetryInfo
>.
Empty
);
...
@@ -152,6 +153,12 @@ public AnalyzerExecutor(AbstractHostDiagnosticUpdateSource hostDiagnosticUpdateS
...
@@ -152,6 +153,12 @@ public AnalyzerExecutor(AbstractHostDiagnosticUpdateSource hostDiagnosticUpdateS
private
CompilationWithAnalyzers
CreateAnalyzerDriver
(
CompilationWithAnalyzers
analyzerDriver
,
Func
<
DiagnosticAnalyzer
,
bool
>
predicate
)
private
CompilationWithAnalyzers
CreateAnalyzerDriver
(
CompilationWithAnalyzers
analyzerDriver
,
Func
<
DiagnosticAnalyzer
,
bool
>
predicate
)
{
{
var
analyzers
=
analyzerDriver
.
Analyzers
.
Where
(
predicate
).
ToImmutableArray
();
var
analyzers
=
analyzerDriver
.
Analyzers
.
Where
(
predicate
).
ToImmutableArray
();
if
(
analyzers
.
Length
==
0
)
{
// return null since we can't create CompilationWithAnalyzers with 0 analyzers
return
null
;
}
return
analyzerDriver
.
Compilation
.
WithAnalyzers
(
analyzers
,
analyzerDriver
.
AnalysisOptions
);
return
analyzerDriver
.
Compilation
.
WithAnalyzers
(
analyzers
,
analyzerDriver
.
AnalysisOptions
);
}
}
...
...
src/VisualStudio/Core/Test.Next/Services/VisualStudioDiagnosticAnalyzerExecutorTests.cs
浏览文件 @
949201f9
...
@@ -157,7 +157,10 @@ void Method()
...
@@ -157,7 +157,10 @@ void Method()
var
project
=
workspace
.
CurrentSolution
.
Projects
.
First
();
var
project
=
workspace
.
CurrentSolution
.
Projects
.
First
();
var
executor
=
(
ICodeAnalysisDiagnosticAnalyzerExecutor
)
new
DiagnosticAnalyzerExecutor
(
new
MyUpdateSource
(
workspace
)).
CreateService
(
workspace
.
Services
);
var
executor
=
(
ICodeAnalysisDiagnosticAnalyzerExecutor
)
new
DiagnosticAnalyzerExecutor
(
new
MyUpdateSource
(
workspace
)).
CreateService
(
workspace
.
Services
);
var
analyzerDriver
=
(
await
project
.
GetCompilationAsync
()).
WithAnalyzers
(
analyzerReference
.
GetAnalyzers
(
project
.
Language
).
Where
(
a
=>
a
.
GetType
()
==
analyzerType
).
ToImmutableArray
());
var
analyzerDriver
=
(
await
project
.
GetCompilationAsync
()).
WithAnalyzers
(
analyzerReference
.
GetAnalyzers
(
project
.
Language
).
Where
(
a
=>
a
.
GetType
()
==
analyzerType
).
ToImmutableArray
(),
new
WorkspaceAnalyzerOptions
(
project
.
AnalyzerOptions
,
project
.
Solution
.
Options
,
project
.
Solution
));
var
result
=
await
executor
.
AnalyzeAsync
(
analyzerDriver
,
project
,
CancellationToken
.
None
);
var
result
=
await
executor
.
AnalyzeAsync
(
analyzerDriver
,
project
,
CancellationToken
.
None
);
var
analyzerResult
=
result
.
AnalysisResult
[
analyzerDriver
.
Analyzers
[
0
]];
var
analyzerResult
=
result
.
AnalysisResult
[
analyzerDriver
.
Analyzers
[
0
]];
...
@@ -175,7 +178,10 @@ private static async Task<DiagnosticAnalysisResult> AnalyzeAsync(TestWorkspace w
...
@@ -175,7 +178,10 @@ private static async Task<DiagnosticAnalysisResult> AnalyzeAsync(TestWorkspace w
var
analyzerReference
=
new
AnalyzerFileReference
(
analyzerType
.
Assembly
.
Location
,
new
TestAnalyzerAssemblyLoader
());
var
analyzerReference
=
new
AnalyzerFileReference
(
analyzerType
.
Assembly
.
Location
,
new
TestAnalyzerAssemblyLoader
());
var
project
=
workspace
.
CurrentSolution
.
GetProject
(
projectId
).
AddAnalyzerReference
(
analyzerReference
);
var
project
=
workspace
.
CurrentSolution
.
GetProject
(
projectId
).
AddAnalyzerReference
(
analyzerReference
);
var
analyzerDriver
=
(
await
project
.
GetCompilationAsync
()).
WithAnalyzers
(
analyzerReference
.
GetAnalyzers
(
project
.
Language
).
Where
(
a
=>
a
.
GetType
()
==
analyzerType
).
ToImmutableArray
());
var
analyzerDriver
=
(
await
project
.
GetCompilationAsync
()).
WithAnalyzers
(
analyzerReference
.
GetAnalyzers
(
project
.
Language
).
Where
(
a
=>
a
.
GetType
()
==
analyzerType
).
ToImmutableArray
(),
new
WorkspaceAnalyzerOptions
(
project
.
AnalyzerOptions
,
project
.
Solution
.
Options
,
project
.
Solution
));
var
result
=
await
executor
.
AnalyzeAsync
(
analyzerDriver
,
project
,
cancellationToken
);
var
result
=
await
executor
.
AnalyzeAsync
(
analyzerDriver
,
project
,
cancellationToken
);
return
result
.
AnalysisResult
[
analyzerDriver
.
Analyzers
[
0
]];
return
result
.
AnalysisResult
[
analyzerDriver
.
Analyzers
[
0
]];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录