Новое правило "Выражение сравнивается с самим собой"

sonar-bsl-plugin
add

#1

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

например, вот скриншот для Vanessa.ADD


#2

А это точно проблемы?

  1. Просто пример, как работает Ожидаем https://github.com/silverbulleters/add/blob/master/lib/CF/83xdd/Reports/Тест_Отчет/Ext/ObjectModule.bsl#L22
  2. Бесконечный цикл с выходом по условию из середины. Похоже на копипаст из 7.7, где не было типа Булево и приходилось писать Пока 1=1 Цикл https://github.com/silverbulleters/add/blob/master/lib/CF/83xdd/Reports/Тест_Отчет/Ext/ObjectModule.bsl#L22

#3

Да, это проблемы в обоих случаях.
Все-таки сравнение выражения с самим собой выглядит странновато :frowning: + чтение такого кода может быть затруднительно.

  1. возможно, программист все-таки ошибся
  2. зачем такой странный код, когда Пока Истина Цикл читается намного лучше

Обе ошибки уже исправлены в ADD и очень быстро.


#4

Гы - кто бы говорил ;-). Только не обижайся - на самом деле каждый раз после очередного правила мы охреневаем от собственного кода.


#5

Ага, очередная веселая регламентированная отчетность.

Копипаст до добра не доводит.

29 ТЫСЯЧ строк в одном единственном модуле :slight_smile:


#6

Не понял, а почему проверка сработала? Ну на первом входе будет неопределено, но ниже по циклу скорее всего есть код
последнийРезультатПриема = стрРезультатОбработкиЗапроса.ЧтоНибудь;
и на втором-последнем шаге уже будет что-то другое.


#7

Вторая часть условия ИЛИ - Выражение всегда будет ЛОЖЬ… Наверное должна быть

стрРезультатОбработкиЗапроса.Дата > стрРезультатОбработкиЗапроса.ДатаПриемаНаРаботу

#8

Да, верно. Я на жирное Неопределено среагировал.