metrica
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

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

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

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

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

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

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


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

>
>
Что поражает меня при разработке статич…

Что поражает меня при разработке статического анализатора кода

28 Ноя 2011

При разработке любого инструмента для программистов, будь то компилятор, статический анализатор или что-то еще естественно используются тестовые проекты, на которых этот инструмент постоянно гоняется. Например, при разработке статического анализатора мы прогоняем его на базе из 70 реальных проектах. Это позволяет быть уверенным, что все в порядке и ничего не отломалось. Кроме того, когда мы разрабатываем новые правила диагностики ошибок, после прогона мы видим, в каких фрагментах кода выявлены новые ошибки. Все логично и очевидно. Так почему же такой заголовок?

Дело в том, что тестовая база проектов – явление довольно устоявшееся у нас. Давно уже написаны статьи про ошибки в eMule, WinMerge, TortoiseSVN... И, казалось бы, что все эти тестовые проекты изучены нами вдоль и поперек. А получается, что нет. Ведь вновь и вновь в коде удается найти новые забавные фрагменты кода.

Вот пример:

void CIrcMain::Disconnect(bool bIsShuttingDown)
{
 m_pIrcSocket->Close();
 if (m_pIrcSocket != NULL)
  delete m_pIrcSocket;
}

Код, в общем-то, может даже и работает. В некоторых случаях. Иногда. Когда m_pIrcSocket не NULL. Правда автор не уверен, что m_pIrcSocket всегда будет не NULL и добавил проверку. Но ПОСЛЕ использования. Соответственно, если данный код будет выполнен при m_pIrcSocket, то получим падение, хотя и проверка на NULL есть.

Еще один пример точного такого же плана:

  if (!frmExist)
  {
    frmExist = 
       tag->Find(ID3FID_SYNCEDLYRICS, ID3FN_DESCRIPTION, desc);
  }

  if (NULL != tag && NULL != data)
  {

Здесь сначала разыменовывается переменная tag и лишь затем она проверяется. Вопрос все тот же, если автор уверен, что tag не NULL, то зачем он проверяет, а если не уверен, то проверка должна быть раньше.

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

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

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

Дата: 20 Апр 2023

Автор: Андрей Карпов

В статье разбираются 5 основных причин, почему статический анализ кода будет полезен бизнесу, связанному с разработкой программного обеспечения. Статья поможет принять решение, стоит ли познакомиться…
Можно автоматизировать обзор кода?

Дата: 18 Апр 2023

Автор: Андрей Карпов

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

Дата: 31 Мар 2023

Автор: Тимур Макаев

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

Дата: 27 Мар 2023

Автор: Ульяна Гришина

Эта статья посвящена одной популярной и активной площадке на просторах Интернета — Reddit. Кто не в курсе, Reddit — это платформа, где сосуществуют тысячи сообществ по интересам. Мы любим Reddit за...
Хорошо ли ChatGPT ищет ошибки в коде?

Дата: 02 Мар 2023

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

Нейросети всё больше вливаются в привычный мир, пытаясь упростить нам жизнь. Тот же ChatGPT вызвал бурю обсуждений в интернете. Чат бот способен писать тексты, код, рефераты и песни. Он даже умеет...


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

Следующие комментарии next comments
close comment form