﻿# Урок 8\. Статический анализ для выявления 64\-битных ошибок

## Статический анализ кода

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

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

Статические анализаторы могут быть как общего назначения \(например, Microsoft PREFast, Gimpel Software PC\-lint, Parasoft C\+\+test\), так и специализированными для поиска определенных классов ошибок \(например, Chord для верификации параллельных Java программ\)\. Обычно инструменты статического анализа достаточно дороги, требуют знаний о методологии их использования, часто имеют достаточно гибкие, но сложные подсистемы настройки и подавления ложных сообщений\. По этой причине статические анализаторы, как правило, используются в компаниях со зрелыми процессами разработки программного обеспечения\. Взамен на сложность в использовании статические анализаторы кода позволяют выявить большое количество ошибок на самых ранних этапах разработки программного кода\. Дополнительно использование методологии статического анализа дисциплинирует программистов и помогает контролировать работу молодых сотрудников\.

Основное преимущество использования статических анализаторов кода состоит в возможности существенного снижения стоимости устранения дефектов в программе\. Чем раньше ошибка выявлена, тем меньше стоимость ее исправления\. Так, согласно данным, приведенным в книге Макконнелла "Совершенный Код", исправление ошибки на этапе тестирования обойдется в десять раз дороже, чем на этапе конструирования \(кодирования\):

![08_Static_analysis_ru/image2.png](https://import.viva64.com/docx/blog/08_Static_analysis_ru/image2.png)

_Рисунок 1 \- Средняя стоимость исправления дефектов в зависимости от времени их внесения и обнаружения \(данные для таблицы взяты из книги С\. Макконнелла 'Совершенный Код'\)_

Инструменты статического анализа, выявляя большое количество ошибок на этапе конструирования, существенно снижают стоимость разработки всего проекта\.

## Статический анализ для выявления 64\-битных ошибок

Перечислим преимущества применения статического анализа кода, которые делают этот метод наиболее оптимальным для выявления ошибок в 64\-битном коде:

1. Возможность проверить ВЕСЬ код\. Анализатор проверит даже тот код, который получает управление в самых редких случаях\. Другими словами, у инструментов статического анализа покрытие кода практически полное\. Это позволяет быть уверенным при переходе на 64\-битную систему, что проверен весь код\.
1. Масштабируемость\. Статический анализ позволяет одинаково просто осуществить как анализ маленького, так и большого проекта\. Трудоемкость анализа проекта растет линейно с его размером\. При этом работу по анализу проекта можно легко распараллелить между несколькими разработчиками\. Достаточно только распределить части проекта между программистами\.
1. Разработчик, приступая к работе, даже не зная всех тонкостей 64\-битного кода, все равно не пройдет мимо потенциальных проблем\. Анализатор укажет опасные места, а справочная система снабдит его всей необходимой информацией\.
1. Снижение затрат за счет ранней диагностики ошибок\.
1. Возможность эффективно использовать инструменты статического анализа как при переносе кода на 64\-битную систему, так и при разработке нового 64\-битного кода\.

## Анализатор Viva64, входящий в состав PVS\-Studio

[PVS\-Studio](https://pvs-studio.ru/ru/pvs-studio/) представляет собой комплект статических анализаторов кода для проверки современных и ресурсоемких приложений\. В состав PVS\-Studio входит статический анализатор Viva64, предназначенный для диагностики 64\-битных ошибок\.

Анализатор PVS\-Studio предназначен для работы на Windows\-платформе\. При этом он интегрируется в среду разработки Microsoft Visual Studio 2005/2008/2010 \(смотри рисунок 2\)\. Интерфейс PVS\-Studio позволяет фильтровать диагностические сообщения несколькими методами, сохранять и загружать список предупреждений\.

![08_Static_analysis_ru/image4.png](https://import.viva64.com/docx/blog/08_Static_analysis_ru/image4.png)

_Рисунок 2 \- Интеграция PVS\-Studio в Microsoft Visual Studio_

Системные требования к анализатору совпадают с требованиями к Microsoft Visual Studio:

* Операционная система: Windows 7/Vista/XP/2008/2003 [x86](https://pvs-studio.ru/ru/blog/terms/0060/) или [x64](https://pvs-studio.ru/ru/blog/terms/0058/)\. Внимание, для анализа 64\-битных приложений операционная система не обязательно должна быть 64\-битной\.
* Среда разработки: Microsoft Visual Studio 2005/2008/2010 \(Standard Edition, Professional Edition, Team Systems\)\. Для анализа 64\-битных приложений необходимо иметь установленный компонент Visual Studio под названием "X64 Compilers and Tools"\. Он входит во все перечисленные версии Visual Studio и может быть установлен через Visual Studio Setup\. Обратите внимание, что работа PVS\-Studio с Visual C\+\+ Express Edition невозможна, поскольку эта система не поддерживает модули расширения\.
* Аппаратная часть: PVS\-Studio работает на системах с не менее, чем 1 гигабайтом оперативной памяти \(рекомендуется 2 гигабайта и более\); анализатор поддерживает работу на нескольких ядрах \(чем больше ядер, тем быстрее выполняется анализ кода\)\.

Все диагностируемые ошибки подробно описаны в справочной системе, которая доступна после установки PVS\-Studio\. Также [справочная система по PVS\-Studio](https://pvs-studio.ru/ru/docs/) доступна на нашем сайте в режиме online\.

В дистрибутиве вместе с PVS\-Studio поставляются специальные проекты\-примеры дефектов кода, на которых можно изучить работу анализатора\.

Для более полного ознакомления с PVS\-Studio вы можете скачать [демонстрационную версию](https://pvs-studio.ru/ru/pvs-studio/download/)\. Демонстрационная версия имеет следующие ограничения:

* доступна для использования в течение 30 дней;
* ознакомительная версия показывает номера строк не всех дефектов с ошибками, а только некоторых из них \(хотя обнаруживает все\)\. Но для демонстрационных проектов, включенных в состав PVS\-Studio, сделано исключение: для них отображаются номера строк для всех дефектов\.

На данный момент анализатор PVS\-Studio реализует самую полную диагностику 64\-битных ошибок\. Сравнительные характеристики представлены в статье "[Сравнение PVS\-Studio с другими анализаторами кода](https://pvs-studio.ru/ru/blog/posts/a0052/)"\.

В последующих уроках, рассматривая различные паттерны ошибок, мы будем неоднократно ссылаться на PVS\-Studio, чтобы продемонстрировать способы их обнаружения\.

_Авторы курса: Андрей Карпов \([karpov@viva64\.com](mailto:karpov@viva64.com)\), Евгений Рыжков \([evg@viva64\.com](mailto:evg@viva64.com)\)\._

_Правообладателем курса "Уроки разработки 64\-битных приложений на языке Си/Си\+\+" является ООО "Системы программной верификации"\. Компания занимается разработкой программного обеспечения в области анализа исходного кода программ\. [Сайт компании](https://pvs-studio.ru/ru/pvs-studio/)\._