Правила анализа
Встроенные правила
Анализатор кода содержит встроенные правила для проверки проектов, процессов и отдельных элементов. Список правил приведён в таблице ниже.
| Код | Правило | Область | Действие | Примечание |
|---|---|---|---|---|
| MO-EX-001 | Пустой элемент Приложение Excel | Элемент | Предупреждение | Рекомендуется удалить пустые контейнеры “Приложение Excel” |
| MO-OU-001 | Пустой элемент Приложение Outlook | Элемент | Предупреждение | Рекомендуется удалить пустые контейнеры “Приложение Outlook” |
| PR-AN-001 | Продолжить при ошибке = true | Элемент | Предупреждение | Правило показывает элементы со свойством “Продолжить при ошибке”, для которых установлена галочка (true). Данное свойство рекомендуется использовать осторожно, т.к. все исключения в данном элементы будут проигнорированы |
| ST-AN-001 | Счетчик рабочих процессов проекта | Проект | Информация | Показывает количество файлов процессов (*.ltw) в проекте |
| ST-AN-002 | Счетчик элементов процессов проекта | Процесс | Информация | Показывает количество элементов в одном процессе |
| ST-PR-001 | Большое количество аргументов | Процесс | Ошибка | В процессе превышено количество допустимых аргументов. Правило имеет параметр “Счетчик аргументов”, по умолчанию установлено 20 |
| ST-PR-002 | Пустой блок Catch | Элемент | Ошибка | В элементе Try-Catch есть пустой блок Catch, следовательно, исключение из блока Try не обрабатывается |
| ST-PR-003 | Несколько уровней диаграмм | Процесс | Ошибка | Проверяет вложенность диаграмм согласно допустимому значению. Правило имеет параметр “Количество уровней”, по умолчанию 2 |
| ST-PR-004 | Пустой рабочий процесс | Процесс | Предупреждение | В проекте есть пустой процесс (файл *.ltw), который рекомендуется удалить для улучшения читаемости проекта |
| ST-PR-005 | Недоступные элементы | Процесс | Предупреждение | В процессе есть недоступные элементы. Например, закомментированные элементы или элементы, недостижимые диаграммой. Рекомендуется их удалить или добавить аннотацию для закомментированных элементов |
| ST-PR-006 | Вложенные блоки if | Процесс | Предупреждение | В процессе превышен максимально допустимый порог вложенности для элемента If-Else. Рекомендуется уменьшить вложенность блоков if до минимума, чтобы легче было поддерживать процесс. Правило имеет параметр “Порог”, значение по умолчанию - 3 |
| ST-PR-007 | Глубоко вложенные действия | Процесс | Предупреждение | В процессе есть вложенные контейнеры, правило распространяется на все контейнеры. Рекомендуется уменьшить вложенность, чтобы облегчить понимание и поддержку процесса Правило имеет параметр “Порог”, значение по умолчанию - 7 |
| ST-PR-008 | Неполный элемент if | Элемент | Предупреждение | Элемент If-Else не заполнен. Если у вас заполнен блок Else, но пуст Then, подумайте об изменении логики элемента If-Else |
| ST-PR-009 | Соглашение об именах переменных | Процесс | Предупреждение | Правило проверяет, соответствуют ли имена переменных соглашению о наименовании. Правило имеет параметр “Регулярное выражение” для указания шаблона |
| ST-PR-010 | Соглашение об именах аргументов | Процесс | Предупреждение | Правило проверяет, соответствуют ли имена аргументов соглашению о наименовании. Правило имеет параметры “Регулярное выражение” для аргументов всех направлений (In, Out, InOut) |
| ST-PR-011 | Превышена длина переменной | Процесс | Предупреждение | Превышена длина названия переменной, рекомендуется уменьшить название. Правило имеет параметр “Длина” со значением по умолчанию в 30 символов |
| ST-PR-012 | Превышена длина аргумента | Процесс | Предупреждение | Превышена длина названия аргументов, рекомендуется уменьшить название. Правило имеет параметр “Длина” со значением по умолчанию в 30 символов |
| ST-PR-013 | Переменные с префиксом DataTable | Процесс | Предупреждение | Переменная типа DataTable должна иметь префикс dt_ |
| ST-PR-014 | Аргументы с префиксом DataTable | Процесс | Предупреждение | Аргумент типа DataTable должен начинаться типом и продолжаться префиксом dt_ |
| ST-PR-015 | Значение аргумента по умолчанию | Процесс | Предупреждение | Используйте для аргументов значения по умолчанию для тестирования отдельных процессов |
| ST-PR-016 | Неиспользуемые переменные | Процесс | Предупреждение | В процессе есть неиспользуемые переменные, которые рекомендуется удалить |
| ST-PRJ-001 | Пакетные ограничения | Проект | Ошибка | Проект содержит пакеты, запрещенные в вашей организации. Правило имеет параметр “Запрещенные пакеты”, где можно через запятую перечислить названия таких пакетов |
| ST-PRJ-002 | Обязательные пакеты | Проект | Ошибка | В проекте отсутствуют пакеты, которые требуются вашей организации. Правило имеет параметр “Обязательные пакеты”, где можно через запятую перечислить названия таких пакетов |
Дополнительные правила
Дополнительные правила не входят в стандартный набор анализатора. Чтобы использовать их, установите пакет Primo.ProjectAnalyzer.Extended.
Пакет возможно установить следующими способами:
-
Скачать архив
Primo.ProjectAnalyzer.Extended.zipв папку установки Студии. Следует распаковать его в корень папки, чтобы библиотекаPrimo.ProjectAnalyzer.Extended.dllнаходилась на одном уровне сPrimo.Studio.exe. После чего перезапустить Студию, если она была запущена. -
Установить NuGet-пакет Primo.ProjectAnalyzer.Extended
При установке пакета, в анализатор добавится возможность сохранять изменения в процессе/проекте при запуске анализа, а также правила из таблицы ниже.
| Код | Правило | Область | Действие | Примечание |
|---|---|---|---|---|
| ST-PR-017 | Стандартное имя компонента | Элемент | Предупреждение | В процессе используется стандартное имя элемента. Лучше давать элементу уникальное имя (переименовать), указывающее на его назначение в процессе. Например, элемент Присвоение можно переименовать в Присвоение <имя переменной>. Уникальное название элемента поможет быстрее понять при отладке, в каком элементе произошла ошибка |
| ST-PR-018 | Бесконечный цикл | Элемент | Предупреждение | В процессе есть цикл, не имеющий конца. Например, правило сработает, если у вас есть “Цикл Do-While” с условием true, поскольку в этом случае может возникнуть ситуация, когда робот не сможет выйти из цикла |
| ST-PR-019 | Использование элементов Поколения 1 | Элемент | Предупреждение | В процессе есть элементы из группы “Поколение 1”. Лучше вместо них использовать новые элементы |
| ST-PR-020 | Проверка вложенностей “Open Browser”, “Attach browser”, “Attach application” | Элемент | Предупреждение | В процессе есть указанные контейнеры с вложенными в них контейнерами |
| ST-PR-021 | Фиксированные задержки в элементе | Элемент | Информация | В процессе есть элемент с задержками, которые указаны в общих свойствах “Пауза до (мс)”, Пауза после (мс)”. Рекомендуется проверить, действительно ли нужны эти паузы. Возможно вместо пауз стоит использовать элементы “Присутствие элемента”, “Исчезновение элемента” и т.д. |
| ST-PR-022 | Переменная исключения в блоке Try-Catch не задана | Элемент | Предупреждение | В элементе Try-Catch не указана переменная, хранящая исключение. В этом случае ее невозможно будет обработать |
| ST-PR-023 | Вложенные циклы | Процесс | Предупреждение | В процессе есть вложенные циклы, из-за которых его будет сложно понимать и поддерживать. Для Студии Pro проверяются циклы While, Do-While, ForEach, ForEach для DataTable, Повтор N раз. Для Студии Citizen – Повтор N раз, ForEach для DataTable. Правило имеет параметр “Порог”, в котором вы можете указать допустимое количество вложенностей для проверки (по умолчанию 3) |
| ST-PR-024 | Аннотация для главной последовательности не задана | Процесс | Предупреждение | В процессе отсутствует комментарий для разработчиков, который можно указать в аннотации корневой последовательности |
| ST-PR-025 | Загруженность проекта | Процесс | Предупреждение | Количество элементов в одном процессе превышает рекомендуемое число. Правило имеет параметры “Нормально” (значение по умолчанию 20), “Средне” (по умолчанию 50), “Критично” (по умолчанию 100). Значения в параметрах можно изменять |
| ST-PR-026 | Перегруженность проекта логами | Процесс | Предупреждение | В процессе слишком часто используется элемент “Запись в журнал”. Правило имеет параметр “Процент логов относительно остальных элементов”, по умолчанию установлено значение 50 |
| ST-PR-027 | Переменные с префиксом | Процесс | Предупреждение | Процесс содержит переменную без префикса. Правило имеет 5 шаблонов для переменных разных типов данных, в которых можно указывать рекомендуемые префиксы |
| ST-PR-028 | Повторяющиеся элементы в процессе | Процесс | Предупреждение | В процессе есть повторяющиеся части с одинаковой функциональностью, которую можно вынести в подпроцесс. Правило имеет параметр “Процент повторяющихся элементов”, по умолчанию 50 |
| ST-PR-029 | Вложенные контейнеры | Процесс | Предупреждение | В процессе есть вложенные контейнеры “Открыть браузер”, “Присоединиться к браузеру”, “Присоединиться к приложению”. Правило имеет параметр “Порог”, где можно указать допустимый порог вложенности. По умолчанию 2 |
| ST-PRJ-003 | Описание для проекта не указано | Проект | Предупреждение | При создании/редактировании проекта не указали комментарий в поле “Описание” |
| ST-PRJ-004 | Похожие процессы | Проект | Предупреждение | В проекте есть похожие процессы с одинаковой функциональностью, которую можно вынести в подпроцесс. Правило имеет параметр “Процент повторяющихся элементов”, по умолчанию 50 |
Настройка и применение правил
Экспорт настроек в файл
Настройки анализатора можно экспортировать в JSON-файл для повторного использования в Studio и при запуске анализа из командной строки. Это позволяет применять единый набор правил в команде.
Чтобы экспортировать настройки:
-
Откройте Студию и перейдите в меню
Анализ→Настройки. -
Настройте правила по своему усмотрению:
-
Включайте/отключайте нужные правила
-
Изменяйте параметры (пороговые значения, регулярные выражения и т.д.)
-
-
Нажмите кнопку
Экспорти укажите имя файла (например,rules.json).
Начиная со Studio 2.26.7.2 при экспорте сохраняются все правила, включая правила со значениями параметров по умолчанию. Экспортированный файл можно использовать для консольного анализа без изменений.
Формат файла правил
Настройки правил хранятся в JSON-файле, который можно получить через Анализ → Настройки → Экспорт. Для каждого правила используются следующие поля:
| Поле | Назначение |
|---|---|
Code | Код правила, например ST-PR-001 |
IsChecked | Признак включения правила: true – выполнять проверку, false – пропускать |
Action | Уровень сообщения. Значения: 1 – Info (Информация), 2 – Warning (Предупреждение), 3 – Error (Ошибка), 4 – Verbose (Журнал) |
Arguments | Параметры конкретного правила, например пороговые значения или регулярные выражения. Набор параметров зависит от правила |
Важно для консольного анализа: выполняются только правила, которые присутствуют в JSON-файле и включены (IsChecked: true). Если правила нет в файле, оно не выполняется, даже если оно входит во встроенный набор анализатора. Поэтому при подготовке конфигурации рекомендуем экспортировать правила из Studio, а не составлять неполный файл вручную.
Файл, экспортированный в Studio через Анализ → Настройки → Экспорт, подходит для консольного анализатора без преобразований. Подробности о запуске из командной строки и кодах завершения см. в разделе «Анализ проекта».
Импорт настроек из файла
Чтобы применить ранее экспортированные настройки:
-
Откройте проект в Студии.
-
Перейдите в меню
Анализ→Настройки. -
Нажмите кнопку
Импорти выберите JSON-файл с правилами. -
Запустите анализ через меню
Анализ→Анализировать проектилиАнализ→Анализировать процесс.
Просмотр результатов
Результаты анализа отображаются на вкладке Анализ в нижней части Студии. Результаты сгруппированы по правилам:
-
Заголовок группы – код и наименование правила
-
Количество нарушений – сколько раз правило было нарушено
-
Список файлов – в которых обнаружены нарушения
Группы с результатами можно разворачивать и сворачивать, чтобы детально
изучить каждое нарушение или скрыть неактуальные на данный момент
предупреждения.

Создание собственных правил
Если встроенных и дополнительных правил недостаточно, вы можете разработать собственные правила анализа кода.
Подробная инструкция по созданию пользовательских правил доступна в разделе Создание правил анализа кода.