Стенфордский университет провел автоматизированную проверку исходного кода 31 программого продукта.
С большим отрывом победили:
Ядро Linux-2.6 (1061)
Графическая подсистема X (1681)
=)
В чем победили то? "Defects / KLOC" столбец что значит мысль не пробегала? ;) Естевственно что на большее количество кода ошибок будет больше, но плотность их умеренная. Жить будем =)
>Стенфордский университет провел автоматизированную проверку исходного кода 31 программого продукта. С большим отрывом победили: Ядро Linux-2.6 (1061) Графическая подсистема X (1681) =)
Провокация флейма! :)
По количеству ошибок на строку кода у FreeBSD 0.4, а у Linux 0.3!
Sun-ch я конечно понимаю что ты фанатаишь от bsd, но там есть еще один не маловажный параметр Lines of Code и Defects / KLOC у фряхи это 0.401, а линукса 0.333, так что у линукса код качественей
> По количеству ошибок на строку кода у FreeBSD 0.4, а у Linux 0.3!
Совершенно необязательно делать в программе несколько ошибок. Достаточно вынести код ошибки в функцию и вызывать ошибку из разных мест программы по мере необходимости :)
Ага, коэффициент - это средняя температура по больнице, у одного +40 а другой уже остыл до температуры окружающей среды. Это большая заслуга фри, что у них кода в 3 раза меньше, при том же функционале. Вы, блин еще с виндой сравните, там ~30 млн. строк - она точно на первом месте будет.
>> По количеству ошибок на строку кода у FreeBSD 0.4, а у Linux 0.3!
>Совершенно необязательно делать в программе несколько ошибок. Достаточно вынести код ошибки в функцию и вызывать ошибку из разных мест программы по мере необходимости :)
Ну, я так не играю. Почему OpenBSD вниманием обделили? Было бы интересно посмотреть, сколько у них дефектов на KLOC приходится... По сравнению с тем же Linux'ом :-)
Что это за маразм прогонять коды через автоматические проверялки? Linux и BSD дураки что ли делали? Они не могли через подобную "проверялку" код прогнать и ошибки исправить? Мне кажется эти "ошибки" очень слабо коррелируют с реальными багами.
Угу, а винда еще куда больше оборудования поддерживает.
Проведем нехитрые мат. вычисления. Допустим в винде 10е6 ошибок. Считаем пресловутый коэффициент k = 10e6/30e6 = 0.333333.... ну прям как в линаксе. Из чего делаем вывод, что винда и линакс одинаково надежны.
Мне кажется, это тест "на стиль". Язык-то Си. Кто-то приводит поинтеры к нужным типам, кто-то нет. Кто-то использует автоматические деструкторы, кто-то рефкаунтинг и т.п. В зависимости от стиля при статическом анализе и получится результат. Ценность таких исследований маловата.
> А я всегда думал, что вероятность наступить на грабли, пропорциональна
> абсолютному числу ошибок, коих в линаксе больше на целую тыщу.
Индюк тоже думал что купается, пока вода не закипела. Выключи свой сервер, и тогда у тебя будет на 635 шансов меньше наступить на грабли, чем на работающей бздне.
+1. При оценке надежности системы важно именно абсолютное число ошибок (приблизительная оценка абсолюного количества ошибок), а не соотношение количество ошибок/строчек кода. Соотношение - это оправдание для разработчика
> Индюк тоже думал что купается, пока вода не закипела. Выключи свой сервер, и тогда у тебя будет на 635 шансов меньше наступить на грабли, чем на работающей бздне.
Нихрена не так. Шансы здесь подсчитать невозможно. Какой-то код чаще выполняется, какой-то - реже. Чем меньше ошибок, тем лучше
Только надо ещё учитывать, что во всех подобных автоматических проверках очень большой процент (до 80-90%) ложных срабатываний, даже в самых лучших и навороченных системах. Просто в силу особенностей языка Си - он допускает такие хаки, которые по всем признакам будут похожи на ошибку, но при этом всё равно будут стабильно работать. Семантика машины состояний, в которую преобразуется сишный код + "реальное" железо слишком сложна для полноценной верификации, и, соответственно, проверяется всегда упрощённая модель.
Считать количество "ошибок" на тысячу операторов - еще понятно
Но считать на строки кода - маразм полнейший!!! Стили форматирования исходников разные. Считались ли при этом за строки - пустые, кометарии, содержащие только операторную скобкe etc
к томуже еще вопрос что считать ошибкой. использование sprintf, strcpy, strcat? - скорее всего потенциальная ошибка, но если сначала идет контроль размеров - то какбы уже и нет ошибки, а калькулятор ее будет считать
такчто результат - чисто познавательный с точки зрения возможности автоматической дефектации кода
> я всегда думал, что вероятность наступить на грабли, пропорциональна абсолютному числу ошибок
Как выясняется, ты даже думать не умеешь. Даже если в коде поддержки Sparc64 будет десять тысяч ошибок, вероятность наступить на них у большинства пользователей равна нулю.
Сам ты маразм. Откуда разработчики линуха возьмут эти автоматические проверялки? Они пока что все закрытые, кроме разве что CCured, но он несколько из другой песни.
А я всегда думал, что вероятность наступить на грабли, пропорциональна абсолютному числу ошибок, коих в линаксе больше на целую тыщу. Sun-ch
а я вот думаю. есть две площади. одна - 1 квадратный метр, другая - квадратный километр. на первой лежат одни грабли, на другой - 10. где больше шансов наступить на грабли?
А если так, то он просто довольно малую часть потенциальных ошибок обнаруживает. Например, в случае с Си далеко не все утечки можно отловить, region analisys для него работает очень туго (и стоит недеццки по ресурсам).
>А я всегда думал, что вероятность наступить на грабли, пропорциональна абсолютному числу ошибок, коих в линаксе больше на целую тыщу
Ну ты даешь. Дороги то на которых грабли лежат разные. Возьмем две дороги к светлому будущему: BSD и Linux. Обе усеяны граблями разной критичности. Дорога BSD прямее и поэтому короче. Однако плотность граблей согласно результатам выше чем у извилистого пути под названием Линукс. Где вероятность больше оцени сам пройдя оба пути с завязанными глазами(не прикладывая патчей)
>Угу, а винда еще куда больше оборудования поддерживает. Проведем нехитрые мат. вычисления. Допустим в винде 10е6 ошибок. Считаем пресловутый коэффициент k = 10e6/30e6 = 0.333333.... ну прям как в линаксе. Из чего делаем вывод, что винда и линакс одинаково надежны.