Добро пожаловать в блог официального сайта www.cplus-plus.ru

Все представленные материалы в этом блоге находятся по адрусу www.cplus-plus.ru 
Сайт разработан с целью удобного изучения объектно-ориентированного программирования языка C++. Сайт содержит: большое количество cред разработки, видеоуроков, исходников, учебников C++ как для начинающих, так и для продвинутых!

Поиск по этому блогу

Каталог статей

пятница, 3 декабря 2010 г.

Трепещи, мир! Мы выпустили PVS-Studio 4.00 с бесплатным анализатором общего назначения

Предлагаем вниманию программистов новый инструмент для поиска ошибок в исходном коде приложений на языке Си/Си++. В рамках анализатора PVS-Studio реализован новый набор правил общего назначения. Эта функциональность на данный момент является бесплатной. Вы можете скачать PVS-Studio по адресу http://www.viva64.com/ru/pvs-studio-download/.

В статье кратко рассказывается о новых возможностях PVS-Studio. На примере статического анализа исходного кода проекта TortoiseSVN будет продемонстрировано использование новых диагностических возможностей.

PVS-Studio — современный
анализатор исходного кода, интегрирующийся в среду Microsoft Visual Studio 2005/2008/2010. Анализатор позволяет удобно работать со списком предупреждений и использовать для своей работы несколько ядер процессора. PVS-Studio ориентирован на разработчиков современных Windows-приложений на языке Си/Си++/Си++0x.

До настоящего момента в PVS-Studio входило два набора правил. Первый для выявления дефектов в 64-битных программах. Второй для выявления дефектов в параллельных программах, построенных на основе технологии OpenMP.

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

Сейчас вы можете познакомиться с новым набором правил, скачав PVS-Studio 4.00 BETA. Мы будем рады получить от вас замечания по поводу замеченных ошибок и пожелания по улучшению. Сразу хочу заметить, что для начала мы реализовали только 50 правил общего назначения. Это немного. Поэтому если вы скачав и попробовав PVS-Studio сразу не найдете что-то интересное в своем коде, не торопитесь с выводами. Предлагаем вам в будущем вновь попробовать PVS-Studio, когда набор проверок будет существенно увеличен. Мы планируем в скором времени активно поработать над расширением базы диагностических правил (если хватит здоровья и повезет).

Продемонстрируем использование нового набора правил PVS-Studio на примере TortoiseSVN. TortoiseSVN -это клиент для системы контроля версий Subversion, выполненный как расширение оболочки Windows. TortoiseSVN хорошо знаком многим разработчикам и, думаю, подробнее описывать это приложение нет смысла. Отмечу только, что в 2007 году на SourceForge.net TortoiseSVN был признан лучшим проектом в категории «инструменты и утилиты для разработчиков».

Шаг 1

Скачиваем PVS-Studio с сайта компании ООО «Системы программной верификации» (это мы). Надеюсь, вам будет приятно, что не надо заполнять никаких анкет или разгадывать капчу. Просто скачиваем.

Шаг 2

Устанавливаем PVS-Studio. Можно смело нажимать кнопку «Next». Настраивать ничего не надо. Дистрибутив PVS-Studio подписан цифровой подписью. Однако некоторые антивирусы все равно могут насторожиться от действий, связанных с интеграцией в Visual Studio. Всё разрешаем.

Шаг 3

Скачиваем комплект исходных текстов проекта TortoiseSVN. Мы работали с исходным кодом версии 1.6.11.

Шаг 4

Открываем проект TortoiseSVN и запускаем анализ. Для этого в меня PVS-Studio выберем команду Check Solution.


PVS-Studio Check Solution

Шаг 5

Анализатор на некоторое время задумается (проект TortoiseSVN не так прост и содержит кучу файлов). Поэтому не торопимся делать что-то в этот момент и немного подождем. Через некоторое время появится диалог прогресса и начнется анализ. Скорость анализа зависит от количества ядер в процессоре. Если PVS-Studio будет съедать слишком много ресурсов, можно в настройках ограничить его желания.


PVS-Studio Check Solution

Сообщения анализатор выдает в свое собственное окошко, где имеются элементы управления для включения/выключения различных типов сообщений. И мы воспользуемся этими возможностями. Сейчас совершенно не интересно смотреть на множество ошибок связанных с 64-битностью. Тем более что 64-битный анализ платен, и поэтому ограничен (подробнее про trial-режим смотрите здесь).

В окне виден набор из трех кнопок, отвечающий за вывод сообщений из трех наборов правил.


64-MP-GA

1) 64 — диагностические сообщения о 64-битных дефектах (Viva64);
2) MP — диагностические сообщения о параллельных дефектах (VivaMP);
3) GA — диагностические сообщения общего типа (General Analysis).

Нам интересен только набор правил общего назначения (GA). Отжимаем другие кнопки, и лишние сообщения в списке будут тут же спрятаны.


PVS-Studio GA

Ждем завершения анализа.

Шаг 6

Анализ закончен, и мы видим список всех мест в программе, для которых анализатор рекомендует сделать обзор кода (code review).


PVS-Studio Error List

Все предупреждения разделены на 3 уровня важности (это новое в PVS-Studio 4.00). Обычно, имеет смысл смотреть только первый и второй уровень. PVS-Studio 4.00 BETA выдала 33 предупреждения первого уровня, 14 предупреждений второго уровня и 8 предупреждений третьего уровня.

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

Шаг 7

Рассмотрим интересные места в коде, обнаруженные анализатором.

Ситуация 1

В самом начале сразу два сообщения относятся к одной функции. Хочется надеяться, что эта функция особенно нигде не используется.

V530 The return value of function 'empty' is required to be utilized. contextmenu.cpp 434

V530 The return value of function 'remove' is required to be utilized. contextmenu.cpp 442




Остально вы сможете прочитать на этой странице 

Комментариев нет:

Отправить комментарий

Объектно-ориентированное программирование на языке C++