Melhorar o desempenho, a estabilidade e a fiabilidade dos componentes com o verificador de soluções
Para lidar com requisitos de negócio complexos, os criadores acabam, frequentemente, com soluções altamente avançadas que personalizam e expandem a plataforma do Microsoft Dataverse. 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 análise estática avançada em soluções contra um conjunto de regras de práticas recomendadas e rapidamente identificar estes padrões problemáticos. Quando a verificação estiver concluída, recebe um relatório detalhado 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 mensagens de SDK
- Fluxos do Power Automate (através do verificador de fluxos)
- Expressões do Power Fx (através do verificador de fluxos)
O verificador de soluções funciona com soluções não geridas que podem ser exportadas a partir de um ambiente.
Nota
- Este tópico explica como executar o verificador de soluções a partir do portal de criadores do Power Apps. Também 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
- 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
Inicie sessão no Power Apps.
No painel esquerdo, selecione Soluções. Se o item não estiver no painel lateral, selecione ...Mais e, em seguida, selecione o item pretendido.
Junto da solução não gerida que pretende analisar, selecione ..., aponte para Verificador de soluções e, em seguida, selecione Executar.
O botão de comando Verificador de soluções tem um indicador de carregamento e verá uma mensagem Em execução... na coluna Verificador de soluções da lista Solução.
Tenha em atenção o seguinte:
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.
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.
State | 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. |
Resultado à data de data e hora | A análise de solução foi concluída e os resultados estão disponíveis para transferência. |
Não foi possível concluir. Resultado como de data e hora | O pedido de análise mais recente não foi concluído com êxito. Podem ser transferidos os últimos resultados com êxito. |
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 gerida de terceiros. 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 uma verificação de solução é concluída, pode ver o relatório de análise no portal ou transferir o relatório a partir do Web 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.
No painel esquerdo, selecione Soluções. Se o item não estiver no painel lateral, selecione ...Mais e, em seguida, selecione o item pretendido.
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.
Selecione um problema para ver informações e orientações sobre como o resolver.
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 de transferência 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.
- No painel esquerdo, selecione Soluções. Se o item não estiver no painel lateral, selecione ...Mais e, em seguida, selecione o item pretendido.
- 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.
- 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 | Aplica-se ao componente |
---|---|---|
Problema | O título do problema identificado na solução. | Tudo |
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. | Tudo |
Orientação | Ligar ao artigo detalhando o problema, o impacto e a ação recomendada. | Tudo |
Componente | O componente da solução onde o problema foi identificado. | Tudo |
Location | A localização e/ou ficheiro de origem do componente onde ocorreu o problema que foi identificado, tal como o nome de ficheiro de JavaScript ou conjunto. | Tudo |
Linha # | A referência de linha de número do problema no componente de recurso web afetados. | Recursos Web |
Módulo | Nome do módulo em que o problema foi identificado no conjunto foi detetado. | Atividade de fluxo de trabalho personalizado |
Tipo | Tipo de problema identificado no conjunto. | Atividade de fluxo de trabalho personalizado |
Membro | Membro do problema identificado no conjunto. | 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 inclui passos resolução de problemas de nível elevado. | 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.
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 avisadas quando configuradas para a imposição 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 com registos de plug-in do Dataverse. | Meio | Desempenho |
Plug-in ou atividade de fluxo de trabalho | meta-avoid-reg-retrieve | Utilize com cautela os plug-ins do Dataverse registados para Obter e Obter Várias mensagens. | Meio | Desempenho |
Plug-in ou atividade de fluxo de trabalho | meta-remove-inactive | Remova as configurações inativas do Dataverse. | Mínimo | Capacidade de Manutenção |
Plug-in ou atividade de fluxo de trabalho | meta-avoid-crm4-event | Não utilize a fase de registo de plug-ins do Microsoft Dynamics CRM 4.0. | Meio | Preparação de atualizações |
Plug-in ou atividade de fluxo de trabalho | meta-avoid-retrievemultiple-annotation | Evite registar um plug-in no RetrieveMultiple de anotação. | Máximo | Utilização |
Aplicação condicionada por modelo | meta-license-sales-entity-operations | A solução contém entidades com mensagens restritas do SDK que exigem uma licença válida do Dynamics 365. | Mínimo | Licenciamento |
Aplicação condicionada por modelo | meta-license-fieldservice-customcontrols | A solução contém controlos personalizados que requerem uma licença válida do Dynamics 365 Field Service. | Mínimo | Licenciamento |
Aplicação condicionada por modelo | 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. | Mínimo | 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. | Máximo | Capacidade de Suporte |
Recursos Web | avoid-dom-form | Máximo | Capacidade de Suporte | |
Recursos Web | avoid-dom-form-event | Máximo | Capacidade de Suporte | |
Recursos Web | avoid-crm2011-service-odata | Não vise o ponto final Microsoft Dynamics CRM 2011 OData 2.0. | Crítico | Preparação de atualizações |
Recursos Web | avoid-crm2011-service-soap | Não vise os serviços SOAP do Microsoft Dynamics CRM 2011. | Crítico | Preparação de atualizações |
Recursos Web | avoid-loadtheme | Não utilize a API loadTheme Fluent v8. |
Mínimo | Capacidade de Suporte |
Recursos Web | avoid-browser-specific-api | Não utilize plug-ins do browser ou APIs legadas do Internet Explorer. | Crítico | Preparação de atualizações |
Recursos Web | avoid-unpub-api | Máximo | Capacidade de Suporte | |
Recursos Web | avoid-window-top | Máximo | Capacidade de Suporte | |
Recursos Web | avoid-2011-api | Não utilize o objeto de modelo preterido do Microsoft Dynamics CRM 2011. Em vez disso, siga a documentação da API Web do Dataverse. | Máximo | Preparação de atualizações |
Recursos Web | use-relative-uri | Não utilize URLs de ponto final absolutos do Dataverse. | Meio | Capacidade de Manutenção |
Recursos Web | use-cached-webresource | Meio | Desempenho | |
Recursos Web | use-client-context | Utilize contextos de cliente. | Meio | Preparação de atualizações |
Recursos Web | use-navigation-api | Utilizar parâmetros de API de navegação. | Meio | Preparação de atualizações |
Recursos Web | use-offline | Meio | Preparação de atualizações | |
Recursos Web | do-not-make-parent-assumption | Máximo | Design | |
Recursos Web | use-org-setting | Utilize definições da organização. | Meio | Preparação de atualizações |
Recursos Web | use-global-context | Meio | Preparação de atualizações | |
Recursos Web | use-grid-api | Utilize as APIs da grelha. | Meio | Preparação de atualizações |
Recursos Web | use-utility-dialogs | Meio | Utilização | |
Recursos Web | avoid-isActivityType | Substitua o método Xrm.Utility.isActivityType pelo novo Xrm.Utility.gettableMetadata e não utilize as regras de friso. | Meio | Preparação de atualizações |
Recursos Web | meta-avoid-silverlight | A utilização do recurso Web Silverlight foi preterida. | Meio | Preparação de atualizações |
Recursos Web | remove-debug-script | Evite incluir script de depuração em ambientes que não sejam de desenvolvimento. | Meio | Utilização |
Recursos Web | use-strict-mode | Utilize o modo estrito quando for possível. | Meio | Utilização |
Recursos Web | use-strict-equality-operators | Utilize operadores de igualdade estrita. | Meio | Utilização |
Recursos Web | avoid-eval | Não utilize a função 'eval' ou os seus equivalentes funcionais. | Crítico | Segurança |
Recursos Web | evitar-with | Não use o operador 'with'. | Máximo | Desempenho |
Recursos Web | remove-alert | Não utilize a função "alerta" ou os respetivos equivalentes funcionais. | Meio | Utilização |
Recursos Web | remove-console | Evite utilizar métodos na consola. | Meio | Utilização |
Recursos Web | avoid-ui-refreshribbon | Evite utilizar refreshRibbon em onload e EnableRule do formulário. | Crítico | Desempenho |
Recursos Web | use-getsecurityroleprivilegesinfo | Evite userSettings.securityRolePrivileges. Em vez disso, utilize userSettings.getSecurityRolePrivilegesInfo. | Máximo | Desempenho |
Recursos Web | use-appsidepane-api | Utilize Xrm.App.sidePanes.createPane em vez de Xrm.Panels.loadPanel. | Meio | Preparação de atualizações |
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. | Meio | Segurança |
Recursos Web | web-sdl-no-document-domain | A propriedade document.domain tem de ser revista para evitar ignorar verificações de origem iguais. A utilização de domínios de nível superior, como o azurewebsites.net está estritamente proibida. | Meio | 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. | Meio | Segurança |
Recursos Web | web-sdl-no-html-method | As chamadas diretas para o método html() (por ex.: na estrutura jQuery) manipulam frequentemente o DOM sem qualquer sanitização e devem ser evitadas. Em vez disso, utilize document.createElement() ou métodos semelhantes. | Meio | 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. | Meio | 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. | Meio | 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. | Meio | Segurança |
Recursos Web | web-sdl-no-postmessage-star-origin | Forneça sempre a origem do alvo específica e não * quando enviar dados para outras janelas utilizando postMessage para evitar a utilização de dados fora do limite da confiança. | Meio | Segurança |
Recursos Web | web-sdl-no-winjs-html-unsafe | As chamadas para WinJS.Utilities.setInnerHTMLUnsafe() e métodos semelhantes não executam qualquer validação de entrada e devem ser evitadas. Em vez disso, utilize o WinJS.Lamies.setInnerHTML(). | Meio | Segurança |
Canvas App | app-formula-issues-high | Consulte as referências de fórmula do Power Apps para obter mais detalhes. | Crítico | Design |
Canvas App | app-formula-issues-medium | Consulte as referências de fórmula do Power Apps para obter mais detalhes. | Meio | Design |
Canvas App | app-formula-issues-low | Consulte as referências de fórmula do Power Apps para obter mais detalhes. | Mínimo | Design |
Canvas App | app-use-delayoutput-text-input | Utilize carga atrasada em alguns cenários para melhorar o desempenho. | Meio | Desempenho |
Canvas App | app-reduce-screen-controls | Limite o número de controlos de aplicações para melhorar o desempenho. | Meio | Desempenho |
Canvas App | app-include-accessible-label | Use etiquetas explícitas para melhorar a acessibilidade das aplicações. | Meio | Acessibilidade |
Canvas App | app-include-alternative-input | Certifique-se de que todos os elementos interativos estão acessíveis a entradas alternativas. | Meio | Acessibilidade |
Canvas App | app-avoid-autostart | Evite utilizar automaticamente os reprodutores dentro de uma aplicação. | Meio | Acessibilidade |
Consulte 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
Nota
Pode indicar-nos as suas preferências no que se refere ao idioma da documentação? Responda a um breve inquérito. (tenha em atenção que o inquérito está em inglês)
O inquérito irá demorar cerca de sete minutos. Não são recolhidos dados pessoais (declaração de privacidade).