Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
0fffd129
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,发现更多精彩内容 >>
提交
0fffd129
编写于
3月 21, 2017
作者:
H
Heejae Chang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add marker to track perf
上级
e99baa77
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
69 addition
and
54 deletion
+69
-54
src/VisualStudio/Core/Next/CodeLens/RemoteCodeLensReferencesService.cs
...dio/Core/Next/CodeLens/RemoteCodeLensReferencesService.cs
+65
-54
src/Workspaces/Core/Portable/Log/FunctionId.cs
src/Workspaces/Core/Portable/Log/FunctionId.cs
+4
-0
未找到文件。
src/VisualStudio/Core/Next/CodeLens/RemoteCodeLensReferencesService.cs
浏览文件 @
0fffd129
...
...
@@ -7,10 +7,9 @@
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.CodeLens
;
using
Microsoft.CodeAnalysis.Host.Mef
;
using
Microsoft.CodeAnalysis.Internal.Log
;
using
Microsoft.CodeAnalysis.Remote
;
using
Microsoft.CodeAnalysis.Remote.Diagnostics
;
using
Microsoft.VisualStudio.LanguageServices.Implementation.Extensions
;
using
Microsoft.VisualStudio.LanguageServices.Remote
;
namespace
Microsoft.VisualStudio.LanguageServices.CodeLens
{
...
...
@@ -20,85 +19,97 @@ internal sealed class RemoteCodeLensReferencesService : ICodeLensReferencesServi
public
async
Task
<
ReferenceCount
>
GetReferenceCountAsync
(
Solution
solution
,
DocumentId
documentId
,
SyntaxNode
syntaxNode
,
int
maxSearchResults
,
CancellationToken
cancellationToken
)
{
if
(
syntaxNode
==
null
)
using
(
Logger
.
LogBlock
(
FunctionId
.
CodeLens_GetReferenceCountAsync
,
cancellationToken
)
)
{
return
null
;
}
if
(
syntaxNode
==
null
)
{
return
null
;
}
var
remoteHostClient
=
await
solution
.
Workspace
.
Services
.
GetService
<
IRemoteHostClientService
>().
TryGetRemoteHostClientAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
if
(
remoteHostClient
==
null
)
{
// remote host is not running. this can happen if remote host is disabled.
return
await
CodeLensReferencesServiceFactory
.
Instance
.
GetReferenceCountAsync
(
solution
,
documentId
,
syntaxNode
,
maxSearchResults
,
cancellationToken
).
ConfigureAwait
(
false
);
}
var
remoteHostClient
=
await
solution
.
Workspace
.
Services
.
GetService
<
IRemoteHostClientService
>().
TryGetRemoteHostClientAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
if
(
remoteHostClient
==
null
)
{
// remote host is not running. this can happen if remote host is disabled.
return
await
CodeLensReferencesServiceFactory
.
Instance
.
GetReferenceCountAsync
(
solution
,
documentId
,
syntaxNode
,
maxSearchResults
,
cancellationToken
).
ConfigureAwait
(
false
);
}
// TODO: send telemetry on session
return
await
remoteHostClient
.
RunCodeAnalysisServiceOnRemoteHostAsync
<
ReferenceCount
>(
solution
,
WellKnownServiceHubServices
.
CodeAnalysisService_GetReferenceCountAsync
,
new
object
[]
{
new
CodeLensArguments
(
documentId
,
syntaxNode
),
maxSearchResults
},
cancellationToken
).
ConfigureAwait
(
false
);
// TODO: send telemetry on session
return
await
remoteHostClient
.
RunCodeAnalysisServiceOnRemoteHostAsync
<
ReferenceCount
>(
solution
,
WellKnownServiceHubServices
.
CodeAnalysisService_GetReferenceCountAsync
,
new
object
[]
{
new
CodeLensArguments
(
documentId
,
syntaxNode
),
maxSearchResults
},
cancellationToken
).
ConfigureAwait
(
false
);
}
}
public
async
Task
<
IEnumerable
<
ReferenceLocationDescriptor
>>
FindReferenceLocationsAsync
(
Solution
solution
,
DocumentId
documentId
,
SyntaxNode
syntaxNode
,
CancellationToken
cancellationToken
)
{
if
(
syntaxNode
==
null
)
using
(
Logger
.
LogBlock
(
FunctionId
.
CodeLens_FindReferenceLocationsAsync
,
cancellationToken
)
)
{
return
null
;
}
if
(
syntaxNode
==
null
)
{
return
null
;
}
var
remoteHostClient
=
await
solution
.
Workspace
.
Services
.
GetService
<
IRemoteHostClientService
>().
TryGetRemoteHostClientAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
if
(
remoteHostClient
==
null
)
{
// remote host is not running. this can happen if remote host is disabled.
return
await
CodeLensReferencesServiceFactory
.
Instance
.
FindReferenceLocationsAsync
(
solution
,
documentId
,
syntaxNode
,
cancellationToken
).
ConfigureAwait
(
false
);
}
var
remoteHostClient
=
await
solution
.
Workspace
.
Services
.
GetService
<
IRemoteHostClientService
>().
TryGetRemoteHostClientAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
if
(
remoteHostClient
==
null
)
{
// remote host is not running. this can happen if remote host is disabled.
return
await
CodeLensReferencesServiceFactory
.
Instance
.
FindReferenceLocationsAsync
(
solution
,
documentId
,
syntaxNode
,
cancellationToken
).
ConfigureAwait
(
false
);
}
// TODO: send telemetry on session
return
await
remoteHostClient
.
RunCodeAnalysisServiceOnRemoteHostAsync
<
IEnumerable
<
ReferenceLocationDescriptor
>>(
solution
,
WellKnownServiceHubServices
.
CodeAnalysisService_FindReferenceLocationsAsync
,
new
CodeLensArguments
(
documentId
,
syntaxNode
),
cancellationToken
).
ConfigureAwait
(
false
);
// TODO: send telemetry on session
return
await
remoteHostClient
.
RunCodeAnalysisServiceOnRemoteHostAsync
<
IEnumerable
<
ReferenceLocationDescriptor
>>(
solution
,
WellKnownServiceHubServices
.
CodeAnalysisService_FindReferenceLocationsAsync
,
new
CodeLensArguments
(
documentId
,
syntaxNode
),
cancellationToken
).
ConfigureAwait
(
false
);
}
}
public
async
Task
<
IEnumerable
<
ReferenceMethodDescriptor
>>
FindReferenceMethodsAsync
(
Solution
solution
,
DocumentId
documentId
,
SyntaxNode
syntaxNode
,
CancellationToken
cancellationToken
)
{
if
(
syntaxNode
==
null
)
using
(
Logger
.
LogBlock
(
FunctionId
.
CodeLens_FindReferenceMethodsAsync
,
cancellationToken
)
)
{
return
null
;
}
if
(
syntaxNode
==
null
)
{
return
null
;
}
var
remoteHostClient
=
await
solution
.
Workspace
.
Services
.
GetService
<
IRemoteHostClientService
>().
TryGetRemoteHostClientAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
if
(
remoteHostClient
==
null
)
{
// remote host is not running. this can happen if remote host is disabled.
return
await
CodeLensReferencesServiceFactory
.
Instance
.
FindReferenceMethodsAsync
(
solution
,
documentId
,
syntaxNode
,
cancellationToken
).
ConfigureAwait
(
false
);
}
var
remoteHostClient
=
await
solution
.
Workspace
.
Services
.
GetService
<
IRemoteHostClientService
>().
TryGetRemoteHostClientAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
if
(
remoteHostClient
==
null
)
{
// remote host is not running. this can happen if remote host is disabled.
return
await
CodeLensReferencesServiceFactory
.
Instance
.
FindReferenceMethodsAsync
(
solution
,
documentId
,
syntaxNode
,
cancellationToken
).
ConfigureAwait
(
false
);
}
// TODO: send telemetry on session
return
await
remoteHostClient
.
RunCodeAnalysisServiceOnRemoteHostAsync
<
IEnumerable
<
ReferenceMethodDescriptor
>>(
solution
,
WellKnownServiceHubServices
.
CodeAnalysisService_FindReferenceMethodsAsync
,
new
CodeLensArguments
(
documentId
,
syntaxNode
),
cancellationToken
).
ConfigureAwait
(
false
);
// TODO: send telemetry on session
return
await
remoteHostClient
.
RunCodeAnalysisServiceOnRemoteHostAsync
<
IEnumerable
<
ReferenceMethodDescriptor
>>(
solution
,
WellKnownServiceHubServices
.
CodeAnalysisService_FindReferenceMethodsAsync
,
new
CodeLensArguments
(
documentId
,
syntaxNode
),
cancellationToken
).
ConfigureAwait
(
false
);
}
}
public
async
Task
<
string
>
GetFullyQualifiedName
(
Solution
solution
,
DocumentId
documentId
,
SyntaxNode
syntaxNode
,
CancellationToken
cancellationToken
)
{
if
(
syntaxNode
==
null
)
using
(
Logger
.
LogBlock
(
FunctionId
.
CodeLens_GetFullyQualifiedName
,
cancellationToken
)
)
{
return
null
;
}
if
(
syntaxNode
==
null
)
{
return
null
;
}
var
remoteHostClient
=
await
solution
.
Workspace
.
Services
.
GetService
<
IRemoteHostClientService
>().
TryGetRemoteHostClientAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
if
(
remoteHostClient
==
null
)
{
// remote host is not running. this can happen if remote host is disabled.
return
await
CodeLensReferencesServiceFactory
.
Instance
.
GetFullyQualifiedName
(
solution
,
documentId
,
syntaxNode
,
cancellationToken
).
ConfigureAwait
(
false
);
}
var
remoteHostClient
=
await
solution
.
Workspace
.
Services
.
GetService
<
IRemoteHostClientService
>().
TryGetRemoteHostClientAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
if
(
remoteHostClient
==
null
)
{
// remote host is not running. this can happen if remote host is disabled.
return
await
CodeLensReferencesServiceFactory
.
Instance
.
GetFullyQualifiedName
(
solution
,
documentId
,
syntaxNode
,
cancellationToken
).
ConfigureAwait
(
false
);
}
// TODO: send telemetry on session
return
await
remoteHostClient
.
RunCodeAnalysisServiceOnRemoteHostAsync
<
string
>(
solution
,
WellKnownServiceHubServices
.
CodeAnalysisService_GetFullyQualifiedName
,
new
CodeLensArguments
(
documentId
,
syntaxNode
),
cancellationToken
).
ConfigureAwait
(
false
);
// TODO: send telemetry on session
return
await
remoteHostClient
.
RunCodeAnalysisServiceOnRemoteHostAsync
<
string
>(
solution
,
WellKnownServiceHubServices
.
CodeAnalysisService_GetFullyQualifiedName
,
new
CodeLensArguments
(
documentId
,
syntaxNode
),
cancellationToken
).
ConfigureAwait
(
false
);
}
}
}
}
src/Workspaces/Core/Portable/Log/FunctionId.cs
浏览文件 @
0fffd129
...
...
@@ -366,5 +366,9 @@ internal enum FunctionId
RemoteHost_Connect
,
RemoteHost_Disconnect
,
CodeAnalysisService_GetTodoCommentsAsync
,
CodeLens_GetReferenceCountAsync
,
CodeLens_FindReferenceLocationsAsync
,
CodeLens_FindReferenceMethodsAsync
,
CodeLens_GetFullyQualifiedName
,
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录