Перейти к содержанию

Раздел 10. Выбор элементов исходного кода 1С для анализа

Довольно часто в решениях 1С используются родительские конфигурации 1С от поставщика основного решения. Например, поставка 1С:ERP, 1C:БСП и других типовых конфигураций.

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

По умолчанию анализатором выполняется полный (максимальный) анализ всех исходников конфигурации решения 1С, в т.ч. и исходников конфигурации поставщика.

Такой анализ имеет как достоинства, так и недостатки.

Плюсы:

  • полный анализ кода качества всей системы, которая используется пользователями
  • полный контроль над качеством системы
  • наиболее полный набор метрик качества системы

Минусы:

  • долгий анализ всех исходников
  • для типовых конфигураций от поставщика довольно часто формируется очень много замечаний, от критических до информационных
  • При большом количестве таких «вендорских» замечаний могут быть малозаметны замечания по коду, который был изменен командой разработки, а не вендором.

  • нельзя организовать проверяемый код по логическим блокам

  • все исходники находятся в огромном общем списке файлов и навигация по исходникам неудобна

Для более гибкого управления анализом в плагине «SonarQube 1C (BSL) Plugin» предусмотрены следующие возможности:

  • анализ только редактируемых объектов (избирательный анализ)
  • разбиение исходников на модули (анализ по подсистемам)

  • Суть избирательного анализа основывается на механизме «поддержки» в конфигурациях 1С. Файлы метаданных, которые находятся на полной поддержке поставщика, могут быть автоматически исключены из анализа.

В свойствах поддержки для таких модулей установлен статус "Не редактируется" и в Конфигураторе 1С они показываются как заблокированные (с «замочком»).

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

  1. При разбиении исходников на модули выделяются блоки связанных исходников по информации из состава подсистем конфигурации 1С.

Можно указать только часть подсистем для анализа. Например, только "свои"/"собственные" подсистемы 1С, а не подсистемы из родительской подсистемы.

В этом случае анализ также выполняется намного быстрее.

Также можно не ограничиваться каким-то набором подсистем при анализе, а выполнять полный анализ исходников, но исходники будут разделены по модулям на сервере SonarQube.

В итоге через интерфейс сервера можно получать метрики для конкретной подсистемы, изучать замечания только для этой подсистемы.

"Ограниченный анализ" – пропуск файлов на поддержке поставщика

Суть "ограниченного" анализа - возможность не выполнять анализ модулей и других файлов метаданных, которые находятся на полной поддержке поставщике.

Для использования этой возможности конфигурация 1С должна находиться на поддержке одной или нескольких родительских конфигураций.

В свойствах поддержки для таких модулей установлен статус "Не редактируется" и в Конфигураторе 1С они показываются как заблокированные ("подзамочные" объекты).

Анализируются только файлы, которые находятся в статусе "Редактируется с сохранением поддержки" или "Снят с поддержки", если есть родительские конфигурации поставщика.

image-20200812123900635

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

Если конфигураций поставщика нет, анализируются все файлы, также, как и при "максимальном" анализе.

Если родительских конфигураций поставщиков несколько, будут игнорироваться все исходники, заблокированные всеми родительскими конфигурациями.

Для подключения упоминаемой функциональности нужно включить параметр "sonar.bsl.skipVendorSupportedObjects" для проекта, анализируемого на сервере SonarQube,

  • или в свойствах проекта на сервере SonarQube
  • В окне проекта на сервере «Администрирование» – «Общие настройки» – «1C (BSL)» установить параметр «Skip to analyze files by vendor support»

  • или в файле настроек сканирования проекта "sonar-project.properties" добавить настройку "sonar.bsl.skipVendorSupportedObjects=true"

  • это рекомендуемый вариант, т.к. файл "sonar-project.properties" удобно поместить в репозиторий Git и управлять изменениями/историей данного файла.

Далее нужно выполнить анализ исходников и увидеть резкое уменьшение

  • количества строк исходного кода

  • количества замечаний на сервере SonarQube

  • падение вниз на диаграмме активности проекта

  • повышения метрик качества и т.п.

image-20200812124100283

Разбиение исходников на модули

При разбиении исходников на модули выделяются блоки связанных исходников по информации из состава подсистем конфигурации 1С.

Можно указать только часть подсистем для анализа. Например, только "свои"/"собственные" подсистемы 1С, а не подсистемы из родительской конфигурации поставщика.

В этом случае анализ также выполняется намного быстрее.

Также можно не ограничиваться каким-то набором подсистем при анализе, а выполнять полный анализ исходников, но исходники будут разделены по модулям на сервере SonarQube.

Тогда через интерфейс сервера можно получать метрики для конкретной подсистемы, изучать замечания только для этой подсистемы.

Для управления этой функциональностью служит инструмент «vanessa-sonar», поставляемый в составе «SonarQube 1C (BSL) Plugin».

Инструмент «vanessa-sonar» описан в следующем разделе – Инструмент «vanessa-sonar» – тонкая настройка анализа файлов.