Comments 64
А ведь Google выдаёт деньги за баги найденные в Chrome, решили сорвать банк? ;)
Хотя позиция ваша касательно этого вопроса мне нравится, желаю вам большого заказа от Google
Хотя позиция ваша касательно этого вопроса мне нравится, желаю вам большого заказа от Google
+16
Ошибка в коде не всегда есть баг (ИМХО). Этот код может либо не вызываться никогда, либо выдавать правильные результаты на тех наборах данных, которые в него подаются. Для меня баг, это тройка из: шагов для воспроизведения, ожидаемого результата и фактического результата, где ожидаемый и фактический результат расходятся. Зная ошибку в годе совершенно не факт, что так уж просто заставить ее выстрелить.
+8
>> Ошибка в коде не всегда есть баг
Это называется уязвимость. Когда вы читаете в новостях «обнаружена уязвимость» — это вот значит, что кто-то нашел ПОТЕНЦИАЛЬНУЮ ошибку.
Это называется уязвимость. Когда вы читаете в новостях «обнаружена уязвимость» — это вот значит, что кто-то нашел ПОТЕНЦИАЛЬНУЮ ошибку.
+3
Нет, это значит, что ожидаемый и фактический результат расходятся и для этого есть шаги для воспроизведения.
+4
Да, согласен с вами, то что накопали авторы статьи это уязвимости. Причем опять же, не факт, что все их можно эксплуатировать.
0
Согласен — хороший статический анализатор кода стоит покупки.
Раз мы говорим о PVS — будет ли выпущена command-line версия для linux? Будет ли PVS выпущена в качестве библиотеки и таким образом появится возможность написать плагины для других IDE (e.g. Eclipse)?
Раз мы говорим о PVS — будет ли выпущена command-line версия для linux? Будет ли PVS выпущена в качестве библиотеки и таким образом появится возможность написать плагины для других IDE (e.g. Eclipse)?
0
судя по ихнему сайту — любая глупость за ваши деньги
сами они даже ветку под линь развивать не собираются
сами они даже ветку под линь развивать не собираются
0
Вы лично готовы купить Линукс-версию?
+2
Если Linux версия будет находить баги в нашем c/c++ коде то да. Я поговорю с манагером и скорее всего купят продукт, копий десять. С покупкой полезного софта (по разумной цене) никогда проблем в нашей компании не было.
+1
10 копий — это цена почти Site License. Напишите мне на e-mail и мы обсудим варианты.
+2
Если Linux версия будет находить баги в нашем c/c++ коде
А вы заметите свои баги за багами gcc?
А вы заметите свои баги за багами gcc?
0
Прошу поговорить с манагером. :)
PVS-Studio для Linux.
PVS-Studio для Linux.
0
Свершилось: PVS-Studio для Linux.
0
Да, для этого им будет необходимо приобрести PVS-Studio.
Вот так они и купят разработку или вашу организацию целиком. :)
+41
Не совсем понял про двойное удаление файла: получается некая двусмысленность, если в итоге файл удалится на второй попытке, а при этом в лог пойдет запись о том, что удалить нельзя.
0
Не вижу двусмысленности. Если 2 раза не удалось удалить, то запишем сообщение в лог.
+4
Ну так если один раз удалилось, то тоже пишется в лог, нет?
0
То есть как, одно удаление завалилось, другое — нет => условие по-любому будет истинным => будет запись в лог.
0
if (!file_util::Delete(db_name, false) &&
!file_util::Delete(db_name, false)) {
Читаю код вслух. :)
!file_util::Delete(db_name, false) — Если нам не удалось удалить файл
&& — И при этом
!file_util::Delete(db_name, false) — нам опять не удалось удалить файл
То поместим сообщение в лог.
!file_util::Delete(db_name, false)) {
Читаю код вслух. :)
!file_util::Delete(db_name, false) — Если нам не удалось удалить файл
&& — И при этом
!file_util::Delete(db_name, false) — нам опять не удалось удалить файл
То поместим сообщение в лог.
+2
if (!file_util::Delete(db_name, false) &&
!file_util::Delete(db_name, false))
Очень странное представление о красивом коде. Если файл не удалился, но есть подозрение что он может удалится позже — нужно создать очередь для отложенного удаления.
+10
зато так быстрее.
+2
Это, к стати, вполне может быть не красивым кодом, а грязным хаком, написанным из-за осознания глючности метода file_util::Delete или из-за знания того, что этот файл может в данный момент читаться другим потоком самого Хромиума и нежеланием с этим потоком общаться на предмет ожидания освобождения ресурса.
+8
А всего в багтрекере Хромиума на данный момент 27000 багов. Солидное число. Хотя и проект, конечно, огромный.
+1
Планируется ли версия под Linux?
Тот же Гугл имеет несравнимо бОльшую кодовую базу под Линуксом.
Тот же Гугл имеет несравнимо бОльшую кодовую базу под Линуксом.
0
Да, если хватит здоровья и повезёт. А пока нет, по ряду причин:
1) Это большая сложная задача. Подробнее в FAQ: "А
что, у вас только под Windows версия? Сделайте под Linux, это же просто! Какая разница, в какой операционной системе текстовые файлы (с кодом) анализировать?"
2) В Windows проще зарабатывать деньги. Не забывайте, что мы стартап, а не финансируемый отдел корпорации. Что заработали, то и потратили на развитие.
1) Это большая сложная задача. Подробнее в FAQ: "А
что, у вас только под Windows версия? Сделайте под Linux, это же просто! Какая разница, в какой операционной системе текстовые файлы (с кодом) анализировать?"
2) В Windows проще зарабатывать деньги. Не забывайте, что мы стартап, а не финансируемый отдел корпорации. Что заработали, то и потратили на развитие.
+2
2й аргумент совершенно неубедителен. Ваша программа же не для конечных пользователей (которые в большинстве сидят на Windows) рассчитана, а на разработчиков. А кроме прикладных программ для Windows есть огромный рынок Linux серверов, embedded и другого, где еще не всегда возможно использовать дебаггер и профайлер, как в Windows.
-4
Вы пишите, что пользователей под Windows больше. Разработчиков для таких пользователей тоже больше, разумеется.
Кстати вот Вы готовы купить линукс-версию pvs-studio?
Кстати вот Вы готовы купить линукс-версию pvs-studio?
0
Ну вот возьмите большинство веб-сервисов. Большинство их используют из Windows, но это не означает, что разработчики используют Windows. Поддержка GCC, кстати, даст почти бесплатно еще и поддержку Mac OS X, с более платёжеспособной аудиторией (США).
Сам купить не готов, я студент и крупными проектами на C++ не занимаюсь и таких денег не имею. Несколько раз после таких статей хотел пощупать демо (проанализировав какие-нибудь open source проекты), и каждый раз вспоминал, что оно win-only.
Сам купить не готов, я студент и крупными проектами на C++ не занимаюсь и таких денег не имею. Несколько раз после таких статей хотел пощупать демо (проанализировав какие-нибудь open source проекты), и каждый раз вспоминал, что оно win-only.
-5
Вот видите, Вы купить не готовы, но легко даете советы в какую сторону нам развивать наш бизнес…
+15
Надо заметить, авторы Valgrind пошли наоборот: начали с Linux, а потом написали FAQ почему их не будет на Windows (слишком сложно, проще переписать с нуля)
По опыту работы в кросс-платформенной системе тестирования (ThreadSanitizer) могу сказать что под Linux писать всё-таки проще: почти всё что нужно документировано, да ещё и с исходниками. А в потрохах Windows нередко чувствуешь себя слепым
По опыту работы в кросс-платформенной системе тестирования (ThreadSanitizer) могу сказать что под Linux писать всё-таки проще: почти всё что нужно документировано, да ещё и с исходниками. А в потрохах Windows нередко чувствуешь себя слепым
+2
Да, такая версия появилась: PVS-Studio для Linux.
0
«подобные ошибки вполне имеют место быть»
Нет такого выражения как «имеет место быть». «Имеет место».
Нет такого выражения как «имеет место быть». «Имеет место».
-2
При этом функция возвращает массив из элементов 'char' длиной N.
Функция возвращает ссылку на массив.
+1
А вы даете всем OSS проектам копии лицензий, или это выборочно? Просто я бы не отказался поанализировать вот этот проект. :)
0
Пост про это здесь.
0
На моём крупном проекте триальная версия PVS-Studio настолько сильно искажает результат (не показывает), что невозможно понять, есть ли какая-нибудь польза от неё вообще…
0
А вы исходник PVS прогоняли через PVS?
+8
У нас ежедневно ночные билды проверяются. И иногда находим ошибки, разумеется.
+4
Например, совсем недавно сами в себе нашли это.
+1
Насчет двойного удаление, зачем придумывать очередной хитрый механизм «Все гениальное — просто», и тут просто и без выдумки аля через «третью переменную».
0
Надо сказать, частично причиной «качественности проекта Chromium» является то, что ощутимая часть его кода регулярно тестируется динамическими анализаторами: Valgrind, ThreadSanitizer, HeapChecker
build.chromium.org/p/chromium.memory/console
Но увы, они действительно не могут найти все ошибки.
И, к сожалению, Valgrind не работает на Windows (см. найденную Вами ошибку в time_win.cc)
«При работе с проектом Chromium было на самом деле не очень понятно, кто кого проверяет. Мы нашли и исправили в PVS-Studio несколько ошибок»
Точно, в вышеупомянутые динамические анализаторы тоже было зафайлено немало багов :)
А вот многие коммерческие анализаторы, вроде Intel Parallel Studio и Purify, весьма плохо работают с Chromium. Они не прошли стадию «непонятно кто кого проверяет»…
build.chromium.org/p/chromium.memory/console
Но увы, они действительно не могут найти все ошибки.
И, к сожалению, Valgrind не работает на Windows (см. найденную Вами ошибку в time_win.cc)
«При работе с проектом Chromium было на самом деле не очень понятно, кто кого проверяет. Мы нашли и исправили в PVS-Studio несколько ошибок»
Точно, в вышеупомянутые динамические анализаторы тоже было зафайлено немало багов :)
А вот многие коммерческие анализаторы, вроде Intel Parallel Studio и Purify, весьма плохо работают с Chromium. Они не прошли стадию «непонятно кто кого проверяет»…
+3
я вот только не понял
как там моги оказаться проверки unsigned на меньше нуля
gcc это ворнингами же выдаёт
как там моги оказаться проверки unsigned на меньше нуля
gcc это ворнингами же выдаёт
+2
> Количество строк посчитать затрудняюсь
В любом нормальном шелле эта задача решается за несколько секунд. Конечно, решение не точное (например, хидеры не ищет), зато позволяет очень быстро и просто получить качественную оценку объёма кодовой базы.
find . -name \*.cc | xargs cat | wc -l
В любом нормальном шелле эта задача решается за несколько секунд. Конечно, решение не точное (например, хидеры не ищет), зато позволяет очень быстро и просто получить качественную оценку объёма кодовой базы.
-1
Прошу сделать это и написать результат. Мне интересно иметь представление о количестве строк кода.
0
Сделал так:
Итого: 45242 файла, 12683437 строк (12.5 М! Внушает!)
$ for EXT in cc c cpp h ; do files=`find . -name \*.${EXT}|wc -l`; rows=`find . -name \*.${EXT}|xargs cat|wc -l`; echo $EXT: $files files, $rows rows; done
cc: 8161 files, 3187779 rows
c: 5912 files, 3143894 rows
cpp: 8170 files, 2426530 rows
h: 22999 files, 3925234 rows
Итого: 45242 файла, 12683437 строк (12.5 М! Внушает!)
+1
Sign up to leave a comment.
PVS-Studio vs Chromium