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

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

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

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

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

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

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


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

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

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

24 Дек 2010

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

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

Обучение

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Популярные статьи по теме
Эволюция PVS-Studio: анализ потока данных для связанных переменных

Дата: 28 Апр 2022

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

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

Дата: 19 Апр 2022

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

Репутационные и денежные риски, связанные с уязвимостями, огромны. На фоне этого понятен повышенный интерес к безопасности и стремление выстроить цикл безопасной разработки (SSDLC). Сегодня мы погово…
Технологии статического анализа кода PVS-Studio

Дата: 11 Янв 2022

Автор: Андрей Карпов, Павел Еремеев

PVS-Studio предоставляет статические анализаторы для языков C, C++, C# и Java на платформах Windows, Linux и macOS. Несмотря на некоторые различия, накладываемые особенностями отдельных языков, в цел…
Ускоряем сборку и анализ при помощи Incredibuild

Дата: 17 Май 2021

Автор: Максим Звягинцев

"Да сколько ты ещё будешь собирать?" – фраза, которую каждый разработчик произносил хотя бы раз посреди ночи. Да, сборка бывает долгой и от этого никуда не деться. Нельзя же просто так взять и распар…
GTK: как выглядит первый запуск анализатора в цифрах

Дата: 04 Янв 2021

Автор: Святослав Размыслов

Внедрение статического анализатора в проект для некоторых людей выглядит непреодолимой преградой. Почему-то очень распространено мнение, что объём выданных результатов анализа при первом запуске наст…

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

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