Поделиться через


Повышение производительности, стабильности и надежности решения

Решения используются для распространения Power Platform объектов, таких как приложения, таблицы, потоки, веб-ресурсы и подключаемые модули. В этой статье представлена функция проверки решений, мощный инструмент, которое выполняет всесторонний статический анализ объектов решения в соответствии с набором правил передового опыта. С помощью средства проверки решений можно быстро выявлять проблемные шаблоны в компонентах и получать подробные отчеты, в которых подчеркиваются проблемы и затронутые компоненты, а также содержатся ссылки на документацию по устранению каждой проблемы. Это гарантирует, что ваши решения будут оптимизированы с точки зрения производительности, стабильности и надежности.

Примеры средства проверки решений, результатов и сведений

Средство проверки решений работает с неуправляемыми решениями, которые можно экспортировать из среды.

Средство проверки решений можно запустить либо из Power Apps (make.powerapps.com), либо с помощью PowerShell.

Как средство проверки решений поможет вам

Чтобы обеспечивать сложные бизнес-требования, создатели часто могут в конечном счете создавать в высокой степени развитые приложения, которые настраивают и расширяют Power Platform. Со сложными реализациями возникает риск возникновения проблем производительности, устойчивости и надежности, что может отрицательно повлиять на опыт работы пользователя. Выявление этих проблем и разработка способов их устранения может быть сложной задачей, требующей много времени. С функцией проверки решения можно выполнить проверку решений в течение нескольких секунд для ваших решений по набору правил передового опыта и быстро выявить эти проблемные закономерности. После завершения проверки вы получите подробный отчет в Power Apps, а также сообщение электронной почты со списком выявленных проблем, затронутыми компонентами и кодом, а также со ссылками на документацию, в которой описываются способы решения каждой проблемы.

Средство проверки решений анализирует этих компоненты решений:

Заметка

  • Средство проверки решений поддерживает глобальные переменные для ECMAScript 2015 (ES6) и вплоть до синтаксиса ECMAScript 2018 (ES9). Когда JavaScript обнаружен с использованием глобальных переменных позже ES6 или синтаксиса более позднего, чем ES9, сообщается о проблеме неподдерживаемого в веб синтаксиса для веб-ресурса.
  • Использование средства проверки решения не гарантирует, что импорт решения будет успешным. Проверки статического анализа, выполняемые для решения, не знают настроенного состояния целевой среды, и успех импорта может зависеть от других решений или конфигураций в среде.

Запуск средства проверки решений

  1. Выполните вход в Power Apps.

  2. В левой области выберите Решения. Если этого пункта нет на боковой панели, выберите …Еще, а затем выберите нужный пункт.

  3. Рядом с неуправляемым решением, которое требуется проанализировать, выберите пункт ..., укажите на пункт Средство проверки решений, затем выберите Выполнить.

    Выполнение команды средства проверки решений.

  4. Кнопка команды Средство проверки решений имеет индикатор загрузки, и вы заметите состояние Выполняется… в столбце Проверка решения списка Решение.

Состояние средства проверки решений

Заметка

  • Средству проверки решений может потребоваться несколько минут для выполнения анализа.
  • Вы получите уведомление по электронной почте и уведомление в области Уведомления сайта Power Apps после завершения проверки.
  1. Просмотрите отчет, когда проверка будет завершена.

Отмена проверки

После отправки проверки решения в вашу среду проверку можно отменить через панель состояния в верхней правой области страницы Решения.

Если вы отмените проверку, выполнение средства проверки решений прекращается, и состояние проверки решения возвращается к предыдущему состоянию.

Состояния средства проверки решений

При установке средства проверки решений в среду столбец Проверка решения становится доступной в списке Решения. В этом столбце отображаются состояния анализа решения для решения.

область Описание
Не запускалось Решение никогда не было проанализировано.
Выполняется Решение анализируется.
Не удалось завершить Анализ решения был запрошен, но анализ не удается завершить успешно.
Результаты на дата и время Завершен анализ решения и результаты доступны для загрузки.
Не удалось завершить. Результат на дата и время Самый последний запрос анализа не был успешно завершен. Последние успешные результаты можно загрузить.
Проверено Microsoft Это решение управляется Microsoft. Анализ решения не разрешен для этих решений.
Проверено издателем Это решение не управляется Microsoft. В настоящее время анализ решения недоступен для таких решений.

Просмотр отчета средства проверки решений

После завершения проверки решения можно просматривать отчет анализа на портале или можно загрузить отчет из веб-браузера. На портале имеется возможность можно сортировать результаты по параметру Проблема, Местоположение или Важность, а также просматривать подробные сведения о проблемах, обнаруженных в решении.

  1. В левой области выберите Решения. Если этого пункта нет на боковой панели, выберите …Еще, а затем выберите нужный пункт.

  2. Рядом с неуправляемым решением, где нужно просмотреть отчет средства проверки решения, выберите ..., укажите на Средство проверки решений, затем выберите Показать результаты.

  3. Выберите проблему для просмотра сведений о ней и возможных способов решения.

    Результаты и детализация сведений примера средства проверки решений

Результаты проверки решения также доступны для загрузки. ZIP-файл средства проверки решения загружается в папку, указанную веб-браузером. Загружаемый отчет представлен в формате Excel и содержит несколько визуализаций и столбцов, помогающих в идентификации влияния, типа и расположения каждой проблемы, обнаруженной в решении. Ссылка на детальную инструкцию о том, как устранить проблему, также предусмотрена.

  1. В левой области выберите Решения. Если этого пункта нет на боковой панели, выберите …Еще, а затем выберите нужный пункт.
  2. Рядом с неуправляемым решением, где нужно загрузить отчет средства проверки решения, выберите ..., укажите на Средство проверки решений, затем выберите Загрузить результаты.
  3. ZIP-файл средства проверки решения загружается в папку, указанную веб-браузером.

Здесь приведена сводка каждого столбца в отчете.

Столбец отчета Описание: Относится к компоненту
Выпуск Заголовок проблемы, выявленной в решении. Все
Категория Классификация выявленной проблемы, например Производительность, Удобство обслуживания, Использование, Поддержка, Дизайн, Безопасность, Специальные возможности или Готовность к обновлению. Все
Серьезность Представляет собой потенциальную воздействие определенной проблемы. Доступные типы неблагоприятного воздействия: Критический, Высокий, Средний, Низкий и Информационный. Все
Руководство Ссылка на статью с подробными сведениями о проблеме, ее влиянии и рекомендуемом действии. Все
Компонент Компонент решения, в котором была выявлена проблема. Все
Location Расположение и/или исходный файл компонента, в котором возникла выявленная проблема, например сборка или имя файла JavaScript. Все
Номер строки Ссылка на номер строки для проблемы в затронутом компоненте веб-ресурса. Веб-ресурсы
Модуль Имя модуля, в котором была обнаружена ошибка, выявленная в сборке. Настраиваемое действие бизнес-процесса
Тип Тип проблемы, выявленной в сборке. Настраиваемое действие бизнес-процесса
Элемент Участник проблемы, выявленной в сборке. Настраиваемое действие бизнес-процесса
Оператор Оператор или конфигурация кода, которая привела к проблеме. Все
Комментарии Подробные сведения о проблеме, содержащие шаги разрешения высокого уровня. Все

Локальное выполнение правил средства проверки решений

Вы можете выполнять правила средства проверки решений в своей среде разработки, чтобы обнаруживать проблемы гораздо быстрее по мере создания ресурсов решения. В настоящее время это поддерживается для веб-ресурсов (JavaScript и TypeScript). Для получения более подробной информации перейдите к пакету NPM @microsoft/eslint-plugin-power-apps.

Запуск средства проверки решений с помощью PowerShell

Модуль PowerShell доступен, который можно использовать, чтобы взаимодействовать непосредственно с сервисом. Модуль Microsoft.PowerApps.Checker.PowerShell можно использовать для анализа неуправляемых решений для сред Power Apps или для автоматизации и интеграции сервиса в каналы сборки и выпуска. Дополнительные сведения: Обзор Microsoft.PowerApps.Checker.PowerShell

Правила рекомендаций, используемые средством проверки решений

В следующей таблице приведены тип компонента, описание правила, серьезность и категория. Критические нарушения блокируются или приводят к выводу предупреждений, когда для них настроено принудительное применение средства проверки решений в управляемых средах. Дополнительная информация: Использование средства проверки решения в управляемых средах

Компонент решения Имя правила Описание правила Серьезность Категории
Подключаемый модуль или действие бизнес-процесса мета-удалить-дублирующую-регистрацию Избегайте дублирования регистрации подключаемых модулей Dataverse. Критическое Производительность
Подключаемый модуль или действие бизнес-процесса мета-избегать-регистрации-без-атрибутов Включите атрибуты фильтрации в регистрации подключаемых модулей Dataverse. Средняя Производительность
Подключаемый модуль или действие бизнес-процесса мета-избегать-регистрации-для-извлечения Соблюдайте осторожность с подключаемыми модулями Dataverse, зарегистрированными для сообщений Retrieve и RetrieveMultiple. Средняя Производительность
Подключаемый модуль или действие бизнес-процесса мета-удалить-неактивный Удалите неактивные конфигурации в Dataverse. Низкая Удобство поддержки
Подключаемый модуль или действие бизнес-процесса мета-избегать-событие-crm4 Не используйте этап регистрации подключаемого модуля Microsoft Dynamics CRM 4.0. Средняя Готовность к обновлению
Подключаемый модуль или действие бизнес-процесса мета-избегать-извлечения-нескольких-аннотаций Избегайте регистрации подключаемого модуля для RetrieveMultiple аннотации. Высокая Использование
Приложение на основе моделей meta-license-sales-entity-operations Решение содержит сущности с ограниченными сообщениями пакета SDK, для которых требуется действующая лицензия Dynamics 365. Низкая Лицензирование
Приложение на основе моделей meta-license-fieldservice-customcontrols Решение содержит настраиваемые элементы управления, для которых требуется действующая лицензия Dynamics 365 Field Service. Низкая Лицензирование
Приложение на основе моделей meta-license-fieldservice-entity-operations Решение содержит сущности с ограниченными сообщениями и операциями SDK, требующими действующей лицензии Dynamics 365 Field Service. Низкая Лицензирование
Веб-ресурсы use-async Взаимодействуйте с ресурсами HTTP и HTTPS асинхронно. Критическое Производительность
Веб-ресурсы avoid-modals Не используйте модальные диалоги. Высокая Возможность поддержки
Веб-ресурсы avoid-dom-form Высокая Возможность поддержки
Веб-ресурсы avoid-dom-form-event Высокая Возможность поддержки
Веб-ресурсы avoid-crm2011-service-odata Не используйте в качестве цели конечную точку Microsoft Dynamics CRM 2011 OData 2.0. Критическое Готовность к обновлению
Веб-ресурсы avoid-crm2011-service-soap Не используйте в качестве цели службы Microsoft Dynamics CRM 2011 SOAP. Критическое Готовность к обновлению
Веб-ресурсы avoid-loadtheme Не используйте API loadTheme Fluent v8. Низкая Возможность поддержки
Веб-ресурсы avoid-browser-specific-api Не используйте устаревшие API-интерфейсы Internet Explorer или подключаемые модули браузера. Критическое Готовность к обновлению
Веб-ресурсы avoid-unpub-api Высокая Возможность поддержки
Веб-ресурсы avoid-window-top Высокая Возможность поддержки
Веб-ресурсы avoid-2011-api Не используйте устаревшую объектную модель Microsoft Dynamics CRM 2011. Вместо этого следуйте документации на Веб-API Dataverse. Высокая Готовность к обновлению
Веб-ресурсы use-relative-uri Не используйте абсолютные URL-адреса конечной точки Dataverse. Средняя Удобство поддержки
Веб-ресурсы use-cached-webresource Средняя Производительность
Веб-ресурсы use-client-context Используйте контексты клиента. Средняя Готовность к обновлению
Веб-ресурсы use-navigation-api Используйте параметры API навигации. Средняя Готовность к обновлению
Веб-ресурсы use-offline Средняя Готовность к обновлению
Веб-ресурсы do-not-make-parent-assumption Высокая Проект
Веб-ресурсы use-org-setting Используйте параметры организации. Средняя Готовность к обновлению
Веб-ресурсы use-global-context Средняя Готовность к обновлению
Веб-ресурсы use-grid-api Используйте API-интерфейсы сетки. Средняя Готовность к обновлению
Веб-ресурсы use-utility-dialogs Средняя Использование
Веб-ресурсы avoid-isActivityType Замените метод Xrm.Utility.isActivityType новым методом Xrm.Utility.gettableMetadata и не используйте в правилах ленты. Средняя Готовность к обновлению
Веб-ресурсы мета-избегать-Silverlight Использование веб-ресурса Silverlight устарело. Средняя Готовность к обновлению
Веб-ресурсы удалите-отладочный-скрипт Не включайте отладочный скрипт в средах, отличных от среды разработки. Средняя Использование
Веб-ресурсы использование-строгого-режима При возможности используйте строгий режим. Средняя Использование
Веб-ресурсы используйте-операторы-строгого-равенства Используйте операторы строгого равенства. Средняя Использование
Веб-ресурсы избегайте-eval Не используйте функцию eval или ее функциональные эквиваленты. Критическое Группа безопасности
Веб-ресурсы avoid-with Не используйте оператор 'with'. Высокая Производительность
Веб-ресурсы предупреждение-удаления Не используйте функцию "alert" или ее функциональные эквиваленты. Средняя Использование
Веб-ресурсы консоль-удаления Избегайте использования методов на консоли. Средняя Использование
Веб-ресурсы avoid-ui-refreshribbon Избегайте использования refreshRibbon в форме onload и EnableRule. Критическое Производительность
Веб-ресурсы use-getsecurityroleprivilegesinfo Избегайте Avoid userSettings.securityRolePrivileges. Вместо этого используйте userSettings.getSecurityRolePrivilegesInfo. Высокая Производительность
Веб-ресурсы use-appsidepane-api Используйте Xrm.App.sidePanes.createPane вместо of Xrm.Panels.loadPanel. Средняя Готовность к обновлению
Веб-ресурсы web-sdl-no-cookies Файлы cookie HTTP — это старый механизм хранения на стороне клиента с присущими ему рисками и ограничениями. Используйте вместо них интернет-хранилище, IndexedDB или другие современные методы. Средняя Группа безопасности
Веб-ресурсы web-sdl-no-document-domain Операции записи в свойство document.domain во избежание обхода проверок на один источник. Использование доменов верхнего уровня, таких как azurewebsites.net, строго запрещено. Средняя Группа безопасности
Веб-ресурсы web-sdl-no-document-write Вызовы document.write или document.writeln предполагают непосредственное манипулирование моделью DOM без какой-либо очистки, и их следует избегать. Используйте вместо них document.createElement() или аналогичные методы. Средняя Группа безопасности
Веб-ресурсы web-sdl-no-html-method Прямые вызовы метода html() часто (например, в фреймворке jQuery) манипулируют DOM без какой-либо очистки, и их следует избегать. Используйте вместо них document.createElement() или аналогичные методы. Средняя Группа безопасности
Веб-ресурсы web-sdl-no-inner-html Присвоение значений свойствам innerHTML или outerHTML предполагает непосредственное манипулирование моделью DOM без какой-либо очистки, и их следует избегать. Используйте вместо них document.createElement() или аналогичные методы. Средняя Группа безопасности
Веб-ресурсы web-sdl-no-insecure-url Небезопасные протоколы, такие как HTTP или FTP, следует заменить их шифрованными аналогами (HTTPS, FTPS), чтобы избежать отправки потенциально конфиденциальных данных по ненадежным сетям в виде открытого текста. Средняя Группа безопасности
Веб-ресурсы web-sdl-no-msapp-exec-unsafe Вызовы MSApp.execUnsafeLocalFunction() обходят проверку на внедрение скрипта, и их следует избегать. Средняя Группа безопасности
Веб-ресурсы web-sdl-no-postmessage-star-origin Всегда указывайте конкретное происхождение цели, а не * при отправке данных в другие окна с помощью postMessage, чтобы избежать утечки данных за пределы границы доверия. Средняя Группа безопасности
Веб-ресурсы web-sdl-no-winjs-html-unsafe Вызовы WinJS.Utilities.setInnerHTMLUnsafe() и подобные методы не выполняют проверку входных данных, и их следует избегать. Используйте вместо этого WinJS.Utilities.setInnerHTML(). Средняя Группа безопасности
Canvas App проблемы-формул-приложений-высокой-важности Дополнительные сведения приведены в справочнике по формулам Power Apps. Критическое Проект
Canvas App проблемы-формул-приложений-средней-важности Дополнительные сведения приведены в справочных руководствах по формулам Power Apps. Средняя Проект
Canvas App проблемы-формул-приложений-низкой-важности Дополнительные сведения приведены в справочных руководствах по формулам Power Apps. Низкая Проект
Canvas App приложение-использует-отложенный вывод-ввода-текста Используйте отложенную загрузку в некоторых сценариях для повышения производительности. Средняя Производительность
Canvas App элементы-управления-приложение-уменьшенный-экран Ограничьте количество элементов управления приложения для повышения производительности. Средняя Производительность
Canvas App приложение-включает-доступный-ярлык Используйте явные ярлыки, чтобы улучшить доступность приложения. Средняя Специальные возможности
Canvas App приложение-включает-альтернативный-ввод Убедитесь, что все интерактивные элементы доступны для альтернативных способов входа. Средняя Специальные возможности
Canvas App приложение-избегайте-автозапуска Избегайте использования автозапуска для проигрывателей в приложении. Средняя Специальные возможности
Классический поток desktopflow-avoid-unsafe-password Управление паролями в потоке осуществляется небезопасным образом. Высокая Группа безопасности
Классический поток desktopflow-avoid-subflow-recursion Обнаружены рекурсивные вызовы между подпотоками, потенциально способные вызвать бесконечный цикл. Средняя Проект
Классический поток desktopflow-avoid-infinite-loop В потоке обнаружен бесконечный цикл, из-за которого он может выполняться бесконечно. Средняя Проект
Классический поток desktopflow-avoid-incomplete-if-branch Обнаружено неполное действие if (без содержимого или содержащее действия только в ветви else). Низкая Проект
Классический поток desktopflow-avoid-excessive-nested-ifs Вложенность инструкций if превышает пять уровней. Низкая Удобство поддержки
Классический поток desktopflow-avoid-empty-on-error-block Действие "Ошибка в блоке" пусто и не обрабатывает ошибки. Низкая Проект
Классический поток desktopflow-limit-argument-count Общее количество входных/выходных переменных превышает лимит в 25 переменных. Низкая Удобство поддержки
Классический поток desktopflow-input-argument-default-value У входных/выходных переменных нет значений по умолчанию. Низкая Удобство поддержки
Классический поток desktopflow-limit-variable-name-length Длина имени переменной превышает 25-символьный лимит. Низкая Удобство поддержки
Классический поток desktopflow-avoid-excessive-wait-actions Обнаружено злоупотребление действиями ожидания: более 10 действий ожидания, что потенциально приводит к возникновению узких мест. Низкая Производительность
Классический поток desktopflow-avoid-immense-wait-duration Обнаружено чрезмерное время ожидания, превышающее 600-секундный лимит для жестко закодированных действий ожидания. Низкая Производительность

См. также

Рекомендации и инструкции для Dataverse
Рекомендации и советы для управляемых моделью приложений
Общие проблемы и их разрешение для средства проверки решений