Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les solutions sont utilisées pour distribuer des objets Power Platform, tels que des applications, des tables, des flux, des ressources web et des plug-ins. Cet article introduit la fonctionnalité du vérificateur de solution, un outil performant qui effectue une analyse statique détaillée des objets de votre solution par rapport à un ensemble de règles de bonnes pratiques. En utilisant Vérificateur de solution, vous pouvez rapidement identifier les modèles problématiques dans vos composants et recevoir des rapports détaillés qui mettent en évidence les problèmes, les composants affectés et fournissent des liens vers la documentation sur la façon de résoudre chaque problème. Cela garantit que vos solutions sont optimisées en termes de performances, de stabilité et de fiabilité.
Le vérificateur de solution utilise des solutions non gérées qui peuvent être exportées à partir d’un environnement.
Vous pouvez exécuter le vérificateur de solution soit à partir de Power Apps (make.powerapps.com), soit en utilisant PowerShell.
Comment le vérificateur de solution vous aide
Pour répondre aux besoins métier complexes, les créateurs peuvent souvent se retrouver avec des solutions très avancées qui personnalisent et étendent Power Platform. Les implémentations avancées s’accompagnent d’un risque accru où des problèmes de performances, de stabilité et de fiabilité surviennent, susceptibles d’impacter négativement l’expérience utilisateur. L’identification et la compréhension de la résolution de ces problèmes peuvent être compliquées et chronophages. Avec la fonctionnalité du vérificateur de solution, vous pouvez exécuter une vérification de votre solution en quelques secondes, qui utilise un ensemble de règles de bonnes pratiques pour identifier rapidement les modèles problématiques. Une fois la vérification terminée, vous recevez un rapport détaillé dans Power Apps et par message électronique, qui répertorie les problèmes identifiés, les composants et le code affectés, ainsi que les liens vers la documentation qui explique comment résoudre chaque problème.
Le vérificateur de solution analyse ces composants de solution :
- Activités de workflow personnalisées Dataverse
- Ressources Web (HTML et JavaScript) Dataverse
- Configurations Dataverse, telles que les étapes de message SDK
- Flux Power Automate (via le vérificateur de flux)
- Expressions Power Fx (via le vérificateur d’application)
Nonte
- Le vérificateur de solution prend en charge les variables globales pour ECMAScript 2015 (ES6) et jusqu’à la syntaxe ECMAScript 2018 (ES9). Quand JavaScript est détecté à l’aide de variables globales ultérieures à ES6, ou d’une syntaxe ultérieure à ES9, un problème de syntaxe web non prise en charge pour la ressource web est signalé.
- L’utilisation du vérificateur de solution ne garantit pas que l’importation d’une solution se déroulera correctement. Les vérifications d’analyse statique effectuées par rapport à la solution ne connaissent pas l’état configuré de l’environnement de destination, et le succès de l’importation peut dépendre d’autres solutions ou configurations dans l’environnement.
Exécuter le vérificateur de solution
Connectez-vous à Power Apps.
Dans le volet de gauche, sélectionnez Solutions. Si l’élément ne se trouve pas dans le volet latéral, sélectionnez …Plus, puis sélectionnez l’élément souhaité.
En regard de la solution non gérée que vous souhaitez analyser, sélectionnez ..., pointez sur Vérificateur de solution, puis sélectionnez Exécuter.
Le bouton de commande Vérificateur de solution a un indicateur de chargement et vous remarquerez un état En cours d’exécution… dans la colonne Vérification de solution de la liste Solution.
Nonte
- Le vérificateur de solution peut durer quelques minutes pour terminer l’analyse.
- Vous recevez une notification par courrier électronique et une notification dans la zone Notifications du site Power Apps quand la vérification est terminée.
- Affichez le rapport quand la vérification est terminée.
Annuler une vérification
Après l’envoi d’une vérification de solutions dans votre environnement, la vérification peut être annulée via le volet de statut dans la zone supérieure droite de la page Solutions.
Quand vous annulez une vérification, la vérification de solution arrête de s’exécuter et le statut de vérification de solution revient à l’état antérieur.
États du vérificateur de solution
Quand vous installez le vérificateur de solution dans votre environnement, la colonne Vérification de solution devient disponible dans la liste Solutions. Cette colonne affiche les états d’analyse de solution pour une solution.
| État | Description |
|---|---|
| N’a pas été exécutée | La solution n’a jamais été analysée. |
| Exécution | La solution est en cours d’analyse. |
| Impossible d’exécuter | L’analyse de solution a été demandée mais l’analyse n’a pas abouti. |
| Résultats aux date et heure | L’analyse de solution s’est terminée et les résultats sont disponibles au téléchargement. |
| Impossible d’exécuter. Résultat aux date et heure | La dernière demande d’analyse n’a pas abouti. Les derniers résultats réussis peuvent être téléchargés. |
| Vérifiée par Microsoft | Il s’agit d’une solution gérée Microsoft. L’analyse de solution n’est pas autorisée sur ces solutions. |
| Vérifiée par l’éditeur | Il s’agit d’une solution gérée autre que Microsoft. Actuellement, l’analyse de solution n’est pas disponible pour ces solutions. |
Consulter le rapport du vérificateur de solution
Quand une vérification de la solution est terminée, vous pouvez afficher le rapport d’analyse dans le portail ou vous pouvez télécharger le rapport depuis votre navigateur web. Dans le portail, vous avez des options de trier des résultats par Problème, Emplacement ou Gravité et vous pouvez afficher des informations détaillées pour les problèmes détectés dans votre solution.
Dans le volet de gauche, sélectionnez Solutions. Si l’élément ne se trouve pas dans le volet latéral, sélectionnez …Plus, puis sélectionnez l’élément souhaité.
En regard de la solution non gérée où vous souhaitez afficher le rapport du vérificateur de solution, sélectionnez ..., pointez sur Vérificateur de solution, puis sélectionnez Afficher les résultats.
Sélectionnez un problème pour afficher les détails et des instructions sur la manière de le résoudre.
Les résultats de la vérification de solution sont également disponibles au téléchargement. Le fichier zip du vérificateur de solution est téléchargé dans le dossier spécifié par votre navigateur Web. Le rapport téléchargé est au format Excel et comporte plusieurs visualisations et colonnes qui vous permettent d'identifier l'impact, le type et l'emplacement de chaque problème détecté dans votre solution. Un lien vers des indications détaillées sur la résolution du problème est également fourni.
- Dans le volet de gauche, sélectionnez Solutions. Si l’élément ne se trouve pas dans le volet latéral, sélectionnez …Plus, puis sélectionnez l’élément souhaité.
- En regard de la solution non gérée où vous souhaitez télécharger le rapport du vérificateur de solution, sélectionnez ..., pointez sur Vérificateur de solution, puis sélectionnez Télécharger les résultats.
- Le fichier zip du vérificateur de solution est téléchargé dans le dossier spécifié par votre navigateur Web.
Voici un résumé de chaque colonne du rapport.
| Colonne de rapport | Description | S’applique à un composant |
|---|---|---|
| Problème | Titre du problème identifié dans la solution. | Tous |
| Catégorie | La catégorisation du problème identifié, telle que Performance, Maintenabilité, Utilisation, Supportabilité, Conception, Sécurité, Accessibilité, ou Mise à niveau de préparation. | Tous |
| Niveau de gravité | Représente l’impact potentiel du problème identifié. Les types d’impacts disponibles sont Critique, Élevée, Moyenne, Faible et Informative. | Tous |
| Conseils | Lien vers l’article détaillant le problème, son impact, et l’action recommandée | Tous |
| Composant | Composant de solution où l’erreur a été identifiée. | Tous |
| Location | Emplacement et/ou fichier source du composant où l’erreur qui a été identifiée s’est produite, par exemple l’assembly ou le nom du fichier JavaScript. | Tous |
| No de ligne | Référence du numéro de ligne du problème dans le composant de ressource Web concerné. | Ressources Web |
| Module | Nom du module où l’erreur identifiée dans l’assembly a été détectée. | Activité de workflow personnalisée |
| Type | Type du problème identifié dans l’assembly. | Activité de workflow personnalisée |
| Membre | Membre du problème identifié dans l’assembly. | Activité de workflow personnalisée |
| Instruction | Instruction ou configuration de code ayant entraîné le problème. | Tous |
| Commentaires | Détails sur le problème qui comprennent les étapes de résolution globale. | Tous |
Exécuter les règles du vérificateur de solution localement
Vous pouvez exécuter des règles de vérificateur de solution dans votre environnement de développement pour détecter les problèmes beaucoup plus tôt quand vous créez vos ressources de solution. Ceci est actuellement pris en charge pour les ressources web (JavaScript et TypeScript). Pour plus de détails, rendez-vous sur dans package NPM @microsoft/eslint-plugin-power-apps.
Exécutez Vérificateur de solution en utilisant PowerShell
Un module PowerShell est disponible pour vous permettre d’interagir directement avec le service. Le module de Microsoft.PowerApps.Checker.PowerShell peut être utilisé pour l’analyse des solutions non gérées pour les environnements Power Apps, ou pour automatiser et intégrer le service dans votre pipelines de build et de publication. Pour plus d’informations : Vue d’ensemble de Microsoft.PowerApps.Checker.PowerShell
Règles de meilleures pratiques utilisées par le vérificateur de solution
Le tableau suivant répertorie les types de modèles, la description de règle, la gravité et la Catégorie. Les violations critiques sont bloquées ou averties quand elles sont configurées pour l’application du sélecteur de solution avec des environnements gérés. Plus d’informations : Utiliser le contrôle de solutions dans les environnements gérés
| Composant de solution | Nom de la règle | Description de la règle | Niveau de gravité | Catégorie |
|---|---|---|---|---|
| Plug-in ou activité de workflow | meta-remove-dup-reg | Évitez de dupliquer des inscriptions de plug-in Dataverse. | Critique | Performances |
| Plug-in ou activité de workflow | meta-avoid-reg-no-attribute | Incluez des attributs de filtrage avec les inscriptions du plug-in Dataverse. | Moyen | Performances |
| Plug-in ou activité de workflow | meta-avoid-reg-retrieve | Faites preuve de prudence avec les plug-ins Dataverse enregistrés pour les messages Retrieve et RetrieveMultiple. | Moyen | Performances |
| Plug-in ou activité de workflow | meta-remove-inactive | Supprimez les configurations inactives de Dataverse. | Bas | Maintenabilité |
| Plug-in ou activité de workflow | meta-avoid-crm4-event | N’utilisez pas la phase d’inscription du plug-in Microsoft Dynamics CRM 4.0. | Moyen | Préparation à la mise à niveau |
| Plug-in ou activité de workflow | meta-avoid-retrievemultiple-annotation | Évitez d’enregistrer un plug-in sur RetrieveMultiple d’une annotation. | Élevé | Utilisation |
| Application pilotée par modèle | meta-license-sales-entity-operations | La solution contient des entités avec des messages et des opérations SDK restreints qui nécessitent une licence Dynamics 365 valide. | Bas | Gestion des licences |
| Application pilotée par modèle | meta-license-fieldservice-customcontrols | La solution contient des contrôles personnalisés qui nécessitent une Dynamics 365 Field Service licence valide. | Bas | Gestion des licences |
| Application pilotée par modèle | meta-license-fieldservice-entity-operations | La solution contient des entités avec des messages et des opérations SDK restreints qui nécessitent une Dynamics 365 Field Service licence valide. | Bas | Gestion des licences |
| Ressources web | use-async | Interagissez avec les ressources HTTP et HTTPS de manière asynchrone. | Critique | Performances |
| Ressources web | avoid-modals | Évitez d’utiliser les boîtes de dialogue modales. | Élevé | Supportabilité |
| Ressources web | avoid-dom-form | Élevé | Supportabilité | |
| Ressources web | avoid-dom-form-event | Élevé | Supportabilité | |
| Ressources web | avoid-crm2011-service-odata | Ne ciblez pas le point de terminaison Microsoft Dynamics CRM 2011 OData 2.0. | Critique | Préparation à la mise à niveau |
| Ressources web | avoid-crm2011-service-soap | Ne ciblez pas les services SOAP Microsoft Dynamics CRM 2011. | Critique | Préparation à la mise à niveau |
| Ressources web | avoid-loadtheme | N’utilisez pas l’API loadTheme Fluent v8. |
Bas | Supportabilité |
| Ressources web | avoid-browser-specific-api | N’utilisez pas les plug-ins de navigateur ou les API héritées d’Internet Explorer. | Critique | Préparation à la mise à niveau |
| Ressources web | avoid-unpub-api | Élevé | Supportabilité | |
| Ressources web | avoid-window-top | Élevé | Supportabilité | |
| Ressources web | avoid-2011-api | N’utilisez pas le modèle d’objet Microsoft Dynamics CRM 2011 obsolète. En lieu et place, suivez la documentation sur l’API Web Dataverse. | Élevé | Préparation à la mise à niveau |
| Ressources web | use-relative-uri | N’utilisez pas les URL de point de terminaison Dataverse pour les applications absolues. | Moyen | Maintenabilité |
| Ressources web | use-cached-webresource | Moyen | Performances | |
| Ressources web | use-client-context | Utilisez les contextes clients. | Moyen | Préparation à la mise à niveau |
| Ressources web | use-navigation-api | Utilisez les paramètres d’API de navigation. | Moyen | Préparation à la mise à niveau |
| Ressources web | use-offline | Moyen | Préparation à la mise à niveau | |
| Ressources web | do-not-make-parent-assumption | Élevé | Concevoir | |
| Ressources web | use-org-setting | Utilisez les paramètres d’organisation. | Moyen | Préparation à la mise à niveau |
| Ressources web | use-global-context | Moyen | Préparation à la mise à niveau | |
| Ressources web | use-grid-api | Utilisez les API de grille. | Moyen | Préparation à la mise à niveau |
| Ressources web | use-utility-dialogs | Moyen | Utilisation | |
| Ressources web | avoid-isActivityType | Remplacez la méthode Xrm.Utility.isActivityType par la nouvelle méthode Xrm.Utility.gettableMetadata et ne l’utilisez pas dans les règles de ruban. | Moyen | Préparation à la mise à niveau |
| Ressources web | meta-avoid-silverlight | L’utilisation de la ressource Web Silverlight est déconseillée. | Moyen | Préparation à la mise à niveau |
| Ressources web | remove-debug-script | Évitez d’inclure le script de débogage dans des environnements autres que de développement. | Moyen | Utilisation |
| Ressources web | use-strict-mode | Utilisez le mode strict quand cela est possible. | Moyen | Utilisation |
| Ressources web | use-strict-equality-operators | Utilisez des opérateurs d’égalité stricts. | Moyen | Utilisation |
| Ressources web | avoid-eval | N’utilisez pas la fonction eval ou ses équivalents fonctionnels. |
Critique | Sécurité |
| Ressources web | avoid-with | Ne pas utiliser avec l’opérateur « with ». | Élevé | Performances |
| Ressources web | remove-alert | N’utilisez pas la fonction « alert » ni ses équivalents fonctionnels. | Moyen | Utilisation |
| Ressources web | remove-console | Évitez d’utiliser des méthodes sur la console. | Moyen | Utilisation |
| Ressources web | avoid-ui-refreshribbon | Évitez d’utiliser refreshRibbon dans le formulaire onload et EnableRule. | Critique | Performances |
| Ressources web | use-getsecurityroleprivilegesinfo | Évitez userSettings.securityRolePrivileges. Utilisez plutôt userSettings.getSecurityRolePrivilegesInfo. | Élevé | Performances |
| Ressources web | use-appsidepane-api | Utilisez Xrm.App.sidePanes.createPane au lieu de Xrm.Panels.loadPanel. | Moyen | Préparation à la mise à niveau |
| Ressources web | web-sdl-no-cookies | Les cookies HTTP sont un ancien mécanisme de stockage côté client avec des risques et des limites inhérents. Utilisez plutôt le stockage web, IndexedDB ou d’autres méthodes modernes. | Moyen | Sécurité |
| Ressources web | web-sdl-no-document-domain | Les écritures dans la propriété document.domain doivent être vérifiées pour éviter le contournement des vérifications de même origine. L’utilisation de domaines de premier niveau tels que azurewebsites.net est strictement interdite. | Moyen | Sécurité |
| Ressources web | web-sdl-no-document-write | Les appels à document.write ou document.writeln manipulent directement DOM sans aucun assainissement et doivent être évités. Utilisez plutôt document.createElement() ou des méthodes similaires. | Moyen | Sécurité |
| Ressources web | web-sdl-no-html-method | Les appels directs à la méthode html() (par exemple, dans le cadre de jQuery) manipulent souvent DOM sans assainissement et doivent être évités. Utilisez plutôt document.createElement() ou des méthodes similaires. | Moyen | Sécurité |
| Ressources web | web-sdl-no-inner-html | Les affectations aux propriétés innerHTML ou outerHTML manipulent directement DOM sans aucun assainissement et doivent être évités. Utilisez plutôt document.createElement() ou des méthodes similaires. | Moyen | Sécurité |
| Ressources web | web-sdl-no-insecure-url | Les protocoles non sécurisés tels que HTTP ou FTP doivent être remplacés par leurs homologues chiffrés (HTTPS, FTPS) pour éviter d’envoyer des données potentiellement sensibles sur des réseaux non fiables en clair. | Moyen | Sécurité |
| Ressources web | web-sdl-no-msapp-exec-unsafe | Les appels à MSApp.execUnsafeLocalFunction() contournent la validation de l’injection de script et doivent être évités. | Moyen | Sécurité |
| Ressources web | web-sdl-no-postmessage-star-origin | Fournissez toujours une origine cible spécifique, pas * lors de l’envoi de données à d’autres fenêtres à l’aide de postMessage pour éviter les fuites de données en dehors de la limite de confiance. | Moyen | Sécurité |
| Ressources web | web-sdl-no-winjs-html-unsafe | Les appels à WinJS.Utilities.setInnerHTMLUnsafe() et les méthodes similaires n’effectuent aucune validation d’entrée et doivent être évités. Utilisez WinJS.Utilities.setInnerHTML() à la place. | Moyen | Sécurité |
| Application canevas | app-formula-issues-high | Accédez à Référence aux formules Power Apps pour plus de détails. | Critique | Concevoir |
| Application canevas | app-formula-issues-medium | Reportez-vous aux références des formules Power Apps pour plus de détails. | Moyen | Concevoir |
| Application canevas | app-formula-issues-low | Reportez-vous aux références des formules Power Apps pour plus de détails. | Bas | Concevoir |
| Application canevas | app-use-delayoutput-text-input | Utilisez une charge différée dans certains scénarios pour améliorer les performances. | Moyen | Performances |
| Application canevas | app-reduce-screen-controls | Limitez le nombre de contrôles d’application pour améliorer les performances. | Moyen | Performances |
| Application canevas | app-include-accessible-label | Utilisez des étiquettes explicites pour améliorer l’accessibilité des applications. | Moyen | Accessibilité |
| Application canevas | app-include-alternative-input | Assurez-vous que tous les éléments interactifs sont accessibles aux entrées alternatives. | Moyen | Accessibilité |
| Application canevas | app-avoid-autostart | Évitez d’utiliser le démarrage automatique des lecteurs dans une application. | Moyen | Accessibilité |
| Flux de bureau | desktopflow-avoid-unsafe-password | Les mots de passe ne sont pas gérés de manière sécurisée dans le flux. | Élevé | Sécurité |
| Flux de bureau | desktopflow-avoid-subflow-recursion | Appels récursifs détectés entre les sous-flux, provoquant potentiellement une boucle infinie. | Moyen | Concevoir |
| Flux de bureau | desktopflow-avoid-infinite-loop | Boucle infinie détectée dans le flux, ce qui risque de l’entraîner à s’exécuter indéfiniment. | Moyen | Concevoir |
| Flux de bureau | desktopflow-avoid-incomplete-if-branch | Action If non terminée détectée, manque de contenu ou contient uniquement des actions dans la branche Else. | Bas | Concevoir |
| Flux de bureau | desktopflow-avoid-excessive-nested-ifs | Les clauses If imbriquées dépassent cinq niveaux. | Bas | Maintenabilité |
| Flux de bureau | desktopflow-avoid-empty-on-error-block | L’action « Erreur sur bloc » est vide et ne gère pas les erreurs. | Bas | Concevoir |
| Flux de bureau | desktopflow-limit-argument-count | Le total des variables d’entrée/sortie dépasse la limite de 25 variables. | Bas | Maintenabilité |
| Flux de bureau | desktopflow-input-argument-default-value | Les variables d’entrée/sortie n’utilisent pas de valeurs par défaut. | Bas | Maintenabilité |
| Flux de bureau | desktopflow-limit-variable-name-length | Le nom de la variable dépasse la limite de 25 caractères. | Bas | Maintenabilité |
| Flux de bureau | desktopflow-avoid-excessive-wait-actions | Une utilisation abusive des actions d’attente a été détectée, avec plus de 10 actions d’attente provoquant des goulots d’étranglement potentiels. | Bas | Performances |
| Flux de bureau | desktopflow-avoid-immense-wait-duration | Un temps d’attente immense a été détecté, dépassant la limite de 600 secondes pour les actions d’attente codées en dur. | Bas | Performances |
Voir aussi
Bonnes pratiques et instructions pour Dataverse
Meilleures pratiques et directives pour des applications basées sur des modèles
Problèmes courants et solutions pour le vérificateur de solution