Управляй качеством кода 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 Технический долг АПК автоматизированная проверка конфигураций

См. также

Результаты ревью кода 1500+ решений каталога Инфостарт: наиболее частые ошибки разработчиков в коде

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

Поделюсь своим опытом аудита кода авторских продуктов с Infostart.ru как одним из элементов применения DevOps-практик внутри Инфостарт. Будет настоящий код, боевые скриншоты, внутренние мемы от команды ИТ-лаборатории Инфостарт и прочее мясо – все, что любят разработчики.

10.04.2024    5384    artbear    77    

74

Ниндзя-код

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

Предлагаю вашему вниманию советы мастеров древности. Программисты прошлого использовали их, чтобы заострить разум тех, кто после них будет поддерживать код. Гуру разработки при найме старательно ищут их применение в тестовых заданиях. Новички иногда используют их ещё лучше, чем матёрые ниндзя. Прочитайте их и решите, кто вы: ниндзя, новичок или, может быть, гуру? (Адаптация статьи "Ниндзя-код" из учебника JavaScript)

01.04.2024    2309    DrAku1a    15    

33

Практическое программирование: когда скорость важнее совершенства

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

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

01.04.2024    596    Prepod2003    6    

2

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

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

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

18.03.2024    1352    ZhokhovM    4    

4

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

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

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

18.03.2024    3002    ZhokhovM    4    

9

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

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

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

29.09.2023    2078    1CUnlimited    15    

23
Отзывы
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 890 08.07.19 05:55 Сейчас в теме
(12) На скриншоте тестовый проект, где ~800 ошибок, был проверен только в рамках статьи.

Во вложении метрики самописного проекта не на БСП, над который сейчас ведутся работы по улучшению качества кода (этот же скриншот есть в статье).
Если смотреть тренд количества ошибок, дублирования кода - то их количество со временем уменьшается.
Прикрепленные файлы:
DrAku1a; GreenDragon; Kinestetik; acanta; kuzyara; +5
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
68. nixel 1408 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 890 09.07.19 09:01 Сейчас в теме
(70)
не чужие люди.

Конспирация
+
125. krasilnikovmihail 23.07.19 10:26 Сейчас в теме
(66) Такая же проблема. Пока не поборол
+
126. пользователь 23.07.19 10:56
Сообщение было скрыто модератором.
...
127. olegtymko 890 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 364 09.07.19 10:16 Сейчас в теме
Эх еще бы ТЗ сама писала ;-)
+
80. olegtymko 890 09.07.19 10:44 Сейчас в теме
(79) ТЗ на исправление недочетов?
+
81. Labotamy 09.07.19 10:44 Сейчас в теме
(80) ТЗ на внесение новых ошибок в код.
+
82. olegtymko 890 09.07.19 10:45 Сейчас в теме
(81) можно написать плагин
+
83. Indgo 364 09.07.19 10:46 Сейчас в теме
(82) Плагин который пишет ТЗ на Плагин.
+
86. gubanoff 63 09.07.19 13:01 Сейчас в теме
(0) известна ли разница между бесплатным плагином и разработкой от Серебряной пули?
+
88. olegtymko 890 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 1522 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 1522 18.07.19 14:24 Сейчас в теме
(114) Еще единая документация, где описаны многие нюансы установки/использования СонарКуб, в т.ч. первичный запуск, настройка описания интеграций, настройка для CI
за 70 страниц текста :)
+
119. artbear 1522 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 890 19.07.19 17:35 Сейчас в теме
(119) Только модераторы форума могут
+
220. check2 356 12.04.20 22:46 Сейчас в теме
(119) Судя по ошибки - его не удалили, а скрыли. Артур, а можно куда то в ЛС что ли это отличие... Что бы понимание было.
Спасибо!
+
223. Labotamy 12.04.20 23:31 Сейчас в теме
(220) я кидал абузу за агресивную рекламу коммерческого продукта сторонней организации.
+
228. olegtymko 890 15.04.20 07:57 Сейчас в теме
(220) Есть идея о написании сравнения платного и опенсоурс проекта по анализу исходного кода 1С (плюсы и минусы каждого из решений). Скорее всего в ближайшее время это сравнение появится.
+
94. mRconik 10.07.19 07:30 Сейчас в теме
1С: Автоматическое тестирование конфигураций

Поправьте на 1С:Автоматизированная проверка конфигураций
+
95. olegtymko 890 10.07.19 07:53 Сейчас в теме
(94) Спасибо. Поправил
+
96. demon_infernal 40 10.07.19 11:54 Сейчас в теме
Хорошая статья, подробная.
В Сонаркубе меня смущает то, что путь файла показывается не полностью (на скрине обвел красным).
Из имени файла понятно, что это модуль какой то формы. А какой? Это можно было бы узнать по полному пути файла, но я не нашел способа его посмотреть.
Прикрепленные файлы:
check2; +1
97. olegtymko 890 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/
toypaul; +1
105. kuzyara 1911 12.07.19 07:30 Сейчас в теме
(99)
- юнит-тестирование
- системы контроля версий
- автоматизированные сборки
- код-ревью
- статические анализаторы кода

Добро пожаловать в devops )
+
129. artbear 1522 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 890 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 890 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 890 19.07.19 17:34 Сейчас в теме
(117) У меня продакшэн крутиться на linux. Пишите в чат. Подскажем в чем проблема)
+
131. пользователь 23.07.19 19:51
Сообщение было скрыто модератором.
...
132. Diversus 2311 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 890 24.07.19 03:03 Сейчас в теме
(132) Спасибо за замечания!)
От себя хочу еще добавить, что скрипт acc.bat в статье запускается из каталога project1c и поэтому можно не указывать абсолютные пути.
P.S.
п. 2 - в статье так и написано: "projectKey - это наименование конфигурации в АПК". Можно конечно скриншотом дополнить.
+
134. Diversus 2311 24.07.19 09:10 Сейчас в теме
(133) Я бы не писал если бы все было хорошо :)
Проблема в том, когда в обработке стоит относительный путь, то при построении полного пути получается вот такой путь: C:/sonar/project1c\src и естественно обработка не выгружает ничего из АПК.
+
135. olegtymko 890 24.07.19 09:50 Сейчас в теме
(134) Странно. Я посмотрю на досуге) Версия win какая?
+
136. Diversus 2311 24.07.19 09:51 Сейчас в теме
137. olegtymko 890 24.07.19 09:53 Сейчас в теме
138. Stepa86 1521 24.07.19 10:21 Сейчас в теме
(134) А какую версию брал? Из релизов? Я с путями достаточно много упражнялся, там в деве версия лежит
+
139. Diversus 2311 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 2311 26.07.19 13:00 Сейчас в теме
Вообще, возникло странное ощущение от SonarQube.
С одной стороны все круто, с другой нет кучи того, что есть в том же АПК.
И наоборот в АПК нет того, что есть в сонаре.

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

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

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


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

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

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

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

То падает с этой ошибкой, причем фоновое в сонаре не запускает.
Прикрепленные файлы:
+
151. olegtymko 890 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 890 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 890 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 890 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 890 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 890 05.08.19 14:55 Сейчас в теме
(166) Конфигурация типовая? Если да - можно исключить типовые отчеты. Или попробуйте при запуске сканера указать больше озу: SONAR_SCANNER_OPTS=-Xmx10g
+
168. olegtymko 890 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 890 06.08.19 12:37 Сейчас в теме
(171) Работы ведутся! Можно помочь в развитии проекта -> https://github.com/1c-syntax/bsl-language-server и ускорить это дело )
+
221. check2 356 12.04.20 22:54 Сейчас в теме
(171) Владимир, о чём речь? Вроде как с АПК есть импорт и в статье описано. Или Вы про остальные проверки. кроме модулей?
+
226. ghostaz 143 13.04.20 09:50 Сейчас в теме
(221) Да, ест. Но я тогда не понял зачем сонар куб. Если просто из за веб интерфейса и графиков, то мое мнение это того не стоит. Мне проще автоматизировать АСС. Или же связать АСС TeamCity или jenkins.
Я в рамках статьи поставил сонар куб, да он красив и приятен, но его проверки не полные. Их очень мало. Я ни в коем случае не хочу обидеть разработчиков, работа проделана большая.
Если вы можете сказать чем именно можем помочь движок сонар куб, то буду признателен. Я его смотрел совсем не долго. Единственное что я помню это график изменения качества.
+
229. olegtymko 890 15.04.20 08:02 Сейчас в теме
(226) Для меня Sonarqube дает следующие возможности по сравнению с чистой АПК:
* Оценивать динамику изменения показателей проекта. В случае срабатывания порогов качества принимаются соответствующие мера;
* Анализировать замечания по авторам (разработчикам);
* Удобство просмотра замечаний (прямо в коде с удобными фильтрами);
* Рассылка о состоянии проекта.
+
230. olegtymko 890 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 890 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 890 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 890 23.09.19 13:02 Сейчас в теме
(184)
Сопоставления пользователя из гитлаба успешно попадают в сонаркубэ и назначаются, но рассылка не происходит (


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



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

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