Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Из подвала секретной лаборатории разработчиков PVS-Studio…

Anna | 25.06.2014 | нет комментариев
О, интересная статья про PVS-Studio!
Время от времени мы рассказываем о своих внутренних изысканиях и разработках, которые происходят в команде разработчиков статического анализатора кода PVS-Studio для C/C . Сегодняшняя история об следующий новинке, которую мы готовим в рамках нашего продукта.Тем, кто следит за нашим планом (а тем больше пользуется им) вестимо, что наш анализатор первоначально был плагином только для Visual Studio. После этого стало допустимо пользоваться им как консольным приложением, встраиваемым в Makefile (спросите меня как, если не знаете). Потом, в начале этого года у нас возникла интеграция в C Builder. Кстати у нас пока достаточно немного пользователей под C Builder, и мы не вовсе понимаем отчего. И вот незадолго мы задумались над так называемым standalone приложением.

Вообще как для пользователя выглядит совершенный статический анализатор кода (в вакууме либо нет)? Мне кажется, на основе моего навыка работы в этой области, совершенный анализатор должен выглядеть так. Пользователь скачивает утилиту, запускает ее, указывает папку с кодом и нажимает огромную зеленую кнопку: «Обнаружить все ошибки!». Никакой настройки, никакой «интеграции в план». чай пользователю это не необходимо? Да, не необходимо. Но необходимо анализатору кода, к сожалению. Как минимум, необходима информация по #include и #define, если мы говорим о C . Она необходима для того, Дабы исполнитьпрепроцессирование кода.

И здесь мы приходим к необходимости выбора одного из вариантов:

  1. Либо инструмент должен сам извлекать эту информацию из файла плана (как делают наши плагины для Visual C и C Builder).
  2. Либо инструмент может получать эту информацию, если она ему будет передана в Makefile (как работает наша версия для командной строки).
  3. Либо инструмент принуждает пользователя томительно вбивать все папки для #include и параметры #define, что примерно немыслимо, т.к. пользователю это сделать Исключительно трудно.
  4. Либо… придумать какой-то еще вариант.

Мы пошли по четвертому пути и решили испробовать так. А что если в качестве начальной информации анализатор будет получать не обыкновенные исходники в виде .cpp-файлов, а теснее препроцессированные файлы. Т.е. файлы, которые обработаны препроцессором. Это нас избавит от необходимости вызывать препроцессор, а соответственно знать эти #include и #define.

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

Выходит, разрабатываемый в секретных лабораториях нашей команды инструмент выглядит приблизительно так:
Рисунок 1 – Диалог запуска проверки препроцессированных файлов.
Рисунок 1 – Диалог запуска проверки препроцессированных файлов.

Во-первых, мы указываем папку, где находится препроцессированные .i-файлы. Их и будет исследовать наш инструмент.

Во-вторых, мы указываем папку с исходниками. Это необходимо для того, Дабы ошибки выявлять больше верно. Помимо того, неизменно отменнее делать (в последующем) навигацию по пользовательским .cpp-файлам, а не по не вовсе внятным человеку .i-файлам.

В-третьих, мы указываем папку, в которой находятся системные include-файлы. Самые-самые базовые, как бы <string> либо <stream>. Для чего? Дабы анализатор знал, что вот тут лежат те файлы, на которые выдавать диагностические сообщения не нужно.

Выходит, мы можем «скормить» препроцессированные файлы этой программе, и после этого теснее на них запускать анализатор. Именно таким образом мы и проверяем в реальное время план Boost. Кстати скоро будет отчет о проверке Boost – подпишитесь на наш блог, Дабы не пропустить. Позже проверки файлов мы получаем список диагностических сообщений вот в таком виде:
Рисунок 2 – Список диагностических сообщений после проверки i-файлов.
Рисунок 2 – Список диагностических сообщений позже проверки i-файлов.

Обращаю внимание читателей на то, что это не Visual Studio либо RAD Studio. Это отдельная утилита, которая повторяет всецело (вернее использует) окно PVS-Studio. В ней есть и встроенный редактор кода (Scintilla из Notepad ), тот, что разрешает трудиться с ошибкам довольно полновесно:
Рисунок 3 – Полноценный редактор кода.
Рисунок 3 – Полновесный редактор кода.

Безусловно данный пост не тянет на полновесное изложение нашей новой секретной утилиты. Впрочем на несколько вопросов я теснее могу ответить.

Кому НЕ необходима эта утилита? Тем, кто спокойно может проверить свой план в PVS-Studio с поддержкой интеграции в Visual Studio и C Builder. Кому НЕОБХОДИМА эта утилита? Тем, кто хочет проверять свой код с поддержкой PVS-Studio и использует другие среды разработки и/или проектные файлы, в которые трудно встроить нашу утилиту командной строки.

Какой бы вы хотели видеть такую утилиту? Комфортен ли вам режим проверки по готовым препроцессированным файлам? Чего не хватает в такой утилите? Выпускать ли нам ее либо забросить последующие разработки этой утилиты, так как всех устраивает наша интеграция в среды от Microsoft/Embarcadero?

P.S. Кстати мы обновили дизайн нашей базы ошибок, найденных в open source планах.

Описываемая в статье утилита…

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Проголосовало 106 человек. Воздержалось 77 человек.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB