遥测扩展作者指南

Visual Studio Code 收集使用数据并将其发送给 Microsoft,以帮助我们改进产品和服务。阅读我们的隐私声明遥测文档以了解更多信息。

本主题为扩展作者提供了指南,以便他们的扩展能够符合VS Code的遥测要求和最佳实践。

注意: 如果您不想将使用数据发送给Microsoft,您可以将用户设置中的telemetry.telemetryLevel设置为off

遥测模块

VS Code 团队维护了 @vscode/extension-telemetry npm 模块,该模块提供了一种一致且安全的方式来在 VS Code 中收集遥测数据。该模块将遥测数据报告给 Azure Monitor 和 Application Insights,并保证与之前版本的 VS Code 向后兼容。

按照本指南设置Azure Monitor并获取您的Application Insights检测密钥。

没有遥测模块

不希望使用 Application Insights 的扩展作者可以利用他们自己的自定义解决方案来发送遥测数据。在这种情况下,扩展作者仍然需要通过使用 isTelemetryEnabledonDidChangeTelemetryEnabled API 来尊重用户的选择。通过这样做,用户将有一个集中的地方来控制他们的遥测设置。

自定义遥测设置

扩展可能希望让用户控制与VS Code遥测无关的扩展特定遥测。在这种情况下,我们建议您引入一个特定的扩展设置。建议自定义遥测设置标记为telemetryusesOnlineServices,以便用户可以在设置UI中更轻松地查询它们。添加自定义遥测设置并不意味着可以忽略用户的决定,必须始终尊重isTelemetryEnabledonDidChangeTelemetryEnabled标志。如果isTelemetryEnabled报告为false,即使您的设置已启用,也不得发送遥测数据。

telemetry.json

我们理解遥测对许多用户来说可能是一个敏感话题,我们旨在尽可能透明。核心的VS Code产品和大多数第一方扩展在其根目录中都附带了一个telemetry.json文件。这允许用户使用带有--telemetry标志的VS Code CLI来接收VS Code生成的所有遥测数据的转储。扩展作者可以在其根目录中包含一个telemetry.json文件,它也会出现在CLI转储中。

该做和不该做的事

✔️ 做

  • 如果应用程序洞察对您有效,请使用@vscode/extension-telemetry npm模块。
  • 否则,请遵循 isTelemetryEnabledonDidChangeTelemetryEnabled API。
  • 如果你有自定义的遥测设置,请用telemetryusesOnlineServices标记它。
  • 尽可能少地收集遥测数据。
  • 尽可能向用户透明地展示你所收集的内容。

❌ 不要

  • 引入一个不需要用户同意的自定义遥测收集解决方案。
  • 收集个人身份信息(PII)。
  • 收集比必要更多的遥测数据。
  • 仅使用telemetry.telemetryLevel设置,因为与isTelemetryEnabled相比,它有时可能不正确。