遥测

Visual Studio Code 收集遥测数据,用于帮助理解如何改进产品。例如,这些使用数据有助于调试问题,如启动时间慢,并优先考虑新功能。虽然我们感谢这些数据提供的见解,但我们也知道并非每个人都希望发送使用数据,您可以按照禁用遥测报告中的描述禁用遥测。您还可以阅读我们的隐私声明以了解更多信息。

遥测数据类型

VS Code 和本页面在遥测方面涉及三种不同类型的数据。

崩溃报告 - 崩溃报告在VS Code崩溃时收集诊断信息,并将其发送给微软,以帮助理解崩溃的原因以及需要做出哪些更改来防止未来发生崩溃。

错误遥测 - 错误遥测收集有关不会导致应用程序崩溃但出乎意料的错误的信息。

使用数据 - 使用数据收集有关功能在VS Code中如何使用和表现的信息,这有助于我们优先考虑未来的产品改进。

禁用遥测报告

通过telemetry.telemetryLevel用户设置,您可以通过一个设置控制我们发送的不同类型的遥测数据。以下是每种telemetry.telemetryLevel值发送的不同类型数据的表格:

Crash Reports Error Telemetry Usage Data
all
error -
crash - -
off - - -

例如,如果您不想向微软发送任何遥测数据,您可以将用户设置中的telemetry.telemetryLevel设置为off

文件 > 首选项 > 设置,搜索telemetry,并将遥测:遥测级别设置为off。这将使VS Code从此不再发送任何遥测事件。在您禁用此设置之前,可能已经收集并发送了遥测信息。

禁用遥测

如果您使用JSON编辑器进行设置,请添加以下行:

    "telemetry.telemetryLevel": "off"

扩展和遥测

VS Code 允许您通过安装微软和第三方扩展来为产品添加功能。这些扩展可能会收集它们自己的使用数据,并且不受 telemetry.telemetryLevel 设置的控制。请查阅特定扩展的文档,以了解其遥测报告以及是否可以禁用。

扩展作者可以参考"For Extension Authors"部分,以获取在其扩展中实施遥测最佳实践的指导。

遥测事件的输出通道

如果您想在VS Code中查看发送的遥测事件,您可以启用跟踪,它将记录遥测事件。使用开发者:设置日志级别...命令并选择日志级别跟踪。要查看日志输出,请转到输出面板(⇧⌘U (Windows Ctrl+Shift+U, Linux Ctrl+K Ctrl+H))并从下拉菜单中选择遥测

输出面板日志遥测

在追踪遥测事件时,这些事件也会被记录到一个本地文件 telemetry.log 中,您可以使用 开发者: 打开日志文件... 命令并从下拉菜单中选择 遥测 来查看。

开放遥测日志文件

查看所有遥测事件

如果您想查看VS Code可能发送的所有遥测事件,您可以在CLI中使用--telemetry标志。这将生成一个JSON报告,您可以在VS Code中查看。这些报告是每次构建生成的,除非扩展作者在其根构建目录中添加了一个telemetry.json文件,否则不包含扩展遥测。

例如,运行 code --telemetry > telemetry.json && code telemetry.json 将在您当前的工作目录中创建一个 telemetry.json 文件,然后在 VS Code 中打开它。由于遥测报告的长度,您不能像这样管道输出,code --telemetry | code -

以下部分详细说明了用于分类遥测的事件元数据,描述了其目的,并指出了任何特殊处理。

事件分类

classification 字段描述了数据的类型。

  • SystemMetaData - 由VS Code生成的值,这些值不包含个人身份信息。
  • CallstackOrException - 由程序执行失败引起的错误。这些错误包含已清除用户路径的堆栈跟踪。
  • PublicNonPersonalData - 用户生成的公开数据,例如,已发布的扩展ID。
  • EndUserPseudonymizedInformation - 用于识别唯一用户但无法识别该用户是谁的哈希值。例如,哈希后的Mac地址。

事件目的

purpose 字段描述了收集数据的原因。

  • PerformanceAndHealth - 确保VS Code产品和服务健康且快速。
  • FeatureInsight - 了解功能使用情况以及继续开发投资的方向。
  • BusinessInsight - 用于做出与VS Code、Microsoft和GitHub业务相关的决策。

事件端点

endpoint 字段描述了数据被发送到哪个数据处理程序。这通常适用于需要额外清洗和安全措施以保护用户隐私的特殊数据。

  • GoogleAnalyticsId - 用于我们网站上的Google Analytics和跟踪页面浏览量。这些数据比我们的常规数据处理得更为敏感。
  • MacAddressHash - 用于识别VS Code的用户。这在客户端进行一次哈希处理,然后在流水线端再次进行哈希处理,以确保无法识别特定用户。在VS Code for the Web上,会为此生成一个UUID。
  • none - 数据不需要任何特殊处理。

GDPR与VS Code

除了支持《通用数据保护条例》(GDPR)外,VS Code团队非常重视隐私。这既适用于微软作为一家公司,也特别适用于VS Code团队内部。

为确保GDPR合规性,我们对VS Code进行了多项更新,包括:

  • 通过在产品中为所有现有和新用户放置通知,使选择退出遥测收集变得更加容易。
  • 审查和分类我们发送的遥测数据(记录在我们的开源代码库中)。
  • 确保我们为收集的任何数据(例如崩溃转储)制定了有效的数据保留政策。

简而言之,我们努力为所有用户做正确的事情,因为这些做法适用于所有地区,而不仅仅是欧洲。

我们预计人们会问的一个问题是查看我们收集的数据。然而,我们没有可靠的方法来实现这一点,因为VS Code没有“登录”体验来唯一识别用户。我们确实发送了一些信息,帮助我们近似识别单个用户以进行诊断(这是基于桌面网络适配器NIC的哈希值和网络上随机分配的UUID),但这并不能保证是唯一的。例如,虚拟机(VMs)经常轮换NIC ID或从池中分配。这种技术足以帮助我们在解决问题时使用,但对于“提供您的数据”来说还不够可靠。

我们预计我们的方法会随着我们对GDPR和用户期望的更多了解而发展。我们非常感激用户发送给我们的数据,因为这些数据非常有价值,VS Code因此成为了对每个人都更好的产品。再次强调,如果您担心隐私问题,我们提供了禁用发送遥测的功能,如禁用遥测报告中所述。

您可以在Visual Studio Family Data Subject Requests for the GDPR找到更多关于Visual Studio系列如何处理GDPR的信息。

管理在线服务

除了崩溃报告和遥测,VS Code 还使用在线服务用于各种其他目的,例如下载产品更新、查找、安装和更新扩展、设置同步,或在设置编辑器中提供自然语言搜索。您可以选择打开/关闭使用这些服务的功能。

请注意,关闭这些功能并不会使VS Code进入离线模式。例如,如果您在扩展视图中搜索扩展,VS Code仍然会搜索在线的VS Code市场。这些设置确保VS Code不会在您未请求的情况下与在线服务通信。

文件 > 首选项 > 设置,然后输入标签@tag:usesOnlineServices。这将显示所有控制在线服务使用的设置,您可以单独打开或关闭它们。

在线设置过滤器

注意: VS Code 扩展可能也会使用在线服务,并且可能不提供配置这些在线服务使用的设置,或者它们可能没有注册它们的设置以在搜索 @tag:usesOnlineServices 时显示。请查阅特定扩展的文档以了解其在线服务的使用情况。

VS Code 使用的非微软在线服务

内置的VS Code的npm支持扩展向https://registry.npmjs.orghttps://registry.bower.io发送请求。

内置的TypeScript 和 JavaScript 语言功能扩展在@types域查询https://registry.npmjs.org

当你使用开发者:切换开发者工具开发者:打开Webview开发者工具时,VS Code可能会与Google服务器通信以获取启动开发者工具所需的数据。

扩展推荐

VS Code 根据您的文件类型、工作空间和环境提供扩展推荐。文件类型推荐可以是预先计算的或动态的。工作空间和环境推荐始终是预先计算的。

如果您想知道为什么推荐某个扩展,请打开该扩展的详情页面。您可以在页面标题中找到推荐原因。

基于文件的扩展推荐

预计算推荐

VS Code 收集关于哪些扩展被激活用于哪些文件类型以及哪些工作区/文件夹的遥测数据。特定文件夹通过计算每个文件夹的 Git 远程的哈希值来识别。

我们使用这些信息来预先计算匿名推荐。预先计算的推荐是指明在哪些条件下应该推荐扩展的指令。例如,当我们看到扩展A和扩展B之间存在有趣的相关性时,一条指令可能是:如果用户安装了扩展A但没有安装扩展B,则推荐扩展B。

一些预计算推荐作为产品的一部分提供,而其他预计算推荐则在运行时从在线微软服务中获取。VS Code 独立评估并执行预计算推荐,而不会向任何在线服务发送任何用户信息。

动态推荐

当你打开一个VS Code没有预先计算推荐的文件类型时,它会向扩展市场查询声明支持该文件类型的扩展。如果查询返回了你尚未安装的扩展,VS Code将提供一个通知。

对于扩展作者

请阅读扩展指南遥测文档

下一步