Pull to refresh

Comments 33

Предлагаю перенести в какой-нибудь не закрытый блог, чтобы статью увидело большее число человек.
Весьма увлекательно читать про ошибки, понимая, что их смогла найти программа, а не человек.
Я изначально поместил статью в блог «Разработка» именно по этой причине. Но администрация Хабра видимо озабочена другими вопросами и сама перенесла статью в закрытый блог. Если кто-то считает, что статье место в «Разработке», то голосуйте за мой комментарий — может разрешат перенести.
Всем спасибо за поддержку, администрация разрешила перенести в «Разработку»!
Положу распечатку Вашей статьи, в сортир в офисе, в нём постоянно лежат бесплатные газеты и журналы со 100% рекламы всякого шлака, пускай будет лежать теперь IT реклама. (ЗЫ. Офис как раз программерский...)
Очень прошу, так и сделайте!!! Тогда ее прочитают еще больше. Заранее спасибо.
Дык и я о том же… Кодеры они ведь ленивые, и РЕКЛАМУ, да же в в виде технической и полезной инфы, читать будут только по привычки — где нить в сортире…
UFO just landed and posted this here
Было бы не плохо, если б статья в epub или pdf была, а то сейчас читать времени нет, а в транспорте на читалке самое оно :)
Открываете версию для печати (на сайте) и печатаете на виртуальный принтер в pdf. Мы сами pdf не выкладываем для того, чтобы оперативно править ошибки на сайте.
UFO just landed and posted this here
Вы делаете медвежью услугу нам. Распространение материала в pdf на сторонних сайтах плохо тем, что он не обновляется. Мы только за пару часов исправили уже несколько ошибок в статье. Поэтому всегда лучше зайти на сайт и сделать себе самому pdf (если уж так хочется именно его).

Удалите, пожалуйста, этот pdf.
UFO just landed and posted this here
ох, совершенно из головы вылетело что хром умеет в пдф сохранять.
А у вас есть переводы этой (или других подобных статей) ни английский?
Конечно!

www.viva64.com/en/a/0077/

Открываете на нашем сайте русскую статью и кликаете вверху на «English» — открывается она же на английском. Обратно — на русском. Ну или в URL меняете en на ru и наоборот.
Спасибо! Не обратил внимания :-)
У меня есть вполне хорошие циферки по рекламе продуктов для разработчиков на stackoverflow (медийка). Очень много сайтов, где сидят англоязычные программисты, подключены к Google Adsense (Content Display Network в помощь). Неплохой roi выходит при продуманных коммуникациях внутри сообществ. Еще есть тематические группы в LinkedIn, обширные рекламные возможности в Geeknet и так далее.
Здесь в примере 7 ошибка. Ваше ПО нашло ее в коде, а вы снова допустили ее в тексте :)

В этом фрагменте:
By mistake, IDC_KEYWORD3_BOLD_CHECK is used instead of IDC_KEYWORD3_BOLD_CHECK.
Спасибо! Сейчас поправим.

P.S. Лучше писать почтой про ляпы.
Я только что наконец-то скачал триал PVS-STUDIO дабы таки посмотреть, будет ли это полезно. Вот небольшой experience report:

  • Сначала меня смутило то, что инсталлятор упомянул только 2005 и 2008 студии, в то время как на сайте пишется что поддерживается 2010я. Ладно, наверное просто забыли написать, или я невнимателен.
  • В процессе установки появилась пара error box’ов о невозможности что-то зарегистрировать.
  • После установки, запустил в меню процесс анализа. Получил ошибку. Ошибку отправил в support.
  • Понял в чем дело. Вы, оказывается, не поддерживаете Intel C++. В связи с чем следуещее:

RANT
Уважаемое комьюнити! Не все кто пишет на C++ используют компилятор от Microsoft. Если вы поддерживаете C++, поддержите пожалуйста проекты Intel C++ (Intel Parallel Studio).

/RANT
  • Ладно, переключил проект в режим Microsoft C++, благо Intel позаботилась о том чтобы это было легко. PVS заработал.
  • С досадой заметил что в триале нельзя перепрыгнуть на линию, которая сгенерировала ошибку.
  • Ошибки долго не анализировал, но нашел примерно вот такое:
    float n = (float)_wtof(markup.c_str());
    if (n != 0.0f)
    {
      element.Size = n;
      return;
    }

    Не смотря на то, что спека явно декларирует что The return value is 0.0 if the input cannot be converted to a value of that type, PVS Studio выдала мне

    An odd precise comparison: n != 0.0f. It’s probably better to use a comparison with defined precision: fabs(A – B) > Epsilon.


Заметил, что можно получить массу ошибок если включить анализ 64-битности. Тут уже стало интересней: например правильные подсказки относительно memsize_t порадовали. С другой стороны, непонятно почему именно тут появились жалобы на «dangerous magic number».
В целом, заметил очень много «мешающих» анализов которые захотелось отключить. Удивился механизму отключения: в property grid добавлены коды ошибок, а не их описание. Что впочем в каком-то смысле удобно.
Как всегда, раздражает «слабый» английский в документации.
Спасибо за подробное сообщение. На Ваш баг-репорт в почте уже ответили. Теперь здесь прокомментирую.

>> Сначала меня смутило то, что инсталлятор упомянул только 2005 и 2008 студии, в то время как на сайте пишется что поддерживается 2010я. Ладно, наверное просто забыли написать, или я невнимателен.

Интеграция в VS2005/2008 выполнятся инсталлятором довольно долго и это можно заметить. Интеграция в VS2010 выполняется почти мгновенно, поэтому Вы не заметили сообщения об этом.

>> В процессе установки появилась пара error box’ов о невозможности что-то зарегистрировать.

Такое иногда бывает из-за сложных вариантов конфигурации студии. Иногда несмотря на сообщения об ошибках все-таки работает как надо.

>>После установки, запустил в меню процесс анализа. Получил ошибку. Ошибку отправил в support.

Ответили, спасибо.

>> поддержите пожалуйста проекты Intel C++

Это очень сложно технически, так как Intel C++ подменяет API студии и с ним не работает то, что нужно. А экономически это не очень обоснованно.

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

Не так. Часть сообщений скрыта, а часть — доступна. Но видимо эта концепция для триала не очень удачная.

>> С другой стороны, непонятно почему именно тут появились жалобы на «dangerous magic number».

Некоторые закладываются на размер указателя в 4 байта или 32 бита…

>> В целом, заметил очень много «мешающих» анализов которые захотелось отключить. Удивился механизму отключения: в property grid добавлены коды ошибок, а не их описание. Что впочем в каком-то смысле удобно.

Можно в меню правой кнопки мыши кликнуть «Hide all by code» — это альтернативный вариант скрытия.

>> Как всегда, раздражает «слабый» английский в документации.

Есть документация на русском.

Если есть еще вопросы, спрашивайте.
Отправили пробный ключик. Можно будет более просто изучить диагностики. Приведенный пример с float, это предупреждение третьего уровня. Там редко бывает что-то вкусное. Но с другой стороны, для некоторых такие ошибки действительно головная боль при работе со старыми большими проектами. Мы добавляли её по просьбе пользователей.
вам бы еще ссылки на код повставлять, который инспектируете.
Заранее извиняюсь за возможно наивный вопрос, но беглый просмотр ответа не дал, поэтому:
а анализирует ли PVS код шаблонных классов, хотя бы на основе их конкретного использования?
Я просто пробовал поставить триал версию какое-то время назад, и во всем проекте нашло очень мало ошибок, и все они были не в шаблонах. Поэтому и решил уточнить:-)
Как правило, шаблонного кода намного меньше, чем нешаблонного. Поэтому и находится там что-то реже. По поводу небольшого количества ошибок, просьба не забывать вот про это:
Статический анализ и ROI
Лев Толстой и статический анализ кода

Сразу видно серьезные мужики — это вам не формочки в django раскладывать :)
А ведь большую часть этих ошибок хотя бы раз я совершал сам…

Читая, понимаешь, как нужно писать правильно.
В первую очередь — использовать готовые инструменты для однотипных действий.
Sign up to leave a comment.

Articles