Melhorar o desempenho, a estabilidade e a fiabilidade da solução

As soluções são usadas para distribuir objetos do Power Platform, como aplicações, tabelas, fluxos, recursos Web e plug-ins. Este artigo introduz a caraterística de verificador de soluções, uma ferramenta poderosa que executa uma análise estática e abrangente dos objetos da solução em relação a um conjunto de regras de melhores práticas. Usando o verificador de soluções, pode identificar rapidamente padrões problemáticos nos seus componentes e receber relatórios detalhados que destacam problemas, componentes afetados e fornecem ligações para a documentação sobre como resolver cada problema. Isto garante que as suas soluções são otimizadas para desempenho, estabilidade e fiabilidade.

Resultados e detalhes de exemplo do verificador de soluções

O verificador de soluções funciona com soluções não geridas que podem ser exportadas a partir de um ambiente.

Pode executar o verificador de soluções a partir do Power Apps (make.powerapps.com) ou utilizando o PowerShell.

Como o verificador de soluções ajuda

Para lidar com requisitos de negócio complexos, os criadores acabam, frequentemente, com soluções altamente avançadas que personalizam e expandem o Power Platform. Com implementações avançadas vem um maior risco em que os problemas de desempenho, estabilidade e fiabilidade são introduzidos, o que pode afetar negativamente a experiência do utilizador final. Identificar e compreender como resolver estes problemas pode ser complicado e demorado. Com a funcionalidade do verificador de soluções pode executar uma verificação em segundos na sua solução, o que usa um conjunto de regras de melhores práticas para identificar rapidamente estes padrões problemáticos. Quando a verificação estiver concluída, recebe um relatório detalhado no Power Apps, bem como numa mensagem de e-mail, que lista os problemas identificados, os componentes e código afetados e ligações para a documentação que descreve como resolvê-los.

O verificador de soluções analisa estes componentes da solução:

  • Atividades de fluxo de trabalho personalizado do Dataverse
  • Recursos Web do Dataverse (HTML e JavaScript)
  • Configurações do Dataverse, como passos de processamento de mensagens do SDK
  • Fluxos do Power Automate (através do verificador de fluxos)
  • Expressões do Power Fx (via verificador de aplicações)

Nota

  • O verificador de soluções suporta variáveis globais para a sintaxe ECMAScript 2015 (ES6) e até ECMAScript 2018 (ES9). Quando é detetado JavaScript através de variáveis globais posteriores ao ES6, ou com sintaxe posterior ao ES9, é reportado um problema de sintaxe não suportada para o recurso Web.
  • A utilização do verificador de soluções não garante que uma importação da solução seja bem sucedida. As verificações de análise estáticas realizadas contra a solução desconhecem o estado configurado do ambiente de destino e o sucesso das importações pode depender de outras soluções ou configurações no ambiente.

Execute o verificador de soluções

  1. Iniciar sessão no Power Apps.

  2. No painel esquerdo, selecione Soluções. Se o item não estiver no painel lateral, selecione ...Mais e, em seguida, selecione o item pretendido.

  3. Junto da solução não gerida que pretende analisar, selecione ..., aponte para Verificador de soluções e, em seguida, selecione Executar.

    Execute o comando do verificador de soluções.

  4. O botão de comando Verificador de soluções tem um indicador de carregamento e notará um estado Em execução... na coluna Verificação de soluções da lista Solução.

Estado do verificador de soluções

Nota

  • O verificador de soluções poderá demorar alguns minutos para concluir a análise.
  • Receberá uma notificação por e-mail e uma notificação na área de Notificações do site do Power Apps quando a verificação estiver concluída.
  1. Ver o relatório quando a verificação estiver concluída.

Cancelar uma verificação

Depois de enviar uma verificação de soluções no ambiente, a verificação pode ser cancelada através do painel de estado na área superior direita da página Soluções.

Quando cancela uma verificação, a verificação de solução pára a execução e o estado da verificação de solução regressa ao estado anterior.

Estados do Verificador de Soluções

Quando instala o verificador de soluções no ambiente, a coluna Verificação de solução fica disponível na lista Soluções. Esta coluna apresenta os estados de análise da solução para uma solução.

Estado Descrição
Não foi executada A solução nunca foi analisada.
Em execução A solução está a ser analisada.
Não foi possível concluir A análise de solução foi solicitada, mas a análise não foi concluída com êxito.
Resultados à data e hora A análise da solução foi concluída e os resultados estão disponíveis para descarregar.
Não foi possível concluir. Resultados à data e hora O pedido de análise mais recente não foi concluído com êxito. Os últimos resultados bem-sucedidos podem ser descarregados.
Verificado pela Microsoft Esta é uma solução gerida da Microsoft. A análise de solução não é permitida nestas soluções.
Verificado pelo Publisher Esta é uma solução não gerida pela Microsoft. Atualmente, a análise de solução não está disponível para estas soluções.

Reveja o relatório do verificador de soluções

Quando a verificação da solução estiver concluída, pode consultar o relatório de análise no portal ou transferi-lo no browser. No portal, tem opções para ordenar os resultados por Problema, Localização ou Gravidade e ver informações detalhadas sobre os problemas detetados na sua solução.

  1. No painel esquerdo, selecione Soluções. Se o item não estiver no painel lateral, selecione ...Mais e, em seguida, selecione o item pretendido.

  2. Junto da solução não gerida, onde pretende visualizar o relatório do verificador de soluções, selecione ..., selecione Verificador de soluções e, em seguida, selecione Ver resultados.

  3. Selecione um problema para ver informações e orientações sobre como o resolver.

    Resultados de exemplo e análise detalhada do verificador de soluções

Os resultados da verificação de soluções também estão disponíveis para transferência. O ficheiro zip do verificador de soluções é transferido para a pasta especificada pelo seu browser. O relatório transferido está no formato Excel e contém várias visualizações e colunas que o ajudam a identificar o impacto, tipo e localização de cada problema detetado na sua solução. Também é fornecida uma ligação para instruções detalhadas sobre como resolver o problema.

  1. No painel esquerdo, selecione Soluções. Se o item não estiver no painel lateral, selecione ...Mais e, em seguida, selecione o item pretendido.
  2. Junto da solução não gerida onde pretende transferir o relatório do verificador de soluções, selecione ..., selecione Verificador de soluções e, em seguida, selecione Transferir resultados.
  3. O ficheiro zip do verificador de soluções é transferido para a pasta especificada pelo seu browser.

Segue-se um resumo de cada coluna no relatório.

Coluna de relatório Descrição Componente a que se aplica
Problema O título do problema identificado na solução. Todos
Categoria A categorização do problema identificada, tal como Desempenho, Capacidade de Manutenção, Utilização, Capacidade de Suporte, Estrutura, Segurança, Acessibilidade ou Preparação de Atualizações. Tudo
Gravidade Representa o impacto potencial do problema identificado. Os tipos de impacto disponíveis são Crítico, Alto, Médio, Baixo e Informações. Todos
Orientação Ligar ao artigo detalhando o problema, o impacto e a ação recomendada. Todos
Componente O componente da solução onde o problema foi identificado. Tudo
Localização A localização e/ou o ficheiro de origem do componente em que ocorreu o problema identificado, tal como o nome do ficheiro assembly ou JavaScript. Tudo
N.º de linha A referência do número de linha do problema no componente de recurso Web afetado. Recursos Web
Módulo Nome do módulo onde foi detetado o problema identificado no conjunto. Atividade de fluxo de trabalho personalizado
Tipo Tipo de anomalia identificada na montagem. Atividade de fluxo de trabalho personalizado
Membro Membro do problema identificado na assemblagem. Atividade de fluxo de trabalho personalizado
Declaração A declaração de código ou configuração que resultou no problema. Tudo
Comentários Detalhes sobre o problema que incluem passos para a resolução de alto nível. Tudo

Executar regras de verificação de solução localmente

Pode executar regras de verificação de solução no seu ambiente de desenvolvimento para detetar problemas muito mais rapidamente à medida que cria os recursos da solução. Atualmente, isto é suportado para recursos Web (JavaScript e TypeScript). Para obter mais detalhes, aceda ao pacote NPM @microsoft/eslint-plugin-power-apps.

Executar o verificador de soluções utilizando o PowerShell

Está disponível um módulo do PowerShell que pode ser utilizado para interagir diretamente com o serviço. O módulo Microsoft.PowerApps.Checker.PowerShell pode ser utilizado para análise de soluções não geridas para ambientes do Power Apps, ou para automatizar e integrar o serviço nos seus pipelines de compilação e lançamento. Mais informações: Descrição geral do Microsoft.PowerApps.Checker.PowerShell

Regras de práticas recomendadas utilizadas pelo verificador de soluções

A tabela a seguir lista o tipo de componente, a descrição da regra, a gravidade e a categoria. As violações críticas são bloqueadas ou assinaladas com aviso quando estiver configurada a aplicação obrigatória do verificador de soluções em ambientes geridos. Mais informações: Utilizar verificador de soluções em Ambientes Geridos

Componente da solução Nome da regra Descrição da regra Gravidade Categoria
Plug-in ou atividade de fluxo de trabalho meta-remove-dup-reg Evite registos de plug-in duplicados do Dataverse. Crítico Desempenho
Plug-in ou atividade de fluxo de trabalho meta-avoid-reg-no-attribute Inclua atributos de filtragem nas inscrições de plug-in do Dataverse. Médio Desempenho
Plug-in ou atividade de fluxo de trabalho meta-avoid-reg-retrieve Tenha cuidado com os plug-ins do Dataverse registados para as mensagens Retrieve e RetrieveMultiple. Médio Desempenho
Plug-in ou atividade de fluxo de trabalho meta-remove-inactive Remova as configurações inativas do Dataverse. Baixo Capacidade de Manutenção
Atividade de plug‑in ou de fluxo de trabalho meta-avoid-crm4-event Não utilize a fase de registo de plug-ins do Microsoft Dynamics CRM 4.0. Médio Prontidão para atualização
Atividade de plug‑in ou de fluxo de trabalho meta-avoid-retrievemultiple-annotation Evitar registar um plug-in em RetrieveMultiple de anotação. Alta Utilização
Aplicação orientada por modelos meta-license-sales-entity-operations A solução contém entidades com mensagens e operações do SDK restritas que requerem uma licença válida do Dynamics 365. Baixo Licenciamento
Aplicação baseada em modelos meta-license-fieldservice-customcontrols A solução contém controlos personalizados que requerem uma licença válida do Dynamics 365 Field Service. Baixo Licenciamento
Aplicação orientada por modelos meta-license-fieldservice-entity-operations A solução contém entidades com mensagens restritas do SDK e operações que exigem uma licença válida do Dynamics 365 Field Service. Baixo Licenciamento
Recursos Web use-async Interagir com recursos HTTP e HTTPS de forma assíncrona. Crítico Desempenho
Recursos Web avoid-modals Evite utilizar diálogos modais. Alta Capacidade de Suporte
Recursos Web avoid-dom-form Alta Capacidade de Suporte
Recursos Web avoid-dom-form-event Alta Capacidade de Suporte
Recursos Web avoid-crm2011-service-odata Não direcionar para o ponto final OData 2.0 do Microsoft Dynamics CRM 2011. Crítico Prontidão para atualização
Recursos Web avoid-crm2011-service-soap Não vise os serviços SOAP do Microsoft Dynamics CRM 2011. Crítico Prontidão para atualização
Recursos Web avoid-loadtheme Não utilize a API loadTheme Fluent v8. Baixo Capacidade de Suporte
Recursos Web avoid-browser-specific-api Não utilize plug-ins do browser ou APIs legadas do Internet Explorer. Crítico Prontidão para atualização
Recursos Web avoid-unpub-api Alta Capacidade de Suporte
Recursos Web avoid-window-top Alta Capacidade de Suporte
Recursos Web avoid-2011-api Não utilize o modelo de objetos descontinuado do Microsoft Dynamics CRM 2011. Em vez disso, siga a documentação da API Web do Dataverse. Alta Prontidão para atualização
Recursos Web use-relative-uri Não utilize URLs de ponto final absolutos do Dataverse. Médio Capacidade de Manutenção
Recursos Web use-cached-webresource Médio Desempenho
Recursos Web use-client-context Utilize contextos de cliente. Médio Prontidão para atualização
Recursos Web use-navigation-api Utilize os parâmetros da API de navegação. Médio Prontidão para atualização
Recursos Web use-offline Médio Prontidão para atualização
Recursos Web do-not-make-parent-assumption Alta Conceção
Recursos Web use-org-setting Utilize definições da organização. Médio Prontidão para atualização
Recursos Web use-global-context Médio Prontidão para atualização
Recursos Web use-grid-api Utilizar as APIs da grelha. Médio Prontidão para atualização
Recursos Web use-utility-dialogs Médio Utilização
Recursos Web avoid-isActivityType Substitua o método Xrm.Utility.isActivityType pelo novo Xrm.Utility.gettableMetadata e não o utilize nas regras da barra de comandos. Médio Preparação para atualização
Recursos Web meta-avoid-silverlight A utilização do recurso Web Silverlight foi preterida. Médio Prontidão para atualização
Recursos Web remove-debug-script Evite incluir o script de depuração em ambientes que não sejam de desenvolvimento. Médio Utilização
Recursos Web use-strict-mode Utilize o modo estrito quando for possível. Médio Utilização
Recursos Web use-strict-equality-operators Utilize operadores de igualdade estrita. Médio Utilização
Recursos Web avoid-eval Não utilize a função eval ou os seus equivalentes funcionais. Crítico Segurança
Recursos Web avoid-with Não use o operador 'with'. Alta Desempenho
Recursos Web remove-alert Não utilize a função "alerta" ou os respetivos equivalentes funcionais. Médio Utilização
Recursos Web remove-console Evite utilizar métodos na consola. Médio Utilização
Recursos Web avoid-ui-refreshribbon Evite utilizar refreshRibbon no onload do formulário e em EnableRule. Crítico Desempenho
Recursos Web use-getsecurityroleprivilegesinfo Evite userSettings.securityRolePrivileges. Em vez disso, utilize userSettings.getSecurityRolePrivilegesInfo. Alta Desempenho
Recursos Web use-appsidepane-api Utilize Xrm.App.sidePanes.createPane em vez de Xrm.Panels.loadPanel. Médio Prontidão para atualização
Recursos Web web-sdl-no-cookies Os cookies HTTP são um antigo mecanismo de armazenamento do lado do cliente com riscos e limitações inerentes. Em vez disso, utilize o Armazenamento Web, IndexedDB ou outros métodos modernos. Médio Segurança
Recursos Web web-sdl-no-document-domain As escritas na propriedade document.domain têm de ser revistas para evitar ignorar as verificações de origem igual. A utilização de domínios de nível superior, como o azurewebsites.net está estritamente proibida. Médio Segurança
Recursos Web web-sdl-no-document-write As chamadas para document.write ou document.writeln manipulam diretamente o DOM sem qualquer sanitização e devem ser evitadas. Em vez disso, utilize document.createElement() ou métodos semelhantes. Médio Segurança
Recursos Web web-sdl-no-html-method As chamadas diretas para o método html() (por exemplo, na arquitetura de jQuery) manipulam frequentemente o DOM sem qualquer limpeza e devem ser evitadas. Em vez disso, utilize document.createElement() ou métodos semelhantes. Médio Segurança
Recursos Web web-sdl-no-inner-html As atribuições para as propriedades innerHTML ou outerHTML manipulam diretamente o DOM sem qualquer sanitização e devem ser evitadas. Em vez disso, utilize document.createElement() ou métodos semelhantes. Médio Segurança
Recursos Web web-sdl-no-insecure-url Os protocolos inseguros, tais como HTTP ou FTP, devem ser substituídos pelas respetivas partes encriptadas (HTTPS, FTPS) para evitar o envio de dados potencialmente sensíveis sobre redes não fidedignas em texto simples. Médio Segurança
Recursos Web web-sdl-no-msapp-exec-unsafe As chamadas para MSApp.execUnsafeLocalFunction() ignoram a validação de injeção do script e devem ser evitadas. Médio Segurança
Recursos Web web-sdl-no-postmessage-star-origin Forneça sempre uma origem de destino específica, e não `*`, ao utilizar o postMessage para enviar dados para outras janelas, de modo a evitar fugas de dados para fora do limite de confiança. Médio Segurança
Recursos Web web-sdl-no-winjs-html-unsafe As chamadas para WinJS.Utilities.setInnerHTMLUnsafe() e métodos semelhantes não executam nenhuma validação de entrada e devem ser evitadas. Em vez disso, utilize o WinJS.Utilities.setInnerHTML(). Médio Segurança
Aplicativo Canvas app-formula-issues-high Aceda a Referências de fórmula do Power Apps para obter mais detalhes. Crítico Estrutura
Aplicativo Canvas app-formula-issues-medium Consulte as referências de fórmula do Power Apps para obter mais detalhes. Médio Conceção
Aplicativo Canvas app-formula-issues-low Consulte as referências de fórmula do Power Apps para obter mais detalhes. Baixo Estrutura
Aplicativo Canvas app-use-delayoutput-text-input Utilize carga atrasada em alguns cenários para melhorar o desempenho. Médio Desempenho
Aplicativo Canvas app-reduce-screen-controls Limite o número de controlos de aplicações para melhorar o desempenho. Médio Desempenho
Aplicativo Canvas app-include-accessible-label Use etiquetas explícitas para melhorar a acessibilidade das aplicações. Médio Acessibilidade
Aplicativo Canvas app-include-alternative-input Certifique-se de que todos os elementos interativos estão acessíveis a entradas alternativas. Médio Acessibilidade
Aplicativo Canvas app-avoid-autostart Evite utilizar o arranque automático em leitores multimédia numa aplicação. Médio Acessibilidade
Fluxo do ambiente de trabalho desktopflow-avoid-unsafe-password As palavras-passe são geridas de forma insegura no processo. Alta Segurança
Fluxo do ambiente de trabalho desktopflow-avoid-subflow-recursion Chamadas recursivas detetadas entre subfluxos, causando potencialmente um ciclo infinito. Médio Estrutura
Fluxo do ambiente de trabalho desktopflow-avoid-infinite-loop Ciclo infinito detetado no fluxo, potencialmente fazendo com que seja executado indefinidamente. Médio Estrutura
Fluxo do ambiente de trabalho desktopflow-avoid-incomplete-if-branch Foi detetada uma ação If incompleta, sem conteúdo ou contendo apenas ações no ramo Else. Baixo Estrutura
Fluxo do ambiente de trabalho desktopflow-avoid-excessive-nested-ifs As cláusulas If aninhadas excedem cinco níveis. Baixo Capacidade de Manutenção
Fluxo do ambiente de trabalho desktopflow-avoid-empty-on-error-block A ação "On block error" está vazia e não processa erros. Baixo Estrutura
Fluxo do ambiente de trabalho desktopflow-limit-argument-count O total de variáveis de entrada/saída excede o limite de 25 variáveis. Baixo Capacidade de Manutenção
Fluxo do ambiente de trabalho desktopflow-input-argument-default-value As variáveis de entrada/saída não estão a utilizar valores predefinidos. Baixo Capacidade de Manutenção
Fluxo no ambiente de trabalho desktopflow-limit-variable-name-length O nome da variável excede o limite de 25 carateres. Baixo Capacidade de Manutenção
Fluxo do ambiente de trabalho desktopflow-avoid-excessive-wait-actions Foi detetada uma utilização incorreta de ações de espera, com mais de 10 ações de espera a causarem potenciais estrangulamentos. Baixo Desempenho
Fluxo do ambiente de trabalho desktopflow-avoid-immense-wait-duration Foi detetado um enorme tempo de espera, excedendo o limite de 600 segundos para ações de espera codificadas. Baixo Desempenho

Veja também

Melhores práticas e orientação para o Dataverse
Melhores práticas e orientação para aplicações orientadas por modelos
Problemas comuns e resoluções para o Verificador de Soluções