eddy_em: (Default)
[personal profile] eddy_em
Позавчера добавил в конфигурации 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 переписать — из-за явного преимущества ООП в данном случае.

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 08:45 pm
Powered by Dreamwidth Studios