Управляй качеством кода 1С с помощью SonarQube

30.10.20

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

Управляй техническом долгом проектов 1С с помощью SonarQube. В статье рассматривается пример применения SonarQube при разработке.

Оглавление

 

Введение

 

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

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

Что такое технический долг? Технический долг - это метафора программной инженерии, обозначающая накопленные в программном коде или архитектуре проблемы, связанные с пренебрежением к качеству при разработке программного обеспечения и вызывающие дополнительные затраты труда в будущем (Wikipedia).

Причины возникновения могут быть разными:

  • Недостаточная компетентность кадров;

  • Давление со стороны бизнеса;

  • Плохо спроектированная архитектура и отсутствие документации;

  • Отсутствие процессов review и refactoring;

  • Отсутствует тестирование;

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

 

Управление техническим долгом

 

Технический долг

Управлять техническим долгом можно следующим подходами:

  • Внешний аудит - привлечение сторонней компании. Затратно, на результат может влиять человеческий фактор.

  • Внутренний аудит - визуальная проверка кода (code review).  Опять же на результат влияет человеческий фактор и иногда необъективность.

  • Автоматизированная проверка кода - применяются статические анализаторы. В мире 1С используется конфигурация 1С: АПК.

Существует еще один подход, который я считаю наиболее эффективным - непрерывная проверка кода (continuous code inspection). Более подробно можно изучить подход в статье Управление техническим долгом - Концепция Continuous Inspection. Мой выбор пал на SonarQube.

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

На рынке существует как минимум два плагина для поддержки языка 1С в SonarQube.

В статье используется плагин SonarQube 1C (BSL) Community Plugin, т.к. он бесплатен. Плагин основан на проекте BSL Language Server - реализации протокола language server protocol для языка 1С: Предприятие 8 и OneScript. 

 

Быстрый старт

 

Быстрый старт

 

В рамках базового примера мы развернем SonarQube, подготовим рабочий каталог проекта 1С, загрузим результаты проверки кода на сервис. В примере будет использоваться операционная система Windows. Повторить то же самое для unix / macos систем возможно, но с небольшими изменениями. Все скрипты будем выполнять в консоли CMD или Powershell (не имеет значения).

Мною заранее был заготовлен шаблон рабочего окружения. Скачиваем его по ссылке.

 
 Кто используют Git

Клонируем на компьютер с помощью консоли:

git clone https://github.com/otymko/article-sonar-for-infostart.git

Визуально проект выглядит:

Подготовленный шаблон

В его состав входят:

  • project1c - рабочий каталог с проектом для анализа.

    • src - каталог для исходных кодов 1С

    • check.bat - скрипт запуска проверки кода

    • sonar-project.properties - файл настроек проекта для SonarQube

 

Первый этап

 

Развернем сервис SonarQube версии 7.9. Будем рассматривать простую установку, с использованием внутренней базы данных. По умолчанию SonarQube использует базу данных H2. В дальнейшем, если вы хотите использовать сервис постоянно, обновлять его  - нужно использовать внешнюю базу данных, например PostgreSQL.

 

Для SonarQube требуется Java 11+. Скачиваем OpenJDK 11 https://jdk.java.net/archive/ и распаковываем в каталог C:\openjdk11.

 

Далее скачиваем архив с SonarQube по ссылке https://www.sonarqube.org/downloads/. Распаковываем в каталог C:\sonarqube.

 

Теперь нужно выставить базовые настройки. Для этого отредактируем файл конфигурации C:\sonarqube\conf\sonar.properties:

sonar.web.javaOpts=-server -Xmx2g -Xms1g -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-Xmx6g -Xms4g -XX:+HeapDumpOnOutOfMemoryError 
sonar.search.javaOpts=-Xmx6g -Xms6g -XX:+HeapDumpOnOutOfMemoryError

 

Указываем путь к java 11 (если ранее не было установлено и прописано в path). В файле C:\sonarqube\conf\wrapper.conf отредактируем строку:

wrapper.java.command=java

Меняем на:

wrapper.java.command=C:\openjdk\jdk-11.0.2\bin\java

Сервис можно запустить вручную из консоли или создать службу windows. Для ручного запуска в консоли запускаем скрипт:

C:\sonarqube\bin\windows-x86-64\StartSonar.bat

Дожидаемся завершение развертки сервиса. В консоли должно быть выведено:

 

Более подробно развертку SonarQube на Windows можно изучить здесь.

Скачиваем и копируем плагин для SonarQube в каталог C:\sonarqube\extensions\downloads\:

 

 
 Кто хочет использовать Docker

 

SonarQube будет доступен по адресу http://localhost:9000. По умолчанию в SonarQube создается пользователь admin / admin  - логин / пароль соответственно.

Теперь на сервисе SonarQube нужно:

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

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

 

Генерация token (необязательно)

 

Переходим на настройки пользователя admin http://localhost:9000/account/security/, указываем название token и нажимаем Generate. Копируем полученный token, он вам понадобится в дальнейшем.

 

 

Добавление новых пользователей

 

Создаем новых пользователей. Для этого переходим на страницу http://localhost:9000/admin/users и нажимаем Create user. Обязательно заполняем все поля:

 

 

Если используется проект Git то создаем пользователей для каждого пользователя Git.

 

Интерфейс на Русском языке

 

Сменим язык интерфейса сервиса на Русский. Для этого переходим на страницу http://localhost:9000/admin/marketplace, находим плагин локализации Russian Pack и устанавливаем, используя кнопку Install.

 

Внимание: для смены языка интерфейса на русский нужно будет перезапустить сервис SonarQube. Для этого нажимаем на той же странице Restart Server:

 

Подготовка каталога проекта SonarQube

 

В каталоге project1c/src должны находиться исходные коды 1С конфигурации. Рассмотрим ручной вариант экспорта в этот каталог.

 

Ручная выгрузка через конфигуратор

 

Если Git проект не используется, делаем ручную выгрузку проекта через конфигуратор. Для этого в конфигураторе 1С нажимаем Конфигурация -> Выгрузить конфигурацию в файлы...

 

 

Указываем путь к каталогу project/src и нажимаем выполнить.

 

 

После завершения каталог исходных кодов должен выглядеть примерно так:

 

 

 
 Для тех кто использует Git

 Клонируем проект git в каталог project1c/src. Выполняем команду:

git clone url_your_project_1c /path/to/project1c/src

Каталог должен выглядеть примерно вот так:

 

 

Второй этап

 

Для второго этапа потребуется консольное приложение для запуска анализа проекта sonar scanner. Скачиваем сканер со страницы https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/. В нашем случае нужна версия для Windows x64:

 

 

Скачиваем по ссылке https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744-windows.zip. После распаковки архива копируем полный путь к скрипту sonar-scanner.bat. Скрипт расположен в каталог bin.

 

 

Теперь нужно изменить скрипт запуска анализа проекта. Редактируем файл project1c/check.bat.

 

 

Заменяем в нем путь к sonar-scanner и значение token (необязательно).

Без токена:

../sonar-scanner-cli-4.0.0.1744-windows/sonar-scanner-4.0.0.1744-windows/bin/sonar-scanner.bat

 С токеном:

../sonar-scanner-cli-4.0.0.1744-windows/sonar-scanner-4.0.0.1744-windows/bin/sonar-scanner.bat -D"sonar.login=1952877e4d61d69c766eb8d9ca1d39ac48a4254f"

Последнее, что потребуется  - это проверка настроек проекта SonarQube. Откроем файл настроек project1c/sonar-project.properties.

 

 

В этом конфигурационном файле меняем, если нужно:

  • sonar.projectKey - ключ проекта

  • sonar.projectName - имя проекта

  • sonar.projectVersion - версию проекта

 
 Для тех, кто использует проект Git

Нужно раскоментировать строки:

  • sonar.projectBaseDir=src

  • sonar.scm.enabled=true

  • sonar.scm.provider=git

Изменить строку:

sonar.sources=src на sonar.sources=./

 

P.S. в конфигурационном файле sonar нельзя указывать значения параметров в кириллице.

Неправильно:

sonar.projectName=МойЛучшийПроект

Правильно:

sonar.projectName=\u041C\u043E\u0439\u041B\u0443\u0447\u0448\u0438\u0439\u041F\u0440\u043E\u0435\u043A\u0442

Для кодировки кириллицы используем сервис https://www.online-toolz.com/tools/text-unicode-entities-convertor.php. После кодировки нужно будет заменить символы % на \.

 

Последний этап

 

Запускаем анализ проекта через скрипт project1c/check.bat. Дожидаемся сообщения в консоли:

 

 

Проблемные ситуации

 

У вас может не хватить памяти, выделенной под JAVA во время запуска sonar-scanner. В логах появится ошибка

ERROR: Error during SonarQube Scanner execution
ERROR: null
ERROR: Caused by: GC overhead limit exceeded

 

 

Проблему можно решить с помощью Java Memory Settings. Нужно указать в переменной среды или в скрипте check.bat значение SONAR_SCANNER_OPTS. Например, для выделения 4 ГБ оперативной памяти указываем:

set SONAR_SCANNER_OPTS=-Xmx4g

 

Анализ проекта

 

Переходим на главную страницу сервиса sonarqube http://localhost:9000/projects. При первом анализе нужно дождаться его завершения на сервисе (выполняется фоновое задание загрузки результатов анализа).

 

 

Фоновое задание:

 

 

После завершения загрузки страница списка проектов будет выглядеть:

 

 

Переходим в проект MyConf. На странице метрик проекта видим:

  • Количество ошибок

  • Количество уязвимостей

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

  • Количество дефектов кода (code smells)

  • Процент и количество дублирующегося кода.

 

 

На закладке Замечания увидим ошибки и дефекты кода. Используя фильтры на панели слева, можно отфильтровать замечания, например, по правилам проверок:

 

 

Отфильтровываем замечания. Получаем:

 

 

Переходим в первое замечание:

 

 

Для тех, кто использует проект Git, будут доступны фильтры по авторам (если заведены пользователи на сервисе, то они будут отображаться сразу в замечании).

 

 

Возвращаемся на страницу метрик проекта. Переходим в дублирование кода и выбираем любое дублирование:

 

 

Список дублирования в коде:

 

 

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

 

 

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

 

 

В области New code, выводится информация  о новых результатах проверок. На примере Дефектов кода можно увидеть динамику изменения показателей:

 

 

График изменений:

 

 

P.S. Хотите больше диагностик кода? Вы можете предложить, реализовать их в проекте https://github.com/1c-syntax/bsl-language-server.

 

Расширенный пример

 

Компания 1C-ИжТиСи разработала конфигурацию 1С: Автоматизированная проверка конфигураций (https://v8.1c.ru/acc/). 

 

Решение позволяет проверять конфигурации в автоматическом режиме на соответствие стандартам разработки 1С. Конфигурация имеет большое количество проверок кода 1С, но, к сожалению, отсутствует функционал анализа изменения качества кода. Используя проект acc-export из 1С: АПК, можно выгрузить результат анализа кода в SonarQube.

 

В рамках этой главы нужно установить:

Конфигурацию 1С: АПК нужно развернуть на компьютере, создать новый проект и выполнить первоначальную проверку. Более подробно можно почитать в статье Автоматизированная проверка конфигураций… и пара слов о стандартах разработки.

 

После установки OneScript потребуется установить библиотеку vanessa-runner (https://github.com/oscript-library/vanessa-runner). Выполняем в консоли:

opm install vanessa-runner

 

Скачиваем обработку экспорта  https://github.com/otymko/acc-export/releases/download/1.1.0/acc-export.epf в каталог project1c.

 

Подготовка каталога проекта

 

В каталоге project1c создадим acc.properties - файл настроек экспорта из АПК.

 

 

  • acc.projectKey - наименование конфигурации в АПК. 

  • acc.catalog - каталог проекта (не к src) 

  • acc.sources - путь / каталог исходных кодов, например, src. 

  • acc.check - запуск проверки конфигурации. Настройки будут взяты с параметров запуска по расписанию. 

  • acc.format - формат экспорта из АПК (reportjson или genericissue). По умолчанию reportjson. Можно не указывать. 

  • acc.titleError - представление вывода ошибки при экспорте. Может принимать значения: code (только код ошибки), name (только наименование ошибки), codeName (код и наименование ошибки). По умолчанию codeName.

 

Отредактируем файл sonar-project.properties и добавим настройку:

sonar.bsl.languageserver.reportPaths=acc-json.json

Создадим скрипт acc.bat запуска экспорта проверок АПК.

 

 

@chcp 65001 
@set RUNNER_IBNAME=/FC:\Sonar\acc
@set RUNNER_DBUSER=Администратор
@call runner run --command "acc.propertiesPaths=./acc.properties;" --execute "./acc-export.epf" --ordinaryapp=1

 

Выгрузка результат

 

Запускаем скрипт acc.bat, затем check.bat и дожидаемся завершения:

 

 

Когда SonarQube обработает результат проверки, нам будут доступны новые данные для аналитики.

 

 

На закладке замечания список правил проверки расширился:

 

 

В итоге, мы имеем загруженные результаты проверки 1С: АПК в SonarQube для дальнейшей аналитики.

 

Подведем итоги

 

В результате проверки кода и загрузки результатов в SonarQube, мы получаем метрики, наглядно показывающие текущее состояние качества проекта.

Что теперь с этим делать?

  • Исправлять критические ошибки, уязвимости.
  • Исправлять дефекты, дублирование кода, если реализуются попутные задачи.
  • Уменьшать количество дублирующего кода.
  • Установить пороги качества.

 

Дальнейшее развитие темы

 

  • Автоматический запуск проверки качества кода. Автоматизируем запуск проверки качества, используя, например, Jenkins или GitLabCI. 
  • Исключение из проверки объектов конфигурации, которые находятся на поддержке.  В этом может помочь проект edt-export-bugs. Также с его помощью можно автоматизировать получение проверок из EDT. Более подробно можно почитать здесь (https://github.com/Stepa86/edt-export-bugs).
  • Рассылка результатов проверки кода ответственным / виновникам замечаний.

 

Благодарности

 

Хочу выразить огромную благодарность за инструменты и помощь при создании статьи:

Мой жене за чтение технической статьи. А так же читателям статьи, кто дотянул до конца =)

 

Ссылки

 

Анализ кода Sonarqube Технический долг АПК автоматизированная проверка конфигураций

См. также

Когда понадобился новый оператор

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

Когда понадобился новый оператор, но его нет в синтакс-помощнике, что делать?

18.03.2024    1137    ZhokhovM    2    

4

Когда разработчик платформы не добавил проверку препроцессоров

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

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

18.03.2024    2669    ZhokhovM    4    

8

Реструктуризация - бесконечная история

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

При разработке программ требуемый функционал ставят на первое место, но есть еще и архитектура программы. На горизонте 5-10 лет она становится важнее функционала, который должен работать при масштабировании и росте данных. Реструктуризация 5 терабайтной базы 1С 8.2 в формат 1С 8.3, складывает весь пазл архитектурных просчетов, которые сделали ради функционала. Как это исправить? - для разработки правильной архитектуры, нужно всего лишь сместить фокус с функционала и подумать о «вечном».

29.09.2023    1906    1CUnlimited    15    

22

Чистый код. Мой взгляд на жизнь в макаронных джунглях. Часть 2

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

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

27.09.2023    6962    Lemmonbri    136    

36

Чистый код. Мой взгляд на жизнь в макаронных джунглях. Часть 1

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

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

19.09.2023    4342    Lemmonbri    16    

31

5 подходов при доработке конфигурации 1С, чтобы в будущем не было мучительно больно её обновлять

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

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

10.08.2023    9580    0    1c-izhtc    37    

21

Задача на ошибки и неоптимальности при проведении приходной накладной

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

Задачу эту дают на собеседованиях, видимо, те франчи, которые не в состоянии оценить человека по резюме и в ходе беседы. По идее задачи, подобные этой, должны давать начинающим студентам. Но дают всем подряд. Итак: мои 5 копеек. Критика приветствуется.

11.07.2023    2214    magic1s    32    

11
Отзывы
34. litonchik 08.07.19 10:36 Сейчас в теме
Спасибо за статью!
Читая комментарии под статьями такого рода, иной раз, поражаюсь токсичности комьюнити.
maksa2005; zabaluev; month-1c; chemezov; kalyuzhnyyp; m_aster; SeiOkami; Shmell; zuxelzz; GreenDragon; tsmult; YPermitin; Kinestetik; mivari; vlad.frost; t.v.s.; disa_da; Kosstikk; seperblunt2; ComConnector; ltfriend; romankoav; Stepa86; dmpas; user774630; VitaminC; olegtymko; CyberCerber; nixel; tsukanov; user764477; Labotamy; +32 Ответить
14. vlad.frost 08.07.19 08:08 Сейчас в теме
(3) ну, например, чтобы:
- не настраивать ответственных по объектам метаданных в АПК: SonarQube сам определит ответственного за косячный код по git blame;
- разделить ошибки на legacy и привнесённые в новом коде, старый код не трогать, а сосредоточиться на исправлении новых косяков;
- видеть ошибки АПК в контексте окружающего кода, а не только модуль и номер строки;
- ускорить отображение отчётов;
- получать постоянные ссылки на ошибки, чтобы взять их на контроль и добиться исправления.
Student1C; shakhman; CyberCerber; Krio2; GreenDragon; Kinestetik; troubleshooter; nvv1970; mrXoxot; Kosstikk; JohnyDeath; olegtymko; nixel; Stepa86; +14 Ответить
5. Vladimir Litvinenko 07.07.19 23:46 Сейчас в теме
(4) Вы можете делать коммиты, связанные с обновлением типовых конфигураций (обновлением БСП или переходом на новую версию типовой конфигурации) от имени специально выделенного пользователя. Для этого достаточно перед коммитом указать в качестве e-mail автора служебный или свой второй e-mail. Тогда изменения типовой конфигурации привяжутся не к тем пользователям, под которым ведется регулярная разработка.

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

Если вы пользуетесь АПК, то ситуация будет аналогична: если Вы дорабатываете типовой модуль и хотите его проверить после доработки, то в результаты его проверки попадет и типовой код и Ваш. АПК позволяет фильтровать объекты конфигурации, подлежащие проверке, а не части модулей. При использовании возможностей git как раз появляется возможность проверять только внесенные в модуль изменения в привязке к авторам.
karomag; Drivingblind; Артано; CyberCerber; tsmult; Kinestetik; Lucechiaro; troubleshooter; Stepa86; olegtymko; acanta; +11 1 Ответить
13. olegtymko 889 08.07.19 05:55 Сейчас в теме
(12) На скриншоте тестовый проект, где ~800 ошибок, был проверен только в рамках статьи.

Во вложении метрики самописного проекта не на БСП, над который сейчас ведутся работы по улучшению качества кода (этот же скриншот есть в статье).
Если смотреть тренд количества ошибок, дублирования кода - то их количество со временем уменьшается.
Прикрепленные файлы:
DrAku1a; GreenDragon; Kinestetik; acanta; kuzyara; +5 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
68. nixel 1403 09.07.19 08:10 Сейчас в теме
(66) добрый день.

Дайте чуть больше логов, пожалуйста.
Scorpion4eg; +1 Ответить
69. Stepa86 1521 09.07.19 08:15 Сейчас в теме
70. Scorpion4eg 424 09.07.19 08:16 Сейчас в теме
(69) И можно было на ты) Чай не чужие люди.
72. Labotamy 09.07.19 08:30 Сейчас в теме
(70)Ой, не признал с мобилы =)
76. olegtymko 889 09.07.19 09:01 Сейчас в теме
(70)
не чужие люди.

Конспирация
125. krasilnikovmihail 23.07.19 10:26 Сейчас в теме
(66) Такая же проблема. Пока не поборол
126. пользователь 23.07.19 10:56
Сообщение было скрыто модератором.
...
127. olegtymko 889 23.07.19 12:05 Сейчас в теме
128. krasilnikovmihail 23.07.19 12:05 Сейчас в теме
(66)
Start pointer

Пока решил проблему изменением формата:
1. в файле acc.properties изменить:
acc.format=genericissue
2. в файле sonar-project.properties изменить:
sonar.externalIssuesReportPaths=acc-generic-issue.json

Загрузилось без ошибок
78. troubleshooter 27 09.07.19 09:17 Сейчас в теме
Отличная статья! Спасибо!
79. Indgo 338 09.07.19 10:16 Сейчас в теме
Эх еще бы ТЗ сама писала ;-)
80. olegtymko 889 09.07.19 10:44 Сейчас в теме
(79) ТЗ на исправление недочетов?
81. Labotamy 09.07.19 10:44 Сейчас в теме
(80) ТЗ на внесение новых ошибок в код.
82. olegtymko 889 09.07.19 10:45 Сейчас в теме
(81) можно написать плагин
83. Indgo 338 09.07.19 10:46 Сейчас в теме
(82) Плагин который пишет ТЗ на Плагин.
86. gubanoff 63 09.07.19 13:01 Сейчас в теме
(0) известна ли разница между бесплатным плагином и разработкой от Серебряной пули?
88. olegtymko 889 09.07.19 15:09 Сейчас в теме
(86) Сравнения нет. Можно почитать о возможностях плагинов:
* Комьюнити плагин - https://github.com/1c-syntax/sonar-bsl-plugin-community и проверки в https://github.com/1c-syntax/bsl-language-server
* от Серебряной пули - https://github.com/silverbulleters/sonar-1c-bsl-public и https://silverbulleters.org/sonarqube
114. пользователь 18.07.19 14:07
Сообщение было скрыто модератором.
...
115. artbear 1448 18.07.19 14:12 Сейчас в теме
Для интересующихся разницей между
- SonarQube 1C (BSL) Plugin (https://silverbulleters.org/sonarqube) - платный вариант от Серебряной Пули
- SonarQube 1C (BSL) Community Plugin (https://github.com/1c-syntax/sonar-bsl-plugin-community)

я в (114) коротко написал отличия
116. artbear 1448 18.07.19 14:24 Сейчас в теме
(114) Еще единая документация, где описаны многие нюансы установки/использования СонарКуб, в т.ч. первичный запуск, настройка описания интеграций, настройка для CI
за 70 страниц текста :)
119. artbear 1448 19.07.19 15:16 Сейчас в теме
Обалдеть, кто-то удалил мой пост (114)

Для интересующихся разницей между
- SonarQube 1C (BSL) Plugin (https://silverbulleters.org/sonarqube) - платный вариант от Серебряной Пули
- SonarQube 1C (BSL) Community Plugin (https://github.com/1c-syntax/sonar-bsl-plugin-community)

я в (114) коротко написал отличия
121. olegtymko 889 19.07.19 17:35 Сейчас в теме
(119) Только модераторы форума могут
220. check2 354 12.04.20 22:46 Сейчас в теме
(119) Судя по ошибки - его не удалили, а скрыли. Артур, а можно куда то в ЛС что ли это отличие... Что бы понимание было.
Спасибо!
223. Labotamy 12.04.20 23:31 Сейчас в теме
(220) я кидал абузу за агресивную рекламу коммерческого продукта сторонней организации.
228. olegtymko 889 15.04.20 07:57 Сейчас в теме
(220) Есть идея о написании сравнения платного и опенсоурс проекта по анализу исходного кода 1С (плюсы и минусы каждого из решений). Скорее всего в ближайшее время это сравнение появится.
94. mRconik 10.07.19 07:30 Сейчас в теме
1С: Автоматическое тестирование конфигураций

Поправьте на 1С:Автоматизированная проверка конфигураций
95. olegtymko 889 10.07.19 07:53 Сейчас в теме
96. demon_infernal 40 10.07.19 11:54 Сейчас в теме
Хорошая статья, подробная.
В Сонаркубе меня смущает то, что путь файла показывается не полностью (на скрине обвел красным).
Из имени файла понятно, что это модуль какой то формы. А какой? Это можно было бы узнать по полному пути файла, но я не нашел способа его посмотреть.
Прикрепленные файлы:
97. olegtymko 889 10.07.19 12:01 Сейчас в теме
(96) Да, с этим есть проблемы. По хорошему бы отображать второй путь как в конфигурации 1С.
98. Labotamy 10.07.19 14:10 Сейчас в теме
(96) Под это был плагин для хрома от Валерия Максимова, но по моему он не работает в 7.9 =( Тоже страдаю от этого. Толи в 7.7, толи в 7.8 была кнопка справа вверху в ней было видно. Или сонаровцы починят обратно, или надежда на комюнити.
231. Labotamy 15.04.20 09:17 Сейчас в теме
99. toypaul 63 11.07.19 14:44 Сейчас в теме
Когда читаю статьи про все эти новые технологии, то после прочтения пары абзацев начинает мутить. Можно сказать прям укачивает как на корабле. Все эти - "скачайте там", запустите такой скриптик, тут настройка, там настройка. 90% всякой мути и 10% смысла. Это не претензия автору. Сегодня я хотя бы до смысла дошел.
100. Labotamy 11.07.19 19:03 Сейчас в теме
(99)Может в докладе Никиты Грызлова найдете что то ещё. https://infostart.ru/public/622617/
105. kuzyara 1900 12.07.19 07:30 Сейчас в теме
(99)
- юнит-тестирование
- системы контроля версий
- автоматизированные сборки
- код-ревью
- статические анализаторы кода

Добро пожаловать в devops )
129. artbear 1448 23.07.19 12:19 Сейчас в теме
(99) Ты же вроде давно в ИТ и 1С :) неужели не привык?
130. toypaul 63 23.07.19 13:11 Сейчас в теме
(129) меня эти админские штучки никогда не интересовали. у меня математические и визуальные пристрастия :)
106. user1015233 12.07.19 12:46 Сейчас в теме
На данный момент, как я понял, плагин содержит 35 правил. Планируется ли включить все проверки стандартов 1С? Сейчас, получается, необходимо использовать выгрузку из АПК.
107. olegtymko 889 12.07.19 13:14 Сейчас в теме
(106) развитие плагина ведётся, вернее развитие bsl language server. Со временем проверки появятся. Можно предложить здесь https://github.com/1c-syntax/bsl-language-server/issues, а так же принять участие в разработке.
108. Labotamy 12.07.19 13:23 Сейчас в теме
(106) Разумеется планируется. И не только стандартов 1С. Проект OpenSourse идеи и реализации приветствуются. Проверки реализуются не в самом плагине к SonarQube, а в bsl-language-server(см. ссылку в сообщении Олега), в котором проверки это только одна функциональность.
olegtymko; +1 Ответить
109. Unknown31 14.07.19 21:11 Сейчас в теме
Для пробы выгружал демо конфигурация для АПК - обработалась без проблем.
Попробовал демо БСП 3.0.2.314.
INFO: EXECUTION SUCCESS

openjdk-11.0.3-1
sonarqube-7.9.1
sonar-bsl-plugin-community-0.6.0
sonar-scanner-4.0.0.1744-windows


Но фоновое задание данные не обрабатывает, в статусе отображается ошибка:
Подробности Об Ошибке
110. olegtymko 889 15.07.19 03:17 Сейчас в теме
(109) Хватает ли места на диске? Сколько было выставлено памяти sonarqube?
117. vanoono 19.07.19 11:12 Сейчас в теме
Добрый день!
Есть инструкция под linux ? Может есть чат где-нибудь на github?
Второй день бьюсь с тем чтобы просто поднять сервис сонара.
Суть проблемы заключается в том, что после подстановки параметров на те, которые указаны у вас, он перестает стартовать.
В варианте из "коробки" запустить удалось, но дальше не хочет...
118. Labotamy 19.07.19 13:23 Сейчас в теме
(117)В репозитории есть бейджик telegram chat
120. olegtymko 889 19.07.19 17:34 Сейчас в теме
(117) У меня продакшэн крутиться на linux. Пишите в чат. Подскажем в чем проблема)
131. пользователь 23.07.19 19:51
Сообщение было скрыто модератором.
...
132. Diversus 2306 23.07.19 21:55 Сейчас в теме
Замечания по выгрузке из АПК (Windows Server):
Обработка не работает и просто выкидывала. После чего я решил посмотреть код и по этому поводу замечания:

1) Лучше указать полный путь к файлам в acc.properties
acc.projectKey=UIT
acc.catalog=C:\sonar\project1c
acc.sources=C:\sonar\project1c\src
acc.check=true
acc.format=reportjson
acc.titleError=codeName

Иначе обработка будет лепить вместо "\" вот так "/" на Windows.
2) Важно! projectKey - это наименование конфигурации в АПК. Об этом тоже стоит сказать.
check2; olegtymko; +2 Ответить
133. olegtymko 889 24.07.19 03:03 Сейчас в теме
(132) Спасибо за замечания!)
От себя хочу еще добавить, что скрипт acc.bat в статье запускается из каталога project1c и поэтому можно не указывать абсолютные пути.
P.S.
п. 2 - в статье так и написано: "projectKey - это наименование конфигурации в АПК". Можно конечно скриншотом дополнить.
134. Diversus 2306 24.07.19 09:10 Сейчас в теме
(133) Я бы не писал если бы все было хорошо :)
Проблема в том, когда в обработке стоит относительный путь, то при построении полного пути получается вот такой путь: C:/sonar/project1c\src и естественно обработка не выгружает ничего из АПК.
135. olegtymko 889 24.07.19 09:50 Сейчас в теме
(134) Странно. Я посмотрю на досуге) Версия win какая?
136. Diversus 2306 24.07.19 09:51 Сейчас в теме
137. olegtymko 889 24.07.19 09:53 Сейчас в теме
138. Stepa86 1521 24.07.19 10:21 Сейчас в теме
(134) А какую версию брал? Из релизов? Я с путями достаточно много упражнялся, там в деве версия лежит
139. Diversus 2306 24.07.19 10:38 Сейчас в теме
(138) Брал из репозитария. Вчера вечером.
140. Stepa86 1521 24.07.19 10:41 Сейчас в теме
(139) Вот в этой возможно исправлена ошибка с путями https://github.com/otymko/acc-export/blob/develop/acc-export.epf
141. Diversus 2306 26.07.19 13:00 Сейчас в теме
Вообще, возникло странное ощущение от SonarQube.
С одной стороны все круто, с другой нет кучи того, что есть в том же АПК.
И наоборот в АПК нет того, что есть в сонаре.

Кстати, написал в ИжТиСи с просьбой прокомментировать почему в стандартах 1С есть ограничение на 120 символов в строке, а в АПК такой проверки нет. Они ответили и оказалось, что эта проверка закомментирована. Чтобы ее включить необходимо:
Для включения проверки на длину строки Вам необходимо раскомментировать алгоритм в правиле "Перенос выражений":

Настройка -> Правила -> в списке найдите правило "Перенос выражений".

В поле "Алгоритм" раскомментируйте стр.57-65.


Использовать сразу два продукта нелогично и не совсем верно, поэтому для себя приняли решение остаться на АПК и добавить туда те проверки, которые есть в SonarQube. Интересно никто таким не заморачивался?
olegtymko; acanta; +2 Ответить
142. olegtymko 889 26.07.19 13:25 Сейчас в теме
(141) чего по вашему мнению не хватает sonarqube по сравнению с АПК? Ну кроме количества диагностик конечно.
143. Diversus 2306 26.07.19 14:05 Сейчас в теме
(142) Именно количества диагностических проверок и не хватает. Во всем остальном понравилось все кроме краткого пути и не понятно в каком файле искать.
Но если выбирать между АПК и сонаром, то на данный момент это пока АПК. Возможно в будущем что-то изменится.

Кстати, а не думали о том, что бы как-то адаптировать использование проверок АПК и перебросить их в сонар каким-то автоматическим способом (например, используя oscript) запускать оттуда?
Т.е. грубо говоря, сделать импорт проверок.
144. nixel 1403 26.07.19 14:24 Сейчас в теме
(143) так в статье как раз же описан способ импорта результата анализа АПК в сонар...
145. Diversus 2306 26.07.19 14:27 Сейчас в теме
(144) Я это понял и сделал так как написано. Речь о другом.
Зачем использовать два продукта, в принципе?
Если бы в сонаре были импортированы все проверки из АПК, то необходимости в АПК вообще бы не было.
146. nixel 1403 26.07.19 14:29 Сейчас в теме
(145) ну, Москва не сразу строилась. АПК разрабатывают за зарплату, BSL LS - под пиво вечерком.

Если что, вы можете выключить встроенный анализатор BSL LS в сонаре и смотреть там исключительно АПКшные проверки.

Если речь про описания правил, то их импорт тоже в разработке.
147. Diversus 2306 26.07.19 14:32 Сейчас в теме
(146) Под пивко, да еще и в пятницу ;)
Не мужики, вы молодцы. Смотришь на таких энтузиастов и думаешь, вот откуда у них столько свободного времени на разработку подобных инструментов?
С другой стороны интересно почему сама 1С не финансирует подобные работы. Очень достойно и перспективно ведь.
olegtymko; nixel; +2 Ответить
148. olegtymko 889 26.07.19 14:54 Сейчас в теме
(147) Сейчас планируется сделать импорт описаний правил в sonarqube из АПК. Это даст возможность "не отходя от кассы" смотреть описание правил и иметь ссылки на стандарты ИТС. Что касаемо "А зачем использовать два продуктива?" - можно 1С: АПК упаковать в docker контейнер и запускать в CI забыв о его существовании в принципе.
Diversus; +1 Ответить
150. Diversus 2306 26.07.19 17:20 Сейчас в теме
(148) (149) А вы не сталкивались с такой ошибкой? (см вложение)
Если не импортировать из АПК все нормально, а если включить в настройках sonar-project.properties
sonar.bsl.languageserver.reportPaths=acc-json.json

То падает с этой ошибкой, причем фоновое в сонаре не запускает.
Прикрепленные файлы:
151. olegtymko 889 26.07.19 17:52 Сейчас в теме
(150) Была такая проблема. Можно взять обновленную обработку из релиза master или из ветки dev (https://github.com/otymko/acc-export/blob/develop/acc-export.epf).
217. ashinkarenko 09.01.20 12:23 Сейчас в теме
(151)Добрый день. Использовал последнюю доступную версию обработки, все равно при импорте падает с аналогичной ошибкой.
Прикрепленные файлы:
149. Labotamy 26.07.19 16:40 Сейчас в теме
(143)
Во всем остальном понравилось все кроме краткого пути и не понятно в каком файле искать.


Это лечится. Но как лекарство сделать общедоступным, пока не понятно.
Прикрепленные файлы:
web.rar
152. i_lo 214 29.07.19 01:37 Сейчас в теме
Добрый день!
Попробовал на своем компе sonarqube. jvm в памяти разрослась до 4Гб. От обилия своппинга всё встало. Буду просить у руководства виртуальный сервер. Какой минимально сервер нужен для сонара? ОС windows style.
Сколько ориентировочно времени занимает проверка, например ERP?
Планирую проверять доработанную УХ-у и переработанную бухгалтерию.
153. Stepa86 1521 29.07.19 10:02 Сейчас в теме
(152) Когда я проверял УХ 3, то для работы сканера потребовалось 20Гб оперативы. Сонар же был на машине с 16Гб с настройками из этой статьи. То есть сканер запускался с другой машины. Если вырезать перед анализом регл. отчетность, то и 6Гб должно хватить на сканер.
154. kabanoff 49 29.07.19 14:05 Сейчас в теме
Добрый день! Подскажите, откуда можно взять файлик "project1c/sonar-project.properties"? В статье про это ничего не сказано.
155. olegtymko 889 29.07.19 14:33 Сейчас в теме
(154) Добрый день. В статье есть ссылка(раздел про быстрый старт). Приклепляю ссылку и сюда https://github.com/otymko/article-sonar-for-infostart
157. kabanoff 49 29.07.19 16:23 Сейчас в теме
(155) Спасибо, получилось!
Теперь, правда, при выполнении скрипта Check.bat возникает множество предупреждений. Нигде не могу найти, где в SonarCube настраивается путь к каталогу проекта. Как это исправить?
Прикрепленные файлы:
158. olegtymko 889 29.07.19 16:26 Сейчас в теме
(157) Настраивается в файле sonar-project.properties:
* sonar.source=путь/к/каталогу/с/исходниками.
159. kabanoff 49 30.07.19 09:43 Сейчас в теме
(158) Не получается. Файл sonar-project.properties у меня настроен, находится в каталоге проекта. Но такое ощущение, что Check.bat его не видит.
160. olegtymko 889 30.07.19 10:04 Сейчас в теме
(159) запускайте check.bat из каталога project1c
163. kabanoff 49 30.07.19 11:58 Сейчас в теме
(160) Если я запускаю его (заменив предварительно token на свой), то получаю вот такой лог.
Сможете помочь?
Прикрепленные файлы:
164. kabanoff 49 30.07.19 13:23 Сейчас в теме
(163) Всё, у меня получилось. В мануале я нашел, как передать сканеру путь к файлу параметров проекта:
sonar-scanner -Dproject.settings=../myproject.properties


То есть у меня Check.bat получился вот таким:
E:\project1c\sonar-scanner\bin\sonar-scanner.bat -D"sonar.login=TOKEN" -Dproject.settings="E:\project1c\upp\sonar-project.properties"
, где TOKEN - ключ проекта.

Также потребовалось в файле sonar-scanner.properties прописать абсолютный путь к проекту и путь к базовому каталогу - без этого в среде ОС Windows сканер отказывался работать:
sonar.sources=E:/project1c/upp/src
sonar.projectBaseDir=E:/project1c/upp/src


Спасибо за статью и помощь!
olegtymko; +1 Ответить
161. roman_1379 30.07.19 10:50 Сейчас в теме
Всем привет. Не подскажете можно как то в плагине 1C (BSL) Community Plugin отключать из проверки некоторые правила?
162. olegtymko 889 30.07.19 11:56 Сейчас в теме
(161) Через профили качества. Создаем свой профиль и назначаем определенным проектами или всем проектам.
Прикрепленные файлы:
165. roman_1379 30.07.19 13:54 Сейчас в теме
(162)Спасибо, разобрался, профиль не должен наследоваться и тогда появляется возможно деактивировать ненужные правила.
166. KokotovAlexandr 05.08.19 11:32 Сейчас в теме
Подскажите пожалуйста!
При проверке конфигурации возникает ошибка:
ERROR: Error during SonarQube Scanner execution
java.lang.OutOfMemoryError
Caused by: java.lang.OutOfMemoryError: Java heap space
При этом указаны следующие параметры использования памяти:
SONAR_SCANNER_OPTS=-Xmx8g
В параметрах java стоит: -d64 -Xmx10G
В процессе работы java съедает не более 5Gb. Конфигурация не слишком большая (5460 проверяемых файлов).
94 процента проверки проходит за 15 минут. Потом еще 3% обрабатывается в течение часа, после чего и вываливается ошибка.
Что нужно перенастроить чтобы процесс проверки завершался без ошибок?
167. olegtymko 889 05.08.19 14:55 Сейчас в теме
(166) Конфигурация типовая? Если да - можно исключить типовые отчеты. Или попробуйте при запуске сканера указать больше озу: SONAR_SCANNER_OPTS=-Xmx10g
168. olegtymko 889 05.08.19 14:56 Сейчас в теме
(166) Еще есть пример для УХ -> (153)
169. KokotovAlexandr 05.08.19 15:51 Сейчас в теме
(168) Конфигурация не типовая. На сколько я понял в сам Сонар встроена своя Java или что-то типа того. Во всяком случае изменение параметров через интерфейс Configure Java результатов не дал. Получилось реализовать только добавив в файл check.bat следующую строку:
SET SONAR_SCANNER_OPTS=-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xmx10g
Прикрепленные файлы:
170. Labotamy 05.08.19 16:10 Сейчас в теме
(169)
Получилось реализовать только добавив в файл check.bat следующую строку:

Все правильно сделали. Да с sonar-scanner для windows идет своя java. Это можно увидеть в файле sonar-scanner.bat
171. ghostaz 143 06.08.19 08:30 Сейчас в теме
Если бы вы перенесли проверки с Автоматизированной проверки конфигураций - цены бы не было вашему решению.
172. olegtymko 889 06.08.19 12:37 Сейчас в теме
(171) Работы ведутся! Можно помочь в развитии проекта -> https://github.com/1c-syntax/bsl-language-server и ускорить это дело )
221. check2 354 12.04.20 22:54 Сейчас в теме
(171) Владимир, о чём речь? Вроде как с АПК есть импорт и в статье описано. Или Вы про остальные проверки. кроме модулей?
226. ghostaz 143 13.04.20 09:50 Сейчас в теме
(221) Да, ест. Но я тогда не понял зачем сонар куб. Если просто из за веб интерфейса и графиков, то мое мнение это того не стоит. Мне проще автоматизировать АСС. Или же связать АСС TeamCity или jenkins.
Я в рамках статьи поставил сонар куб, да он красив и приятен, но его проверки не полные. Их очень мало. Я ни в коем случае не хочу обидеть разработчиков, работа проделана большая.
Если вы можете сказать чем именно можем помочь движок сонар куб, то буду признателен. Я его смотрел совсем не долго. Единственное что я помню это график изменения качества.
229. olegtymko 889 15.04.20 08:02 Сейчас в теме
(226) Для меня Sonarqube дает следующие возможности по сравнению с чистой АПК:
* Оценивать динамику изменения показателей проекта. В случае срабатывания порогов качества принимаются соответствующие мера;
* Анализировать замечания по авторам (разработчикам);
* Удобство просмотра замечаний (прямо в коде с удобными фильтрами);
* Рассылка о состоянии проекта.
230. olegtymko 889 15.04.20 08:17 Сейчас в теме
(226) Так же, если у вас есть предложения по улучшению проекта BSL LS (новые диагностики, ложные срабатывания и т.п.) то можете об этом написать тут -> https://github.com/1c-syntax/bsl-language-server/issues
177. for_sale 971 16.08.19 20:01 Сейчас в теме
1. Редактирую настройки согласно статьи.
2. Запускаю крипт СтартСонар
3. Процессор съедается на 99% (ай пятый).
4. Память съедается почти вся (8 гб!)
5. Вываливается ошибка - не смогло аллоцировать что-то в районе 4 гб памяти.

Подскажите, пожалуйста, что я делаю не так?
178. olegtymko 889 17.08.19 06:37 Сейчас в теме
(177)
Немного упрощаем настройки распределения памяти для запуска SonarQube. Допустим у вас 8 гб ОЗУ на компьютере. Но вы не хотите более 4 гб выделить под SonarQube. Расчет распределения памяти идет из следующего алгоритма.

Для CE выделяем половину доступной памяти, то есть 2 гб:

sonar.ce.javaOpts=-Xmx2Gb -XX:+HeapDumpOnOutOfMemoryError


Для WEb и Search должно быть выделено не более половины из доступной памяти (можно поделить поровну. 1 и 1 гб соответственно).

sonar.web.javaOpts=-server -Xmx1Gb -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-Xmx1Gb -XX:+HeapDumpOnOutOfMemoryError
for_sale; +1 Ответить
179. for_sale 971 17.08.19 10:07 Сейчас в теме
(178) Отлично, спасибо!
Именно с такими настройками не заработало, выдало тоже какую-то ошибку про память, но главное, что я понял смысл этих буковок, заработало вот так:

sonar.web.javaOpts=-server -Xmx1g -Xms1g -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-Xmx2g -Xms2g -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError
180. olegtymko 889 17.08.19 12:26 Сейчас в теме
(179) Про начальный пул памяти -Xms запамятовал)
181. for_sale 971 17.08.19 12:28 Сейчас в теме
(180)
Добавьте, пожалуйста, эту инфу в статью, а то устанете всем отвечать на один и тот же вопрос, если будет возникать)

UPD
У меня в комменте тоже неправильно, добавились мусорные символы от редактора комментов. Вот правильный:
sonar.web.javaOpts=-server -Xmx1g -Xms1g -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-Xmx2g -Xms2g -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError
headMade; +1 Ответить
182. roman_1379 23.09.19 10:02 Сейчас в теме
Всем привет.
А никто не реализовал "Рассылка результатов проверки кода ответственным / виновникам замечаний"?
Я так понимаю это должно происходить из SonarQube? Сами настройки на отправку сделал почты, тестовое письмо отправляется, а вот как сделать рассылку, нигде таких настроек не нашёл.
183. Stepa86 1521 23.09.19 10:10 Сейчас в теме
(182) А это в самом сонаре и настраивается. Там нужно указать параметры отправки под админом, а каждый пользователь должен у себя включить оповещения
roman_1379; +1 Ответить
184. roman_1379 23.09.19 11:24 Сейчас в теме
(183)Спасибо! В настройках пользователя включил уведомления, письма ему приходят если другой пользователь оставляет комментарии или назначает на него повторно замечания, но самое нужно чего хотелось бы это после завершения сонар-сканера в случае ошибок происходила рассылка. Сопоставления пользователя из гитлаба успешно попадают в сонаркубэ и назначаются, но рассылка не происходит (
185. olegtymko 889 23.09.19 13:02 Сейчас в теме
(184)
Сопоставления пользователя из гитлаба успешно попадают в сонаркубэ и назначаются, но рассылка не происходит (


Все настройки только под пользователями sonarqube персонально, примерно это выглядит вот так:



В каждом виде рассылки четко указано что она рассылает. Можно пользоваться другими решениями. Например: https://quboo.io
Прикрепленные файлы:
186. roman_1379 23.09.19 14:50 Сейчас в теме
(185)Так и делал, рассылка работает если уже есть не пустой проект и происходят какие то изменения кода и появляются ошибки. НО если проект ещё не создан и происходит его создание через сонар-сканер или даже если изначально будет создан пустой через браузер и потом сонар-сканер, то никакой рассылки не происходит, не смотря на то, что есть код и ошибки и пользователи успешно сопоставляются и назначаются! И ещё самое интересное, если я создаю новый объект в конфе, допускаю в нем ошибку обновляю это в существующий проект и тут не происходит рассылка, а вот если я ещё раз, в этом уже созданным объекте сделаю ошибку и выгружу, тогда все четко - приходит письмо. Это никуда не годиться, все это баловство не доработанное ) Или может ещё что то, где то настроить? А плагин 1C (BSL) пропускает случайные слова? символы в коде, захочу написать например по среди кода "впапрпвпвапв" так он ничего не скажет, проверку код пройдёт, но работать не будет ))

А что quboo лучше? На начальной странице уже написано beta
Оставьте свое сообщение