Mejore el rendimiento, la estabilidad y la fiabilidad de los componentes con el verificador de soluciones
Para cumplir complejos requisitos de negocio, los creadores con frecuencia pueden terminar con soluciones muy avanzadas que personalizan y extienden la plataforma Microsoft Dataverse. Con implementaciones avanzadas aumenta el riesgo, pues se presentan problemas de rendimiento, estabilidad y fiabilidad que pueden afectar negativamente la experiencia de usuario. Identificar y comprender cómo resolver estos problemas puede ser complejo y laborioso. Con la característica del comprobador de soluciones puede realizar una completa verificación de análisis estático de sus soluciones con un conjunto de reglas de prácticas recomendadas e identificar rápidamente estos patrones problemáticos. Cuando la comprobación se completa, usted recibe un informe detallado que lista los problemas identificados, los componentes y el código afectados y vínculos a la documentación que describe cómo solucionar cada problema.
El comprobador de soluciones analiza estos componentes de la solución:
- Actividades de flujo de trabajo personalizadas Dataverse
- Recursos web de Dataverse (HTML y JavaScript)
- Configuraciones de Dataverse, como pasos de mensajes de SDK
- Flujos de Power Automate (a través del comprobador de flujo)
- Expresiones de Power Fx (a través del comprobador de aplicaciones)
El comprobador de soluciones trabaja con soluciones no administradas que se pueden exportar desde un entorno.
Nota
- En este tema se explica cómo ejecutar el comprobador de soluciones desde el portal de creadores de Power Apps. También está disponible un módulo de PowerShell que puede usar para interactuar directamente con el servicio. El módulo Microsoft.PowerApps.Checker.PowerShell se puede usar para análisis de soluciones no administradas para versiones admitidas de Power Apps entornos locales y en línea, o para automatizar e integrar el servicio en las canalizaciones de compilación y de lanzamiento. Más información: Información general sobre Microsoft.PowerApps.Checker.PowerShell
- El comprobador de soluciones admite variables globales para ECMAScript 2015 (ES6) y sintaxis hasta ECMAScript 2018 (ES9). Cuando se detecta que en JavaScript se utilizan variables globales posteriores a ES6 o una sintaxis posterior a ES9, se notifica un problema de sintaxis no admitida en web para el recurso web.
- El uso del comprobador de soluciones no garantiza que la importación de una solución tenga éxito. Las comprobaciones de análisis estático realizadas contra la solución no conocen el estado configurado del entorno de destino y el éxito de la importación puede depender de otras soluciones o configuraciones en el entorno.
Ejecutar el comprobador de soluciones
Inicie sesión en Power Apps.
En el panel izquierdo, seleccione Soluciones. Si el elemento no se encuentra en el panel lateral, seleccione …Más y, a continuación, el elemento que desee.
Junto a la solución no administrada que desea analizar, seleccione ..., señale a Comprobador de soluciones y, a continuación seleccione Ejecutar.
El botón de comando Comprobador de soluciones tiene un indicador de carga y verá Ejecutando... en la columna Comprobación de solución de la lista Solución.
Tenga en cuenta lo siguiente:
El comprobador de soluciones puede tardar varios minutos en completar el análisis.
Usted recibe un correo electrónico de notificación y una notificación en el área Notificaciones del sitio de Power Apps cuando finalice la comprobación.
Vea el informe cuando finalice la comprobación.
Cancelar una comprobación
Después de enviar una comprobación de soluciones en el entorno, la comprobación se puede cancelar a través del panel de estado en el área superior derecha de la página Soluciones.
Cuando usted cancela una comprobación, la comprobación de la solución deja de ejecutarse y la comprobación de la solución vuelve al estado anterior.
Estados del comprobador de soluciones
Al instalar el comprobador de soluciones en el entorno, la columna Comprobación de solución pasa a estar disponible en la lista Soluciones. En esta columna se muestran los estados de análisis para una solución.
Estado | Descripción |
---|---|
No se ha ejecutado | La solución no se ha analizado. |
En ejecución | La solución se está analizando. |
No se pudo completar | El análisis de soluciones se ha solicitado pero no se ha completado correctamente. |
Resultados en la fecha y hora | El análisis de soluciones se ha completado y los resultados están disponible para descarga. |
No se pudo completar. Resultado en la fecha y hora | La última solicitud de análisis no se completó correctamente. Los últimos resultados correctos pueden descargarse. |
Comprobado por Microsoft | Esta es una solución administrada de Microsoft. El análisis de soluciones no está permitido en estas soluciones. |
Comprobado por el editor | Se trata de una solución administrada por terceros. Actualmente, los análisis de soluciones no está disponible para estas soluciones. |
Revise el informe del comprobador de soluciones
Cuando se completa una comprobación de la solución, puede ver el informe de análisis en el portal o puede descargar el informe desde el explorador web. En el portal, tiene opciones de ordenar los resultados por Error, Ubicación o Gravedad y ver información detallada de los problemas detectados en la solución.
En el panel izquierdo, seleccione Soluciones. Si el elemento no se encuentra en el panel lateral, seleccione …Más y, a continuación, el elemento que desee.
Junto a la solución no administrada donde desea ver el informe del comprobador de soluciones, seleccione ..., señale a Comprobador de soluciones y, a continuación seleccione Ver resultados.
Seleccione un problema para ver los detalles y orientación sobre cómo resolverlo.
Los resultados de comprobación de la solución también están disponibles para descarga. El archivo zip del comprobador de soluciones se descarga en la carpeta especificada por el explorador web. El informe de descarga está en formato Excel y contiene varias visualizaciones y columnas que ayudan a identificar de impacto, tipo, y la ubicación de cada problema detectado en la solución. Un vínculo a orientación detallada sobre cómo resolver el problema también se proporciona.
- En el panel izquierdo, seleccione Soluciones. Si el elemento no se encuentra en el panel lateral, seleccione …Más y, a continuación, el elemento que desee.
- Junto a la solución no administrada donde desea descargar el informe del comprobador de soluciones, seleccione ..., señale a Comprobador de soluciones y, a continuación seleccione Descargar resultados.
- El archivo zip del comprobador de soluciones se descarga en la carpeta especificada por el explorador web.
Este es un resumen de cada columna del informe.
Columna de informe | Descripción | Se aplica al componente |
---|---|---|
Emitir | El título del problema identificado en la solución. | Todo |
Categoría | La categorización del problema identificado, como Rendimiento, Mantenibilidad, Uso, Compatibilidad, Diseño, Seguridad, Accesibilidad o Actualización de preparación. | Todos |
Gravedad | Representa el impacto potencial del problema identificado. Los tipos de impacto disponibles son Crítico, Alto, Medio, Bajo e Informativo. | Todos |
Instrucciones | Vínculo al artículo que detalla el problema, el impacto, y acción recomendada. | Todo |
Componente | El componente de soluciones donde se identificó el problema. | Todo |
Location | La ubicación y/o el archivo de origen del componente donde se produjo el problema que se ha identificado, como el ensamblado o el nombre de archivo JavaScript. | Todo |
Nº. de línea | La referencia de número de línea del problema en el componente del recurso web afectado. | Recursos web |
Módulo | Nombre del módulo donde se detectó el problema identificado en el ensamblado. | Actividad de flujo de trabajo personalizado |
Tipo | Tipo de problema identificado en el ensamblado. | Actividad de flujo de trabajo personalizado |
Miembro | Miembro del problema identificado en el ensamblado. | Actividad de flujo de trabajo personalizado |
Instrucción | La instrucción de código o configuración produjo el problema. | Todo |
Comentarios | Detalles acerca del problema que incluyen pasos de resolución de alto nivel. | Todos |
Ejecutar las reglas del comprobador de soluciones localmente
Puede ejecutar reglas del comprobador de soluciones en su entorno de desarrollo para detectar problemas mucho antes a medida que crea los recursos de la solución. Esto es compatible actualmente con los recursos web (JavaScript y TypeScript). Para obtener más detalles, vaya al paquete de NPM @microsoft/eslint-plugin-power-apps.
Reglas de prácticas recomendadas usadas por el comprobador de soluciones
La siguiente tabla enumera el tipo de componente, la descripción de la regla, su gravedad y su categoría. Las infracciones críticas se bloquean o advierten cuando se configuran para la aplicación del comprobador de soluciones con entornos administrados. Más información: Usar el verificador de soluciones en entornos gestionados
Componente de la solución | Nombre de regla | Descripción de la regla | Gravedad | Category |
---|---|---|---|---|
Complemento o actividad de flujo de trabajo | meta-remove-dup-reg | Evite duplicar registros del complemento Dataverse. | Crítico | Rendimiento |
Complemento o actividad de flujo de trabajo | meta-avoid-reg-no-attribute | Incluir atributos de filtrado con el registro de complementos de Dataverse | Medio | Rendimiento |
Complemento o actividad de flujo de trabajo | meta-avoid-reg-retrieve | Adopta precauciones con complementos de Dataverse registrados para mensajes Retrieve y RetrieveMultiple. | Medio | Rendimiento |
Complemento o actividad de flujo de trabajo | meta-remove-inactive | Quitar configuraciones inactivas de Dataverse. | Bajo | Mantenimiento |
Complemento o actividad de flujo de trabajo | meta-avoid-crm4-event | No use la fase de registro de complementos Microsoft Dynamics CRM 4.0. | Medio | Upgrade Readiness |
Complemento o actividad de flujo de trabajo | meta-avoid-retrievemultiple-annotation | Evite registrar un complemento en RetrieveMultiple de anotación. | Alto | Uso |
Complemento o actividad de flujo de trabajo | meta-license-sales-sdkmessages | La solución contiene mensajes y operaciones del SDK que requieren una licencia válida de Dynamics 365. | Bajo | Licencias |
Aplicación basada en modelo | meta-license-sales-customcontrols | La solución contiene controles personalizados que requieren una licencia válida de Dynamics 365 Sales. | Bajo | Licencias |
Aplicación basada en modelo | meta-license-sales-entity-operations | La solución contiene entidades con mensajes y operaciones del SDK restringidos que requieren una licencia válida de Dynamics 365. | Bajo | Licencias |
Recursos web | use-async | Interactúe con recursos HTTP y HTTPS forma asincrónica. | Crítico | Rendimiento |
Recursos web | avoid-modals | Evite el uso de diálogos modales. | Alto | Compatibilidad |
Recursos web | avoid-dom-form | Alto | Compatibilidad | |
Recursos web | avoid-dom-form-event | Alto | Compatibilidad | |
Recursos web | avoid-crm2011-service-odata | No se dirija al extremo de Microsoft Dynamics CRM 2011 OData 2.0. | Crítico | Upgrade Readiness |
Recursos web | avoid-crm2011-service-soap | No se dirija a los servicios de Microsoft Dynamics CRM 2011 SOAP. | Crítico | Upgrade Readiness |
Recursos web | avoid-loadtheme | No utilices la API loadTheme de Fluent v8. |
Bajo | Compatibilidad |
Recursos web | avoid-browser-specific-api | No use complementos del explorador o API heredados de Internet Explorer. | Crítico | Upgrade Readiness |
Recursos web | avoid-unpub-api | Alto | Compatibilidad | |
Recursos web | avoid-window-top | Alto | Compatibilidad | |
Recursos web | avoid-2011-api | No use el modelo de objetos de Microsoft Dynamics CRM 2011 en desuso. En su lugar, siga la documentación de la API web de Dataverse. | Alto | Upgrade Readiness |
Recursos web | use-relative-uri | No use URL de extremo absolutos de Dataverse. | Medio | Mantenimiento |
Recursos web | use-cached-webresource | Medio | Rendimiento | |
Recursos web | use-client-context | Use contextos del cliente. | Medio | Upgrade Readiness |
Recursos web | use-navigation-api | Utilice los parámetros de las API de navegación. | Medio | Upgrade Readiness |
Recursos web | use-offline | Medio | Upgrade Readiness | |
Recursos web | do-not-make-parent-assumption | Alto | Diseño | |
Recursos web | use-org-setting | Use configuración de organización. | Medio | Upgrade Readiness |
Recursos web | use-global-context | Medio | Upgrade Readiness | |
Recursos web | use-grid-api | Use las API de cuadrícula. | Medio | Upgrade Readiness |
Recursos web | use-utility-dialogs | Medio | Uso | |
Recursos web | avoid-isActivityType | Reemplace el método Xrm.Utility.isActivityType por el nuevo Xrm.Utility.gettableMetadata y no lo utilice en reglas de cinta de opciones. | Medio | Upgrade Readiness |
Recursos web | meta-avoid-silverlight | El uso del recurso web de Silverlight ha quedado obsoleto. | Medio | Upgrade Readiness |
Recursos web | remove-debug-script | Evite incluir el script de depuración en entornos que no sean de desarrollo. | Medio | Uso |
Recursos web | use-strict-mode | Utilice el modo estricto si es posible. | Medio | Uso |
Recursos web | use-strict-equality-operators | Utilice operadores de igualdad estricta. | Medio | Uso |
Recursos web | avoid-eval | No use la función 'eval' o sus equivalentes funcionales. | Crítico | Seguridad |
Recursos web | avoid-with | No use el operador "with". | Alto | Rendimiento |
Recursos web | remove-alert | No use la función 'alerta' ni sus equivalentes funcionales. | Medio | Uso |
Recursos web | remove-console | Evitar usar métodos en la consola. | Medio | Uso |
Recursos web | avoid-ui-refreshribbon | Evite el uso de refreshRibbon en form onload y EnableRule. | Crítico | Rendimiento |
Recursos web | use-getsecurityroleprivilegesinfo | Evite userSettings.securityRolePrivileges. Utilice userSettings.getSecurityRolePrivilegesInfo en su lugar. | Alto | Rendimiento |
Recursos web | use-appsidepane-api | Utilice Xrm.App.sidePanes.createPane en lugar de Xrm.Panels.loadPanel. | Medio | Upgrade Readiness |
Recursos web | web-sdl-no-cookies | Las cookies HTTP son un antiguo mecanismo de almacenamiento del lado del cliente con riesgos y limitaciones inherentes. Utilice Web Storage, IndexedDB u otros métodos modernos en su lugar. | Medio | Seguridad |
Recursos web | web-sdl-no-document-domain | Las escrituras en la propiedad document.domain deben revisarse para evitar eludir las verificaciones del mismo origen. El uso de dominios de nivel superior como azurewebsites.net está estrictamente prohibido. | Medio | Seguridad |
Recursos web | web-sdl-no-document-write | Las llamadas a document.write o document.writeln manipulan DOM directamente sin ningún tipo de saneamiento y deben evitarse. Utilice document.createElement() o métodos similares en su lugar. | Medio | Seguridad |
Recursos web | web-sdl-no-html-method | Las llamadas directas al método html() a menudo (por ejemplo, en jQuery framework) manipulan el DOM sin ningún tipo de saneamiento y deben evitarse. Utilice document.createElement() o métodos similares en su lugar. | Medio | Seguridad |
Recursos web | web-sdl-no-inner-html | Las asignaciones a las propiedades innerHTML u outerHTML manipulan DOM directamente sin ningún tipo de desinfección y deben evitarse. Utilice document.createElement() o métodos similares en su lugar. | Medio | Seguridad |
Recursos web | web-sdl-no-insecure-url | Los protocolos no seguros, como HTTP o FTP, deben reemplazarse por sus homólogos cifrados (HTTPS, FTPS) para evitar el envío de datos potencialmente confidenciales a través de redes que no son de confianza en texto sin formato. | Medio | Seguridad |
Recursos web | web-sdl-no-msapp-exec-unsafe | Las llamadas a MSApp.execUnsafeLocalFunction() omiten la validación de inserción de script y se deben evitar. | Medio | Seguridad |
Recursos web | web-sdl-no-postmessage-star-origin | Proporcione siempre un origen de destino específico, no * al enviar datos a otras ventanas mediante postMessage para evitar la fuga de datos fuera de ese límite de confianza. | Medio | Seguridad |
Recursos web | web-sdl-no-winjs-html-unsafe | Las llamadas a WinJS.Utilities.setInnerHTMLUnsafe() y métodos similares no realizan ninguna validación de entrada y deben evitarse. Utilice WinJS.Utilities.setInnerHTML() en su lugar. | Medio | Seguridad |
Aplicación de lienzo | app-formula-issues-high | Consulte las referencias de fórmulas de Power Apps para obtener detalles adicionales. | Crítico | Diseño |
Aplicación de lienzo | app-formula-issues-medium | Consulte las referencias de fórmulas de Power Apps para obtener detalles adicionales. | Medio | Diseño |
Aplicación de lienzo | app-formula-issues-low | Consulte las referencias de fórmulas de Power Apps para obtener detalles adicionales. | Bajo | Diseño |
Aplicación de lienzo | app-use-delayoutput-text-input | Utilice la carga retrasada en algunos escenarios para mejorar el rendimiento. | Medio | Rendimiento |
Aplicación de lienzo | app-reduce-screen-controls | Limite el número de controles de la aplicación para mejorar el rendimiento. | Medio | Rendimiento |
Aplicación de lienzo | app-include-accessible-label | Utilice etiquetas explícitas para mejorar la accesibilidad de la aplicación. | Medio | Accesibilidad |
Aplicación de lienzo | app-include-alternative-input | Asegúrese de que todos los elementos interactivos sean accesibles para entradas alternativas. | Medio | Accesibilidad |
Aplicación de lienzo | app-avoid-autostart | Evite utilizar el inicio automático en reproductores dentro de una aplicación. | Medio | Accesibilidad |
Consulte también
Prácticas recomendadas e instrucciones para Dataverse
Prácticas recomendadas e instrucciones para aplicaciones basadas en modelos
Problemas y soluciones comunes para el Comprobador de soluciones
Nota
¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)
La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente las Cuestiones de GitHub como mecanismo de retroalimentación para el contenido y lo sustituiremos por un nuevo sistema de retroalimentación. Para más información, consulta:Enviar y ver comentarios de