Особенности применения статистического анализатора программного кода PVS-Studio в учебном процессе | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 18 июля, печатный экземпляр отправим 22 июля.

Опубликовать статью в журнале

Библиографическое описание:

Особенности применения статистического анализатора программного кода PVS-Studio в учебном процессе / Е. В. Коптенок, А. В. Кузин, В. С. Лядов [и др.]. — Текст : непосредственный // Молодой ученый. — 2019. — № 27 (265). — С. 24-26. — URL: https://moluch.ru/archive/265/61418/ (дата обращения: 05.07.2020).



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

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

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

Один из рассмотренных и проверенных является PVS-Studio. Данный продукт представляет собой утилиту для поиска опечаток, ошибок безопасности и всевозможных уязвимостей в исходном коде программного продукта. Утилита работает с семейством языков С: C, C++, C#, а также Java.

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

Утилита наиболее сильна в поиске:

– ошибок при работе с исключениями;

– опечаток;

– мёртвого/недостижимого кода;

– потере данных и утечки ресурсов на различных архитектурах;

– ошибок синхронизации.

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

Рис. 1. Описание ошибки в PVS Studio

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

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

Отчёт, который генерирует PVS-Studio имеет подробное описание каждой ошибки, объясняет из-за чего возникло исключение и предлагает решение для каждого рода ошибок.

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

В каждом отчёте присутствует ссылка на полный и подробный список ошибок, которые обнаруживает PVS-Studio, ошибки описаны для всех языков и стандартов, с которыми работает утилита. Для каждой ошибки приведён пример правильного и неправильного использования данных. Помимо этого, здесь можно ознакомиться со стандартом MISRA (Motor Industry Software Reliability Association — группа, разработавшая стандарт языка Си для ответственных встраиваемых систем.), соблюдая который значительно повышается безопасность продукта, разрабатываемого студентом.

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

Не мало важно, чтобы для каждого студента была понятна в настройке и работе утилита. PVS-Studio является широко настраиваемой, существует возможность убирать файлы из проверки по именам/маскам/расширением.

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

Большим преимуществом для студента в использовании утилиты является то, что она распространяется бесплатно в академических целях, при вводе свободного лицензионного ключа “FREE-FREE-FREE-FREE” и указанием комментария в каждом исходном файле проекта, говорящего о том, что PVS Studio используется в академических целях.

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

Постоянное использование PVS-Studio в десятки раз сократит время на тестирование любого приложения, программируемого студентом. Ошибку, которую будет студент искать несколько минут/часов — утилита найдёт за минуту, с подробным объяснением возникшей уязвимости.

Инструмент так же поможет студенту следить за правильным оформлением кода, в связи с тем, что поиск опечаток — одно из главных его достоинств. Соблюдение стандарта MISRA поможет научиться студенту писать приложения безопасными, как для компьютера, так и для встраиваемых систем.

Утилита является кроссплатформенной для Windows, Linux и Mac OC, свободно интегрируемой с IDE: Visual Studio 2011/2013/2015/2017/2019 и IntelliJ IDEA, а плагин SonarQube свободно совместим с любой известной IDE для Windows и Linux. Всё это даёт возможность студенту обучаться языкам программирования и написанию алгоритмов на различных платформах и средах разработки сокращая время на: поиск уязвимостей во время конструирования, тестирование и отладку.

Литература:

  1. PVS-Studio [Электронный ресурс] — 2012. — Режим доступа: http://www.viva64.com/en/pvs-studio/.
  2. Белоусов, П. Средство оценки качества кода в MS Visual Studio [Электронный ресурс] — 2017. — Режим доступа: http://habrahabr.ru/post/111524/, свободный.
  3. Глухих, М. И. Программная инженерия: Обеспечение качества программных средств методами статического анализа [Текст] / М. И. Глухих, В. М. Ицыксон. — СПб: Изд. Политехн. ун-та, 2018. — 149 с.
  4. Статический анализ кода [Электронный ресурс] / Intel Corp. — Режим доступа: https://sоftwаrе.intel.cоm/ru-ru/аrticles/Stаtiс-cоdе-аnаlysis-ru, свободный.
Основные термины (генерируются автоматически): MISRA, PVS, студент, IDE, исходный код, статистический анализатор кода, ошибка, утилит, программный продукт, IDEA.


Похожие статьи

Статический анализ исходного кода в обучении и разработке...

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

К вопросу об использовании программных продуктов с открытым...

Исходный код большинства программного обеспечения распространяется по GNU GPL или другим открытым лицензиям. Открытость самого программного обеспечения позволяет наглядно видеть устройство и принципы работы программного обеспечения, а значит...

Статический и динамический анализ исходного кода

Статический анализ кода может помочь в процессе код-ревью благодаря

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

Тестированию подвергался не уже готовый продукт, а продукт в процессе всего цикла.

Статический анализатор кода на основе взаимодействия...

Большинство нефункциональных программных ошибок вносится на стадии кодирования.

Статический анализ — группа методов, которые используют исходный код для определения

Статический анализ следует делить на четыре основных части: парсинг (распознание) кода...

Обзор различных средств фаззинга как инструментов...

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

Типовые ошибки дизайна программного кода | Статья в журнале...

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

Проверка корректности программного обеспечения

Код ошибки — это номер (или сочетания буквы и номера), который соответствует конкретной проблеме в работе программы. Коды ошибок используются для идентификации неправильной работы аппаратного и программного обеспечения, неверного ввода данных пользователем...

Технология тестирования программных модулей

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

Проводя тестирование Белого ящика, специалист руководствуется определенными знаниями программного кода, чтобы изучить значения выходных данных.

Особенности изучения способа тестирования базового пути...

Одной из дисциплин, изучаемых студентами бакалавриата, обучающимися по направлению «Программная инженерия», является «Тестирование программного обеспечения». Известно, что тестирование представляет собой один из этапов жизненного цикла разработки...

Похожие статьи

Статический анализ исходного кода в обучении и разработке...

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

К вопросу об использовании программных продуктов с открытым...

Исходный код большинства программного обеспечения распространяется по GNU GPL или другим открытым лицензиям. Открытость самого программного обеспечения позволяет наглядно видеть устройство и принципы работы программного обеспечения, а значит...

Статический и динамический анализ исходного кода

Статический анализ кода может помочь в процессе код-ревью благодаря

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

Тестированию подвергался не уже готовый продукт, а продукт в процессе всего цикла.

Статический анализатор кода на основе взаимодействия...

Большинство нефункциональных программных ошибок вносится на стадии кодирования.

Статический анализ — группа методов, которые используют исходный код для определения

Статический анализ следует делить на четыре основных части: парсинг (распознание) кода...

Обзор различных средств фаззинга как инструментов...

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

Типовые ошибки дизайна программного кода | Статья в журнале...

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

Проверка корректности программного обеспечения

Код ошибки — это номер (или сочетания буквы и номера), который соответствует конкретной проблеме в работе программы. Коды ошибок используются для идентификации неправильной работы аппаратного и программного обеспечения, неверного ввода данных пользователем...

Технология тестирования программных модулей

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

Проводя тестирование Белого ящика, специалист руководствуется определенными знаниями программного кода, чтобы изучить значения выходных данных.

Особенности изучения способа тестирования базового пути...

Одной из дисциплин, изучаемых студентами бакалавриата, обучающимися по направлению «Программная инженерия», является «Тестирование программного обеспечения». Известно, что тестирование представляет собой один из этапов жизненного цикла разработки...

Задать вопрос