遥测
Visual Studio Code 收集遥测数据,用于帮助了解如何改进产品。例如,这些使用数据有助于调试问题,例如启动时间过长,以及优先考虑新功能。虽然我们感谢这些数据提供的见解,但我们也知道并非所有人都希望发送使用数据,您可以按照 禁用遥测报告 中的说明禁用遥测。您还可以阅读我们的 隐私声明,以了解更多信息。
遥测数据类型
VS Code 和此页面在遥测方面提到了三种不同类型的数据。
崩溃报告 - 崩溃报告在 VS Code 崩溃时收集诊断信息,并将其发送给 Microsoft,以帮助了解崩溃的原因以及需要进行哪些更改以防止将来发生崩溃。
错误遥测 - 错误遥测收集有关不会导致应用程序崩溃但意外发生的错误的信息。
使用数据 - 使用数据收集有关如何在 VS Code 中使用功能以及性能的信息,这有助于我们优先考虑未来的产品改进。
禁用遥测报告
使用 telemetry.telemetryLevel 用户 设置,您可以使用单个设置控制我们发送的不同类型遥测数据。以下是一张表格,显示了使用 telemetry.telemetryLevel 的每个值发送的不同类型数据。
崩溃报告 | 错误遥测 | 使用数据 | |
---|---|---|---|
全部 | ✓ | ✓ | ✓ |
错误 | ✓ | ✓ | - |
崩溃 | ✓ | - | - |
关闭 | - | - | - |
例如,如果您不想向 Microsoft 发送任何遥测数据,可以将 telemetry.telemetryLevel 用户 设置 设置为 off
。
从 文件 > 首选项 > 设置 中,搜索 telemetry
,并将 遥测:遥测级别 设置设置为 off
。这将从今以后禁止 VS Code 发送所有遥测事件。遥测信息可能已在您禁用设置之前被收集并发送。
如果您使用 JSON 编辑器来设置,请添加以下行
"telemetry.telemetryLevel": "off"
扩展和遥测
VS Code 允许您通过安装 Microsoft 和第三方扩展来为产品添加功能。这些扩展可能正在收集它们自己的使用数据,不受 telemetry.telemetryLevel 设置控制。请参阅特定扩展的文档,了解其遥测报告以及是否可以禁用。
扩展作者可以参考 "面向扩展作者" 部分,以获取有关在扩展中实施遥测最佳实践的指南。
遥测事件的输出通道
如果您想查看在 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 的用户。这在客户端侧进行一次哈希,然后在管道侧再进行一次哈希,使其无法识别给定用户。在 适用于 Web 的 VS Code 上,将为此情况生成一个 UUID。none
- 数据不需要任何特殊处理。
GDPR 和 VS Code
除了支持通用数据保护条例 (GDPR) 之外,VS Code 团队还非常重视隐私。这对 Microsoft 作为一个公司来说是如此,对 VS Code 团队来说也是如此。
为了确保 GDPR 合规性,我们对 VS Code 进行了一些更新,包括
- 通过在产品中为所有现有和新用户添加通知,简化退出遥测收集的操作。
- 审查和分类我们发送的遥测数据(记录在 我们的开源代码库 中)。
- 确保我们对收集的任何数据(例如崩溃转储)制定了有效的保留策略。
简而言之,我们已经努力为所有用户做出正确的事情,因为这些做法适用于所有地理区域,而不仅仅是欧洲。
我们预计人们会问的一个问题是查看我们收集的数据。然而,我们没有可靠的方法来做到这一点,因为 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 Marketplace 中搜索。这些设置可确保 VS Code 不会在未经您请求的情况下与在线服务通信。
从 文件 > 首选项 > 设置 中,输入标签 @tag:usesOnlineServices
。这将显示控制在线服务使用情况的所有设置,您可以单独打开或关闭它们。
注意:VS Code 扩展也可能使用在线服务,并且可能不提供设置来配置这些在线服务的用法,或者它们可能未注册其设置以在搜索
@tag:usesOnlineServices
时显示。请参阅特定扩展的文档以了解其对在线服务的用法。
VS Code 使用的非 Microsoft 在线服务
内置的**VS Code 的 npm 支持**扩展会向 https://registry.npmjs.org
和 https://registry.bower.io
发送请求。
内置的**TypeScript 和 JavaScript 语言特性**扩展会在 https://registry.npmjs.org
上查询 @types
域。
当您使用**开发者:切换开发者工具**或**开发者:打开 Webview 开发者工具**时,VS Code 可能会与 Google 服务器通信以获取启动开发者工具所需的数据。
扩展推荐
VS Code 会根据您的文件类型、工作区和环境提供扩展建议。文件类型建议是预先计算的或动态的。工作区和环境建议始终是预先计算的。
如果您想知道为什么推荐某个扩展,请打开该扩展的详细信息页面。您可以在页面标题中找到推荐原因。
预先计算的建议
VS Code 会收集有关为哪些文件类型和哪些工作区/文件夹激活哪些扩展的遥测数据。通过计算每个文件夹的 Git 远程存储库的哈希值来识别特定文件夹。
我们使用这些信息来预先计算匿名建议。预先计算的建议是说明在哪些情况下应推荐某个扩展的指令。例如,当我们看到两个扩展 A 和 B 之间存在有趣的关联时,一条指令可能是:如果用户已安装扩展 A 但未安装扩展 B,则推荐扩展 B。
一些预先计算的建议作为产品的一部分交付,而其他预先计算的建议则是在运行时从在线 Microsoft 服务中获取。VS Code 会独立评估和执行预先计算的建议,不会将任何用户信息发送到任何在线服务。
动态建议
当您打开 VS Code 没有预先计算的建议的文件类型时,它会向扩展市场查询声明支持此文件类型的扩展。如果查询返回您未安装的扩展,VS Code 将提供一个通知。
面向扩展作者
请阅读 扩展指南遥测文档。
下一步
- Visual Studio Code 常见问题解答 - 请参阅常见问题解答以了解更多信息。
- 用户和工作区设置 - 阅读有关自定义 VS Code 的可用选项的信息。
- 键绑定 - 您可以轻松修改常用的键盘快捷键。