You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: powerapps-docs/maker/data-platform/use-powerapps-checker.md
+33-23Lines changed: 33 additions & 23 deletions
Original file line number
Diff line number
Diff line change
@@ -1,18 +1,29 @@
1
1
---
2
2
title: Improve component performance, stability, and reliability with solution checker
3
-
description: Use solution checker to analyze Dataverse customizations to enhance user experience.
3
+
description: Use solution checker to analyze Microsoft Dataverse customizations to enhance user experience.
4
4
author: Mattp123
5
5
ms.component: cds
6
6
ms.topic: article
7
-
ms.date: 05/07/2024
7
+
ms.date: 07/30/2024
8
8
ms.subservice: dataverse-maker
9
9
ms.author: matp
10
+
ai-usage: ai-assisted
10
11
search.audienceType:
11
12
- maker
12
13
---
13
-
# Improve component performance, stability and reliability with solution checker
14
+
# Improve solution performance, stability and reliability
14
15
15
-
To deliver on complex business requirements, makers often can end up with highly advanced solutions that customize and extend the Microsoft Dataverse platform. With advanced implementations come an increased risk where performance, stability, and reliability issues become introduced, which can negatively impact the user experience. Identifying and understanding how to resolve these issues can be complicated and time consuming. With the solution checker feature, you can perform a rich static analysis check on your solutions against a set of best practice rules and quickly identify these problematic patterns. After the check completes, you receive a detailed report that lists the issues identified, the components and code affected, and links to documentation that describes how to resolve each issue.
16
+
Solutions are used to distribute Power Platform objects, such as apps, tables, flows, web resources, and plugins. This article introduces the solution checker feature, a powerful tool that performs a comprehensive static analysis of your solution objects against a set of [best practice rules](#best-practice-rules-used-by-solution-checker). By using solution checker, you can quickly identify problematic patterns in your components and receive detailed reports that highlight issues, affected components, and provide links to documentation on how to resolve each issue. This ensures your solutions are optimized for performance, stability, and reliability.
17
+
18
+
:::image type="content" source="media/solution-checker-viewresults.png" alt-text="Solution checker example results and details" lightbox="media/solution-checker-viewresults.png":::
19
+
20
+
Solution checker works with unmanaged solutions that can be exported from an environment.
21
+
22
+
You can run solution checker either from Power Apps (make.powerapps.com) or by using [PowerShell](#run-solution-checker-using-powershell).
23
+
24
+
## How solution checker helps you
25
+
26
+
To deliver on complex business requirements, makers often can end up with highly advanced solutions that customize and extend the Power Platform. With advanced implementations come an increased risk where performance, stability, and reliability issues become introduced, which can negatively impact the user experience. Identifying and understanding how to resolve these issues can be complicated and time consuming. With the solution checker feature, you can perform a check within seconds on your solution, which uses a set of best practice rules to quickly identify problematic patterns. After the check completes, you receive a detailed report in Power Apps as well as in an email message that lists the issues identified, the components and code affected, and links to documentation that describes how to resolve each issue.
16
27
17
28
The solution checker analyzes these solution components:
18
29
@@ -22,13 +33,10 @@ The solution checker analyzes these solution components:
22
33
- Power Automate flows (via [flow checker](/power-automate/error-checker))
23
34
- Power Fx expressions (via [app checker](https://powerapps.microsoft.com/en-us/blog/new-app-checker-helps-you-fix-errors-and-make-accessible-apps/))
24
35
25
-
Solution checker works with unmanaged solutions that can be exported from an environment.
26
-
27
36
> [!NOTE]
28
37
>
29
-
> - This topic explains how to run solution checker from the Power Apps maker portal. A PowerShell module is also available that you can use to interact directly with the service. The Microsoft.PowerApps.Checker.PowerShell module can be used for analysis of unmanaged solutions for Power Apps environments, or to automate and integrate the service into your build and release pipelines. More information: [Microsoft.PowerApps.Checker.PowerShell Overview](/powershell/powerapps/get-started-powerapps-checker?view=pa-ps-latest&preserve-view=true)
30
38
> - Solution checker supports global variables for ECMAScript 2015 (ES6) and up to ECMAScript 2018 (ES9) syntax. When JavaScript is detected using global variables later than ES6 or syntax later than ES9, a web-unsupported-syntax issue for the web resource is reported.
31
-
> - Use of solution checker does not guarantee that a solution import will be successful. The static analysis checks performed against the solution do not know the configured state of the destination environment and import success may be dependent on other solutions or configurations in the environment.
39
+
> - Use of solution checker doesn't guarantee that a solution import will be successful. The static analysis checks performed against the solution don't know the configured state of the destination environment and import success might be dependent on other solutions or configurations in the environment.
32
40
33
41
## Run the solution checker
34
42
@@ -41,13 +49,12 @@ Solution checker works with unmanaged solutions that can be exported from an env
41
49
42
50
4. The **Solution checker** command button has a loading indicator, and you'll notice a **Running…** state in the **Solution check** column of the **Solution** list.
- You'll receive an email notification and a notification in the **Notifications** area of the Power Apps site when the check is completed.
54
+
> [!NOTE]
55
+
>
56
+
> - The solution checker can take a few minutes to complete the analysis.
57
+
> - You'll receive an email notification and a notification in the **Notifications** area of the Power Apps site when the check is completed.
51
58
52
59
5.[View the report](#review-the-solution-checker-report) when the check is completed.
53
60
@@ -69,7 +76,7 @@ When you install the solution checker in your environment, the **Solution check*
69
76
|Results as of *date and time*| Solution analysis completed and results are available for download. |
70
77
|Couldn’t be completed. Result as of *date and time*| The latest analysis request didn't complete successfully. The last successful results can be downloaded. |
71
78
|Checked by Microsoft | This is a Microsoft-managed solution. Solution analysis isn't permitted on these solutions. |
72
-
|Checked by Publisher | This is a third-party-managed solution. Currently, solution analysis isn't available for these solutions. |
79
+
|Checked by Publisher | This is a non-Microsoft managed solution. Currently, solution analysis isn't available for these solutions. |
73
80
74
81
## Review the solution checker report
75
82
@@ -79,8 +86,7 @@ When a solution check is completed, you can view the analysis report in the port
79
86
2. Next to the unmanaged solution where you want to view the solution checker report, select **...**, point to **Solution checker**, and then select **View results**.
80
87
3. Select an issue to view the details and guidance on how to resolve.
:::image type="content" source="media/solution-checker-viewresults.png" alt-text="Solution checker example results and details drill down" lightbox="media/solution-checker-viewresults.png":::
84
90
85
91
The solution check results are also available for download. The solution checker zip file is downloaded to the folder specified by your web browser. The download report is in [!INCLUDE [pn-excel-short](../../includes/pn-excel-short.md)] format and contains several visualizations and columns that assist you in identifying the impact, type, and ___location of each issue detected in your solution. A link to detailed guidance about how to resolve the issue is also provided.
86
92
@@ -109,6 +115,10 @@ Here's a summary of each column in the report.
109
115
110
116
You can run solution checker rules in your development environment to detect issues much sooner as you create your solution resources. This is currently supported for web resources (JavaScript and [TypeScript](https://typescript-eslint.io/)). For more details, go to the NPM package [@microsoft/eslint-plugin-power-apps](https://www.npmjs.com/package/@microsoft/eslint-plugin-power-apps).
111
117
118
+
## Run solution checker using PowerShell
119
+
120
+
A PowerShell module is available that you can use to interact directly with the service. The Microsoft.PowerApps.Checker.PowerShell module can be used for analysis of unmanaged solutions for Power Apps environments, or to automate and integrate the service into your build and release pipelines. More information: [Microsoft.PowerApps.Checker.PowerShell Overview](/powershell/powerapps/get-started-powerapps-checker?view=pa-ps-latest&preserve-view=true)
121
+
112
122
## Best practice rules used by solution checker
113
123
114
124
The following table lists the component type, rule description, severity, and category. Critical violations are blocked or warned when configured for solution checker enforcement with managed environments. More information: [Use solution checker in Managed Environments](/power-platform/admin/managed-environment-solution-checker)
@@ -147,26 +157,26 @@ The following table lists the component type, rule description, severity, and ca
147
157
|Web Resources |[use-utility-dialogs](./powerapps-checker/rules/web/use-utility-dialogs.md)|| Medium | Usage |
148
158
|Web Resources |[avoid-isActivityType](./powerapps-checker/rules/web/avoid-isactivitytype.md)| Replace Xrm.Utility.isActivityType method with new Xrm.Utility.gettableMetadata and don't use in ribbon rules. | Medium | Upgrade readiness |
149
159
|Web Resources |[meta-avoid-silverlight](/power-platform/important-changes-coming?client=PAChecker&error=meta-avoid-silverlight&source=featuredocs)| Silverlight web resource usage is deprecated. | Medium | Upgrade readiness |
150
-
| Web Resources |[remove-debug-script](../../developer/model-driven-apps/best-practices/index.md?client=PAChecker&error=web-remove-debug-script)| Avoid including debug script in non-development environments. | Medium | Usage |
160
+
| Web Resources |[remove-debug-script](../../developer/model-driven-apps/best-practices/index.md?client=PAChecker&error=web-remove-debug-script)| Avoid including debug script in nondevelopment environments. | Medium | Usage |
151
161
| Web Resources |[use-strict-mode](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode)| Use strict mode when possible. | Medium | Usage |
152
162
| Web Resources |[use-strict-equality-operators](https://developer.mozilla.org/docs/Web/JavaScript/Equality_comparisons_and_sameness)| Use strict equality operators. | Medium | Usage |
153
-
| Web Resources |[avoid-eval](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/eval)| Don't use the 'eval' function or its functional equivalents. | Critical | Security |
163
+
| Web Resources |[avoid-eval](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/eval)| Don't use the `eval` function or its functional equivalents. | Critical | Security |
154
164
| Web Resources |[avoid-with](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/with)| Don't use the 'with' operator. | High | Performance |
155
165
| Web Resources |[remove-alert](https://eslint.org/docs/rules/no-alert)| Don't use the 'alert' function or its functional equivalents. | Medium | Usage |
156
166
| Web Resources |[remove-console](https://eslint.org/docs/rules/no-console)| Avoid using methods on console. | Medium | Usage |
157
167
| Web Resources |[avoid-ui-refreshribbon](./powerapps-checker/rules/web/avoid-ui-refreshribbon.md)| Avoid using refreshRibbon in form onload and EnableRule. | Critical | Performance |
158
168
| Web Resources |[use-getsecurityroleprivilegesinfo](./powerapps-checker/rules/web/use-getsecurityroleprivilegesinfo.md)| Avoid userSettings.securityRolePrivileges. Use userSettings.getSecurityRolePrivilegesInfo instead. | High | Performance |
159
169
| Web Resources |[use-appsidepane-api](./powerapps-checker/rules/web/use-appsidepane-api.md)| Use Xrm.App.sidePanes.createPane instead of Xrm.Panels.loadPanel. | Medium | Upgrade readiness |
160
-
| Web Resources |[web-sdl-no-cookies](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-cookies.md)| HTTP cookies are an old client-side storage mechanism with inherent risks and limitations. Use Web Storage, IndexedDB or other modern methods instead. | Medium | Security |
170
+
| Web Resources |[web-sdl-no-cookies](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-cookies.md)| HTTP cookies are an old client-side storage mechanism with inherent risks and limitations. Use Web Storage, IndexedDB, or other modern methods instead. | Medium | Security |
161
171
| Web Resources |[web-sdl-no-document-___domain](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-document-___domain.md)| Writes to document.___domain property must be reviewed to avoid bypass of same-origin checks. Usage of top level domains such as azurewebsites.net is strictly prohibited. | Medium | Security |
162
172
| Web Resources |[web-sdl-no-document-write](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-document-write.md)| Calls to document.write or document.writeln manipulate DOM directly without any sanitization and should be avoided. Use document.createElement() or similar methods instead. | Medium | Security |
163
-
| Web Resources |[web-sdl-no-html-method](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-html-method.md)| Direct calls to method html() often (e.g. in jQuery framework) manipulate DOM without any sanitization and should be avoided. Use document.createElement() or similar methods instead. | Medium | Security |
173
+
| Web Resources |[web-sdl-no-html-method](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-html-method.md)| Direct calls to method html() often (for example, in jQuery framework) manipulate DOM without any sanitization and should be avoided. Use document.createElement() or similar methods instead. | Medium | Security |
164
174
| Web Resources |[web-sdl-no-inner-html](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-inner-html.md)|Assignments to innerHTML or outerHTML properties manipulate DOM directly without any sanitization and should be avoided. Use document.createElement() or similar methods instead. | Medium | Security |
165
175
| Web Resources |[web-sdl-no-insecure-url](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-insecure-url.md)| Insecure protocols such as HTTP or FTP should be replaced by their encrypted counterparts (HTTPS, FTPS) to avoid sending potentially sensitive data over untrusted networks in plaintext. | Medium | Security |
166
176
| Web Resources |[web-sdl-no-msapp-exec-unsafe](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-msapp-exec-unsafe.md)| Calls to MSApp.execUnsafeLocalFunction() bypass script injection validation and should be avoided. | Medium | Security |
167
177
| Web Resources |[web-sdl-no-postmessage-star-origin](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-postmessage-star-origin.md)| Always provide specific target origin, not * when sending data to other windows using postMessage to avoid data leakage outside of trust boundary. | Medium | Security |
168
-
| Web Resources |[web-sdl-no-winjs-html-unsafe](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-winjs-html-unsafe.md)| Calls to WinJS.Utilities.setInnerHTMLUnsafe() and similar methods do not perform any input validation and should be avoided. Use WinJS.Utilities.setInnerHTML() instead. | Medium | Security |
169
-
| Canvas App |[app-formula-issues-high](/powerapps/maker/canvas-apps/formula-reference)|Refer to Power Apps formula references for additional details. | Critical | Design |
178
+
| Web Resources |[web-sdl-no-winjs-html-unsafe](https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-winjs-html-unsafe.md)| Calls to WinJS.Utilities.setInnerHTMLUnsafe() and similar methods don't perform any input validation and should be avoided. Use WinJS.Utilities.setInnerHTML() instead. | Medium | Security |
179
+
| Canvas App |[app-formula-issues-high](/powerapps/maker/canvas-apps/formula-reference)|Go to [Power Apps formula reference](/power-platform/power-fx/formula-reference) for additional details. | Critical | Design |
170
180
| Canvas App |[app-formula-issues-medium](/powerapps/maker/canvas-apps/formula-reference)| Refer to Power Apps formula references for additional details. | Medium | Design |
171
181
| Canvas App |[app-formula-issues-low](/powerapps/maker/canvas-apps/formula-reference)| Refer to Power Apps formula references for additional details. | Low | Design |
172
182
| Canvas App |[app-use-delayoutput-text-input](/powerapps/maker/canvas-apps/performance-tips#use-delayed-load)| Use delayed load in some scenarios to improve performance. | Medium | Performance |
0 commit comments