使用解決方案檢查程式提高元件效能、穩定性和可靠性
為了滿足複雜的業務需求,製作者最終通常會提供自訂且擴充 Microsoft Dataverse 平台的高度進階解決方案。 進階實作帶來更大風險,效能、穩定性及可靠性問題將應運而生,可能會對使用者體驗造成負面影響。 確定並了解如何解決這些問題可能會很複雜而且耗費時間。 您可以使用解決方案檢查工具功能,根據一組最佳做法規則,對您的解決方案執行各式各樣靜態分析檢查,並快速識別這些問題模式。 檢查完成後,您會收到詳細的報表,列出找到的問題、受影響的元件和程式碼,以及說明如何解決每個問題的文件連結。
解決方案檢查工具會分析下列解決方案元件:
- Dataverse自訂工作流程活動
- Dataverse Web 資源 (HTML 和 JavaScript)
- Dataverse 組態設定,例如 SDK 訊息處理步驟
- Power Automate 流程 (透過流程檢查工具)
- Power Fx 運算式 (透過應用程式檢查工具)
解決方案檢查工具會使用可從環境匯出的未受管理的解決方案。
注意
- 本主題說明如何從 Power Apps 製作者入口網站執行解決方案檢查工具。 PowerShell 模組也適用,您可用來直接與服務互動。 Microsoft.PowerApps.Checker.PowerShell 模組可用於分析 Power Apps 環境的未受管理解決方案,並可用來將服務自動化並整合至您的組建和發行管線中。 其他資訊:Microsoft.PowerApps.Checker.PowerShell 概觀
- 解決方案檢查工具支援 ECMAScript 2015 (ES6) 和最多 ECMAScript 2018 (ES9) 語法的全域變數。 當解決方案檢查工具使用 ES6 之後的全域語法或比 ES9 更晚的語法來偵測 JavaScript 時,會報告 Web 資源不支援的網頁語法問題。
- 使用解決方案檢查程式並不能保證解決方案將會匯入成功。 針對解決方案所進行的靜態分析檢查並不知道目標環境的設定狀態,而匯入成功可能要依靠環境中的其他解決方案或設定。
執行解決方案檢查工具
登入 Power Apps。
在左窗格中,選取解決方案。 如果此項目不在側邊面板窗格中,請選取 ...其他 ,然後選取您想要的項目。
在您要分析的未受管理的解決方案旁邊,選取 ...、指向解決方案檢查工具,然後選取執行。
解決方案檢查工具指令按鈕具有載入指示器,且您會發現有個正在執行… 狀態 (在解決方案清單的解決方案檢查欄中)。
請注意以下要點:
解決方案檢查工具可能需要幾分鐘的時間才能完成分析。
檢查完成時,您會收到電子郵件通知,以及 Power Apps 網站的通知區域中的通知。
完成檢查時,檢視報表。
取消檢查
送出您環境的解決方案檢查之後,可以透過解決方案頁面右上方區域的狀態窗格取消檢查。
當您取消檢查時,解決方案檢查會停止執行,而解決方案檢查狀態會回復到先前的狀態。
解決方案檢查工具狀態
當您在環境中安裝解決方案檢查工具時,解決方案清單將會有解決方案檢查欄可用。 此欄會顯示為解決方案的解決方案分析狀態。
狀態 | 描述 |
---|---|
尚未執行 | 永遠不會分析解決方案。 |
執行中 | 正在分析解決方案。 |
無法完成 | 已要求解決方案分析,但是分析無法順利完成。 |
截至日期及時間的結果 | 解決方案分析已完成,而且結果可供下載。 |
無法完成。 截至日期及時間的結果 | 最新的分析要求無法順利完成。 可以下載上次成功的結果。 |
由 Microsoft 檢查 | 這是 Microsoft 受管理的解決方案。 不允許對這些解決進行解決方案分析。 |
由發行者檢查 | 這是第三方受管理的解決方案。 解決方案分析目前不適用於這些解決方案。 |
檢閱解決方案檢查工具報表
解決方案檢查完成後,您可以在入口網站中檢視分析報表,或是從網頁瀏覽器下載報表。 在入口網站中,您有個選項可以依問題、位置或嚴重性分類結果,並檢視您的解決方案中,所偵測出之問題的詳細資訊。
在左窗格中,選取解決方案。 如果此項目不在側邊面板窗格中,請選取 ...其他 ,然後選取您想要的項目。
在您要檢視解決方案檢查工具報表的未受管理的解決方案旁邊,選取 ...、指向解決方案檢查工具,然後選取檢視結果。
選取問題,以檢視詳細資料及解決方式的指引。
解決方案檢查結果也可以供下載。 解決方案檢查工具 zip 檔案會下載到網頁瀏覽器所指定的資料夾。 下載報表採用 Excel 格式,並包含數個協助您找出解決方案中所偵測到每一問題之影響、類型和位置的視覺效果及欄位。 也會提供關於解決這個問題的詳細指引連結。
- 在左窗格中,選取解決方案。 如果此項目不在側邊面板窗格中,請選取 ...其他 ,然後選取您想要的項目。
- 在您要下載解決方案檢查工具報表的未受管理的解決方案旁邊,選取 ...、指向解決方案檢查工具,然後選取下載結果。
- 解決方案檢查工具 zip 檔案會下載到網頁瀏覽器所指定的資料夾。
以下是報表中每一欄的摘要。
報表資料行 | 描述 | 適用於元件 |
---|---|---|
問題 | 解決方案中找出的問題的標題。 | 全部 |
類別 | 已發現之問題的分類,例如效能、可維護性、用法、支援性、設計、安全性、協助工具或升級整備小幫手。 | 所有 |
嚴重性 | 表示所找出問題的可能影響。 可用的衝擊類型為危急、高、中、低和參考用。 | 所有 |
指南 | 詳述問題、影響及建議動作的文章連結。 | 全部 |
元件 | 找出問題所在的解決方案元件。 | 全部 |
Location | 所找出發生問題的元件位置和/或來源檔案,例如組件或 JavaScript 檔案名稱。 | 全部 |
行號 | 問題在受影響 Web 資源元件中的行號參照。 | Web 資源 |
模組 | 偵測到組件中有所找出的問題的模組名稱。 | 自訂工作流程活動 |
類型 | 組件中所找出問題的類型。 | 自訂工作流程活動 |
成員 | 組件中所找出問題的成員。 | 自訂工作流程活動 |
陳述式 | 產生問題的程式碼陳述式或組態設定。 | 全部 |
註解 | 關於問題的詳細資料,包括高階解決步驟。 | 所有 |
在本機執行方案檢查程式規則
您可以在開發環境中執行解決方案檢查程式規則,以在建立解決方案資源時更快地偵測問題。 這目前支援 Web 資源 (JavaScript 和 TypeScript)。 如需詳細資料,請移至 NPM 套件 @microsoft/eslint-plugin-power-apps。
解決方案檢查工具所使用的最佳做法規則
下表列出元件類型、規則描述、嚴重性和類別。 若設定為使用受控環境實施解決方案檢查工具時,嚴重違規會封鎖或警告。 其他資訊:在受管理的環境中使用解決方案檢查工具
解決方案元件 | 規則名稱 | 檔案描述 | 嚴重性 | 目錄 |
---|---|---|---|---|
外掛程式或工作流程活動 | meta-remove-dup-reg | 避免重複 Dataverse 外掛程式註冊。 | 重大 | 績效 |
外掛程式或工作流程活動 | meta-avoid-reg-no-attribute | 將篩選屬性與 Dataverse 外掛程式註冊包含在一起。 | 中 | 績效 |
外掛程式或工作流程活動 | meta-avoid-reg-retrieve | 對於註冊 Retrieve 和 RetrieveMultiple 訊息的 Dataverse 外掛程式,應謹慎使用。 | 中 | 績效 |
外掛程式或工作流程活動 | meta-remove-inactive | 移除 Dataverse 的非使用中設定。 | 低 | 可維護性 |
外掛程式或工作流程活動 | meta-avoid-crm4-event | 不要使用 Microsoft Dynamics CRM 4.0 外掛程式註冊階段。 | 中 | 升級整備小幫手 |
外掛程式或工作流程活動 | meta-avoid-retrievemultiple-annotation | 避免在註釋的 RetrieveMultiple 中註冊外掛程式。 | 高 | 使用狀況 |
模型導向應用程式 | meta-license-sales-entity-operations | 解決方案包含使用受限 SDK 訊息和作業的實體,需要有效的 Dynamics 365 權限。 | 低 | 授權 |
模型導向應用程式 | meta-license-fieldservice-customcontrols | 解決方案包含需要有效 Dynamics 365 Field Service 授權的自訂控制項。 | 低 | 授權 |
模型導向應用程式 | meta-license-fieldservice-entity-operations | 解決方案包含具有受限 SDK 訊息的實體和需要有效 Dynamics 365 Field Service 授權的作業。 | 低 | 授權 |
Web 資源 | use-async | 以非同步方式與 HTTP 及 HTTPS 資源進行互動。 | 重大 | 績效 |
Web 資源 | avoid-modals | 避免使用強制回應對話方塊。 | 高 | 支援能力 |
Web 資源 | avoid-dom-form | 高 | 支援能力 | |
Web 資源 | avoid-dom-form-event | 高 | 支援能力 | |
Web 資源 | avoid-crm2011-service-odata | 不要以 Microsoft Dynamics CRM 2011 OData 2.0 端點為目標。 | 重大 | 升級整備小幫手 |
Web 資源 | avoid-crm2011-service-soap | 不要以 Microsoft Dynamics CRM 2011 SOAP 服務為目標。 | 重大 | 升級整備小幫手 |
Web 資源 | avoid-loadtheme | 請勿使用 loadTheme Fluent v8 API。 |
低 | 支援能力 |
Web 資源 | avoid-browser-specific-api | 不要使用 Internet Explorer 舊版 API 或瀏覽器外掛程式。 | 重大 | 升級整備小幫手 |
Web 資源 | avoid-unpub-api | 高 | 支援能力 | |
Web 資源 | avoid-window-top | 高 | 支援能力 | |
Web 資源 | avoid-2011-api | 不要使用已取代的 Microsoft Dynamics CRM 2011 物件模型。 請改為遵循 Dataverse Web API 文件。 | 高 | 升級整備小幫手 |
Web 資源 | use-relative-uri | 不要使用絕對 Dataverse 端點 URL。 | 中 | 可維護性 |
Web 資源 | use-cached-webresource | 中 | 績效 | |
Web 資源 | use-client-context | 使用用戶端內容。 | 中 | 升級整備小幫手 |
Web 資源 | use-navigation-api | 使用瀏覽 API 參數。 | 中 | 升級整備小幫手 |
Web 資源 | use-offline | 中 | 升級整備小幫手 | |
Web 資源 | do-not-make-parent-assumption | 高 | 設計 | |
Web 資源 | use-org-setting | 使用組織設定。 | 中 | 升級整備小幫手 |
Web 資源 | use-global-context | 中 | 升級整備小幫手 | |
Web 資源 | use-grid-api | 使用網格 API。 | 中 | 升級整備小幫手 |
Web 資源 | use-utility-dialogs | 中 | 使用狀況 | |
Web 資源 | avoid-isActivityType | 以新的 Xrm.Utility.gettableMetadata 來取代 Xrm.Utility.isActivityType 方法,但不要在功能區規則中使用。 | 中 | 升級整備小幫手 |
Web 資源 | meta-avoid-silverlight | Silverlight Web 資源使用方式已被取代。 | 中 | 升級整備小幫手 |
Web 資源 | remove-debug-script | 避免在非開發環境中包含偵錯指令碼。 | 中 | 使用狀況 |
Web 資源 | use-strict-mode | 盡可能使用 strict 模式。 | 中 | 使用狀況 |
Web 資源 | use-strict-equality-operators | 使用嚴格等號比較運算子。 | 中 | 使用狀況 |
Web 資源 | avoid-eval | 請勿使用「eval」函數或其同等函數。 | 重大 | 安全性 |
Web 資源 | 避免 - with | 不要使用 「with」運算子。 | 高 | 績效 |
Web 資源 | remove-alert | 請勿使用「警示」函數或與其功能相同的函數。 | 中 | 使用狀況 |
Web 資源 | remove-console | 避免在主控台上使用方法。 | 中 | 使用狀況 |
Web 資源 | avoid-ui-refreshribbon | 避免在 onload 和 EnableRule 表單中使用 refreshRibbon。 | 重大 | 績效 |
Web 資源 | use-getsecurityroleprivilegesinfo | 避免使用 userSettings.securityRolePrivileges。 請改用 userSettings.getSecurityRolePrivilegesInfo。 | 高 | 績效 |
Web 資源 | use-appsidepane-api | 使用 Xrm.App.sidePanes.createPane,而不是 Xrm.Panels.loadPanel。 | 中 | 升級整備小幫手 |
Web 資源 | web-sdl-no-cookies | HTTP Cookie 是有固有風險和限制的舊版用戶端儲存機制。 請改用 Web 儲存區、IndexedDB 或其他新式方法。 | 中 | 安全性 |
Web 資源 | web-sdl-no-document-domain | 寫入文件。必須複查網域屬性,才能避免略過同源檢查。 嚴格禁止使用最上層網域,例如 azurewebsites.net。 | 中 | 安全性 |
Web 資源 | web-sdl-no-document-write | 對 document.write 或 document.writeln 的呼叫會在沒有進行任何清理的情況下直接操作 DOM,您應避免這樣做。 請改用 document.createElement() 或類似的方法。 | 中 | 安全性 |
Web 資源 | web-sdl-no-html-method | 直接 (例如,在 jQuery 架構中) 呼叫 method html() 通常會在沒有進行任何清理的情況下操作 DOM,您避免這樣做。 請改用 document.createElement() 或類似的方法。 | 中 | 安全性 |
Web 資源 | web-sdl-no-inner-html | 對 innerHTML 或 outerHTML 的指派會在沒有進行任何清理的情況下直接操作 DOM,您應避免這樣做。 請改用 document.createElement() 或類似的方法。 | 中 | 安全性 |
Web 資源 | web-sdl-no-insecure-url | 不安全的通訊協定 (例如 HTTP 或 FTP) 應取代為其加密對應項 (HTTPS、FTPS),以避免以純文字形式透過不受信任的網路傳送可能的敏感性資料。 | 中 | 安全性 |
Web 資源 | web-sdl-no-msapp-exec-unsafe | 對 MSApp.execUnsafeLocalFunction() 的呼叫會略過指令碼插入驗證,您應避免這樣做。 | 中 | 安全性 |
Web 資源 | web-sdl-no-postmessage-star-origin | 使用 postMessage 將資料傳送至其他視窗時,為了避免資料洩漏到信任邊界之外,請務必提供特定目標來源 (而非 *)。 | 中 | 安全性 |
Web 資源 | web-sdl-no-winjs-html-unsafe | 對 WinJS.Utilities.setInnerHTMLUnsafe() 和類似方法的呼叫不會執行任何輸入驗證,您應避免這樣做。 請改用 WinJS.Utilities.setInnerHTML()。 | 中 | 安全性 |
畫布應用程式 | app-formula-issues-high | 如需其他詳細資料,請參閱 Power Apps 公式參照。 | 重大 | 設計 |
畫布應用程式 | 應用程式公式問題中 | 如需其他詳細資料,請參閱 Power Apps 公式參照。 | 中 | 設計 |
畫布應用程式 | 應用程式公式問題低 | 如需其他詳細資料,請參閱 Power Apps 公式參照。 | 低 | 設計 |
畫布應用程式 | 應用程式使用延遲輸出文字輸入 | 在部分案例中使用延遲載入以改善效能。 | 中 | 績效 |
畫布應用程式 | 應用程式減少畫面控制項 | 限制應用程式控制項數目以改善效能。 | 中 | 績效 |
畫布應用程式 | 應用程式包含協助工具標籤 | 使用明確標籤以改善應用程式的協助工具。 | 中 | 網頁可及性 |
畫布應用程式 | 應用程式包括替代輸入 | 確保所有互動元素都可存取替代輸入。 | 中 | 網頁可及性 |
畫布應用程式 | 應用程式避免自動啟動 | 避免在應用程式中的播放程式上使用自動啟動。 | 中 | 網頁可及性 |