遙測
Visual Studio Code 會收集遙測資料,用於幫助我們瞭解如何改進產品。例如,這些使用資料有助於除錯問題(如啟動時間緩慢)以及確定新功能的優先順序。雖然我們非常感謝這些資料提供的洞見,但我們也知道並非每個人都希望傳送使用資料,你可以按照停用遙測報告中的說明停用遙測。你也可以閱讀我們的隱私宣告以瞭解更多資訊。
遙測資料的型別
VS Code 和本頁面在遙測方面提及三種不同型別的資料。
崩潰報告 - 崩潰報告在 VS Code 崩潰時收集診斷資訊,並將其傳送給微軟,以幫助瞭解崩潰發生的原因以及需要進行哪些更改以防止未來再次發生崩潰。
錯誤遙測 - 錯誤遙測收集有關那些未導致應用程式崩潰但屬於意外錯誤的錯誤資訊。
使用資料 - 使用資料收集有關功能在 VS Code 中如何被使用和表現的資訊,這有助於我們確定未來產品改進的優先順序。
停用遙測報告
透過 telemetry.telemetryLevel 使用者設定,你可以透過一個設定控制我們傳送的不同型別的遙測資料。下表列出了 telemetry.telemetryLevel 的每個值所傳送的不同資料型別:
崩潰報告 | 錯誤遙測 | 使用資料 | |
---|---|---|---|
all | ✓ | ✓ | ✓ |
error | ✓ | ✓ | - |
crash | ✓ | - | - |
off | - | - | - |
例如,如果你不想向微軟傳送任何遙測資料,可以將 telemetry.telemetryLevel 使用者設定設為 off
。這將使 VS Code 未來不再發送任何遙測事件。請注意,在你停用該設定之前,遙測資訊可能已經被收集和傳送。
如果您使用 JSON 編輯器進行設定,請新增以下行
"telemetry.telemetryLevel": "off"
擴充套件和遙測
VS Code 允許你透過安裝微軟和第三方的擴充套件來為產品新增功能。這些擴充套件可能會收集它們自己的使用資料,並且不受 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 可能傳送的所有遙測事件,可以在命令列介面中使用 --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、微軟和 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 的雜湊值和 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
。這將顯示所有控制線上服務使用的設定,你可以單獨開啟或關閉它們。
注意:VS Code 擴充套件也可能使用線上服務,並且可能不提供配置這些線上服務使用的設定,或者它們可能沒有註冊其設定以在搜尋
@tag:usesOnlineServices
時顯示。請查閱特定擴充套件的文件,瞭解其線上服務的使用情況。
VS Code 使用的非微軟線上服務
內建的 npm support for VS Code 擴充套件會向 https://registry.npmjs.org
和 https://registry.bower.io
傳送請求。
內建的 TypeScript and JavaScript Language Features 擴充套件會在 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。
一些預計算的推薦作為產品的一部分發布,而額外的預計算推薦則在執行時從一個線上的微軟服務獲取。VS Code 獨立評估和執行預計算的推薦,不會向任何線上服務傳送任何使用者資訊。
動態推薦
當你開啟一個 VS Code 沒有任何預計算推薦的檔案型別時,它會向擴充套件市場查詢宣告支援此檔案型別的擴充套件。如果查詢返回了你未安裝的擴充套件,VS Code 將會提供一個通知。
擴充套件作者須知
請閱讀擴充套件指南的遙測文件。
後續步驟
- 集中管理遙測日誌級別 - 瞭解如何為你的組織設定遙測日誌級別。
- Visual Studio Code 常見問題解答 - 查閱常見問題解答以瞭解更多資訊。
- 使用者和工作區設定 - 閱讀有關自定義 VS Code 的可用選項。
- 按鍵繫結 - 你可以輕鬆修改常用的鍵盤快捷鍵。