Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
282e940a
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
282e940a
编写于
12月 05, 2016
作者:
C
Christof Marti
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Small fixes
上级
15259692
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
18 deletion
+14
-18
src/vs/workbench/services/telemetry/common/workspaceStats.ts
src/vs/workbench/services/telemetry/common/workspaceStats.ts
+14
-18
未找到文件。
src/vs/workbench/services/telemetry/common/workspaceStats.ts
浏览文件 @
282e940a
...
...
@@ -16,8 +16,8 @@ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace
import
{
IOptions
}
from
'
vs/workbench/common/options
'
;
const
GitProtocolMatcher
=
/^git
@
([^
:
]
+
)
:/
;
const
SecondLevelDomainMatcher
=
/
[^
.
]
+.
[^
.
]
+$/
;
const
SshProtocolMatcher
=
/^
[^
:
]
+
@
([^
:
]
+
)
:/
;
const
SecondLevelDomainMatcher
=
/
[^
.
]
+
\
.[^
.
]
+$/
;
const
RemoteMatcher
=
/^
\s
*url
\s
*=
\s
*
(
.+
\S)\s
*$/mg
;
type
Tags
=
{
[
index
:
string
]:
boolean
|
number
};
...
...
@@ -48,7 +48,7 @@ export class WorkspaceStats {
const
folder
=
workspace
?
workspace
.
resource
:
product
.
quality
!==
'
stable
'
&&
this
.
findFolder
(
workbenchOptions
);
if
(
folder
&&
this
.
fileService
)
{
return
this
.
fileService
.
resolveFile
(
folder
).
then
(
stats
=>
{
let
names
=
stats
.
children
.
map
(
c
=>
c
.
name
);
let
names
=
(
stats
.
children
||
[])
.
map
(
c
=>
c
.
name
);
tags
[
'
workspace.language.cs
'
]
=
this
.
searchArray
(
names
,
/^.+
\.
cs$/i
);
tags
[
'
workspace.language.js
'
]
=
this
.
searchArray
(
names
,
/^.+
\.
js$/i
);
...
...
@@ -146,7 +146,7 @@ export class WorkspaceStats {
}
private
extractDomain
(
url
:
string
):
string
{
let
match
=
url
.
match
(
Git
ProtocolMatcher
);
let
match
=
url
.
match
(
Ssh
ProtocolMatcher
);
if
(
match
)
{
return
this
.
stripLowLevelDomains
(
match
[
1
]);
}
...
...
@@ -156,7 +156,7 @@ export class WorkspaceStats {
return
this
.
stripLowLevelDomains
(
uri
.
authority
);
}
}
catch
(
e
)
{
// ignore
// ignore
invalid URIs
}
return
null
;
}
...
...
@@ -176,23 +176,21 @@ export class WorkspaceStats {
let
uri
=
workspaceUri
.
with
({
path
:
`
${
workspaceUri
.
path
}
/.git/config`
});
this
.
fileService
.
resolveContent
(
uri
,
{
acceptTextOnly
:
true
}).
then
(
content
=>
{
if
(
content
)
{
let
domains
=
this
.
getDomainsOfRemotes
(
content
.
value
);
this
.
telemetryService
.
publicLog
(
'
workspace.remotes
'
,
domains
);
}
let
domains
=
this
.
getDomainsOfRemotes
(
content
.
value
);
this
.
telemetryService
.
publicLog
(
'
workspace.remotes
'
,
{
domains
});
},
err
=>
{
// ignore
// ignore
missing or binary file
}
).
then
(
null
,
errors
.
onUnexpectedError
);
}
private
reportAzureNode
(
workspaceUri
:
URI
,
tags
:
Tags
):
winjs
.
TPromise
<
Tags
>
{
// should also work for `node_modules` folders several levels down
//
TODO:
should also work for `node_modules` folders several levels down
let
uri
=
workspaceUri
.
with
({
path
:
`
${
workspaceUri
.
path
}
/node_modules`
});
return
this
.
fileService
.
resolveFile
(
uri
).
then
(
stats
=>
{
let
names
=
stats
.
children
.
map
(
c
=>
c
.
name
);
let
names
=
(
stats
.
children
||
[])
.
map
(
c
=>
c
.
name
);
let
referencesAzure
=
this
.
searchArray
(
names
,
/azure/i
);
if
(
referencesAzure
)
{
tags
[
'
node
'
]
=
true
;
...
...
@@ -208,11 +206,9 @@ export class WorkspaceStats {
let
uri
=
workspaceUri
.
with
({
path
:
`
${
workspaceUri
.
path
}
/pom.xml`
});
return
this
.
fileService
.
resolveContent
(
uri
,
{
acceptTextOnly
:
true
}).
then
(
content
=>
{
if
(
content
)
{
let
referencesAzure
=
content
.
value
.
match
(
/azure/i
)
!==
null
;
if
(
referencesAzure
)
{
tags
[
'
java
'
]
=
true
;
}
let
referencesAzure
=
content
.
value
.
match
(
/azure/i
)
!==
null
;
if
(
referencesAzure
)
{
tags
[
'
java
'
]
=
true
;
}
return
tags
;
},
...
...
@@ -227,7 +223,7 @@ export class WorkspaceStats {
this
.
reportAzureNode
(
uri
,
tags
).
then
((
tags
)
=>
{
return
this
.
reportAzureJava
(
uri
,
tags
);
}).
then
((
tags
)
=>
{
if
(
tags
[
'
node
'
]
||
tags
[
'
java
'
]
)
{
if
(
Object
.
keys
(
tags
).
length
)
{
this
.
telemetryService
.
publicLog
(
'
workspace.azure
'
,
tags
);
}
}).
then
(
null
,
errors
.
onUnexpectedError
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录