Pull to refresh

Comments 37

Некоторые (я и сам иногда так делаю), сразу смотрят комментарии, чтобы понять, стоящая статья или нет. Для них скажу, что суть статьи в этом. А подробности, будут чуть позже.

А, то есть пока не бежать чинить?:)

Может ли Ахилес обогнать черепаху?

В смысле пока вы эти будете чинить, мы еще опубликуем статью :-).
О, я могу дать ответ на такой вопрос, как это ни странно :). Догонит! Там как раз всё. Даже чуть больше, чем будет в статьях.
Чинить уже можно. Для этого и дал ссылку. А статьи будут не только описывать ошибки и содержать филосовские размышления.
Баг с truncate судя по всему сидит долго-долго… Что-то я даже не знаю как его чинить…

И гитхаб не хочет git blame показывать, чтоб потыкать автора палочкой :D
---а его смену приходит «developer advocate».

В контексте специализации PVS-Studio я бы сказал — «следователь».

---Проект Chromium и используемые в нём библиотеки состоят из 114 201 файлов на языке C и C++. Количество строк кода 30 263 757.

Мне доводилось рабатоть с проектами больше чем 40 мег кода. И оба прекрасно жили в VC 6.0-2005. Может количество проектов в солюшине зашкаливает?

В 2010 я вашим анализатором гонял Blackberry Server. Даже прикупил 2 лицензии тогда.
Вы путаете количество строк кода и количество мегабайт кстати похоже.
Примечание. Если говорить о Chromium (+библиотеки), то размер C++ кода: 1 189 654 629 байт. Т.е. больше Гигабайта. Сильно больше 40 мегабайт. :)
Опечатался — более 40 гигабайт конечно.

Были отдельные файлы больше мегaбайта.
Код тела основного потока сервера — процедура более 10 тыщ строк — пришлось просить Perforce поправить ихной продукт, что мог работать с такими файлами. Компиляция проекта шла порядка 5 часов.
Я с хромиумом работаю, да, там очень много проектов в солюшене и потом ещё студия пытается пройтись по зависимостям. Кое-как можно загрузить в VS основу(/chrome/browser) без third_party. Ну и приходится грузить только солюшены нужных частей. CLion тоже не работает нормально даже если память увеличить.
Если прикинуть что одна строчка в среднем занимает около 40 символов, то размер кода выходит > 1 GiB
В 2010 я вашим анализатором гонял Blackberry Server. Даже прикупил 2 лицензии тогда.


Ээээ… Константин? RIM?
Ха! Вот так встреча, очень рад! Константин, давно не виделись. И у нас все ходы записаны. Обалдеть, 2007 год…

From: Konstantin ... [mailto: ... @rim.com]
Sent: Friday, March 2, 2007 6:54 PM
To: Evgeniy Ryzhkov <...@viva64.com>
Subject: RE: Viva64


Уже и RIM нету…

Кстати компания RIM должна была стать вообще нашим первым клиентом. Но не стала (первым), потому что только NDA мы согласовывали и подписывали год. И не потому что мы такие тормозные или требовательные, просто бюрократическая машина RIM не позволяла по какой-то причине просто купить маленькую программку за несколько сотен долларов. К счастью, мы смогли выдержать это все, завершить сделку и даже пережить RIM.

Времена…
Флаг truncated должен быть равен true, если текст слишком длинный, то есть если выполняется условие if (len > kMaxShortPrintLength).

Я это понял, глядя глазами в код в течение минуты. Но ведь наверняка у вас на условии if (len > kMaxShortPrintLength) есть ещё одна сработка вроде "expression 'len > kMaxShortPrintLength' is always false". Разве нет? Если так, то сразу становится очевидно, что вторая сработка — следствие первой, надо просто в каждом методе смотреть предупреждения по порядку.

Вам бы логотип поменять, т.к. он создаёт негативный образ для продукта.
На футболке у Андрея изображен единорог который радугой блюёт на PVS-Studio.

Представьте человека, который первый раз вас видит.
Первое, что он видит это PVS-Studio и яркая блювотина, какая ассоциация у него возникнет с вашем продуктом?

Я понимаю, что у вас крутой продукт, и искренне желаю вам успехов, но этим логотипом часть клиентов вы от себя отпугиваете.
Качественный продукт — это не только хорошее содержание, но и оформление.
Стал бы iPhone таким популярным, если бы у него на задней панели из яблока снизу выливалась цветная радуга на название.
Стал бы iPhone таким популярным, если бы у него на задней панели из яблока снизу выливалась цветная радуга на название.
Не знаю, что ответить. У меня и iPhone такой. :)
Для себя рисовать можно что угодно, но для компании надо делать чтобы нравилось пользователям.
Все-таки логотип это лицо компании и он не должен вызывать отторжения.

Вот на этой толстовке не плохо, только надпись PVS-Studio плохо читается.
Ещё у вас логотип CppCat классный был.
Ещё у вас логотип CppCat классный был.
Вот только проект CppCat закрыт, а PVS-Studio продолжает жить :).

Проект CppCat вообще был «правильным». И логотип красивый, и цена «правильная» по лучшим рекомендациям людей. И сайт простой. И правильная система защиты от взлома. В общем, всё правильно было, вот только денег не приносило.

А PVS-Studio с радужным единорогом, и по мнению многих неправильной стратегией рекламы, лицензирования и т.д., продолжает жить и привлекать новых пользователей ;). Жизнь она такая… Да…
К сожалению, наш директор придерживается такого же подхода.
Говорит, что прикрутить PVS-Studio к проекту было бы правильно, но доход это не увеличит. Поэтому не будем увеличивать расходы на лицензии и ограничимся пока тестами.
PVS-Studio увеличивает доход только нам. Всем остальным PVS-Studio сокращает расходы.
На футболке у Андрея изображен единорог который радугой блюёт на PVS-Studio.
Единорог блюёт на травку, а травка кишит bug'ами…

Q: Купит ли Гугл PVS, чтобы исправить ошибки в Chrome?
A: Вряд ли, потому что Гугл настолько крут, что он, вероятно, мог бы создать анализатор, превосходящий PVS-Studio по качеству поиска ошибок в коде Chrome. Но раз это до сих пор не сделано, значит приоритета исправлять мелкие (или не очень) баги в коде Chrome у Гугла нет.
Мне это как-то так видится.

Неправильно видится. Новые диагностики добавляются в clang регулярно.

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

Среагировать на намёк можно, конечно, но это уже выходит за рамки задачи «купить XXX лицензий».
Попробуйте самостоятельно понять в чём тут дело. Я добавил комментарий "// <=" туда, куда указывает анализатор.

truncated = true никогда не присвается. Блок с присвоением дублирует предыдущий, в котором уход на return.
P.S. О, автор сам пояснил абзацем ниже свою загадку.
Sign up to leave a comment.