Продолжение работы над безопасностью подавления замечаний. В 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