bsl-language-server icon indicating copy to clipboard operation
bsl-language-server copied to clipboard

[NEW] Запрет использования аннотации &Вместо

Open bapho-bush opened this issue 3 years ago • 7 comments

Описание проблемы, ошибки, которую надо диагностировать

В текстах модулей запрещено использование аннотации &Вместо. Процедуру или функцию необходимо переписать с использованием одной (нескольких) перечисленных аннотаций - &ИзменениеИКонтроль, &Перед или &Вместо.

В общем случае, при использовании аннотации &Вместо повышается вероятность возникновение ситуации, когда конфигурация (подсистема) начинает работать некорректно после обновлении конфигурации. Если в процедуре или функции конфигурации поставщика были изменения, которые не были должным образом отражены в переопределении этой процедуры или функции в расширении, поведение конфигурации (подсистемы) становится неопределённым.

Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы

https://its.1c.ru/db/pubextensions/content/53/hdoc

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

Параметры диагностики

Тип Статья на русском

  • [x] :ant: Ошибка
  • [ ] :cop: Уязвимость
  • [ ] :guardsman: Потенциальная уязвимость
  • [ ] :poop: Качество кода
  • [ ] :trollface: Другое

Важность Статья на русском

  • [ ] :broken_heart: Блокирующая / Blocker
  • [x] :heart: Критическая / Critical
  • [ ] :yellow_heart: Важная / Major
  • [ ] :blue_heart: Незначительная / Minor
  • [ ] :green_heart: Информационная / Info
  • [ ] :revolving_hearts: Другое

Тэги Статья на русском

  • [ ] STANDARD - "Нарушение стандартов 1С"
  • [ ] LOCKINOS - "Не будет работать в другой ОС"
  • [ ] SQL - "Проблема с запросом"
  • [ ] PERFORMANCE - "Проблема производительности"
  • [ ] BRAINOVERLOAD - "Непонятный код"
  • [x] BADPRACTICE - "Плохая практика программирования"
  • [ ] CLUMSY - "Излишние действия"
  • [x] DESIGN - "Ошибка в проектировании"
  • [ ] SUSPICIOUS - "Подозрительный код"
  • [x] UNPREDICTABLE - "Непредсказуемо работающий код"
  • [ ] DEPRECATED - "Устаревшая функциональность"
  • [ ] ERROR - "Ошибочная конструкция"
  • [ ] LOCALIZE - "Проблемы локализации"

Время на исправление (минут)

10

Дополнительная информация

По умолчанию должна быть выключена

bapho-bush avatar Dec 16 '21 13:12 bapho-bush

Предлагаю оставить включенной по умолчанию. но уменьшить важность до Важной и указать Качество кода, а не Ошибка

artbear avatar Dec 16 '21 13:12 artbear

по поводу качества кода/ошибки прям спорно. это такой жуткий error prone...

nixel2007 avatar Dec 16 '21 13:12 nixel2007

но тоже в принципе за включение по умолчанию

nixel2007 avatar Dec 16 '21 13:12 nixel2007

по поводу качества кода/ошибки прям спорно. это такой жуткий error prone...

И куда таки лучше это запихать?

bapho-bush avatar Dec 16 '21 13:12 bapho-bush

Это прямо таки глупость какая-то! Совсем собираетесь лишить нас разработчиков свободы в принятии решений: мы в состоянии разобраться использовать нам директиву "вместо" либо нет и самостоятельно ответить по последствиям.

plaptevVyp avatar Dec 16 '21 18:12 plaptevVyp

Это прямо таки глупость какая-то! Совсем собираетесь лишить нас разработчиков свободы в принятии решений: мы в состоянии разобраться использовать нам директиву "вместо" либо нет и самостоятельно ответить по последствиям.

Для таких есть возможность выключить диагностику и забыть её как страшный сон, дальше "принимая решения и отвечая по последствиям". Никто не обязывает всегда держать диагностику включенной и оперативно исправлять срабатывания по всей кодобазе.

Ровно как и диагностику обязывающую всегда в условных конструкциях держать ветвь Иначе. И ещё ряд диагностик.

bapho-bush avatar Dec 16 '21 18:12 bapho-bush

В плагине для ЕДТ уже реализовано https://github.com/1C-Company/v8-code-style/issues/458

artbear avatar Apr 22 '22 18:04 artbear