Как проверять код на языке 1С с помощью BSL Language Server

13.01.23

Разработка - Рефакторинг и качество кода

Некоторые разработчики на платформе 1С не проверяют свой код ни на соответствие стандартам 1С, ни на самые распространённые ошибки кодирования. И если раньше они могли оправдываться отсутствием инструментов для этого, то с появлением BSL Language Server оправданий больше нет.

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

В этой статье я рассматриваю только ручную проверку, как минимум с этого стоит начать, а потом уже озадачиваться пайплайнами CI/CD с OneScript, Jenkins и SonarCube.

 

Что такое BSL Language Server

BSL Language Server - это инструмент для статического анализа кода на языке 1С.

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

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

Использовать приложение из командной строки для ручного анализа кода неудобно, поэтому на базе BSL Language Server появились и другие инструменты, с возможностью анализа кода на языке 1С из интерфейса приложений.

О некоторых подобных инструментах для ручного анализа кода были публикации и здесь, например:

Все они предполагают использование каких-то "кастомных" инструментов на базе BSL Language Server.

Но на мой взгляд, самым простым и доступным для использования вариантом является расширение Language 1C (BSL) для VS Code.

 

Использование расширения для VS Code

 

Установка VS Code

Поскольку расширение предназначено для редактора Visual Studio Code, предварительно нужно установить сам редактор:

  1. Скачать редактор по ссылке.
  2. Установить редактор в каталог своего пользователя - можно устанавливать без полномочий администратора компьютера.

 

Установка расширений

Нужно установить следующие расширения.

Ссылки приведены на страницы в маркетплейсе, сами расширения можно установить прямо из VS Code через панель расширений (значок  в панели слева или сочетание клавиш Ctrl + Shift + X, а дальше поиск по наименованию).

  • Language 1C (BSL) - расширение, добавляющее поддержку языка 1С и языка запросов 1С в VS Code, в его составе есть BSL Language Server.
    Не помню, нужно ли устанавливать для него OneScript, если что, можно скачать здесь.
  • Russian Language Pack for Visual Studio Code - включает поддержку русского языка в интерфейсе VS Code.
    Если хорошо ориентируетесь в английском интерфейсе, можно не устанавливать.
  • Необязательные, но желательные расширения для исправления орфографических ошибок:
    • Code Spell Checker - базовая проверка орфографии в редакторе.
      Обязателен в случае установки следующего расширения.
    • Russian - Code Spell Checker - проверка орфографии на русском языке.

 

Как проверять код

Для проверки кода 1С в редакторе VS Code с помощью плагина Language 1C (BSL) не обязательно сохранять файл с кодом.

Достаточно:

  1. Скопировать код из модуля в конфигураторе 1С.
  2. Создать новый (пустой) файл в VS Code (меню File - New Text File или сочетание клавиш Ctrl + N).
  3. Указать для файла язык 1C BSL (bsl).
    Сделать это можно двумя способами:
    • Выбрать язык в нижней панели справа:

       
    • С помощью сочетания клавиш Ctrl + K M (то есть нажать одновременно Ctrl и K, а после отдельно нажать M).
      При этом отобразится окно выбора языка из списка, нужно выбрать 1C BSL (bsl):

       
  4. Вставить скопированный ранее код на языке 1С в VS Code в окно файла с выбранным языком.

После этого должен запуститься BSL Language Server, информация о его запуске будет отображаться в нижней панели слева:

 

 

После запуска код будет автоматически проверен, а в панель проблем в нижней части VS Code будет выведена информация по найденным проблемам.

На скриншоте ниже пример проблем в одном нетиповом общем модуле в старой конфигурации:

  • 922 - общее количество проблем.
  • 34 - критические проблемы.
  • 475 - предупреждения.
  • 413 - небольшие проблемы.

 

 

При нажатии на строку описания проблемы автоматически выбирается соответствующая строка кода.

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

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

Чтобы изменения кода анализировались автоматически, например, при вставке нового кода в то же окно редактора, в файле настроек BSL Language Server должна быть установлена настройка "computeTrigger": "onType".

 

Зачем всё это нужно

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

  • научиться избегать подобных ошибок в будущем;
  • усвоить на практике некоторые особенности платформы 1С и стандарты разработки 1С;
  • сделать свой код качественнее и проще в поддержке и доработке.

Однако нужно быть готовым к тому, что не все проблемы удастся решить. Например, если приложение 1С работает в среде Windows, а в коде используется COM-объект, то просто так заменить его использование может быть проблематичным или невозможным. Но если не планируется миграция на Linux, то это и не нужно.

В подобных случаях можно игнорировать такие проблемы или отключить эти диагностики в том же файле настроек BSL Language Server.

OneDebugger - инструмент отладки кода в 1С:8.3

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


качество кода анализ статический bsl language server

См. также

Инструментарий разработчика Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

Расширяемый форматтер структуры модулей 1С. Умеет автоматически расставлять стандартные области и раскидывать по ним процедуры и функции модуля, оформлять стандартные комментарии к методам с помощью ИИ. Также умеет анализировать модуль - извлекать структуру вызовов, используемые поля и т.д. Реализован в виде расширения (.cfe). Можно использовать как платформу для обработки кода в своих задачах автоматизации разработки.

12.02.2025    4801    306    wonderboy    38    

108

Linux Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

В третьей статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, обсудим подходы к рефакторингу платформеннозависимого кода

11.02.2025    756    it-expertise    0    

2

Рефакторинг и качество кода Linux Программист Платформа 1С v8.3 Бесплатно (free)

Во второй статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, поговорим об особенностях анализа конфигурации 1С на наличие платформеннозависимого кода.

31.01.2025    1431    it-expertise    1    

7

Рефакторинг и качество кода Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

В практике нашей специальной команды по проектам сложных обновлений 1С прошел один из самых объёмных проектов: необходимо было обновить «1С: Бухгалтерия предприятия КОРП 3.0 + БИТ.ФИНАНС». Конфигурация содержала доработки практически по всем типам объектов метаданных. Длительность проекта составила 1 год и 2 месяца и обеспечила полной загрузкой 4 разработчиков на 6 месяцев.

31.01.2025    932    1c-izh    3    

5

Рефакторинг и качество кода Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

В последнее время термин «чистый код» стал очень популярным. Появились даже курсы по данной тематике. Так что же это такое?

16.09.2024    16879    markbraer    66    

43

Рефакторинг и качество кода Программист Бесплатно (free)

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

10.09.2024    1326    acces969    4    

6

Рефакторинг и качество кода Бесплатно (free)

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

28.08.2024    1821    Chernazem    3    

6

Рефакторинг и качество кода Программист Бесплатно (free)

SOLID – принципы проектирования программных структур (модулей). Акроним S.O.L.I.D. образован из первой буквы пяти принципов. Эти принципы делают код более гибким, упрощают разработку. Принято считать, что принципы SOLID применимы только в объектно-ориентированном программировании. Но их можно успешно использовать и в 1С. Расскажем о том, как разобраться в принципах SOLID и начать применять их при работе в 1С.

22.08.2024    12193    alex_sayan    41    

56
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SinglCOOLer 217 16.01.23 06:23 Сейчас в теме
Пробовали какой - нибудь БСП модуль там прогонять? Интересно какое он там количество проблем покажет )
2. AlekseiAdamov 186 16.01.23 07:11 Сейчас в теме
(1) Нет, пока особо не интересовался, т.к. стараюсь типовые модули не трогать:)
Основная учётная база на старой перепиленной конфигурации КА 1.1 - за время экплуатации там накопилось много доработок, и сравнивать тексты модулей с конфигурацией поставщика ради этого не хочется.
К тому же за годы развития БСП они могли многие проблемы в коде вычистить, в старых мрака наверняка хватает: начиная с использования ТекущаяДата() и КаталогВременныхФайлов() и заканчивая отсутствующими описаниями параметров в описаниях функций.
3. nixel 1441 16.01.23 08:00 Сейчас в теме
(1) бсп целиком автоматически прогоняется на нашем сервере SonarQube: https://sonar.openbsl.ru/dashboard?id=ssl_3_1

Источником для проверок является bsl ls.
Good_Smile; ktb; AlekseiAdamov; Revachol; kuntashov; dvsidelnikov; +6 Ответить
4. nixel 1441 16.01.23 08:27 Сейчас в теме
Спасибо за статью, но не могу не отметить, что BSL Language Server - это не инструмент для статического анализа кода. Это инструмент для поддержки языка 1с в текстовых редакторах, реализующий Language Server Protocol. Он даёт подсказки при наведении, переходы к определению процедур и функций, показывает граф вызовов, места использования процедур, позволяет умно сворачивать код 1с и код запросов, собирает метрики по коду (и часть их них показывает в виде линз сложности над началом процедур) и многое другое. И да, среди прочего имеет механизм диагностирования ошибок и вывода отчётов по ним в разных форматах.
SerVer1C; SagittariusA; cosmo2004; ktb; JohnyDeath; Cmapnep; AlekseiAdamov; Йожкин Кот; awk; Revachol; kuntashov; dvsidelnikov; +12 Ответить
5. AlekseiAdamov 186 16.01.23 10:44 Сейчас в теме
(4) Никита, большое спасибо за подробный ответ и за Вашу работу для сообщества!
7. sd_75 26.01.23 22:30 Сейчас в теме
(5)Так получается BSL Language Server не годится для проверки соответствия кода стандартам 1С?
8. AlekseiAdamov 186 27.01.23 18:41 Сейчас в теме
(7) А Вы список диагностик, видимо, даже не смотрели?
Вот пример со ссылкой на стандарт: https://1c-syntax.github.io/bsl-language-server/diagnostics/AssignAliasFieldsInQuery/
Часть стандартов, вероятно, трудно проверять программно.
Если Вам каких-то проверок не хватает и есть опыт разработки на Java - можете поучаствовать в проекте: https://1c-syntax.github.io/bsl-language-server/contributing/
6. kuzyara 2113 16.01.23 12:29 Сейчас в теме
Для контроля ошибок использую:
- для vscode плагин Language 1C (BSL)
- для конфигуратора Phoenix BSL для 1С
- для EDT плагин SilverLint(платный) или bslls-connector-for-edt(бесплатный)
- сонаркуб

Полный список диагностик https://1c-syntax.github.io/bsl-language-server/diagnostics/
12. Denis211990 20 12.12.24 11:14 Сейчас в теме
(6) Какие настройки плагина "bslls-connector-for-edt" в EDT позволяют запускать проверки?
9. roman72 395 12.02.23 10:16 Сейчас в теме
В BSL Language Server можно загрузить сразу все тексты модулей конфигурации для анализа?
Есть в BSL Language Server возможность самому написать обработчик строк модулей кода? (не с целью диагностики, а с целью последующей обработки полученных аналитических преобразований)
10. AlekseiAdamov 186 12.02.23 12:38 Сейчас в теме
(9) Выше nixel написал, что
Это инструмент для поддержки языка 1с в текстовых редакторах, реализующий Language Server Protocol.


Соответственно, как конкретный пользователь будет его запускать - это уже его личное дело в зависимости от задач.
Я лишь описал, как эти инструментом пользоваться с помощью VS Code без дополнительных сложностей.

Вы бы хоть на страницу проекта зашли и прочитали документацию.
Вот про запуск в режиме анализатора: https://1c-syntax.github.io/bsl-language-server/#analyze
Как конкретно Вы будете обрабатывать отчёт об ошибках - это Ваше дело.
Вы можете встроить его в пайплайн CI и обрабатывать его автоматически с помощью готовых инструментов типа SonarQube.
Вот на вскидку несколько статей на эту тему, достаточно вбить "BSL Language Server" в поиск по Инфостарту:
https://infostart.ru/public/1117485/
https://infostart.ru/1c/articles/1096770/
https://infostart.ru/1c/articles/1089670/
https://infostart.ru/1c/articles/1175305/

а с целью последующей обработки полученных аналитических преобразований

Что Вы под этим подразумеваете?
Даже если Вам чего-то не хватает в имеющихся возможностях BSL LS, Вы можете написать свой инструмент и проверять через него дополнительно или встроить его в тот же пайплайн.
11. Viktor_Ermakov 372 28.11.24 15:21 Сейчас в теме
И если раньше они могли оправдываться отсутствием инструментов для этого, то с появлением BSL Language Server оправданий больше нет.

А я вот заступлюсь, например за себя, оправдания есть, например не возможность установить VSC и сопутствующие плагины))) ( касается только текущего места работы)
Оставьте свое сообщение