遥测

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

遥测数据类型

VS Code 和此页面提到了与遥测相关的三种不同类型的数据。

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

错误遥测 - 错误遥测收集有关未导致应用程序崩溃但意外的错误的信息。

使用数据 - 使用数据收集有关 VS Code 中功能使用方式和执行情况的信息,这有助于我们确定未来产品改进的优先级。

禁用遥测报告

使用 telemetry.telemetryLevel 用户 设置,您可以使用单个设置控制我们发送的不同类型的数据。以下表格显示了使用 telemetry.telemetryLevel 的每个值发送的不同类型的数据。

崩溃报告 错误遥测 使用数据
全部
错误 -
崩溃 - -
关闭 - - -

例如,如果您不想将任何遥测数据发送到 Microsoft,您可以将 telemetry.telemetryLevel 用户 设置 设置为 关闭

文件 > 首选项 > 设置 中搜索 telemetry,并将 遥测:遥测级别 设置设置为 关闭。这将从 VS Code 中静默所有遥测事件。遥测信息可能已在您禁用设置之前被收集并发送。

disable telemetry

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

    "telemetry.telemetryLevel": "off"

扩展和遥测

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

扩展作者可以参考 "面向扩展作者" 部分,以获取在扩展中实施遥测最佳实践的指南。

遥测事件的输出通道

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

output panel log telemetry

跟踪遥测事件时,这些事件还会记录到本地文件 telemetry.log 中,您可以使用 开发人员:打开日志文件... 命令并从下拉菜单中选择 遥测 来查看该文件。

open telemetry log file

查看所有遥测事件

如果您想查看 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 的用户。这在客户端进行一次哈希处理,然后在管道端进行再次哈希处理,以使无法识别给定用户。在 适用于 Web 的 VS Code 中,将为此情况生成 UUID。
  • none - 数据不需要任何特殊处理。

GDPR 和 VS Code

除了支持通用数据保护条例 (GDPR) 外,VS Code 团队还非常重视隐私。这对微软这个公司来说如此,对 VS Code 团队来说也是如此。

为了确保符合 GDPR,我们对 VS Code 做出了几项更新,包括

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

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

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

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

您可以在Visual Studio 系列数据主体请求 GDPR中找到有关 Visual Studio 系列如何处理 GDPR 的更多信息。

管理在线服务

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

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

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

online settings filter

注意: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 根据您的文件类型、工作区和环境提供扩展推荐。文件类型推荐是预先计算的或动态的。工作区和环境推荐始终是预先计算的。

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

extension recommendation based on files

预先计算的推荐

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

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

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

动态推荐

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

面向扩展作者

请阅读扩展指南遥测文档

后续步骤