Комментарии 7
Спасибо за проделанную работу, как разработчик и мейнтейнер данного проекта обязательно изучу и исправлю найденные проблемы. С онлайн-отчетами Sonar на этом же проекте можно ознакомиться тут.
Пара замечаний по найденным ошибкам:
Предупреждение номер 2
Одинаковый код в обеих ветках образовался в результате рефакторинга, а не копипаста — если до этого для LOOK_AT_FACE_DOWN применялась специальная логика, то после изменения она стала общей для всех.
Предупреждение номер 4
Ошибка образовалась в результате оптимизации, когда был добавлен кеш в виде savedSpecialRares, куда и должны были сохраняться заранее подготовленные списки карт из базы. Т.е. данный код когда-то работал корректно, но после оптимизации сломался.
Остальные всё по делу.
P.S. Основная сложность данного проекта — не все карты или режимы игры популярны, поэтому многие вещи могут годами оставаться незамеченными (без баг-репортов от пользователей). Поэтому мы стараемся, по возможности, добавлять побольше юнит-тестов.
Пара замечаний по найденным ошибкам:
Предупреждение номер 2
Одинаковый код в обеих ветках образовался в результате рефакторинга, а не копипаста — если до этого для LOOK_AT_FACE_DOWN применялась специальная логика, то после изменения она стала общей для всех.
Предупреждение номер 4
Ошибка образовалась в результате оптимизации, когда был добавлен кеш в виде savedSpecialRares, куда и должны были сохраняться заранее подготовленные списки карт из базы. Т.е. данный код когда-то работал корректно, но после оптимизации сломался.
Остальные всё по делу.
P.S. Основная сложность данного проекта — не все карты или режимы игры популярны, поэтому многие вещи могут годами оставаться незамеченными (без баг-репортов от пользователей). Поэтому мы стараемся, по возможности, добавлять побольше юнит-тестов.
+4
Все исправления для статьи можно посмотреть в этом PR. Так же дополнено:
Предупреждение N7
Код корректный и лишний else не имеет смысла. Там просто немного сломанная логика в самом коде. Оба вызова для selectUser используют поиск пользователя по имени. В первый раз происходит попытка создания новой сессии. Если она успешна (такого пользователя нет онлайн) — возвращается сессия. Если же она провалилась (такой пользователь уже онлайн) — возвращается пустое значение и запускается дополнительная проверка (можно ли этого пользователя переподключить). Соответственно, во втором вызове поиск по имени будет всегда возвращать результат, и else не нужен.
Предупреждение N7
Код корректный и лишний else не имеет смысла. Там просто немного сломанная логика в самом коде. Оба вызова для selectUser используют поиск пользователя по имени. В первый раз происходит попытка создания новой сессии. Если она успешна (такого пользователя нет онлайн) — возвращается сессия. Если же она провалилась (такой пользователь уже онлайн) — возвращается пустое значение и запускается дополнительная проверка (можно ли этого пользователя переподключить). Соответственно, во втором вызове поиск по имени будет всегда возвращать результат, и else не нужен.
0
Минутка МТГ-занудства про КДПВ: статический анализатор, как средство наведения порядка в коде, должен быть белым (возможно, бело-синим), но никак не красным :)
All your Programs get +1/+1.
2T: exile target Bug.
+1
Тогда уж скорее не exile, а destroy, потому как баги имеют нехорошее свойство всплывать повторно, в том числе порождаться на том же месте. Пусть статический анализатор и помогает их фиксить, гарантий на то, что баг "достанут с кладбища" все-таки нет.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Проверка кода XMage и почему недоступны специальные редкие карточки для коллекции Dragon's Maze