Skip to content

Releases: Jimmo910/edt-sonarq-plugin

v0.9.5 — отпечаток с окружением и память отпечатков между сеансами

Choose a tag to compare

@github-actions github-actions released this 08 Aug 09:00

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

Отпечаток строки теперь учитывает окружение

Раньше замечание запоминало отпечаток одной строки. В коде 1С это ненадёжно: по измерениям на 400 реальных модулях (≈67 000 строк) у каждой третьей строки есть точный дубликат в пределах поиска — Возврат;, КонецЕсли;, однотипные присваивания. Если номер строки устарел, плагин мог выбрать не то вхождение.

Теперь запоминается сама строка и до трёх значащих строк выше и ниже (пустые строки и ранее вставленные комментарии // BSLLS: пропускаются — иначе наши же вставки портили бы ориентиры соседних замечаний). При поиске кандидаты оцениваются по количеству совпавших строк окружения, и правка выполняется, только если один кандидат уверенно лучше остальных. Во всех спорных случаях плагин ничего не пишет и просит обновить список замечаний.

Заодно устранены три ошибки, которые оставались в предыдущей схеме:

  • если строка «уехала» и правка выполнялась в новом месте, номера остальных замечаний пересчитывались вокруг старой строки;
  • замечание без отпечатка правилось «вслепую» по номеру — теперь такое подавление отклоняется;
  • в нормализации схлопывались пробелы внутри строковых литералов, из-за чего "a b" и "a b" считались одинаковыми.

Память отпечатков переживает перезапуск

Отпечатки хранились только в маркерах и в открытом окне замечаний. Маркеры не сохраняются между сеансами EDT, а при выключенной настройке «Показывать замечания в панели „Проблемы“» их нет вовсе — после перезапуска или обновления списка защита слабела именно там, где нужна: сервер продолжает сообщать номера строк на момент последнего анализа и не знает о ваших локальных правках.

Теперь плагин ведёт собственный небольшой индекс отпечатков в своём служебном каталоге. Он:

  • переживает перезапуск EDT и не зависит от настройки маркеров;
  • раздельно хранит данные для разных серверов, проектов, веток и привязок;
  • никогда не заменяет сохранённый отпечаток отпечатком «устаревшей» строки с сервера — если сопоставить не удалось, подавление честно отказывает;
  • ограничен по размеру и сам чистит устаревшие записи; при повреждении файла считается пустым (с записью в журнал), а не источником ложной уверенности.

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

Тесты

651 (было 578). Новые проверки описывают правила: при неоднозначности — отказ и файл не меняется; отпечаток переживает перезапуск и работает с выключенными маркерами; сохранённый отпечаток не подменяется данными сервера.

Установка/обновление

p2-архив ru.jimmo.edt.sonarq.repository из вложения. Требуется 1C:EDT 2026.2+; для EDT 2026.1 используйте v0.8.1.

Полный список изменений: v0.9.4...v0.9.5

v0.9.4 — подавление проверяет строку перед правкой (по итогам разбора архитектуры)

Choose a tag to compare

@github-actions github-actions released this 07 Aug 15:59

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

Подавление больше не доверяет номеру строки

Раньше плагин вставлял // BSLLS:<Правило>-off / -on по сохранённому номеру строки. Этот номер мог устареть штатным образом:

  • обычное обновление в серверном режиме: сервер отдаёт номера с момента последнего анализа и ничего не знает о вашей локальной правке — после подавления одного замечания список «откатывался» к дореформенным номерам;
  • ваши собственные правки: добавили пару строк выше замечания, отменили подавление через Ctrl+Z, закрыли файл с «не сохранять» — учёт разъезжался;
  • несохранённые изменения в открытом редакторе — проверка была только для закрытых файлов.

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

  • строка совпала — правим её;
  • строка уехала (например, после ваших правок или устаревших данных сервера) — плагин находит нужную строку рядом и правит именно её;
  • строка не найдена — плагин ничего не пишет и сообщает, что файл изменился и список замечаний нужно обновить.

Плюс вставка стала одной атомарной правкой (раньше — две отдельные), а подавление в редакторе с несохранёнными изменениями теперь отклоняется, как и для закрытых файлов.

Согласованность списка и маркеров

  • Устаревшее фоновое обновление маркеров больше не может перезаписать более свежее состояние (задание проверяет версию прямо перед изменением).
  • Подавление в одном проекте больше не влияет на список замечаний другого проекта (совпадение внутренних ключей между проектами больше не путает окно).
  • Пометка «показаны первые N из M» больше не теряется после первого подавления.
  • Если после правки файла не удалось обновить маркеры, вы об этом узнаете, а не увидите молча неверные номера строк.

Локализация и хранилище секретов

  • Сообщение об ошибке анализа полностью переведено (раньше по-русски была только подсказка про память, а основной текст — по-английски).
  • Появился диалог Настройки → SonarQube → «Сохранённые секреты…»: можно посмотреть, для каких серверов плагин хранит токены, и удалить ненужные. Ничего не удаляется без вашего явного действия.

Тесты

578 (было 512). Новые проверки описывают само правило безопасности: подавление либо правит именно ту строку, которой соответствует замечание, либо не меняет файл вообще.

Установка/обновление

p2-архив ru.jimmo.edt.sonarq.repository из вложения. Требуется 1C:EDT 2026.2+; для EDT 2026.1 используйте v0.8.1.

Полный список изменений: v0.9.3...v0.9.4

v0.9.3 — устранена порча кода через Quick Fix, потоковый разбор отчёта, UX и укрепление

Choose a tag to compare

@github-actions github-actions released this 07 Aug 07:17

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

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

В v0.9.1 подавление перестало «разъезжаться» в самом окне замечаний, но дыра осталась: Quick Fix в панели «Проблемы» правил файл, а номера строк в остальных маркерах этого файла не сдвигались, если окно замечаний было закрыто (или показывало другой проект — маркеры фонового обновления живут для всех проектов). Второе подавление в том же файле обёртывало уже не тот код, причём сразу на диск и без возможности отмены.

Теперь после вставки комментариев сдвигаются сами маркеры, а не только модель окна, — путь больше не зависит от того, открыто ли окно и какой проект в нём выбран.

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

Локальный анализ больших конфигураций: меньше памяти EDT

Отчёт анализа (SARIF) раньше целиком загружался в память EDT — сначала как текст, потом как дерево объектов. На конфигурациях уровня ERP это сотни мегабайт в куче самой EDT и риск её падения. Теперь отчёт разбирается потоково, а число замечаний локального режима ограничено так же, как в серверном: при превышении список честно помечается как усечённый (с подсказкой сузить область анализа или отключить лишние проверки).

Интерфейс и удобство

  • Дерево замечаний больше не схлопывается при каждом обновлении и после подавления — раскрытые узлы и выделение сохраняются (актуально при фоновом автообновлении).
  • Токен больше нельзя потерять молча: раньше правка адреса сервера могла затереть только что введённый токен до нажатия «ОК». То же исправлено для секрета CI.
  • Подсказка о нехватке памяти движка теперь на русском и называет настройку так, как она подписана в интерфейсе.
  • Переход к коду и подавление работают и при выключенных маркерах — файл, появившийся вне EDT (например, после git-переключения), теперь подхватывается.
  • Сервер за перенаправлением (http → https) больше не даёт непонятную ошибку разбора JSON; при внутренних сбоях в строке состояния — понятное сообщение, технические подробности — в журнале и в «Подробнее».

Безопасность и надёжность

  • Пути замечаний, приходящие с сервера, проверяются: выход за пределы проекта (.., абсолютные пути) отклоняется — маркеры и правки файлов не могут попасть в чужой проект.
  • Объекты с секретами (подключение, параметры запуска, CI-секрет) больше не раскрывают их в отладочном выводе.
  • Токен удаляется из защищённого хранилища, когда пользователь его очищает.
  • Устранена утечка HTTP-клиента при каждом запуске CI-триггера; проверка исполняемого файла BSL LS больше не «зависает» на многословном выводе.
  • Ошибки при получении списка проверок теперь показываются на самой странице настроек, а не теряются.
  • Фоновое автообновление в локальном режиме больше не пишет одну и ту же строку в журнал каждые 15 минут.

Тесты

512 тестов (было 414). Впервые покрыт AnalysisJob (запуск анализа, разбор report-task.txt, опрос задачи сервера, таймаут, CI-триггер) и путь Quick Fix.

Установка/обновление

p2-архив ru.jimmo.edt.sonarq.repository из вложения. Требуется 1C:EDT 2026.2+; для EDT 2026.1 используйте v0.8.1.

Полный список изменений: v0.9.2...v0.9.3

v0.9.2 — надёжность, безопасность и точность после ревью

Choose a tag to compare

@github-actions github-actions released this 06 Aug 19:28

Закрыты оставшиеся замечания независимого ревью проекта (после v0.9.1). Пользовательских изменений в интерфейсе почти нет — это выпуск про надёжность, безопасность и честность поведения.

Надёжность

  • Удаление движка больше не «молчит». Раньше удаление скачанного BSL Language Server игнорировало ошибки: если файл занят (на Windows это обычное дело, когда анализ ещё работает), кнопка «Удалить скачанный движок» сообщала об успехе, а движок оставался на месте. Теперь ошибка удаления не теряется и называет конкретный файл. Та же правка — в установщике sonar-scanner.
  • Установка движка устойчивее к антивирусу. Переименование распакованного каталога на Windows иногда отклонялось системой, если файл в этот момент проверял антивирус или индексатор; теперь операция повторяется несколько раз.
  • Установка sonar-scanner защищена от гонки: два анализа разных проектов больше не могут одновременно распаковывать один и тот же каталог.
  • Фильтр подсистем больше не «перетекает» между проектами. Конфигурация локального анализа писалась в один общий файл, поэтому обновление одного проекта могло подсунуть свой фильтр анализу другого; теперь файл свой для каждого проекта.

Скорость

  • Синхронизация маркеров больше не обновляет всё дерево проекта. Раньше при каждом обновлении замечаний (и после каждого подавления) выполнялось полное обновление ресурсов проекта под блокировкой — на больших конфигурациях это заметные задержки и подвисания сборки/сохранения. Теперь обновляются только те файлы, которых ещё нет в дереве.

Безопасность

  • Токен CI больше не утекает в текст ошибки. Если URL CI-триггера задан с ошибкой, сообщение об ошибке содержало URL целиком — вместе с токеном — и попадало в строку состояния, подсказку, диалог «Подробнее» и журнал ошибок. Теперь URL в сообщениях маскируется.

Поведение и мелочи

  • Локальный режим больше не помечает все замечания как «Дефект кода»: тип берётся из встроенного каталога проверок, поэтому фильтр по типу (BUG / VULNERABILITY / CODE_SMELL) наконец работает и локально. Замечание без явного уровня трактуется как предупреждение (по стандарту SARIF), а не как «информация».
  • Ширина колонок в окне замечаний больше не сбрасывается при каждом обновлении.
  • Счётчик в заголовке группы теперь учитывает фильтр (раньше мог показывать «Файл.bsl (12)» над двумя видимыми строками).
  • Ожидание обработки отчёта сервером больше не «зависает» молча: по истечении ожидания выводится понятное сообщение.
  • Переключение настройки фонового обновления применяется сразу, даже если ранний старт плагина отключён.
  • Диагностика загрузчика движка (почему не удалось проверить обновление) теперь попадает в журнал ошибок EDT, а не теряется.
  • HTTP-клиенты подключения к SonarQube больше не накапливаются: они переиспользуются и закрываются.
  • Удалён неиспользуемый код получения описаний правил с сервера; описания правил (страница «Проверки BSL») и документация приведены в соответствие.
  • В README и в bom/pom.xml добавлено упоминание встроенных сторонних библиотек и их лицензий (utils — LGPL-3.0, semver4j/slf4j-api — MIT, jspecify — Apache-2.0); подробности — в about.html внутри плагина.
  • В сборке релиза добавлена проверка, что тег соответствует собранной версии.

Установка/обновление

p2-архив ru.jimmo.edt.sonarq.repository из вложения. Требуется 1C:EDT 2026.2+; для EDT 2026.1 используйте v0.8.1.

Полный список изменений: v0.9.1...v0.9.2

v0.9.1 — исправление порчи кода при подавлении + рабочее фоновое обновление маркеров

Choose a tag to compare

@github-actions github-actions released this 06 Aug 15:17

Исправления по итогам полного ревью проекта. Рекомендуется обновиться всем, кто пользуется быстрым подавлением замечаний.

Быстрое подавление больше не может испортить код (важно)

Найден и исправлен дефект, при котором подавление могло вставить комментарии // BSLLS:<Правило>-off / -on вокруг не тех строк.

Как это происходило: вставка молча пропускалась (например, если строка уже подавлена), но окно замечаний всё равно считало, что файл сдвинулся на пару строк, — после чего следующее подавление в этом же файле обёртывало не тот участок. То же самое происходило при подавлении через Quick Fix в панели «Проблемы»: файл менялся, а модель окна замечаний — нет.

Теперь вставка сообщает, состоялась ли она, номера строк пересчитываются только при реальной правке, а Quick Fix синхронизирует окно замечаний.

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

Фоновое обновление маркеров заработало

Настройка «Автоматически обновлять в фоне» обновляла список замечаний, но маркеры в панели «Проблемы» при этом не обновлялись никогда: фоновая задача пыталась изменить маркеры внутри блокировки анализа, и Eclipse отклонял операцию на каждом цикле. Синхронизация маркеров вынесена в отдельную задачу — как это уже было сделано для кнопки «Обновить».

Воспроизводимость сборки

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

Документация

Уточнено: в серверном режиме каталог описаний проверок не заполняется сам — нажмите «Получить список проверок» (кнопка работает в любом режиме).

Установка/обновление

p2-архив ru.jimmo.edt.sonarq.repository из вложения. Требуется 1C:EDT 2026.2+ (см. v0.9.0); для EDT 2026.1 используйте v0.8.1.

Полный список изменений: v0.9.0...v0.9.1

v0.9.0 — EDT 2026.2 + Java 25, общий загрузчик BSL LS из 1c-syntax/utils

Choose a tag to compare

@github-actions github-actions released this 06 Aug 14:17

⚠️ Ломающее изменение: этот выпуск работает только в 1C:EDT 2026.2 и новее.
Плагин собран под Java 25 (Require-Capability: osgi.ee JavaSE 25) — именно на ней работает EDT 2026.2.
В EDT 2026.1 и более ранних (Java 17) он не установится: мастер установки сообщит о неудовлетворённом требовании.
Для EDT 2026.1 используйте v0.8.1 — она остаётся актуальной для старых версий EDT.

Переход на EDT 2026.2 и Java 25

  • Целевая платформа сборки — EDT 2026.2 (Eclipse 4.38). Список зависимостей упрощён: всё нужное (платформа Eclipse, JUnit, gson, JGit, SCR, SPI-Fly) поставляется самой EDT.
  • Плагин компилируется и работает на Java 25. Заодно обновлён инструмент сборки (Tycho 5.0.3): предыдущая версия не умела компилировать под Java 25.

Загрузчик движка BSL LS — теперь общий, из 1c-syntax/utils

По предложению @nixel2007 (issue #8) собственная реализация скачивания BSL Language Server заменена на общий загрузчик из io.github.1c-syntax:utils 0.10.1 — тот же, что используют плагины для VS Code и IntelliJ IDEA. Это убирает дублирование: исправления и новые возможности загрузчика будут приходить из апстрима.

Что осталось нашим (в utils таких возможностей нет):

  • вариант «Фиксированная версия» движка — без обращений к GitHub API;
  • запасное скачивание зафиксированной версии, когда API недоступен, а движок ещё не скачан;
  • отмена скачивания по прогресс-монитору EDT;
  • ограничение памяти движка (_JAVA_OPTIONS + правка .cfg).

Настройка «Версия движка BSL LS» и её поведение не изменились. На странице настроек теперь показывается установленная версия движка.

Прочее

  • Исправлено определение самой свежей установленной версии движка: сравнение шло по строке, из-за чего 1.0.10 считалась старше 1.0.4.
  • При переключении на фиксированную версию лишние каталоги других версий движка теперь удаляются (раньше могли накапливаться и занимать сотни мегабайт).
  • Добавлены сведения о лицензиях встроенных сторонних библиотек (about.html, тексты лицензий): utils — LGPL-3.0, semver4j и slf4j-api — MIT, jspecify — Apache-2.0.

Установка/обновление

p2-архив ru.jimmo.edt.sonarq.repository из вложения — порядок в README. Если плагин уже установлен, обновляйтесь только после перехода на EDT 2026.2.

Полный список изменений: v0.8.1...v0.9.0

v0.8.1 — heap движка BSL LS через _JAVA_OPTIONS

Choose a tag to compare

@github-actions github-actions released this 19 Jul 22:11

Небольшое улучшение по совету @nixel2007 в issue #8.

Ограничение памяти BSL LS через _JAVA_OPTIONS

Максимум кучи движка BSL Language Server (настройка «Максимум памяти BSL LS (ГБ)», локальный режим, фикс OOM #5) теперь задаётся ещё и через переменную среды _JAVA_OPTIONS=-Xmx<N>g при запуске анализа — она перекрывает -Xmx из .cfg-файла движка. Плюсы: не зависит от раскладки каталогов установки и готовит почву под будущий переход на общий загрузчик 1c-syntax/utils.

Прежний способ (правка -Xmx в bsl-language-server.cfg) оставлен как запасной — оба задают одно и то же значение, поведение для пользователя не меняется. Если у вас уже задана своя _JAVA_OPTIONS, она сохраняется, а наш -Xmx добавляется последним (в JVM выигрывает последний).

Проверено на нативной сборке BSL LS 1.0.4 (Linux): _JAVA_OPTIONS действительно перекрывает -Xmx4g из .cfg.

Установка/обновление

p2-архив ru.jimmo.edt.sonarq.repository из вложения — порядок в README.

Полный список изменений: v0.8.0...v0.8.1

v0.8.0 — автообновление движка BSL Language Server

Choose a tag to compare

@github-actions github-actions released this 19 Jul 14:02

Автообновление движка BSL Language Server из GitHub-релизов (по предложению @nixel2007, issue #8).

Что нового

Раньше локальный режим использовал жёстко зафиксированную версию BSL Language Server (1.0.4). Теперь скачиваемый (управляемый) движок может автоматически обновляться до последнего релиза.

Новая настройка Настройки → SonarQube → «Версия движка BSL LS»:

  • «Последний стабильный релиз» (по умолчанию) — автоматически подтягивать последний стабильный релиз BSL Language Server с GitHub;
  • «Последний релиз (включая pre-release)» — в том числе предрелизные версии;
  • «Фиксированная (1.0.4)» — всегда использовать запинованную версию, без обращений к сети за обновлениями.

Проверка обновлений выполняется не чаще раза в несколько минут. Если GitHub недоступен, используется уже скачанный движок; если ничего ещё не скачано — как запасной вариант тянется зафиксированная 1.0.4. Настройка действует только для скачиваемого движка и не влияет на вариант «Указать локальный файл».

Как это сделано

Загрузчик из пакета 1c-syntax/utils изучен; напрямую как зависимость он для OSGi/Tycho-плагина не подошёл (LGPL + github-api/Jackson/commons-compress/semver4j, нет в Maven Central), поэтому подход портирован в наш EPL-код без новых зависимостей — те же нативные ассеты, каналы stable/pre-release, троттлинг и офлайн-фолбэк.

Установка/обновление

p2-архив ru.jimmo.edt.sonarq.repository из вложения — порядок в README.

Полный список изменений: v0.7.0...v0.8.0

v0.7.0 — описания правил в настройках, чистый список, вложенная группировка

Choose a tag to compare

@github-actions github-actions released this 18 Jul 22:49

Правки по отзывам к issue #4 (доработка после v0.5.1).

Описание правил — на странице настроек «Проверки BSL»

  • Описание правила больше не показывается в самом окне замечаний. Теперь при выборе проверки на странице Настройки → SonarQube → Проверки BSL под деревом видно её описание — название, тип и теги, ниже текст из BSL Language Server — плюс ссылка «Открыть онлайн-описание правила». Это помогает решать «нужна проверка или нет».
  • Исправлен рендеринг описаний: раньше в них попадал служебный «мусор» — авто-таблица метаданных, HTML-комментарии, теги <br> (именно это было видно на скриншоте). Теперь описание — чистый читаемый текст. Тексты берутся из каталога, который заполняется после локального анализа или по кнопке «Получить список проверок».

Окно замечаний — чистый список на всю высоту

  • Панель описания правила из окна убрана — дерево замечаний теперь занимает всю высоту окна. Заодно снимается вопрос с невидимым разделителем: разделять больше нечего.

Группировка «по критичности» — вложенность по правилам

  • В режиме «Группировать по критичности» дерево стало двухуровневым: критичность → правило → замечания. Колонки «Критичность» и «Правило» в этом режиме автоматически скрываются, чтобы не дублировать заголовки групп.

Установка/обновление

p2-архив ru.jimmo.edt.sonarq.repository из вложения — порядок установки в README.

Полный список изменений: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 20:08

Правки по отзывам сообщества (issues #6, #7).

Замечания в стандартной панели «Проблемы» (issue #6)

  • Исправлено создание маркеров: перед их постановкой плагин освежает дерево ресурсов проекта (refreshLocal), иначе файлы не находились и замечания не попадали ни в панель «Проблемы», ни в подчёркивания редактора. Сколько замечаний не сопоставилось с файлами — теперь видно в строке статуса.
  • Уточнение: замечания показываются в стандартной панели Eclipse «Проблемы» и подчёркиваниями в редакторе — но НЕ в собственной панели EDT «Ошибки конфигурации» (её питает только внутренняя модель EDT, чужие маркеры туда не встроить). Флажок дублирования — Настройки → SonarQube, «Показывать замечания в стандартной панели „Проблемы“» (по умолчанию вкл).

Быстрое подавление ложных срабатываний (issue #7)

  • ПКМ по замечанию → «Подавить замечание», либо Quick Fix на маркере в панели «Проблемы». Плагин вставляет вокруг строки конструкции подавления BSL Language Server // BSLLS:<Ключ>-off / -on (с отступом), которые понимают и локальный BSL LS, и серверный sonar-bsl-plugin. Правка идёт в открытый редактор (откатывается Ctrl+Z).

Установка/обновление

p2-архив ru.jimmo.edt.sonarq.repository из вложения — порядок в README.

Полный список изменений: v0.5.1...v0.6.0