Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
4af2693b
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,发现更多精彩内容 >>
提交
4af2693b
编写于
6月 06, 2016
作者:
T
Tomáš Matoušek
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add exception filters to incremental analyzer (#11783)
上级
87a01262
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
78 addition
and
57 deletion
+78
-57
src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer.Executor.cs
...ostics/EngineV2/DiagnosticIncrementalAnalyzer.Executor.cs
+78
-57
未找到文件。
src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer.Executor.cs
浏览文件 @
4af2693b
...
@@ -146,6 +146,8 @@ public IEnumerable<DiagnosticData> ConvertToLocalDiagnostics(Document targetDocu
...
@@ -146,6 +146,8 @@ public IEnumerable<DiagnosticData> ConvertToLocalDiagnostics(Document targetDocu
/// </summary>
/// </summary>
public
async
Task
<
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>>
ComputeDiagnosticsAsync
(
public
async
Task
<
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>>
ComputeDiagnosticsAsync
(
CompilationWithAnalyzers
analyzerDriverOpt
,
Project
project
,
IEnumerable
<
StateSet
>
stateSets
,
CancellationToken
cancellationToken
)
CompilationWithAnalyzers
analyzerDriverOpt
,
Project
project
,
IEnumerable
<
StateSet
>
stateSets
,
CancellationToken
cancellationToken
)
{
try
{
{
var
result
=
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>.
Empty
;
var
result
=
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>.
Empty
;
...
@@ -163,10 +165,17 @@ public IEnumerable<DiagnosticData> ConvertToLocalDiagnostics(Document targetDocu
...
@@ -163,10 +165,17 @@ public IEnumerable<DiagnosticData> ConvertToLocalDiagnostics(Document targetDocu
// check whether there is IDE specific project diagnostic analyzer
// check whether there is IDE specific project diagnostic analyzer
return
await
MergeProjectDiagnosticAnalyzerDiagnosticsAsync
(
project
,
stateSets
,
analyzerDriverOpt
?.
Compilation
,
result
,
cancellationToken
).
ConfigureAwait
(
false
);
return
await
MergeProjectDiagnosticAnalyzerDiagnosticsAsync
(
project
,
stateSets
,
analyzerDriverOpt
?.
Compilation
,
result
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
catch
(
Exception
e
)
when
(
FatalError
.
ReportUnlessCanceled
(
e
))
{
throw
ExceptionUtilities
.
Unreachable
;
}
}
private
async
Task
<
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>>
ComputeDiagnosticsAsync
(
private
async
Task
<
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>>
ComputeDiagnosticsAsync
(
CompilationWithAnalyzers
analyzerDriverOpt
,
Project
project
,
IEnumerable
<
StateSet
>
stateSets
,
CompilationWithAnalyzers
analyzerDriverOpt
,
Project
project
,
IEnumerable
<
StateSet
>
stateSets
,
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>
existing
,
CancellationToken
cancellationToken
)
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>
existing
,
CancellationToken
cancellationToken
)
{
try
{
{
// PERF: check whether we can reduce number of analyzers we need to run.
// PERF: check whether we can reduce number of analyzers we need to run.
// this can happen since caller could have created the driver with different set of analyzers that are different
// this can happen since caller could have created the driver with different set of analyzers that are different
...
@@ -186,6 +195,11 @@ public IEnumerable<DiagnosticData> ConvertToLocalDiagnostics(Document targetDocu
...
@@ -186,6 +195,11 @@ public IEnumerable<DiagnosticData> ConvertToLocalDiagnostics(Document targetDocu
// we couldn't reduce the set.
// we couldn't reduce the set.
return
await
ComputeDiagnosticsAsync
(
analyzerDriverOpt
,
project
,
stateSets
,
cancellationToken
).
ConfigureAwait
(
false
);
return
await
ComputeDiagnosticsAsync
(
analyzerDriverOpt
,
project
,
stateSets
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
catch
(
Exception
e
)
when
(
FatalError
.
ReportUnlessCanceled
(
e
))
{
throw
ExceptionUtilities
.
Unreachable
;
}
}
private
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>
MergeExistingDiagnostics
(
private
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>
MergeExistingDiagnostics
(
VersionStamp
version
,
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>
existing
,
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>
result
)
VersionStamp
version
,
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>
existing
,
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>
result
)
...
@@ -253,6 +267,8 @@ public IEnumerable<DiagnosticData> ConvertToLocalDiagnostics(Document targetDocu
...
@@ -253,6 +267,8 @@ public IEnumerable<DiagnosticData> ConvertToLocalDiagnostics(Document targetDocu
private
async
Task
<
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>>
MergeProjectDiagnosticAnalyzerDiagnosticsAsync
(
private
async
Task
<
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>>
MergeProjectDiagnosticAnalyzerDiagnosticsAsync
(
Project
project
,
IEnumerable
<
StateSet
>
stateSets
,
Compilation
compilationOpt
,
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>
result
,
CancellationToken
cancellationToken
)
Project
project
,
IEnumerable
<
StateSet
>
stateSets
,
Compilation
compilationOpt
,
ImmutableDictionary
<
DiagnosticAnalyzer
,
AnalysisResult
>
result
,
CancellationToken
cancellationToken
)
{
try
{
{
// check whether there is IDE specific project diagnostic analyzer
// check whether there is IDE specific project diagnostic analyzer
var
ideAnalyzers
=
stateSets
.
Select
(
s
=>
s
.
Analyzer
).
Where
(
a
=>
a
is
ProjectDiagnosticAnalyzer
||
a
is
DocumentDiagnosticAnalyzer
).
ToImmutableArrayOrEmpty
();
var
ideAnalyzers
=
stateSets
.
Select
(
s
=>
s
.
Analyzer
).
Where
(
a
=>
a
is
ProjectDiagnosticAnalyzer
||
a
is
DocumentDiagnosticAnalyzer
).
ToImmutableArrayOrEmpty
();
...
@@ -298,6 +314,11 @@ public IEnumerable<DiagnosticData> ConvertToLocalDiagnostics(Document targetDocu
...
@@ -298,6 +314,11 @@ public IEnumerable<DiagnosticData> ConvertToLocalDiagnostics(Document targetDocu
return
result
;
return
result
;
}
}
catch
(
Exception
e
)
when
(
FatalError
.
ReportUnlessCanceled
(
e
))
{
throw
ExceptionUtilities
.
Unreachable
;
}
}
private
async
Task
<
IEnumerable
<
Diagnostic
>>
ComputeProjectDiagnosticAnalyzerDiagnosticsAsync
(
private
async
Task
<
IEnumerable
<
Diagnostic
>>
ComputeProjectDiagnosticAnalyzerDiagnosticsAsync
(
Project
project
,
ProjectDiagnosticAnalyzer
analyzer
,
Compilation
compilationOpt
,
CancellationToken
cancellationToken
)
Project
project
,
ProjectDiagnosticAnalyzer
analyzer
,
Compilation
compilationOpt
,
CancellationToken
cancellationToken
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录