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

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

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

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

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

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

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


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

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

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

24 Дек 2010

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

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

Обучение

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Популярные статьи по теме
Анализ потока данных PVS-Studio распутывает всё больше связанных переменных

Дата: 08 Авг 2022

Автор: Артём Ровенский

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

Дата: 02 Авг 2022

Автор: Сергей Васильев

Вы решили внедрить PVS-Studio в свой проект. Но внезапно оказывается, что начальник против, потому что... Кстати, а почему он может быть против? Давайте попробуем разобраться и понять, как можно рабо…
Межмодульный анализ C и C++ проектов в деталях. Часть 2

Дата: 14 Июл 2022

Автор: Олег Лысый

В первой части статьи мы рассматривали основы теории компиляции C и C++ проектов, в частности особое внимание уделили алгоритмам компоновки и оптимизациям. Во второй части мы погрузимся глубже и пока…
Межмодульный анализ C и C++ проектов в деталях. Часть 1

Дата: 08 Июл 2022

Автор: Олег Лысый

Начиная с PVS-Studio 7.14, для C и C++ анализатора появилась поддержка межмодульного анализа. В этой статье, которая будет состоять из двух частей, мы расскажем, как устроены похожие механизмы в комп…
Эволюция PVS-Studio: анализ потока данных для связанных переменных

Дата: 28 Апр 2022

Автор: Никита Липилин

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

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

Следующие комментарии
Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно. Хотите узнать подробнее?
Принять