SlideShare uma empresa Scribd logo
1 de 9
Статический анализ кода:
уменьшение цены ошибки за счет
    её раннего обнаружения
          Андрей Карпов
          MVP, к.ф.-м.н.,
         ООО «СиПроВер»
        karpov@viva64.com
         www.viva64.com
Чем раньше, тем лучше
Раннее обнаружение ошибок при
             кодировании
•   отладка;
•   статический анализ кода;
•   динамический анализ кода;
•   юнит-тесты.
Сильные стороны статического
          анализа кода
• проверка редко используемых участков
  кода (обработчики ошибок, нестандартные
  ситуации);
• выявления опечаток и ошибок copy-paste;
• скорость анализа.
Обработчики ошибок
if ( node->occupied ) {
   common->Error( "FloodThroughPortals_r: node already occupiedn" );
 }

if ( !node ) {
  common->Error( "FloodThroughPortals_r: NULL noden" );
}




                    vs PVS-Studio
Опечатки


sa->nLength = sizeof(sizeof(SECURITY_ATTRIBUTES));




                  vs PVS-Studio
Copy-Paste

const int istride = sizeof( tmp[0]) / sizeof( tmp[0][0][0] );
const int jstride = sizeof( tmp[0][0]) / sizeof( tmp[0][0][0] );
const int mistride = sizeof( mag[0]) / sizeof( mag[0][0] );
const int mjstride = sizeof( mag[0][0]) / sizeof( mag[0][0] );




                    vs PVS-Studio
Скорость выявления дефекта
• запуски по расписанию;
• проверка файлов за последний день;
• on-the-fly анализ;
Вопросы?
Контактная информация:
E-mail:  karpov@viva64.com
Сайт:    http://www.viva64.com/ru/
ICQ:     83051529
Twitter: https://twitter.com/Code_Analysis

Mais conteúdo relacionado

Destaque

10 советов художника тестировщику
10 советов художника тестировщику10 советов художника тестировщику
10 советов художника тестировщикуSQALab
 
Выбор и внедрение инструмента - с чего начать?
Выбор и внедрение инструмента - с чего начать?Выбор и внедрение инструмента - с чего начать?
Выбор и внедрение инструмента - с чего начать?SQALab
 
Вирусное тестирование. Что-то новое в конфигурационном тестировании
Вирусное тестирование. Что-то новое в конфигурационном тестированииВирусное тестирование. Что-то новое в конфигурационном тестировании
Вирусное тестирование. Что-то новое в конфигурационном тестированииSQALab
 
Жизненный цикл коммуникативных дефектов
Жизненный цикл коммуникативных дефектовЖизненный цикл коммуникативных дефектов
Жизненный цикл коммуникативных дефектовSQALab
 
Истории про перезапуск компании и тестирование
Истории про перезапуск компании и тестированиеИстории про перезапуск компании и тестирование
Истории про перезапуск компании и тестированиеАндрей Кузьмичев
 
Практика создания удаленного офиса тестирования
Практика создания удаленного офиса тестированияПрактика создания удаленного офиса тестирования
Практика создания удаленного офиса тестированияSQALab
 
О чем мы забываем в QA или “Знакомьтесь – Manageability!”
О чем мы забываем в QA или “Знакомьтесь – Manageability!”О чем мы забываем в QA или “Знакомьтесь – Manageability!”
О чем мы забываем в QA или “Знакомьтесь – Manageability!”SQALab
 
Использование cygwin для автоматизации процессов тестирования в Windows
Использование cygwin для автоматизации процессов тестирования в WindowsИспользование cygwin для автоматизации процессов тестирования в Windows
Использование cygwin для автоматизации процессов тестирования в WindowsSQALab
 
Тестирование и техподдержка брак или сотрудничество?
Тестирование и техподдержка брак или сотрудничество?Тестирование и техподдержка брак или сотрудничество?
Тестирование и техподдержка брак или сотрудничество?SQALab
 
Очередь на тестирование
Очередь на тестированиеОчередь на тестирование
Очередь на тестированиеSQALab
 
Становление программы внутренних аудитов: от требований сертификации до обесп...
Становление программы внутренних аудитов: от требований сертификации до обесп...Становление программы внутренних аудитов: от требований сертификации до обесп...
Становление программы внутренних аудитов: от требований сертификации до обесп...SQALab
 
Автоматизация рутинных задач: Вкалывают роботы, счастлив человек!
Автоматизация рутинных задач: Вкалывают роботы, счастлив человек!Автоматизация рутинных задач: Вкалывают роботы, счастлив человек!
Автоматизация рутинных задач: Вкалывают роботы, счастлив человек!SQALab
 
Эволюция средств тестирования от HP
Эволюция средств тестирования от HPЭволюция средств тестирования от HP
Эволюция средств тестирования от HPSQALab
 
Agile и мультикомандность - как это работает на примере реального проекта
Agile и мультикомандность - как это работает на примере реального проекта  Agile и мультикомандность - как это работает на примере реального проекта
Agile и мультикомандность - как это работает на примере реального проекта SQALab
 
Квантовые скачки длинной в два года: как переключиться в режим менеджера?
Квантовые скачки длинной в два года: как переключиться в режим менеджера?Квантовые скачки длинной в два года: как переключиться в режим менеджера?
Квантовые скачки длинной в два года: как переключиться в режим менеджера?SQALab
 
Вредные советы для тестирования юзабилити
Вредные советы для тестирования юзабилитиВредные советы для тестирования юзабилити
Вредные советы для тестирования юзабилитиSQALab
 
Опыт создания группы быстрого реагирования (ГБР) на QA проектах
Опыт создания группы быстрого реагирования (ГБР) на QA проектахОпыт создания группы быстрого реагирования (ГБР) на QA проектах
Опыт создания группы быстрого реагирования (ГБР) на QA проектахSQALab
 
Как изменить мир, или как взять в свою команду тестировщика от Бога?
Как изменить мир, или как взять в свою команду тестировщика от Бога?Как изменить мир, или как взять в свою команду тестировщика от Бога?
Как изменить мир, или как взять в свою команду тестировщика от Бога?SQALab
 
Компонентное тестирование. Что это за зверь и с чем его едят?
Компонентное тестирование. Что это за зверь и с чем его едят?Компонентное тестирование. Что это за зверь и с чем его едят?
Компонентное тестирование. Что это за зверь и с чем его едят?SQALab
 
«Ретроспектива» в тестировании: улучшаем проекты и процессы
«Ретроспектива» в тестировании: улучшаем проекты и процессы«Ретроспектива» в тестировании: улучшаем проекты и процессы
«Ретроспектива» в тестировании: улучшаем проекты и процессыSQALab
 

Destaque (20)

10 советов художника тестировщику
10 советов художника тестировщику10 советов художника тестировщику
10 советов художника тестировщику
 
Выбор и внедрение инструмента - с чего начать?
Выбор и внедрение инструмента - с чего начать?Выбор и внедрение инструмента - с чего начать?
Выбор и внедрение инструмента - с чего начать?
 
Вирусное тестирование. Что-то новое в конфигурационном тестировании
Вирусное тестирование. Что-то новое в конфигурационном тестированииВирусное тестирование. Что-то новое в конфигурационном тестировании
Вирусное тестирование. Что-то новое в конфигурационном тестировании
 
Жизненный цикл коммуникативных дефектов
Жизненный цикл коммуникативных дефектовЖизненный цикл коммуникативных дефектов
Жизненный цикл коммуникативных дефектов
 
Истории про перезапуск компании и тестирование
Истории про перезапуск компании и тестированиеИстории про перезапуск компании и тестирование
Истории про перезапуск компании и тестирование
 
Практика создания удаленного офиса тестирования
Практика создания удаленного офиса тестированияПрактика создания удаленного офиса тестирования
Практика создания удаленного офиса тестирования
 
О чем мы забываем в QA или “Знакомьтесь – Manageability!”
О чем мы забываем в QA или “Знакомьтесь – Manageability!”О чем мы забываем в QA или “Знакомьтесь – Manageability!”
О чем мы забываем в QA или “Знакомьтесь – Manageability!”
 
Использование cygwin для автоматизации процессов тестирования в Windows
Использование cygwin для автоматизации процессов тестирования в WindowsИспользование cygwin для автоматизации процессов тестирования в Windows
Использование cygwin для автоматизации процессов тестирования в Windows
 
Тестирование и техподдержка брак или сотрудничество?
Тестирование и техподдержка брак или сотрудничество?Тестирование и техподдержка брак или сотрудничество?
Тестирование и техподдержка брак или сотрудничество?
 
Очередь на тестирование
Очередь на тестированиеОчередь на тестирование
Очередь на тестирование
 
Становление программы внутренних аудитов: от требований сертификации до обесп...
Становление программы внутренних аудитов: от требований сертификации до обесп...Становление программы внутренних аудитов: от требований сертификации до обесп...
Становление программы внутренних аудитов: от требований сертификации до обесп...
 
Автоматизация рутинных задач: Вкалывают роботы, счастлив человек!
Автоматизация рутинных задач: Вкалывают роботы, счастлив человек!Автоматизация рутинных задач: Вкалывают роботы, счастлив человек!
Автоматизация рутинных задач: Вкалывают роботы, счастлив человек!
 
Эволюция средств тестирования от HP
Эволюция средств тестирования от HPЭволюция средств тестирования от HP
Эволюция средств тестирования от HP
 
Agile и мультикомандность - как это работает на примере реального проекта
Agile и мультикомандность - как это работает на примере реального проекта  Agile и мультикомандность - как это работает на примере реального проекта
Agile и мультикомандность - как это работает на примере реального проекта
 
Квантовые скачки длинной в два года: как переключиться в режим менеджера?
Квантовые скачки длинной в два года: как переключиться в режим менеджера?Квантовые скачки длинной в два года: как переключиться в режим менеджера?
Квантовые скачки длинной в два года: как переключиться в режим менеджера?
 
Вредные советы для тестирования юзабилити
Вредные советы для тестирования юзабилитиВредные советы для тестирования юзабилити
Вредные советы для тестирования юзабилити
 
Опыт создания группы быстрого реагирования (ГБР) на QA проектах
Опыт создания группы быстрого реагирования (ГБР) на QA проектахОпыт создания группы быстрого реагирования (ГБР) на QA проектах
Опыт создания группы быстрого реагирования (ГБР) на QA проектах
 
Как изменить мир, или как взять в свою команду тестировщика от Бога?
Как изменить мир, или как взять в свою команду тестировщика от Бога?Как изменить мир, или как взять в свою команду тестировщика от Бога?
Как изменить мир, или как взять в свою команду тестировщика от Бога?
 
Компонентное тестирование. Что это за зверь и с чем его едят?
Компонентное тестирование. Что это за зверь и с чем его едят?Компонентное тестирование. Что это за зверь и с чем его едят?
Компонентное тестирование. Что это за зверь и с чем его едят?
 
«Ретроспектива» в тестировании: улучшаем проекты и процессы
«Ретроспектива» в тестировании: улучшаем проекты и процессы«Ретроспектива» в тестировании: улучшаем проекты и процессы
«Ретроспектива» в тестировании: улучшаем проекты и процессы
 

Mais de SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

Mais de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Статический анализ кода: уменьшение цены ошибки за счет её раннего обнаружения