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 выполняет статический анализ кода и генерирует отчёт, помогающий программисту находить и устранять ошибки. На сайте компании можно увидеть более подробное описание и скачать демонстрационную версию.

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



Проверено: maxcom ()
Последнее исправление: maxcom (всего исправлений: 2)

Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от anonymous

Под VAX ассемблер писал и запускал в эмуле, под x86 под дос в реалмоде рисовал на 320x200 разрешении через INT 10H переключал, но на демосцену это не тянет совешнено.

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

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

alkash
()

Да, кстати, по поводу самой статьи. Процитирую

mfi_tbolt_adp_reset(struct mfi_softc *sc)
{
  ....
  for (i=0; i < 10; i++) {
    for (i = 0; i < 10000; i++);
  }
  ....
}

Этот небольшой код скорее всего используется для создания задержки, только суммарно тут выполняется 10000 итераций, а не 10*10000, тогда зачем использовать два цикла?

Это НЕЛЬЗЯ использовать для создания задержки, компилятор такой код при оптимизации выбрасывает т.к. он ничего полезного не делает.

https://svnweb.freebsd.org/base/head/sys/dev/mfi/mfi_tbolt.c?view=markup&... вот собственно ссылка на ту самую функцию. Если уж делать такое, надо в такой цикл всовывать «холостую» ассемблерную вставку. Есть еще подозрения что они это компилируют с какими-то особыми опциями "-не-выбрасывать-бесполезные-циклы" но я во-первых сомневаюсь что такая опция есть, во-вторых это очень и очень плохо, полагаться на конкретное поведение конкретного компилятора

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

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

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

Мы работаем только с компаниями. Для них запрос цены является нормальным, привычным процессом.

Ага. С помощью таких игр с ценами очень легко играть на откатах. Знаю по фирмам торгующим штатовской спецтехникой.

x86_64 ★★★
()
Ответ на: комментарий от 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
()
Ответ на: комментарий от autonomous

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

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
()

Еще, кстати, интересна сравнительная статистика: сколько ошибок находится в проектах на C++, сколько - на C#.

Конечно, с поправкой на то что шарпом (вроде) только недавно начали заниматься.

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 ★★
()
Ответ на: комментарий от anonymous

Не, я только завтра родился. Анализаторы далеко не все умеют. К тому же у меня не было цели анализировать код на предмет ошибки. Ошибки я нашел случайно.

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

А что не так?

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

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

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

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

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

Odalist ★★★★★
()

Не понимаю батхерта местных пузожителей. Человек принес пользу - нашел сомнительные места в коде FreeBSD. Почему бы ему в связи с этим немного не попиариться? Словно от вас убудет.

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

Это ЛОР, тут ненавидят всё.

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

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

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

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

Не, я только завтра родился. Анализаторы далеко не все умеют. К тому же у меня не было цели анализировать код на предмет ошибки. Ошибки я нашел случайно.

Я думаю, намекали на другое. Статический анализ следует использовать регулярно. Разовые проверки бессмысленны. Никакой пользы, только пшик. Они годятся разве только для того, чтобы порекламировать инструмент. Что мы собственно и делаем.

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)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.