LINUX.ORG.RU

В ядре FreeBSD выявлено как минимум 40 ошибок с помощью анализатора кода PVS-Studio

 , , ,


3

8

Святослав Размыслов из команды PVS-Studio опубликовал статью о проверке ядра FreeBSD. Разработчики PVS-Studio славятся тем, что в целях рекламы своего продукта регулярно проверяют различные открытые проекты. Пожалуй, это один из самых приемлемых и полезных способов продвижения проприетарного приложения. На данный момент они проверили более 200 проектов и выявили в них 9355 ошибок. По крайней мере именно столько ошибок содержится в базе описания дефектов на сайте компании.

Теперь очередь дошла и до ядра FreeBSD. Исходный код для проверки был взят с GitHub из ветки 'master'. По заявлению Святослава, анализатор PVS-Studio выявил около 1000 подозрительных фрагментов в коде, которые с большой вероятностью являются ошибками или неаккуратным кодом. 40 наиболее интересных фрагментов кода он описал в статье. Список предупреждений был заранее передан команде FreeBSD, и она уже начала вносить правки.

Пара слов для программистов, ещё не знакомых с PVS-Studio. Это инструмент для выявления ошибок в исходном коде программ, написанных на языках С, C++ и C#. PVS-Studio выполняет статический анализ кода и генерирует отчёт, помогающий программисту находить и устранять ошибки. На сайте компании можно увидеть более подробное описание и скачать демонстрационную версию.

>>> Подробности

Ответ на: комментарий от vzzo

Типа ты завалил. Попробуй ещё разик ;)

anonymous ()

Увы и ах.
Ваш продукт для FreeBSD нужен как рыбе зонтик.
http://clang-analyzer.llvm.org
Для и для Linux он вполне пригоден.
Так что поменьше кричите о возможностях своей программы, а то клиентов с длинным рублем, или евро, распугаете. Попомните мои слова, когда человек прозревает, что его за идиота держат, он становится крайне агрессивным.

alkash ()
Ответ на: Да, регулярно. от Andrey_Karpov_2009

Теоретически в PVS-Studio может быть ошибка или ряд ошибок из-за которой он не может выявить эту ошибку или ряд ошибок в самом себе.

LaRusCat ()
Ответ на: комментарий от alkash

+1 Связочка scan-build + UBsan + Asan + флаг -Weverything даст тот же список предупрежденией и ошибок, если не больше. А так подняли шумиху со своим проприетарным анализатором, разработчики спохватились вычищать мусор, вместо запила фич, ничего плохого в целом, кроме пиара.

anonymous ()
Ответ на: комментарий от anonymous

+1 Связочка scan-build + UBsan + Asan + флаг -Weverything даст тот же список предупрежденией и ошибок, если не больше. А так подняли шумиху со своим проприетарным анализатором, разработчики спохватились вычищать мусор, вместо запила фич, ничего плохого в целом, кроме пиара.

Если все так легко и просто, то почему мы нашли более 9000 ошибок, не ставя такую цель? :) Это ведь просто побочный эффект рекламы. Думаю, это хороший повод задуматься о пользе, который приносит PVS-Studio.

Вы правы, что вычищать мусор малоэффективно и лучше делать новые фичи. Но делаете неправильные выводы. Правильный ход мысли: следует использовать статический анализатор регулярно. Желательно несколько. И тогда многие ошибки будут выявляться на самых ранних этапах. Собственно, прямо на этапе написания кода. Это позволит сэкономить время, которое в свою очередь можно будет потратить на разработку новых фич или поиск высокоуровневых/сложных ошибок, где анализаторы бессильны (искусственный интеллект пока ещё не изобрели).

Andrey_Karpov_2009 ()
Ответ на: комментарий от alkash

Ваш продукт для FreeBSD нужен как рыбе зонтик.

FreeBSD разработчикам мы и не стараемся что-то продать. Мы просто совмещаем приятное (рекламу) и полезное (улучшение открытых проектов).

http://clang-analyzer.llvm.org

У меня статья даже есть на эту тему: "Разработчики PVS-Studio, вы вообще слышали про Clang?".

Для тех, кто полениться читать. Самое важное, что мы находим ошибки в Clang. А это что-то, да значит: http://www.viva64.com/ru/b/0108/ , http://www.viva64.com/ru/b/0155/

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

У нас всё больше и больше довольных клиентов. Многие продлевают лицензии уже не первый раз. Я поэтому даже не знаю, как прокомментировать ваше мироощущение.

Andrey_Karpov_2009 ()
Ответ на: комментарий от crypt

а когда речь доходит до реальных (в данном случае то, что это узявимость в glibc, делает эту ошибку критической), то оказывает что клиенты, которые бы положились на вас просто напросто лоханулись.

Искусственный интеллект пока не изобретён. Более того, естественный интеллект (люди) тоже не быстро нашел эту ошибку. Так чего вы хотите от программы?

Цель анализаторов сократить количество ошибок в целом. Каких угодно. Пусть даже в основном они просты. Тем самым высвобождая время разработчиков на поиск более сложных ошибок или реализацию новых возможностей в приложении.

Вы ведь не ругаете проверку ошибок в Word, что он не находит логическую ошибку предложении: «Пётр Петрович нацепил на вилку лампочку и отправил её в рот.» Бред ведь. Следовало написать «сосиску». А Word молчит. Делаем вывод, что проверка ошибок в Word не нужна? Надеюсь аналогия понятна.

Andrey_Karpov_2009 ()
Ответ на: комментарий от Andrey_Karpov_2009

У меня статья даже есть на эту тему: «Разработчики PVS-Studio, вы вообще слышали про Clang?».

А что, похвально. Единственное оправдание - мы хотим денег. Из чего мы свой продукт делаем - не важно. Я даже не исключаю, что используете код BSD. А почему бы и нет?
Я не спорю, на каждого дурака найдется свой дурак. Так что и ваш проект имеет место быть.

alkash ()
Ответ на: комментарий от Andrey_Karpov_2009

такие ошибки находят случайно в процессе эксплуатации. интеллект тут ни при чем.

Цель анализаторов сократить количество ошибок в целом. Каких угодно.

тогда он и стоит соответственно. если анализатор находит только простые ошибки, то тут и комьюнити open source что-то может предложить.

Надеюсь аналогия понятна.

Не совсем. Вы можете объяснить на примере, почему это особая ошибка, а не такая которую должен был найти ваш анализатор:

https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html http://www.openwall.com/lists/oss-security/2015/01/27/9

crypt ★★★★★ ()
Ответ на: комментарий от crypt

Не совсем. Вы можете объяснить на примере, почему это особая ошибка, а не такая которую должен был найти ваш анализатор:
https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html http://www.openwall.com/lists/oss-security/2015/01/27/9

Буду честен, мне не интересно сейчас разбираться в этих текстах. Но я всё равно могу дать ответ на Ваш вопрос.

Сформулируйте в нескольких предложениях алгоритм поиска этого дефекта. Если Вы его сформулируете, я поясню почему у нас всё ещё нет такой логике. И возможно даже затем реализуем такую логику.

Если Вы затруднитесь это сделать, то значит это затруднит и анализатор. Это не искусственный интеллект. Если мысль сложно сформулировать человеку, то что Вы хотите от программы? Если Вы скажете, что код Вам не знаком и вы его не поднимете, то ответ тот-же. Раз сложно Вам, сложно и программе.

Andrey_Karpov_2009 ()
Ответ на: комментарий от Andrey_Karpov_2009

мне не интересно разбираться ... Но я всё равно могу дать ответ

нет уж спасибо. зачем мне такой ответ?

Если Вы затруднитесь это сделать, то значит это затруднит и анализатор.

?? кто из нас двоих зарабатывает деньги на анализе код? пока я вижу, что вы, человек который презентует себя и свой продукт, затруднились.

crypt ★★★★★ ()
Ответ на: комментарий от Andrey_Karpov_2009

Если Вы затруднитесь это сделать, то значит это затруднит и анализатор.

значит, просто в вашей команде нет программистов, способных найти такой баг. находите только простые ошибки, но продукт продаете дорого. все ясно.

crypt ★★★★★ ()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от anonymous

Тогда не забудь сказать прощай навсегда скорости выполнения.

А как связаны тормоза и (зависимые) типы?

DarkEld3r ★★★★★ ()
Ответ на: комментарий от Andrey_Karpov_2009

Кстати был на конфе по С++, послушал байки, довольно годно выступил.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.