LINUX.ORG.RU

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

 , , ,


2

8

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

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

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

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



Проверено: maxcom ()
Последнее исправление: maxcom (всего исправлений: 2)
Ответ на: комментарий от SZT

А в чем затруднения интерпретации? Делаете консольную программу, которую вызывают потом вместо компилятора..... Дальше пусть уже кто хочет делает интеграцию всего этого к своей IDE чтоб она на основе выданных записей подсвечивала конкретные строки кода. Что именно мешает так сделать?

Наша философия. Опять возникает путаница между консольной программой и полноценным удобным инструментом. Хотя даже с консольной версией есть нюанс. Ей как минимум надо передать информацию, что за компилятор используется. Это в стандарте C/C++ однороден. На практике это диалекты и надо знать какой именно. А ещё есть важные дополнительные настройки. И на практике не так просто бывает всё это подменить и передать в системе сборки. Вот уже есть неудобства. Выплюнуть текстовый файл - какой-то каменный век. Надо что-то куда-то прикручивать самому. И не понятно, как сделать интерактивный доступ к help (описанию диагностик). Про гибкую динамическую настройку фильтров я вообще молчу. Не удел остается система разметки неинтересный сообщений в базе. А как-же IncrediBuild... Всё остаётся мимо...

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

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

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

Ей как минимум надо передать информацию, что за компилятор используется. Это в стандарте C/C++ однороден. На практике это диалекты и надо знать какой именно

GCC/Clang для языка Си понимает -std=c89, c90 c99, c11, gnu90 gnu99 gnu11 и еще кучу для всяких плюсовых версий стандарта... это все передается при сборке через флаги. Не вижу никакой проблемы с передачей информации о том, какой именно компилятор используется и с каким стандартом компилируется код

А ещё есть важные дополнительные настройки.

А их никак нельзя задать через флаги?

И на практике не так просто бывает всё это подменить и передать в системе сборки. Вот уже есть неудобства.

Ну вот давайте конкретные сложности на практике опишите, что там неудобно может быть? Вместо вызова настоящего компилятора вызываем некий псевдокомпилятор, который выдает вместо объектных файлов псевдообъектные pvs-studio файлы, и на этапе какбы-линковки потом эти псевдообъектные файлы полностью анализируются в общем и целом. Где на практике возникнут проблемы?

Выплюнуть текстовый файл - какой-то каменный век. Надо что-то куда-то прикручивать самому.

Я считаю что когда софт намертво прикручен к ОДНОЙ КОНКРЕТНОЙ IDE работающей полноценно только в ОС семействах Windows - какой-то каменный век. Посмотрите например на список поддеживаемых к GDB фронт-энтов https://sourceware.org/gdb/wiki/GDB Front Ends

Как так получилось? У GDB есть некий открытый и документированный интерфейс https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html для взаимодействия отладчика со средой разработки. У вас же ничего подобного нет. Написали все эти фронт-энды к GDB отнюдь не сами разработчики GDB. Разработчики просто предоставили некий способ прикрутить этот GDB к чему вздумается, и этим воспользовались другие.

И не понятно, как сделать интерактивный доступ к help (описанию диагностик).

Это (вопрос интеграции с конкретной средой разработки, когда кто-то мышкой кликает на «диагностика №1234» - ему выскакивает описание, что эта диагностика означает) должно решаться теми, кто решит прикручивать все это к какой-то среде разработки(будь то Qt creator, eclipse или что там еще...). Просто нужна некая БД со списком ошибок, и возможность из этой БД по номеру ошибки получить текст описания ошибки, дальше уже как-нибудь сами без вас разберутся.

Про гибкую динамическую настройку фильтров я вообще молчу.

А что там за такая динамическая настройка фильтров, которую нельзя реализовать какими-нибудь регулярками? Можно всю базу с предупреждениями засунуть в какую-нибудь СУБД и потом оттуда что-то фильтровать, просматривать предупреждения только какого-то уровня и прочее, прочее, но это не надо заталкивать в саму систему для провеки исходного кода. UNIX-way. Достаточно выплюнуть в текстовом виде все предупреждения, и потом пусть уже пользователь сам делает какие-то выборки из них любым удобным ему способом, заталкивает это все в БД, или через grep какой-нибудь. Как угодно.

Итого, в результате получится полудикая неудобная утилита.

Вы похоже просто живете в каком-то параллельном мире, где удобно это когда утилита прибита гвоздями к какой-то одной конкретной неудобной(для многих пользователей GNU/Linux) кривой IDE и работает только в виндах.

А как-же IncrediBuild... Всё остаётся мимо...

distcc в помошь

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

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

Хочу этот пассаж отдельно прокомментировать вот этой ссылкой http://russian.joelonsoftware.com/Articles/Biculturalism.html и цитатой оттуда

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

Ну и так далее. Мне вот как раз ваш подход с прибиванием анализатора намертво к вижуалстудии кажется диким

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

......... Вы похоже просто живете в каком-то параллельном мире, где удобно это когда утилита прибита гвоздями к какой-то одной конкретной неудобной(для многих пользователей GNU/Linux) кривой IDE и работает только в виндах. ......... и т.д.

Дискуссия начинается длинная и неинтересная. Вы нас не убедите, поскольку у нас есть другое видение и представление о продукте, который мы делаем. Оно не совпадает с Linux-way. Хорошо или плохо это, я не знаю. Но поскольку наша команда и доходы растут, пожалуй, мы движемся все-таки в верном направлении. Прошу прощения, но разрешите отклонится. Можно написать много текста по каждому пункту, но в этом нет смысла. Каждый останется всё равно при своём мнении о правильно устроенном мире :).

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

Вы нас не убедите, поскольку у нас есть другое видение и представление о продукте, который мы делаем. Оно не совпадает с Linux-way.

Ну если она не совпадает с UNIX-way (это совершенно очевидно) то на что тут пиар вашего продукта, если большинство из здешних обитателей не пользуются Windows и Visual Studio как средой разработки? Это примерно как пытаться продать в Африку снегоуборочные машины, не находите?

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

разрешите отклонится.

Отличная опечатка.

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

Жду новой новости: «Мы проанализировали код ОС Windows 10».
Можете прям здесь отписаться! Будет очень интересно!

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

у нас есть другое видение и представление о продукте, который мы делаем. Оно не совпадает с Linux-way.

Так почему вы со своим гогном на сайт про лялекс лезете?

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

Жду новой новости: «Мы проанализировали код ОС Windows 10».

Ну Windows вряд ли нам кто-то даст проверить. А даже если такое и случится, то статью мы про это не напишем. А вообще мы очень любим проверять проекты Microsoft. Эти проекты качественны и найти в них что-то, хорошее достижение и хорошая реклама PVS-Studio.

Вот наши проверки С++ проектов:

Вот наши проверки С# проектов:

Здесь уже поднимался вопрос, что Microsoft приобретал PVS-Studio. Предвижу вопрос «Как же так, почему они ещё не проверили эти проекты с помощью PVS-Studio?». Поясняю. Мы продали не какую-то мега лицензию на весь Microsoft. А просто версию для какой-то одной команды, которая заинтересовалась. Так что можно делать продажи в эту компанию вновь и вновь. И мы стараемся это сделать. :)

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

проекты Microsoft. Эти проекты качественны и найти в них что-то, хорошее достижение
Не зря Microsoft славится ответственным подходом к разработке программного обеспечения и качественным кодом

аххахах ты что делаешь, прекрати

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

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

Не зря Microsoft славится ответственным подходом к разработке программного обеспечения и качественным кодом.

Вообще-то Microsoft славится ровно обратным.

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

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

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

Вы еще это, сделайте статический анализатор для ассемблера, ну чтобы он проблемные места с оптимизацией в компиляторе ловил, наподобии https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68027 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=27663

А то мне вот приходится вручную код просматривать на предмет этого. А всякие там плюсы, сишарпы... неинтересно :)

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

Пока рано про это думать

А чо там думать? Ява - тот же шарп, только проще. Раз осилили второе, значит у вас уже всё есть для первого.

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

Ну ОК! Пиарти дальше FreBSD. Я рад за вас. Честное слово. Для FreeBSD это только на пользу. Может сами потом будете ей пользоваться. Система хорошая, хоть и нашли вы в ней ошибки в коде.

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

Оно не совпадает с Linux-way.

Тогда, спрашивается, что вы тут делаете?

и доходы растут, пожалуй, мы движемся все-таки в верном направлении.

Вот и вся сущность мелкого буржуа...

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

Эти проекты качественны и найти в них что-то, хорошее достижение и хорошая реклама PVS-Studio.

Чувак, ты вообще отдаешь себе отчет в том, ГДЕ ты это пишешь? Ты понимаешь, что выставляешь свою контору неадекватом на весь ЛОР?

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

А что не так? Я видел (анализировал) код многих открытых и ряд закрытых проектов. Я и могу судить и сравнивать. Так вот, качество кода Microsoft находится на высоком уровне. Исключение, пожалуй, составляют только Windows 8 Driver Samples. Видимо они делались по остаточному принцыпу.

Так вот, качество исходников Microsoft на высоком уровне. Например, если сравнивать, с ReactOS, то колоссальная разница (не в пользу ReactOS :).

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

не хороший Вы человек.

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

«Я видел (анализировал) код многих открытых и ряд закрытых проектов. Я и могу судить и сравнивать.» Haiku OS на каком уровне?

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

А что не так?

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

Адекватные люди идут с таким сразу на винфак.

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

Здесь уже поднимался вопрос, что Microsoft приобретал PVS-Studio. Предвижу вопрос «Как же так, почему они ещё не проверили эти проекты с помощью PVS-Studio?». Поясняю. Мы продали не какую-то мега лицензию на весь Microsoft. А просто версию для какой-то одной команды, которая заинтересовалась. Так что можно делать продажи в эту компанию вновь и вновь. И мы стараемся это сделать. :)

Да хватит тут пиарить свой продукт. Лучше откройте исходники...

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

«Я видел (анализировал) код многих открытых и ряд закрытых проектов. Я и могу судить и сравнивать.» Haiku OS на каком уровне?

По моим ощущениям - средний вариант.

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

на винфак

на sql.ru тоже это любят

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

Я думаю, что мы принесли пользы открытому сообществу больше, чем все местные анонимы. :)

Помимо проверки множества проектов, мы ещё и нередко дарим ключ открытым бесплатным проектам.

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

Если подарите ключ FreeBSD - будет вообще прекрасно.

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

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

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

Помимо проверки множества проектов, мы ещё и нередко дарим ключ открытым бесплатным проектам.

Открою вам секрет, те кто участвуют в открытых проектах крайне негативно относятся к проприетарщине, так что ограничиваются cppcheck.

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

Cppcheck унылое говно и ничего не находит, тот же gcc или clang даёт в разы больше замечаний

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

те кто участвуют в открытых проектах крайне негативно относятся к проприетарщине

Отучаемся говорить за всех

cppcheck

Игрушка.

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

Помимо проверки множества проектов, мы ещё и нередко дарим ключ открытым бесплатным проектам.

Огласите весь список, пожалуйста. Список тех проектов, кому вы подарили ключ и которые этот подарок приняли. А так же срок действия этого ключа. Могут ли разработчики использовать этот ключ для встраивания вашего проверяющего софта в инфраструктуру сборки? Или надо регулярно руками открывать проект(или солюшен, как оно там у них в студиях называется) в вижуалстудии с вашим плагином и ручками смотреть, что оно там нарыло? А как же автоматизация?

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

Не понятно, что это может дать нашей компании.

А вы сами подумайте, и поймете...

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

Открою вам секрет, те кто участвуют в открытых проектах крайне негативно относятся к проприетарщине

Ну это не секрет, а чисто твое мнение.

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