Comments
Что-бы нарушить тишину, напишу комментарий.

У меня есть новость для фанатов PVS-Studio и нашего Единорога!
Вы можете скачать себе принты для кружки и футболки, а также обои на рабочий стол (wallpaper) с логотипом PVS-Studio. Обратите внимание, что это не магазин, мы не продаем кружки и футболки, а даем любому возможность сделать себе (или своим коллегам) такие кружки/футболки.

Ссылка: www.viva64.com/ru/merchandise
Волшебно! Радуга, единорог, PVS, лепота! Будет теперь в чём на конфы по C++ ходить :)
Интересно, в проекте одновременно используется QString, wstring и WCHAR. Qt'a должно было хватить для всех целей, в том числе взаимодействия с WinAPI.
Видимо кто-то из программистов пришел в проект из мира windows, или это какие-то мосты к нативным api.
Конкретно в этом месте приведен код из маленькой утилитки Updater, которая написана на WinAPI без использования Qt и занимается только обновлением бинарника и перезапуском приложения при автообновлении. Однако в местах, где работа идет с WinAPI напрямую, а не через Qt, используются массивы WCHAR и в коде основного приложения.
Запили несколько изменений в Updater насчет WCHAR, Unicode и «всего такого» (С)
Посмотрите pull request на досуге.
Там есть места еще интересней — зачем консольную утилиту делать как QGuiApplication и вызывать единственный рабочий метод через таймер — для меня осталось загадкой (ну это помимо необходимости наложения патчей на Qt для сборки приложения).
В проекте MetaEmoji нужна была работа с графической библиотекой и шрифтами, выбор шрифта по умолчанию (чтобы в него загрузить другую font family) чего-то проще всего на тот момент было сделать через QGuiApplication, возможно это делается правильно как-то иначе.

Про рабочий метод через таймер — это совсем старое что-то, копипаста какой-то болванки консольного Qt-приложения из интернета, потом просто менять не стал, хотя разумеется это избыточно.

Про патч — вывод текста со смайлами делается своими силами, для этого пришлось получить доступ к внутренностям Qt (через патч) + там есть немного багфиксов и немного фич. Но совсем без патча бы не получилось сделать его таким образом (приемлемая скорость отрисовки и скролла истории с сотней тысяч сообщений, которые могут содержать графические смайлы).
А что делать. На винде в Qt если в диалоге выбора файла вставить ссылку на изображение в интернете, то винда его загрузит, но Qt его в приложение не отдаст — пришлось патчить. На маке в Qt с ошибками реализован grab виджетов, не сделать переключение вкладок сочетаниями Ctrl+Tab / Ctrl+Shift+Tab, не сделать желаемое поведение трей-иконки — пришлось патчить. Для быстрого вывода и ресайза текстов со смайлами пришлось писать свою низкоуровневую обертку для вывода текста со ссылками и смайлами, для получения доступа к низкому уровню пришлось патчить…
А баги-то у Qt в багзилле есть соответствующие? Я думаю они, да и другие разработчики, были бы рады вашим патчам. И не нужно будет тащить патченный фреймворк.
Какие-то баги репортил (несколько), какие-то мелочи для себя правил (может у них так и задумано, что альт-стрелка при переходе влево на маке должно за пробелом останавливаться, а не перед) + от патча не удастся избавиться совсем потому что некоторые фичи очень специфически реализованы и в основной код в таком виде явно не пойдут, когда пойдут в другом — возможно перейду на дефолт реализацию. + как я уже писал нужен доступ к внутренностям библиотеки.
Всё-таки всякие фиксы можно через gerrit в апстрим протащить. Специфичные фичи можно оформить в виде отдельных библиотек. А то возможность на линуксах юзать системную либу весьма вкусная.
По опыту работы с багтрекером Qt могу сказать, что наличие реализованного и опубликованного пользователями патча обычно не ускоряет решение вопроса и внесение изменений в master. Насколько я понял, разработчики не могут использовать патчи сторонних пользователей из-за лицензионной политики Qt.
Как бы наличие патча, а не просто баг-репорта или фич-реквеста не замедляло изменений в мастер — пока придумают как написать чтобы желаемое поведение было, но с патчем не совпадало причём не только по именам. А то и вовсе исключает, если разумно никак не придумать.
По опыту пользования Gerrit'ом, то всё очень прозрачно и при наличии терпения быстро. Мои патчи вполне быстро попадали в основную ветку.
Опять же у меня иной опыт, то ли вам везло, то ли мне нет. Вот пример патча: https://codereview.qt-project.org/#/c/111962/. Его автора вы скорее всего знаете, один из разработчиков Qt. Патч висит на проверке уже несколько месяцев, как такое получается? Как вы свои патчи просовываете в master?
Периодически просить апрув или хотя бы ревью, так даже делают сами Qt разработчики, просто у каждого из них под сотню вот таких codereview висит. Ну и больше ментейнеров добавлять, точнее не абы кого, а тех кто отвечает конкретно за часть проекта https://wiki.qt.io/Maintainers

У меня довольно таки быстро заапрувили пару десятков патчей, но тут скорее из-за того что они были небольшими и легко проверялись. Ну и часто просят добавлять автотест, конечно если это возможно.
А людей в ревьюверы добавляли? Я сам так по началу обжигался и неделями ждал.
Баг правил весьма опытный разработчик Qt, в списке на ревью куча народа, но воз и ныне там.
во всех больших проектах, в которых я работал, всегда было штук 5 кастомных типов строк)
Жёлтый заголовок же )

«Проверка Telegram с помощью PVS-Studio» и «Проверка открытого Windows клиента для Telegram с помощью PVS-Studio» — немного разные вещи
Не в тему, но всё же.
Было бы очень интересно почитать про проверку PVS-Studio самой себя. Если это возможно. Понимаю, что вроде как разработчики должны бы это делать, но ведь есть факто случайности.

И вопрос по теме: после ваших проверок открытых проектов вы как-то сообщаете мейнтейнерам о найденных багах/проблемах или может быть правите сами и делаете пулл-реквесты?
Часто к нашим статьям задают одни и те же вопросы. Ответы на них мы собрали здесь: Ответы на вопросы читателей статей про PVS-Studio, версия 2015. Пожалуйста, ознакомьтесь со списком. www.viva64.com/ru/a/0085
Часто на комментарии с одними и теми же вопросами, Andrey2008 отвечает «Часто к нашим статьям задают...»
Я уже просто ухахатываюсь — к каждой статье в комментариях найдётся человек, который в глаза не видел предыдущие статьи и считает своим долгом задать эти два вопроса. Как так получается? Ну раз, ну два, ну пять, но это же уже раз двухсотый, наверное.
Может аудитория хабра или блога изменяется?

А анализ других языков когда будет?
Может аудитория хабра или блога изменяется?
Естественно. И именно поэтому надо вновь и вновь писать, и предлагать скачать и попробовать. :)

А анализ других языков когда будет?
По секрету всему Хабру. Мы занимаемся разработкой анализатора для C#. Опечатки они везде одинаковые.
Haskell, пожалуйста.

И с советами по производительности, да. Хотя бы типа «у вас тут кусок Data.ByteString.Lazy уходит в другое выражение, время жизни которого сильно больше времени жизни исходной строки, считанной из файла, поэтому подумайте о том, чтобы сделать copy этой строке, чтобы GC исходную оптимально заколлектил».

Я джва года такой инструмент жду.
номер из одиннадцати семерок скорее всего вполне реальный и стоит невероятного количества тенге :)
Я звонил года два назад (перепроверил сейчас) — сразу идет сброс, без гудков.
Либо там стоит «белый список», либо оператор что-то «нахимичил».
Ну телеграма у него судя по всему нету. По крайней мере, добавил его в список контактов, и он в телеграме не отразился)))
Возможно, его и не стоит править.

Править стоить по любому: добавить или else, или перевод строки.
Вопрос к авторам кода, буде таковые объявятся. Перечитываю фундаментальную книгу Макконнелла, не смог пройти мимо.

В первом фрагменте кода вы все именованные константы заменили на «магические числа» исключительно с целью обфускации, ведь правда?
Only those users with full accounts are able to leave comments. Log in, please.