abbra: (Default)
[personal profile] abbra
С 2005 года Coverity и Department Homeland Security проводят работу по усовершенствованию свободного кода. DHS выделила около 300000 долларов США, а Coverity за эти деньги обеспечила для отобранных 250 свободных проектов бесплатный доступ к своему средству статического анализа исходного программного кода, Prevent.

Prevent, ранее известный как Stanford Checker, довольно хорошо отлавливает разные ошибки вроде переполнения буферов и обращения по неправильным указателям, средний показатель ошибок там, где их на самом деле нет, составляет около 14%, это довольно низкое значение. Samba Team имеет доступ к результатам прогона Prevent по разным веткам Samba, мы даже попали в "круг второй" -- проекты, хорошо реагирующие на найденные ошибки и получающие доступ к более продвинутым функциям Prevent (11 проектов). Coverity периодически (обычно раз-два в день) запускает Prevent и делает доступным протоколы запуска участникам проекта. Например, у нас сейчас показатель 0.018 ошибок на 1000 строк кода, то есть, приблизительно одна ошибка на 56 тысяч строк кода, если я не ошибся с расчетами.

Coverity подвела итоги проекта за последние два года в отчете "Scan Open Source" (PDF, документ этот требует бесплатной регистрации на сайте Coverity). Некоторые интересные факты из него:
  • за два года общее количество обнаруживаемых ошибок в проектах сократилось на 16%;
  • между размером проекта и количеством ошибок существует всего-лишь линейная зависимость, а не экспоненциальная, как считалось раньше;
  • усложнение функций не ведет к увеличению количества ошибок в них, несмотря на то, что так думают практически все программисты;
  • наибольшее число ошибок приходится на обращения по нулевому указателю (27.95%) и утечку памяти (25.73%), а наименьшее -- на переполнение динамически распределенных буферов (0.31%) и использование негативных смещений до тестирования (0.21%).


Интересно, что на текущий момент общая база проанализированного кода в Prevent составляет около двух миллиардов уникальных строк, из которых 250 миллионов уникальных строк кода доступно под свободными лицензиями. Coverity, правда, отказывается проводить какие-либо сравнения качества между проприетарным и свободным кодом, ссылаясь на "несравнимость" в тех условиях, которые у них есть. К тому же, аудитории программистов пересекаются, поскольку многие "днем" пишут проприетарный код, а "ночью" -- свободный. Так что судить производительность доктора Джекилла и мистера Хайда Coverity не решается.

Date: 2008-05-21 03:55 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Мне всегда казалось, что утверждения об экспоненциальном росте количества ошибок с размером проекта и росте ошибок с ростом количества функций относятся к ошибкам в логика алгоритма. Которые Prevent-ом и прочими valgrind-ами нифига не ловятся.

Date: 2008-05-23 01:34 am (UTC)
From: [identity profile] alogic.livejournal.com
Просто рад за проект SAMBA. Надеюсь при такой красоте кода вы скоро вытесните виндовые сервера окончательно:)

Date: 2008-05-26 03:06 pm (UTC)
From: [identity profile] netlander.livejournal.com
Жаль, увидел ваш пост только сегодня. Дополнил и опубликовал:
<http://doka.info/researches/world/opensource/20080526.1730>

Date: 2008-10-30 01:56 pm (UTC)
From: [identity profile] potan.livejournal.com
Надо пользоваться языками со сборкой мусора - половина ошибок изчезает!

Date: 2008-10-30 02:32 pm (UTC)
From: [identity profile] potan.livejournal.com
Чудесных не бывает. Но бывают близкие к ним :-).
Например Haskell отлавливает очень много ошибок. Правда не для всех задач подходит.
Для сетевых файловых систем я бы использовал OCaml. Соотношение производительность/надежность у него очень хорошее - C++ он заменить способен. Чудестность программистов часто определяется способностью выбрать/выучить подходящий язык :-).

April 2016

S M T W T F S
     12
3456789
1011121314 1516
17181920212223
24252627282930

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 25th, 2025 05:50 pm
Powered by Dreamwidth Studios