Открыть список
Как стать автором
Обновить

Комментарии 10

полезности и эффективности использования PVS-Studio для контроля качества кода. Хотя мы уже писали про поверку проекта Qt (в 2011, в 2014 и в 2018), очень полезно сделать это вновь. Так, мы на практике демонстрируем простую, но очень важную мысль: статический анализ должен применяться регулярно!

А толку?! Они хоть что-то из этого исправили?!


Наши статьи показывают, что анализатор PVS-Studio умеет находить множество разнообразнейших ошибок. И, как правило, авторы проектов быстро исправляют описанные нами ошибки.

Только не Qt: многие баги годами не исправляют. Вот например с датами: https://bugreports.qt.io/browse/QTBUG-67383 — вообще решили забить на него!

Общение, конечно, "приятное". С этими ребятами очень сложно. Я ещё баги для Qt4 репортил. Ни один не исправили, и я просто забил на них, где-то свои костыли написал для обхода, где-то просто смирился.


Я посмотрел в доки, там есть слот start(int) и метод start(std::chrono::milliseconds), который не слот. Зачем так сделано не совсем понятно.

Да там разные есть: есть очень приятные и разумные, а есть мягко говоря странные. Пренебрежение к людям в конечном итоге может вылезти им неизбежными и большими проблемами. У меня также несколько десятков неисправленных багов.

Наверное потому что std::chrono::milliseconds не зарегистрирован в Qt как тип,
а вот int зарегистрирован. И поэтому можно соединить сигнал из одного потока и слот start(int), а вот если бы start(std::chrono::milliseconds) был слотом то можно было бы совершить ошибку и узнать об этом только в runtime.


И кстати в баге же указан QDeadlineTimer, там как раз int64, чем он не подошел?

Фрагмент N11: скопировали блок кода и забыли изменить

Предупреждение PVS-Studio: V581 [CWE-670] The conditional expressions of the 'if' statements situated alongside each other are identical. Check lines: 2719, 2721. moc_qquickpath_p.cpp 2721


Это не совсем ошибка копипасты. moc_* файлы генерируются автоматически с помощью meta object compiller. Первопричина этой ошибки скорее всего в том, что в классе QQuickPath ( code.qt.io/cgit/qt/qtdeclarative.git/tree/src/quick/util/qquickpath_p.h#n516 ) дважды объявлен Q_INTERFACES(QQmlParserStatus) (строка 520 и 529)

По поводу кода возврата -1, а не 0. Программист от, к примеру, машиностроения как раз таки ожидает код ошибки с единицей с старшем бите, типа FFFFh. Ноль может оказаться январём, если считать с нуля. А отрицательное значение точно не результат.

Код от этого правильным не становится. :)
По мне так операции с датами — это всегда источник головной боли.
Фрагмент N3
Не могу понять строку
str << "<html></head><body><h2>Qt Pixeltool</h2><p>Qt " << QT_VERSION_STR

Разве не нужно открывающий тег ?
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.