<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Анализ системой Coverity безопасности и качества открытого кода]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=20506&amp;type=atom" />
	<updated>2012-02-25T14:55:35Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=20506</id>
		<entry>
			<title type="html"><![CDATA[Анализ системой Coverity безопасности и качества открытого кода]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=253957#p253957" />
			<content type="html"><![CDATA[<p><strong>Результаты анализа системой Coverity безопасности и качества открытого кода</strong></p><p>Компания Coverity, развивающая инструментарий для автоматического анализа кода на предмет наличия проблем безопасности и ошибок <a href="http://www.bradenton.com/2012/02/23/3896742/open-source-code-quality-on-par.html"> представила</a> очередной ежегодный <a href="http://www.coverity.com/library/pdf/coverity-scan-2011-open-source-integrity-report.pdf"> отчёт</a> (PDF, 550 Кб) с результатами изучения 37 млн строк кода из 45 наиболее активно разрабатываемых открытых проектов и 300 млн строк кода из 41 анонимного проприетарного продукта. В среднем, в открытых проектах было выявлено 0.45 дефектов на 1000 строк кода, для проприетарных продуктов данный показатель составляет 0.64, при этом средний показатель качества для всей индустрии разработки ПО составляет 1 ошибка на 1000 строк кода.</p><p>Система Coverity Scan была создана в 2006 году по инициативе Министерства национальной безопасности США для обеспечения и усиления безопасности информационной инфраструктуры Соединенных Штатов, в которой используются различные Open Source проекты. В настоящее время программа тестирования <a href="http://scan.coverity.com/"> Coverity Scan</a> охватывает <a href="http://scan.coverity.com/all-projects.html"> около 300</a> открытых проектов, суммарный размер кода которых превышает 61 млн строк.&nbsp; При автоматическом анализе данного кода было выявлено 49654 дефектов из которых уже исправлено 15278. Для анализа кода в этом году была использована новая версия Coverity Scan в которой были представлены дополнительные средства статического анализа кода и добавлены алгоритмы выявления новых типов ошибок.</p><p>В представленном отчёте подробно проанализированы выявленные ошибки в ядре Linux 2.6, PHP 5.3 и PostgreSQL 9.1. Проекты были выбраны исходя из различий в их типе (системное и прикладное ПО) и размере кодовой базы. Уровень качества кода данных проектов оказался значительно выше средних показателей по индустрии: <br /></p><ul><li><p>В ядре Linux, объём кода которого составляет 6.8 млн строк кода, было выявлено 4261 ошибок из которых 1249 признаны ошибками с высокой степенью опасности (451 - повреждение памяти, 418 - некорректный доступ к памяти, 139 - утечка ресурсов, 266 - неинициализированные переменные). Показатель качества кода ядра составил 0.62 дефекта на 1000 строк кода, что оказалось сравнимым с средним показателем качества рассмотренных проприетарных продуктов (0.64). Примечательно, что данное сходство показателей качества коррелирует с размером кодовой базы - средний размер участвующих в оценке проприетарных продуктов составил около 7 млн строк кода. Если рассматривать отдельные подсистемы, то в дереве Staging и сетевом стеке уровень качества составляет 0.97, в звуковой подсистеме 0.38, файловых системах 0.65, драйверах 0.61, других компонентах 0.48;</p></li><li><p>В PHP 5.3, объём кода которого составляет 538 тыc. строк кода, выявлено 97 ошибок из которых 15 признаны опасными (5 - повреждение памяти, 3 - некорректный доступ к памяти, 7 - утечка ресурсов). Показатель качества кода интерпретатора PHP составил 0.20 дефекта на 1000 строк кода. Наилучшее качество отмечено в Zend - 0.09, уровень качества основного кода и стандартных расширений - 0.14, ext_date <br />- 0.17, PDO - 0.30, расширения SQLite - 0.61;</p></li><li><p>В PotgreSQL, объём кода которого составляет 1.1 млн строк кода, выявлено 233 ошибок из которых 116 опасных (22 - повреждение памяти, 36 - некорректный доступ к памяти, 50 - утечка ресурсов, 8 - неинициализированные переменные). Показатель качества кода СУБД PostgreSQL составил 0.21 дефекта на 1000 строк кода;</p></li></ul><p>Некоторые наблюдения:<br /></p><ul><li><p>Открытые проекты достаточно активно реагируют на выявленные системой Coverity дефекты. Например, команда разработчиков <a href="http://brlcad.org/"> BRL-CAD</a> устранила более 1600 дефектов в течение 5 дней после того как авторы исследования уведомили разработчиков;</p></li><li><p>В сумме в 2011 году было исправлено 6133 выявленных дефектов, что больше чем в 2010 году;</p></li><li><p>Всего в рассмотренных 45 открытых проектах было отмечено 16884 проблем, распределение которых выглядит следующим образом:<br /></p><ul><li><p>Проблемы с управлением потоком (Control Flow Issues) 3,128</p></li><li><p>Разыменование NULL-указателя (Null Pointer Dereferences) 2,818</p></li><li><p>Неинициализированные переменные (Uninitialized Variables) 2,051</p></li><li><p>Повреждения памяти (Memory Corruptions) 1,551</p></li><li><p>Проблемы с обработкой ошибок (Error Handling Issues) 1,535</p></li><li><p>Утечка ресурсов (Resource Leaks) 1,384</p></li><li><p>Проблемы с обработкой целочисленных значений (Integer Handling Issues) 1,368</p></li><li><p>Некорректный доступ к памяти (Memory - Illegal Access) 1,136</p></li><li><p>Небезопасная обработка данных (Insecure Data Handling) 824</p></li><li><p>Некорректные выражения (Incorrect Expression) 550</p></li><li><p>Проблемы с одновременным доступом (Concurrent Access Violations) 253</p></li><li><p>Ошибки использования API (API Usage Errors) 178</p></li><li><p>Зависания программ (Program Hangs) 107</p></li><li><p>Несоответствия иерархии класса (Class Hierarchy Inconsistencies) 1</p></li></ul></li></ul><p><a href="http://www.opennet.ru/opennews/art.shtml?num=33188">Источник »</a><br /><a href="http://www.bradenton.com/2012/02/23/3896742/open-source-code-quality-on-par.html">Главная ссылка к новости »</a></p>]]></content>
			<author>
				<name><![CDATA[Lupo Alberto]]></name>
				<uri>https://linuxforum.ru/profile.php?id=9018</uri>
			</author>
			<updated>2012-02-25T14:55:35Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=253957#p253957</id>
		</entry>
</feed>
