遙測
Visual Studio Code 收集遙測資料,用於幫助我們瞭解如何改進產品。例如,這些使用情況資料有助於除錯諸如啟動緩慢等問題,並確定新功能的優先順序。我們還使用這些資料向一部分使用者推出新功能,然後再將其普遍提供。
雖然我們感謝這些資料提供的見解,但我們也知道並非所有人都願意傳送使用情況資料,您可以按照停用遙測報告中的說明停用遙測。您也可以閱讀我們的隱私宣告以瞭解更多資訊。
遙測資料型別
VS Code 和本頁面在遙測方面引用了三種不同的資料型別。
崩潰報告 - 當 VS Code 崩潰時,崩潰報告會收集診斷資訊並將其傳送給 Microsoft,以幫助瞭解崩潰發生的原因以及將來需要進行哪些更改來防止崩潰。
錯誤遙測 - 錯誤遙測收集有關不會導致應用程式崩潰但意外的錯誤的資訊。
使用情況資料 - 使用情況資料收集有關 VS Code 中功能的使用方式和效能的資訊,這有助於我們優先改進產品。
停用遙測報告
透過 telemetry.telemetryLevel 使用者設定,您可以用一個設定來控制我們傳送的不同型別的遙測資料。下表列出了telemetry.telemetryLevel 每個值傳送的不同型別的資料。
| 崩潰報告 | 錯誤遙測 | 使用情況資料 | |
|---|---|---|---|
| 全部 | ✓ | ✓ | ✓ |
| error | ✓ | ✓ | - |
| 崩潰 | ✓ | - | - |
| off | - | - | - |
例如,如果您不想向 Microsoft 傳送任何遙測資料,可以將 telemetry.telemetryLevel 使用者設定更改為 off。這將停止 VS Code 傳送所有遙測事件。請注意,在停用該設定之前,可能已經收集併發送了遙測資訊。

如果您使用 JSON 編輯器進行設定,請新增以下行
"telemetry.telemetryLevel": "off"
要參與 A/B 實驗並提前訪問新功能,您必須透過將 telemetry.telemetryLevel 設定為 all 來啟用使用情況資料。
功能可用性和遙測
VS Code 使用 A/B 實驗系統向一部分使用者推出新功能,然後再將其普遍提供。這有助於我們在將新功能普遍推出之前,驗證它在各種使用者群中是否按預期工作。透過參與實驗,您可以幫助我們提高 VS Code 的質量,並透過早期反饋幫助塑造產品的未來。
為了啟用此實驗系統,VS Code 會使用使用情況遙測資料來確定哪些使用者應該接收新功能以及驗證功能的使用情況。如果您透過將 telemetry.telemetryLevel 設定為 error、crash 或 off 來停用使用情況資料遙測,我們將無法評估功能的使用情況,因此您將無法進行實驗。結果是,新功能對您的釋出可能會推遲,直到該功能普遍可用。
擴充套件和遙測
VS Code 允許您透過安裝 Microsoft 和第三方擴充套件來為產品新增功能。這些擴充套件可能會收集自己的使用情況資料,並且不受 telemetry.telemetryLevel 設定的控制。請查閱特定擴充套件的文件,瞭解其遙測報告以及是否可以停用。
擴充套件作者可以參考“面向擴充套件作者”部分,瞭解在其擴充套件中實現遙測最佳實踐的指導。
遙測事件的輸出通道
要檢視 VS Code 在傳送遙測事件時的情況,請從命令面板 () 中執行 Developer: Show Telemetry 命令。此命令會啟用遙測事件的跟蹤,並在輸出面板 (⇧⌘U (Windows Ctrl+Shift+U, Linux Ctrl+K Ctrl+H)) 中開啟 Telemetry 輸出通道。隨著遙測事件的傳送,輸出通道會顯示事件詳細資訊。

在跟蹤遙測事件時,這些事件還會記錄到本地檔案 telemetry.log 中,您可以使用 Developer: Open Log... 命令並從下拉選單中選擇 Telemetry 來檢視它。

要停用跟蹤遙測事件,請重新載入 VS Code 視窗 (Developer: Reload Window 命令)。
檢視所有遙測事件
如果您想檢視 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 團隊還非常重視隱私。這既是 Microsoft 作為一家公司的情況,也是 VS Code 團隊內部的特定情況。
為了確保 GDPR 合規性,我們對 VS Code 進行了多項更新,其中包括:
- 在產品中為所有現有和新使用者放置通知,使選擇退出遙測收集更容易。
- 審查和分類我們傳送的遙測資料(已記錄在我們的 OSS 程式碼庫中)。
- 確保我們為收集的任何資料(例如崩潰轉儲)制定了有效的資料保留策略。
總之,我們努力做了正確的事情,為所有使用者服務,因為這些做法適用於所有地區,而不僅僅是歐洲。
我們預計人們會問到的一個問題是檢視我們收集的資料。但是,我們沒有可靠的方法來做到這一點,因為 VS Code 沒有可以唯一標識使用者的“登入”體驗。我們會發送資訊來幫助我們近似單個使用者以進行診斷(這基於桌面上的網路介面卡 NIC 的雜湊值和 Web 上的隨機分配的 UUID),但這不能保證是唯一的。例如,虛擬機器 (VM) 經常輪換 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 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 域。
當您使用 Developer: Toggle Developer Tools 或 Developer: Open Webview Developer Tools 時,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 的可用選項。