Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

RTS2, работа над ошибками

Позавчера добавил в конфигурации RTS2 флаги "-Werror -Wextra" к CFLAGS и начал править
Два с половиной дня у меня заняло исправление всех (кроме одной) вещей, на которые ругался gcc. Лишь одну пришлось оставить: автор использует старую версию libjsoncpp, и gcc ругается, что кое-что уже "deprecated". Но с этим мне разбираться совсем никакого желания нет, если уж прижмет, заменю на свой JSON-парсер.

Самым распространенным у автора было не помечать как __attribute__((__unused__)) неиспользуемые аргументы функций. Вот и думай: то ли лишних аргументов он наделал ради того, чтобы в классах-наследниках их использовать, то ли это рудимент от старых версий и нужен рефакторинг.
Вторым по популярности была попытка присвоить const значениям, возвращаемым функциями.
Еще автор часто путал ssize_t и size_t (вроде size_t x = someth(); if(x < 0)…).
В одном месте вообще жесть была: мода вычислялась по прямой гистограмме! И ладно бы, было ограничение на 16 бит, так нет: даже для 64-битных выражений была попытка выделить 10¹⁹ байт и построить гистограмму.
В нескольких местах отсутствовала проверка кодов возврата system, open и т.п.
Случайно нашел утечку памяти (благодаря предупреждению о сравнении знаковой и беззнаковой величины в той же функции).

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

Явно нужны 5-10 студентов, которые бы провели полный рефакторинг RTS2 с удалением deprecated конструкций, фиксированием проблем и приведением всего дерева кода в одинаковый стиль оформления. Жаль, что нельзя на С RTS2 переписать — из-за явного преимущества ООП в данном случае.
Tags: rts2
Subscribe

  • Что-то не выходит с RGB-панелью

    Мне подсказали, что у моей панели P4 используется протокол HUB75E. Нигде не смог найти официальных документов на этот протокол - только всякие…

  • Не могу найти документацию по RGB-LED модулю P4

    Купил на али вот такой модуль. У меня уже был опыт работы с монохромным P10, думал, что здесь так же просто. А оказалось все не так. Распиновку…

  • Контроллер ШД хочу

    Товарищи электронщики, ну подскажите готовый контроллер управления 2-4 шаговыми двигателями, чтобы просто взял, подключил по USB к компьютеру, и…

promo eddy_em август 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 2 comments