Это предварено моими главными комментариями.
Я клонировал ваш репозиторий для разработки.
В конце концов я смог сделать make -i
. Вывод составил около 500 строк [ошибок].
Итак, ошибок для обоснования автоматизированного сценария недостаточно (т. Е. К тому времени, когда вы доберетесь до качества производства сценария, вы сможете выполнить ручную проверку и исправление). за меньшее время).
И некоторые из ошибок должны быть проверены на наличие ошибок logi c, в частности -Wmaybe-unitialized
, что вас и беспокоит. Теперь самое время определить, можно ли просто изменить: int foobar;
на int foobar = 0;
. Если так, то я так и сделаю. (т.е.) Если код, основанный на иерархии if
, никогда на самом деле не использует значение, когда оно не инициализировано, добавление int foobar = 0;
просто сообщает компилятору STFU о проблемах.
Но это может на самом деле быть ошибкой. Если , код пути, на который жалуется предупреждение, - . Возможно, путь к коду не обнаружен на практике, но с другими входными данными [в будущем] выполняется код . Это будет [скрытая] ошибка.
Как минимум, простая инициализация с = 0;
изменит непредсказуемые случайные побочные эффекты на предсказуемые побочные эффекты. Если функция дает сбой, она теперь будет работать непротиворечивым / предсказуемым образом (вместо того, чтобы полагаться на случайное значение, которое она получает в [неинициализированном] фрейме стека).
Но это было бы хорошее время для регистрации проверьте код на наличие [скрытых] ошибок. Вы получите больше атакующих; -)
Количество ошибок: -Wunused-parameter
. Обычно я добавляю -Wno-unused-parameter
к CFLAGS
, если код известен для работы. IMO, это действительно даже не ошибка [реальная, мнимая или теоретическая] в большинстве случаев - это не ошибка до не использование параметра, просто предупреждение для новички пишут новый код. Если у вас есть сигнатура функции, у которой есть дополнительный параметр, который вы должны сохранить для обратной совместимости, но функция замены не нуждается в этом, вы получите здесь ложное срабатывание.
Для -Wunused-but-set-variable
, Я бы удалил объявление и присвоение ему. Triage против int result = important_function_that_changes_globals();
. Там сохраняют вызов функции. Заменить на: important_function_that_changes_globals();
. Или, если вы должны [и лично я никогда не сделать это]: (void) important_function_that_changes_globals();
Но есть другие, которые указывают на ошибки (например) -Wstringop-truncation
, что указывает на [ возможные] переполнение буфера.
База кода в подкаталоге src
составляет [только] 30 000 строк. Опять же, всего около 500 строк сообщений об ошибках.
Исходя из моего опыта, ошибки могут быть обработаны за 1-3 дня [и максимум за одну неделю].
Но, как jarmod отметил, что могут быть более серьезные ошибки [которые только обнаруживаются при отладке во время выполнения].