sonar-bsl-plugin-community icon indicating copy to clipboard operation
sonar-bsl-plugin-community copied to clipboard

Сопоставление правил EDT и плагина

Open shcherbakov-vadim opened this issue 5 months ago • 8 comments

При вызове сканера через параметр sonar.bsl.edt.rulesPaths можно передать дополнительные правила. Утилита edt-ripper для неизвестных ей правил формирует новый код EDT, при этом в списке правил плагина я никакого внутреннего кода не вижу. Означает ли это что плагин не обращает внимание на это поле и просто создаст новые правила, а после их появлении их поддержки в плагине они будут использовать существующие идентификаторы, которые уже используются совсем другими правилами?

shcherbakov-vadim avatar Oct 06 '25 14:10 shcherbakov-vadim

sonar.bsl.edt.rulesPaths это параметр уровня сервера, а не проекта. Можно из edt-ripper выгрузить актуальные описания правил и подложить их серверу. При перезапуске сервера он пересоздаст правила по описаниям из файлов. Либо же можно пользоваться штатным описанием правил, зашитым в плагин. Срабатывания замечаний по неизвестным правилам будут созданы как external issues, остальные смапятся на существующие.

nixel2007 avatar Oct 06 '25 15:10 nixel2007

Учитывая, что на текущий момент в edt-ripper правил больше, я правильно понимаю что этот проект является источником правил для плагина и можно смело брать файл правил из него и подставлять в sonar.bsl.edt.rulesPaths?

shcherbakov-vadim avatar Oct 06 '25 16:10 shcherbakov-vadim

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

nixel2007 avatar Oct 06 '25 17:10 nixel2007

Остается непонятным, есть ли возможность обновить состав правил без деинсталляции и повторной инсталляции плагина. Я добавил в sonar.properties настройку sonar.bsl.edt.rulesPaths=<путь к файлу правил> и ожидаю что при каждом перезапуске сервера их состав будет обновляться, но этого не происходит. Судя по всему правила записываются в БД и обновляются только после апгрейда плагина

shcherbakov-vadim avatar Oct 07 '25 12:10 shcherbakov-vadim

@theshadowco подскажи тут, помню, что там сложности были с этим

nixel2007 avatar Oct 07 '25 12:10 nixel2007

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

В свое время я делал доработку одного правила для BSLLS. Есть ли инструментарий для выпуска плагина для Sonar с учетом этого изменения? UPD. пока удалось сделать с помощью прямого копирования скомпилированного класса в jar

shcherbakov-vadim avatar Oct 08 '25 19:10 shcherbakov-vadim

Собрать бсл лс, установить его в mavenLocal, изменить требуемую версию бсл лс в build.gradle.kts плагина, собрать плагин, залить на сервер.

nixel2007 avatar Oct 11 '25 04:10 nixel2007

Остается непонятным, есть ли возможность обновить состав правил без деинсталляции и повторной инсталляции плагина. Я добавил в sonar.properties настройку sonar.bsl.edt.rulesPaths=<путь к файлу правил> и ожидаю что при каждом перезапуске сервера их состав будет обновляться, но этого не происходит. Судя по всему правила записываются в БД и обновляются только после апгрейда плагина

нормального нет, только установкой новой версии плагина либо удалить\поставить

theshadowco avatar Dec 08 '25 12:12 theshadowco