SlideShare a Scribd company logo
Урок 8. Статический анализ для
выявления 64-битных ошибок
Статический анализ кода
Статический анализ кода - методология выявления ошибок в программном коде, основанная на
просмотре программистом участков кода, помеченных статическим анализатором. Помеченные
участки кода с большой вероятностью содержат ошибки определенного типа.

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

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

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

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


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

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


Анализатор Viva64, входящий в состав PVS-Studio
PVS-Studio представляет собой комплект статических анализаторов кода для проверки
современных и ресурсоемких приложений. В состав PVS-Studio входит статический анализатор
Viva64 предназначенный для диагностики 64-битных ошибок.

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

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

   •   Операционная система: Windows 7/Vista/XP/2008/2003 x86 или x64. Внимание, для
       анализа 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 доступна на нашем сайте в режиме
online.

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

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

На данный момент анализатор PVS-Studio реализует самую полную диагностику 64-битных
ошибок. Сравнительные характеристики представлены в статье "Сравнение PVS-Studio с другими
анализаторами кода".

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

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

Правообладателем курса "Уроки разработки 64-битных приложений на языке Си/Си++"
является ООО "Системы программной верификации". Компания занимается разработкой
программного обеспечения в области анализа исходного кода программ. Сайт компании:
http://www.viva64.com.

Контактная информация: e-mail: support@viva64.com, 300027, г. Тула, а/я 1800.

More Related Content

PDF
Регулярное использование статического анализа кода в командной разработке
PDF
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
PDF
Урок 7. Проблемы выявления 64-битных ошибок
PPTX
Статический анализатор кода PVS-Studio
PDF
Трепещи, мир! Мы выпустили PVS-Studio 4.00 с бесплатным анализатором общего н...
PDF
Как мы тестируем анализатор кода
PDF
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
PDF
Трудности сравнения анализаторов кода или не забывайте об удобстве использования
Регулярное использование статического анализа кода в командной разработке
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Урок 7. Проблемы выявления 64-битных ошибок
Статический анализатор кода PVS-Studio
Трепещи, мир! Мы выпустили PVS-Studio 4.00 с бесплатным анализатором общего н...
Как мы тестируем анализатор кода
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Micr...
Трудности сравнения анализаторов кода или не забывайте об удобстве использования

What's hot (20)

PPTX
Применение статического анализа кода в преподавании и в разработке свободного ПО
PDF
Тестирование параллельных программ
PDF
Что такое "Parallel Lint"?
PPTX
Как создать качественный статический анализатор
PDF
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
PPTX
Инструментальный подход к разработке протоколов
PDF
Сравнение PVS-Studio с другими анализаторами кода
PPT
Unit Testing
PPT
Sonar quality
PPTX
Team system - фреймворк для автоматизации тестирования от Microsoft
PPTX
ковалев нестандатное нт
PPTX
PVS-Studio, решение для разработки современных ресурсоемких приложений
PPT
дипломная презентация по разработке проекта развертывания терминального сервера
PPTX
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
PDF
Поиск уязвимостей в программах с помощью анализаторов кода
PDF
VivaMP - инструмент для OpenMP
PDF
PVS-Studio научился следить за тем, как вы программируете
PDF
Построение систем автоматического протоколирования Си/Си++ кода
PPTX
Автоматизация тестирования в Microsoft Team System и “костыли”
Применение статического анализа кода в преподавании и в разработке свободного ПО
Тестирование параллельных программ
Что такое "Parallel Lint"?
Как создать качественный статический анализатор
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
Инструментальный подход к разработке протоколов
Сравнение PVS-Studio с другими анализаторами кода
Unit Testing
Sonar quality
Team system - фреймворк для автоматизации тестирования от Microsoft
ковалев нестандатное нт
PVS-Studio, решение для разработки современных ресурсоемких приложений
дипломная презентация по разработке проекта развертывания терминального сервера
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
Поиск уязвимостей в программах с помощью анализаторов кода
VivaMP - инструмент для OpenMP
PVS-Studio научился следить за тем, как вы программируете
Построение систем автоматического протоколирования Си/Си++ кода
Автоматизация тестирования в Microsoft Team System и “костыли”
Ad

Viewers also liked (6)

PDF
64 бита для Си++ программистов: от /Wp64 к Viva64
PDF
Урок 27. Особенности создания инсталляторов для 64-битного окружения
PDF
Статический анализ и регулярные выражения
PDF
PVS-Studio
PDF
20 ловушек переноса Си++ - кода на 64-битную платформу
PDF
32 подводных камня OpenMP при программировании на Си++
64 бита для Си++ программистов: от /Wp64 к Viva64
Урок 27. Особенности создания инсталляторов для 64-битного окружения
Статический анализ и регулярные выражения
PVS-Studio
20 ловушек переноса Си++ - кода на 64-битную платформу
32 подводных камня OpenMP при программировании на Си++
Ad

Similar to Урок 8. Статический анализ для выявления 64-битных ошибок (20)

PDF
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
PDF
Проблемы тестирования 64-битных приложений
PDF
Статический анализ кода для верификации 64-битных приложений
PDF
Сущность библиотеки анализа кода VivaCore
PPTX
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
PDF
Сравнение диагностических возможностей анализаторов при проверке 64-битного кода
PDF
Преимущества использования Viva64
PDF
Разработка ресурсоемких приложений в среде Visual C++
PDF
Изменения в инфраструктуре инструментов для программистов
PDF
пр Спроси эксперта. Все, что вы хотели узнать про «дыры» в коде, но не у кого...
PDF
Повышаем и следим за качеством PHP кода
PDF
Continuous integration
PDF
Технологии разработки ПО
PDF
Забытые проблемы разработки 64-битных программ
PDF
Краткое описание библиотеки анализа кода VivaCore
PPTX
Net framework
PDF
Отладка и оптимизация многопоточных OpenMP-программ
PDF
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
PDF
презентация по дисциплине технология разработки программного обеспечения
PDF
Презентация по дисциплине технология разработки программного обеспечения
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Проблемы тестирования 64-битных приложений
Статический анализ кода для верификации 64-битных приложений
Сущность библиотеки анализа кода VivaCore
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Сравнение диагностических возможностей анализаторов при проверке 64-битного кода
Преимущества использования Viva64
Разработка ресурсоемких приложений в среде Visual C++
Изменения в инфраструктуре инструментов для программистов
пр Спроси эксперта. Все, что вы хотели узнать про «дыры» в коде, но не у кого...
Повышаем и следим за качеством PHP кода
Continuous integration
Технологии разработки ПО
Забытые проблемы разработки 64-битных программ
Краткое описание библиотеки анализа кода VivaCore
Net framework
Отладка и оптимизация многопоточных OpenMP-программ
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспечения

More from Tatyanazaxarova (20)

PDF
Урок 26. Оптимизация 64-битных программ
PDF
Урок 24. Фантомные ошибки
PDF
Урок 23. Паттерн 15. Рост размеров структур
PDF
Урок 21. Паттерн 13. Выравнивание данных
PDF
Урок 20. Паттерн 12. Исключения
PDF
Урок 19. Паттерн 11. Сериализация и обмен данными
PDF
Урок 17. Паттерн 9. Смешанная арифметика
PDF
Урок 16. Паттерн 8. Memsize-типы в объединениях
PDF
Урок 15. Паттерн 7. Упаковка указателей
PDF
Урок 13. Паттерн 5. Адресная арифметика
PDF
Урок 11. Паттерн 3. Операции сдвига
PDF
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
PDF
Урок 9. Паттерн 1. Магические числа
PDF
Урок 6. Ошибки в 64-битном коде
PDF
Урок 5. Сборка 64-битного приложения
PDF
Урок 4. Создание 64-битной конфигурации
PPTX
Статический анализ Си++ кода
PDF
Пояснения к статье про Copy-Paste
PDF
Статический анализ и ROI
PDF
Вечный вопрос измерения времени
Урок 26. Оптимизация 64-битных программ
Урок 24. Фантомные ошибки
Урок 23. Паттерн 15. Рост размеров структур
Урок 21. Паттерн 13. Выравнивание данных
Урок 20. Паттерн 12. Исключения
Урок 19. Паттерн 11. Сериализация и обмен данными
Урок 17. Паттерн 9. Смешанная арифметика
Урок 16. Паттерн 8. Memsize-типы в объединениях
Урок 15. Паттерн 7. Упаковка указателей
Урок 13. Паттерн 5. Адресная арифметика
Урок 11. Паттерн 3. Операции сдвига
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 9. Паттерн 1. Магические числа
Урок 6. Ошибки в 64-битном коде
Урок 5. Сборка 64-битного приложения
Урок 4. Создание 64-битной конфигурации
Статический анализ Си++ кода
Пояснения к статье про Copy-Paste
Статический анализ и ROI
Вечный вопрос измерения времени

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

  • 1. Урок 8. Статический анализ для выявления 64-битных ошибок Статический анализ кода Статический анализ кода - методология выявления ошибок в программном коде, основанная на просмотре программистом участков кода, помеченных статическим анализатором. Помеченные участки кода с большой вероятностью содержат ошибки определенного типа. Другими словами, инструмент для статического анализа определяет в тексте программы места, содержащие ошибки, предрасположенные к ошибкам или имеющие плохое форматирование. Такие участки кода предоставляются программисту для изучения, и он может принять решение о модификации данного участка программы. Статические анализаторы могут быть как общего назначения (например, Microsoft PREFast, Gimpel Software PC-lint, Parasoft C++test), так и специализированными для поиска определенных классов ошибок (например, Chord для верификации параллельных Java программ). Обычно инструменты статического анализа достаточно дороги, требуют знаний о методологии их использования, часто имеют достаточно гибкие, но сложные подсистемы настройки и подавления ложных сообщений. По этой причине статические анализаторы, как правило, используются в компаниях со зрелыми процессами разработки программного обеспечения. Взамен на сложность в использовании, статические анализаторы кода позволяют выявить большое количество ошибок на самых ранних этапах разработки программного кода. Дополнительно использование методологии статического анализа дисциплинирует программистов и помогает контролировать работу молодых сотрудников. Основное преимущество использования статических анализаторов кода состоит в возможности существенного снижения стоимости устранения дефектов в программе. Чем раньше ошибка выявлена, тем меньше стоимость ее исправления. Так согласно данным, приведенным в книге Макконнелла "Совершенный Код", исправление ошибки на этапе тестирования обойдется в десять раз дороже, чем на этапе конструирования (кодирования):
  • 2. Рисунок 1 - Средняя стоимость исправления дефектов в зависимости от времени их внесения и обнаружения (данные для таблицы взяты из книги С. Макконнелла 'Совершенный Код') Инструменты статического анализа, выявляя большое количество ошибок на этапе конструирования, существенно снижают стоимость разработки всего проекта. Статический анализ для выявления 64-битных ошибок Перечислим преимущества применения статического анализа кода, которые делают этот метод наиболее оптимальным для выявления ошибок в 64-битном коде: 1. Возможность проверить ВЕСЬ код. Анализатор проверит даже тот код, который получает управление в самых редких случаях. Другими словами, у инструментов статического анализа покрытие кода практически полное. Это позволяет быть уверенным при переходе на 64-битную систему, что проверен весь код. 2. Масштабируемость. Статический анализ позволяет одинаково просто осуществить как анализ маленького, так и большого проекта. Трудоемкость анализа проекта растет линейно с его размером. При этом работу по анализу проекта можно легко распараллелить между несколькими разработчиками. Достаточно только распределить части проекта между программистами. 3. Разработчик, приступая к работе, даже не зная всех тонкостей 64-битного кода, все равно не пройдет мимо потенциальных проблем. Анализатор укажет опасные места, а справочная система снабдит его всей необходимой информацией. 4. Снижение затрат за счет ранней диагностики ошибок. 5. Возможность эффективно использовать инструменты статического анализа как при переносе кода на 64-битную систему, так и при разработке нового 64-битного кода. Анализатор Viva64, входящий в состав PVS-Studio PVS-Studio представляет собой комплект статических анализаторов кода для проверки современных и ресурсоемких приложений. В состав PVS-Studio входит статический анализатор Viva64 предназначенный для диагностики 64-битных ошибок. Анализатор PVS-Studio предназначен для работы на Windows-платформе. При этом он интегрируется в среду разработки Microsoft Visual Studio 2005/2008/2010 (смотри рисунок 2). Интерфейс PVS-Studio позволяет фильтровать диагностические сообщения несколькими методами, сохранять и загружать список предупреждений.
  • 3. Рисунок 2 - Интеграция PVS-Studio в Microsoft Visual Studio Системные требования к анализатору совпадают с требованиями к Microsoft Visual Studio: • Операционная система: Windows 7/Vista/XP/2008/2003 x86 или x64. Внимание, для анализа 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 доступна на нашем сайте в режиме online. В дистрибутиве вместе с PVS-Studio поставляются специальные проекты-примеры дефектов кода, на которых можно изучить работу анализатора.
  • 4. Для более полного ознакомления с PVS-Studio вы можете скачать демонстрационную версию и ознакомиться c руководством "Учебное пособие по PVS-Studio". Демонстрационная версия имеет следующие ограничения: • доступна для использования в течение 30 дней; • ознакомительная версия показывает номера строк не всех дефектов с ошибками, а только некоторых из них (хотя обнаруживает все). Но для демонстрационных проектов, включенных в состав PVS-Studio, сделано исключение - для них отображаются номера строк для всех дефектов. На данный момент анализатор PVS-Studio реализует самую полную диагностику 64-битных ошибок. Сравнительные характеристики представлены в статье "Сравнение PVS-Studio с другими анализаторами кода". В последующих уроках, рассматривая различные паттерны ошибок, мы будем неоднократно ссылаться на PVS-Studio, чтобы продемонстрировать способы их обнаружения. Авторы курса: Андрей Карпов (karpov@viva64.com), Евгений Рыжков (evg@viva64.com). Правообладателем курса "Уроки разработки 64-битных приложений на языке Си/Си++" является ООО "Системы программной верификации". Компания занимается разработкой программного обеспечения в области анализа исходного кода программ. Сайт компании: http://www.viva64.com. Контактная информация: e-mail: support@viva64.com, 300027, г. Тула, а/я 1800.