解決方案是用來分配 Power Platform 物件,例如應用程式、清單、流程、Web 資源和外掛程式。 :本文會介紹解決方案檢查器功能,這是一個強大的工具,可以根據一組最佳做法規則對您的解決方案物件執行靜態的綜合性分析。 使用解決方案檢查器,您可以快速找出元件中的有問題模式,並收到詳細報告,指出問題、受影響的元件,以及提供如何解決各個問題的說明文件連結。 這可確保您的解決方案會針對效能、穩定性和可靠性進行最佳化。
解決方案檢查工具會使用可從環境匯出的未受管理的解決方案。
您可以從 Power Apps (make.powerapps.com) 或使用 PowerShell 來執行解決方案檢查器。
解決方案檢查器如何協助您
為了滿足複雜的業務需求,製作者最終通常會提供自訂並擴充 Power Platform 的極進階解決方案。 進階實作帶來更大風險,效能、穩定性及可靠性問題將應運而生,可能會對使用者體驗造成負面影響。 確定並了解如何解決這些問題可能會很複雜而且耗費時間。 您可以使用解決方案檢查工具功能,使用一組最佳做法規則,花幾秒鐘檢查您的解決方案,以快速找出這些問題模式。 檢查完成後,您會在 Power Apps 中和電子郵件中收到詳細的報表,列出找到的問題、受影響的元件和程式碼,以及說明如何解決每個問題的文件連結。
解決方案檢查工具會分析下列解決方案元件:
- Dataverse自訂工作流程活動
- Dataverse Web 資源 (HTML 和 JavaScript)
- Dataverse 組態設定,例如 SDK 訊息處理步驟
- Power Automate 流程 (透過流程檢查工具)
- Power Fx 公式 (透過 應用程式檢查工具)
注意事項
- 解決方案檢查工具支援 ECMAScript 2015 (ES6) 至 ECMAScript 2018 (ES9) 語法的全域變數。 當解決方案檢查工具使用 ES6 之後的全域語法或比 ES9 更晚的語法來偵測 JavaScript 時,會報告 Web 資源不支援的網頁語法問題。
- 使用解決方案檢查程式並不能保證解決方案將會成功匯入。 針對解決方案進行的靜態分析檢查並不知道目標環境的設定狀態,而匯入成功可能要依賴環境中的其他解決方案或設定。
執行解決方案檢查工具
登入 Power Apps。
在左窗格中,選取解決方案。 如果此項目不在側邊面板窗格中,請選取 ...其他 ,然後選取您想要的項目。
在您要分析的未受管理的解決方案旁邊,選取 ...、指向解決方案檢查工具,然後選取執行。
解決方案檢查器命令按鈕有一個載入指示器,且你會在解決方案清單的解決方案檢查器資料行中注意到一個執行中...狀態。
注意事項
- 解決方案檢查工具可能需要幾分鐘的時間才能完成分析。
- 檢查完成時,您會收到電子郵件通知,以及 Power Apps 網站的通知區域中的通知。
- 完成檢查時,檢視報表。
取消勾選
在您的環境中提交解決方案檢查後,可透過 解決方案 頁面右上角區域中的狀態窗格取消該檢查。
當您取消檢查時,解決方案檢查會停止執行,而解決方案檢查狀態會回復到先前的狀態。
解決方案檢查工具狀態
當您在環境中安裝解決方案檢查工具時,解決方案清單將會有解決方案檢查欄可用。 此欄會顯示該解決方案的分析狀態。
| 狀態 | 描述 |
|---|---|
| 尚未執行 | 此解決方案從未經過分析。 |
| 執行中 | 正在分析解決方案。 |
| 無法完成 | 已要求解決方案分析,但是分析無法順利完成。 |
| 截至日期及時間的結果 | 解決方案分析已完成,而且結果可供下載。 |
| 無法完成。 截至日期及時間的結果 | 最新的分析要求無法順利完成。 可以下載上次成功的結果。 |
| 由 Microsoft 檢查 | 這是 Microsoft 受管理的解決方案。 不允許對這些解決進行解決方案分析。 |
| 由發行者檢查 | 這是一個非 Microsoft 受管理的解決方案。 解決方案分析目前不適用於這些解決方案。 |
檢閱解決方案檢查器報告
解決方案檢查完成後,您可以在入口網站中檢視分析報表,或是從網頁瀏覽器下載報表。 在入口網站中,您有個選項可以依問題、位置或嚴重性分類結果,並檢視您的解決方案中,所偵測出之問題的詳細資訊。
在左窗格中,選取解決方案。 如果此項目不在側邊面板窗格中,請選取 ...其他 ,然後選取您想要的項目。
在您要檢視解決方案檢查工具報表的未受管理的解決方案旁邊,選取 ...、指向解決方案檢查工具,然後選取檢視結果。
選取問題,以檢視詳細資料及解決方式的指引。
解決方案檢查結果也可以供下載。 解決方案檢查工具 zip 檔案會下載到網頁瀏覽器所指定的資料夾。 下載的報表為 Excel 格式,並包含數個視覺化圖表和資料行,可協助您識別解決方案中偵測到的每個問題之影響、類型及位置。 也會提供關於解決這個問題的詳細指引連結。
- 在左窗格中,選取解決方案。 如果此項目不在側邊面板窗格中,請選取 ...其他 ,然後選取您想要的項目。
- 在您要下載解決方案檢查工具報表的未受管理的解決方案旁邊,選取 ...、指向解決方案檢查工具,然後選取下載結果。
- 解決方案檢查工具 zip 檔案會下載到網頁瀏覽器所指定的資料夾。
以下是報表中每一欄的摘要。
| 報表欄 | 描述 | 適用於元件 |
|---|---|---|
| 問題 | 解決方案中找出的問題的標題。 | 所有 |
| 類別 | 已發現之問題的分類,例如效能、可維護性、用法、支援性、設計、安全性、協助工具或升級整備小幫手。 | 所有 |
| 嚴重性 | 表示所找出問題的可能影響。 可用的衝擊類型為危急、高、中、低和參考用。 | 所有 |
| 指南 | 詳述問題、影響及建議動作的文章連結。 | 所有 |
| 元件 | 識別出問題的解決方案元件。 | 所有 |
| 位置 | 所找出發生問題的元件位置和/或來源檔案,例如組件或 JavaScript 檔案名稱。 | 所有 |
| 行號 | 問題在受影響 Web 資源元件中的行號參照。 | Web 資源 |
| 模組 | 偵測到組件中有所找出的問題的模組名稱。 | 自訂工作流程活動 |
| 類型 | 組件中所找出問題的類型。 | 自訂工作流程活動 |
| 成員 | 組件中所找出問題的成員。 | 自訂工作流程活動 |
| 陳述 | 產生問題的程式碼陳述式或組態設定。 | 所有 |
| 註解 | 關於問題的詳細資料,包括高階解決步驟。 | 所有 |
在本機執行方案檢查程式規則
您可以在開發環境中執行解決方案檢查程式規則,以在建立解決方案資源時更快地偵測問題。 目前僅支援 Web 資源(JavaScript 和 TypeScript)。 如需詳細資料,請移至 NPM 套件 @microsoft/eslint-plugin-power-apps。
使用 PowerShell 執行解決方案檢查器
可使用 PowerShell 模組,您可用來直接與服務互動。 Microsoft.PowerApps.Checker.PowerShell 模組可用於分析 Power Apps 環境的未受管理解決方案,並可用來將服務自動化並整合至您的組建和發行管線中。 其他資訊:Microsoft.PowerApps.Checker.PowerShell 概觀
方案檢查器使用的最佳做法規則
下表列出元件類型、規則描述、嚴重性和類別。 當系統設定為在受控環境中強制執行解決方案檢查工具時,重大違規會遭到封鎖或提出警告。 其他資訊:在受管理的環境中使用解決方案檢查工具
| 解決方案元件 | 規則名稱 | 規則描述 | 嚴重性 | 類別 |
|---|---|---|---|---|
| 外掛程式或工作流程活動 | 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 資源 | 避免視窗置頂 | 高 | 支援能力 | |
| 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 資源 | 不要做父層假設 | 高 | 設計 | |
| 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 | 盡可能使用嚴格模式。 | 中 | 使用狀況 |
| Web 資源 | use-strict-equality-operators | 使用嚴格相等運算子。 | 中 | 使用狀況 |
| Web 資源 | avoid-eval | 請勿使用 eval 函數或其同等函數。 |
嚴重 | 安全性 |
| Web 資源 | avoid-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。 | 中 | 升級就緒度 |
| 畫布應用程式 | app-formula-issues-high | 如需其他詳細資料,請參閱 Power Apps 公式參照。 | 嚴重 | 設計 |
| 畫布應用程式 | app-formula-issues-medium | 如需其他詳細資料,請參閱 Power Apps 公式參照。 | 中 | 設計 |
| 畫布應用程式 | app-formula-issues-low | 如需其他詳細資料,請參閱 Power Apps 公式參照。 | 低 | 設計 |
| 畫布應用程式 | app-use-delayoutput-text-input | 在部分案例中使用延遲載入以改善效能。 | 中 | 績效 |
| 畫布應用程式 | 應用程式減少畫面控制項 | 限制應用程式控制項數目以改善效能。 | 中 | 績效 |
| 畫布應用程式 | 應用程式包含無障礙標籤 | 使用明確的標籤來提升應用程式的無障礙功能。 | 中 | 網頁可及性 |
| 畫布應用程式 | 應用程式包含替代輸入方式 | 確保所有互動元素都可存取替代輸入。 | 中 | 網頁可及性 |
| 畫布應用程式 | 應用程式-避免-自動啟動 | 避免在應用程式中的播放程式上使用自動啟動。 | 中 | 網頁可及性 |
| 桌面流程 | desktopflow-avoid-unsafe-password | 密碼在流程中未以安全的方式管理。 | 高 | 安全性 |
| 桌面流程 | 桌面流程-避免子流程遞迴 | 偵測到子流程之間的遞歸呼叫,可能導致無限迴圈。 | 中 | 設計 |
| 桌面流程 | desktopflow-avoid-infinite-loop | 在流程中偵測到無限迴圈,可能導致流程無限期執行。 | 中 | 設計 |
| 桌面流程 | desktopflow-avoid-incomplete-if-branch | 偵測到不完整的 If 動作,缺乏內容或只包含 Else 分支中的動作。 | 低 | 設計 |
| 桌面流程 | desktopflow-avoid-excessive-nested-ifs | 巢狀 If 子句超過五層。 | 低 | 可維護性 |
| 桌面流程 | desktopflow-avoid-empty-on-error-block | 「發生區塊錯誤時」動作為空,且未處理錯誤。 | 低 | 設計 |
| 桌面流程 | desktopflow-limit-argument-count | 輸入/輸出變數總數超過 25 個變數的限制。 | 低 | 可維護性 |
| 桌面流程 | desktopflow-input-argument-default-value | 輸入/輸出變數未使用預設值。 | 低 | 可維護性 |
| 桌面流程 | desktopflow-limit-variable-name-length | 變數名稱超過 25 個字元的限制。 | 低 | 可維護性 |
| 桌面流程 | desktopflow-避免過多等待動作 | 偵測到等待動作的濫用,超過 10 個等待動作造成潛在瓶頸。 | 低 | 績效 |
| 桌面流程 | desktopflow-avoid-immense-wait-duration | 偵測到大量等待時間,超過硬式編碼等待動作的 600 秒限制。 | 低 | 績效 |