Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Ситуации, когда может пригодиться стати…

Ситуации, когда может пригодиться статический анализатор кода

24 Дек 2010

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

Чаще всего статический анализ кода применяется для контроля качества разрабатываемого проекта. Но есть и более необычные задачи, для решения которых используется анализ кода. В этой небольшой заметке хочется описать некоторые из них.

Обучение

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

Другой вариант использования анализатора для обучения, состоит в проверке кода молодых программистов. Это позволит быстрее найти и объяснить ряд ошибок. А возможность анализа отступов, именования переменных и так далее позволит человеку быстрее начать писать код в рамках приятого в организации стиля кодирования.

Перенос программы на другую систему

Очень сложно писать программы переносимо, особенно если изначально этого не было в планах. Поэтому перенос программу в другую операционную систему или на другую аппаратную платформу всегда достаточно болезнен. Почти невозможно заранее знать все нюансы, которые ожидают программу в другой системе и тем более как найти все небезопасные места в коде. Здесь могут помочь специализированные анализаторы кода, указывающие на все потенциально опасные места. Анализаторы подскажут, где может повредить изменение размерности типов, правил выравнивания данных, изменение порядка байт, использование устаревших функций и так далее.

Поиск черных дыр

Статический анализ может использоваться не только во благо, но и во вред. Раз анализ кода помогает разработчикам выявить переполнения буферов, стека и прочие подобные дефекты, то тоже самое может сделать и злоумышленник. Изучая хрупкие места, хакер быстрее может выбрать объект для атаки. То есть ему не надо просматривать огромное количество кода. Часть работы за него выполнит статический анализатор. Он укажет, где код уязвим, и хакер сможет перейти к следующему этапу работ - попытке понять, можно ли воспользоваться найденными дефектами в коде, и если да, то как.

Часто злоумышленнику не доступен исходный код программ. Но возможно использование статических анализаторов работающих непосредственно с двоичным исполняемым кодом.

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

Использование сторонних исходных кодов

Программисты часто используют различные открытые исходные коды. Другим словами используют открытые бесплатные библиотеки или их фрагменты. Часто одну и ту же задачу можно решить, используя различные сторонние разработки. И встает вопрос, как выбрать. Необычным интересным методом будет использование статического анализа. Ведь чем меньше ошибок будет найдено, тем с большей вероятностью это более качественный и надежный код.

Если вашей команде передают сторонний проект для сопровождения и развития, статический анализ позволит выявить наиболее страшные места в проекте, а, следовательно, вы сможете предположить, каким частям системы следует уделить максимальное внимание.

Обоснование необходимости рефакторинга кода

Часто программисты осознают, что проект становится слишком сложным и начинает разваливаться. Они приходят к выводу, что необходимо заняться рефакторингом проекта, иначе практически все время будет съедать поддержка и создание подпорок, чтобы проект окончательно не завалился. Но у программистов всегда есть срочные задачи. И обосновать, почему не стоит делать очередной диалог, а следует переписать один из старых, не так просто. Здесь в качестве одного из аргумента может выступить статический анализатор, который вопит о слишком больших функциях, о множественном использовании глобальных переменных, о слишком сложной иерархии классов, об использовании устаревших и потому небезопасных функций и о прочих ужасах.

Заключение

Конечно, я перечислил далеко не все, а то, о чем вспомнил. Есть масса других задач, в решении которых поможет статический анализ кода. Напишите, если у вас есть были интересные нестандартные способы использования методологии статического анализа.

Популярные статьи по теме
Как PVS-Studio оказался внимательнее, чем три с половиной программиста

Дата: 22 Окт 2018

Автор: Андрей Карпов

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь ок…
PVS-Studio ROI

Дата: 30 Янв 2019

Автор: Андрей Карпов

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
Статический анализ как часть процесса разработки Unreal Engine

Дата: 27 Июн 2017

Автор: Андрей Карпов

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…
Как и почему статические анализаторы борются с ложными срабатываниями

Дата: 20 Мар 2017

Автор: Андрей Карпов

В своей предыдущей статье я писал, что мне не нравится подход, при котором статические анализаторы кода оцениваются с помощью синтетических тестов. В статье приводился пример, воспринимаемый анализат…
Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний

Дата: 31 Июл 2017

Автор: Андрей Карпов

После большой статьи про проверку операционной системы Tizen мне было задано много вопросов о проценте ложных срабатываний и о плотности ошибок (сколько ошибок PVS-Studio выявляет на 1000 строк кода)…
Любите статический анализ кода!

Дата: 16 Окт 2017

Автор: Андрей Карпов

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.
Зло живёт в функциях сравнения

Дата: 19 Май 2017

Автор: Андрей Карпов

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Главный вопрос программирования, рефакторинга и всего такого

Дата: 14 Апр 2016

Автор: Андрей Карпов

Вы угадали, ответ - "42". Здесь приводится 42 рекомендации по программированию, которые помогут избежать множества ошибок, сэкономить время и нервы. Автором рекомендаций выступает Андрей Карпов - тех…
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

Автор: Андрей Карпов

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…
Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей

Дата: 21 Ноя 2018

Автор: Андрей Карпов

Краткое описание технологий, используемых в инструменте PVS-Studio, которые позволяют эффективно обнаруживать большое количество паттернов ошибок и потенциальных уязвимостей. Статья описывает реализа…

Комментарии (0)

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