Блог
-
Сравнение Cppcheck и PVS-Studio
22.05.2012Автор: Евгений Рыжков. Читать -
Коллекция интересных ресурсов по тематике программирования на языке Си/Си++
16.05.2012Я постоянно изучаю интернет на тему новых статей про программированию на языке Си/Си++/Си++11. Если мне они кажутся интересными, я делюсь ссылками на них в твиттере @Code_Analysis, в реддите /r/Viva64 и голосую в StumbleUpon. Если вы присутствуете на одном из этих сайтов, то приглашаю следовать за мной. Со временем вам попадется немало интересных статей. А чтобы заинтересовать вас, я решил сделать небольшую подборку материалов. Читать -
Всё о PVS-Studio
15.05.2012PVS-Studio – статический анализатор, выявляющий ошибки в исходном коде приложений на языке C/C++/C++11. Инструмент PVS-Studio интегрируется в среду Visual Studio 2005/2008/2010. Читать -
Прощай #define private public
24.04.2012Язык C++, компиляторы и библиотеки движутся всё больше в сторону ужесточения контроля того, что пишет программист. Это хорошо. Все наверное слышали шутки вот на эту тему: #define true ((rand() % 100) < 95 ? true : false). Шутки, шутками, но возможность переопределить ключевые слова иногда приводит к значительному затруднению понимания программы или непонятным ошибкам. Читать -
Проверка проекта Blender с помощью PVS-Studio
23.04.2012Мы продолжаем проверять open source проекты и делать мир программ лучше. На этот раз проверке подвергся пакет Blender 2.62 для создания трёхмерной компьютерной графики. Читать -
Я хочу продать в компанию Intel лицензию на PVS-Studio
19.04.2012Меня не покидает желание продать команде разработчиков Intel Performance Primitives Library лицензию на PVS-Studio. Читать -
Что общего у статического анализа и поисковиков? Хороший "top"!
18.04.2012Разработчики поисковиков типа Google/Яндекс и разработчики инструментов статического анализа кода решают в каком-то смысле очень похожую задачу. И те, и другие должны предоставить пользователю некоторую выборку с ресурсами, которые "отвечают" желаниям пользователя. Нет, конечно, в идеале разработчики поисковиков хотели бы ограничиться кнопкой "Мне повезет!" (I'm Feeling Lucky). А разработчики инструментов анализа кода хотят выдавать только список реальных ошибок в коде. Но реальность как всегда накладывает ограничения. Хотите узнать, как мы сражаемся с жестокой реальностью при разработке PVS-Studio?. Читать -
Не зная брода, не лезь в воду. Часть третья
11.04.2012Продолжу рассказы о том, как программисты ходят по краю, даже не подозревая об этом. Поговорим об операциях сдвига <<, >>. Принципы работы операторов сдвига очевидны и многие программисты даже не знают, что их использование согласно стандарту Си/Си++ может приводить к неопределенному или к неуточненному поведению (undefined behaviour/unspecified behavior). Читать -
Советы по command line версии PVS-Studio
05.04.2012Поскольку пользователей command line версии у нас меньше, чем пользователей версии для VS IDE, хочу обратить внимание на некоторые аспекты использования command line версии, которые могут быть не очевидны. Читать -
Изучение способов привлечения на сайт программного продукта
29.03.2012Эта статья будет интересна тем, кто продвигает свои собственные программные продукты в интернете. Статья исключительно практическая. Она представляет собой отчёт о некоторых действиях, которые мы осуществляли в последнее время для продвижения продукта PVS-Studio. Я расскажу, что работает, что не работает и поделюсь сопутствующими мыслями. Читать -
Вторая проверка WinMerge с помощью PVS-Studio
28.03.2012Статья продолжает развивать тему, что статические анализаторы кода, это инструменты постоянного, а не разового применения. Читать -
Тайное о PVS-Studio
21.03.2012Существует статический анализатор кода PVS-Studio. Он интегрируется в среду Visual Studio 2005/2008/2010 и позволяет находить ошибки в программах на языке C/C++/C++11 (см. примеры обнаруживаемых ошибок). Из преимуществ можно выделить удобство, подробную документацию, on-the-fly анализ и лучшую диагностику 64-битных ошибок. Читать -
Использование PVS-Studio для проверки проектов, использующих Marmalade SDK
19.03.2012Marmalade SDK (ранее известный как AirPlaySDK) — это кроссплатформенный SDK, позволяющий разрабатывать мульти-платформенные приложения для мобильных платформ iOS, Android, Symbian и ряда других. Читать -
Что такое идеальный статический анализатор, или почему идеал не достижим
15.03.2012Вдохновившись постом Евгения Касперского об идеальном антивирусе, захотелось написать такой же пост про идеальный статический анализатор. А заодно прикинуть, насколько далек от этого идеала наш PVS-Studio. Читать -
Лицензирование PVS-Studio: почему у нас нет Single User License?
11.03.2012Сейчас PVS-Studio лицензируется по довольно простой схеме - основная (обычная) версия лицензируется на команду до пяти разработчиков. Есть site license для больших команд, но про это здесь говорить не будем. Читать -
Анализ проекта TrinityCore с помощью PVS-Studio
24.02.2012TrinityCore - бесплатный проект, распространяемый под лицензией GPL. Целью проекта является создание альтернативного программного обеспечения для эмулирования сервера многопользовательской игры World of Warcraft от Blizzard Entertainment. Основная цель проекта – обучающая. Проект ни в коем случаи не направлен на извлечение прибыли от использования. Исходный код, который написан на C и C++, является открытым, это значит, что он распространяется свободно, при этом на пользователя не накладывается никаких обязательств. Читать -
Проверка проекта Dolphin-emu
24.02.2012Нам регулярно предлагают проверить различные открытые проекты с помощью анализатора PVS-Studio. Если вы тоже хотите предложить что-то для проверки, то прошу перейти по этой ссылке. Очередным проектом стал проект Dolphin-emu. Читать -
Ответы на вопросы, которые часто задают после прочтения наших статей
21.02.2012В заметке собраны ответы на вопросы, которые часто задают нам после прочтения наших статей. Читать -
Повторная проверка проекта Notepad++
13.02.2012Прошло более года, как мы проверили Notepad++ с помощью PVS-Studio. Интересно посмотреть, насколько анализатор PVS-Studio стал лучше, и что было исправлено в Notepad++ из прежних ошибок. Читать -
Проверка проекта Quake III Arena GPL
06.02.2012Как известно, компания id Software выложила исходные коды многих своих игр. Мы уже проверяли некоторые из этих проектов. На этот раз мы решили проанализировать исходный код Quake III Arena GPL. Для анализа использовался статический анализатор PVS-Studio версии 4.54. Читать -
Как мы решали задачу реализации trial-режима в анализаторе кода PVS-Studio
01.02.2012Для многих разработчиков программного обеспечения, выбор и изменение модели trial-режима является одной из самых трепетных и обсуждаемых задач. Для одних программ придумать модель проще, для других сложно. А некоторых людей не покидает вопрос: "Мы всё правильно сделали?". Актуальна задача выбора trial-модели и для нас, разработчиков PVS-Studio. Мы решили поделиться некоторыми сопутствующими мыслями и рассказать о том, какой новый вариант мы придумали. Надеемся, что наши рассуждения и некоторые мысли окажутся полезными и другим разработчикам. Читать -
Не зная брода, не лезь в воду. Часть вторая
01.02.2012В этот раз я хочу поговорить о функции printf. Все наслышаны об уязвимостях в программах, и что функции наподобие printf объявлены вне закона. Но одно дело знать, что лучше не использовать эти функции. А совсем другое - понять почему. В этой статье я опишу две классических уязвимости программ, связанных с printf. Хакером после этого вы не станете, но, возможно, по-новому взгляните на свой код. Вдруг, вы реализуете аналогичные уязвимые функции, даже не подозревая об этом. Читать -
Не зная брода, не лезь в воду. Часть первая
27.01.2012Захотелось написать несколько небольших заметок о том, как программисты на Си/Си++ играют с огнём, не подозревая об этом. Первая заметка будет про попытки явно вызвать конструктор. Читать -
Советы по повышению скорости работы PVS-Studio
15.12.2011Эта запись устарела. Читайте "Советы по повышению скорости работы PVS-Studio" в документации.. Читать -
О пользе автоматической фильтрации одинаковых сообщений
14.12.2011С самого начала в нашем анализаторе PVS-Studio отсеивались дубликаты сообщений. Например, если диагностическое сообщение выдается на код в .h-файле, который включается в несколько .cpp-файлов, то у нас оно будет выдано только один раз. Ряд других анализаторов этого не делают и при проверке .cpp-файлов каждый раз выводят предупреждения на одни и те же стоки в .h-файлах. В результате получается, что наш анализатор выдает меньшее количество сообщений по сравнению с ними. Но у нас все никак не было повода оценить, насколько это полезно. Теперь такой повод появился, результаты впечатляют. Читать -
"Проверьте еще вот этот проект..."
13.12.2011Мы считаем, что лучший способ продвижения нашего статического анализатора кода PVS-Studio – это проверка с его помощью известных открытых проектов (вроде Chromium, Clang, WinMerge и многих-многих других) и написание статей по результатам проверки. Это не простая задача, так как, к сожалению, PVS-Studio – всего лишь инструмент, а не чудо-программа, которая сама ищет все ошибки. Часто нам пишут люди с просьбой проверить тот или иной проект и написать об этом статью. Читать -
Диалог Windows Error Reporting
08.12.2011Как и для любой Windows native программы, при работе анализатора PVS-Studio (а именно процесса PVS-Studio.exe) существует вероятность возникновения программно необрабатываемого исключения, например при переполнении стека вызовов. Операционные системы семейства Windows, начиная с версии Windows Vista, при возникновении необработанного исключения в программе генерируют специальный диалог аварийного завершения работы, предлагающий закрыть или отладить такую программу. Читать -
О нашей библиотеке VivaCore
06.12.2011Те, кто интересуется технологией анализа кода, наверняка слышали о нашей библиотеке VivaCore. Именно на ее основе построен наш же статический анализатор PVS-Studio. Раньше библиотеку можно было скачать с нашего сайта, однако недавно мы ее убрали оттуда и больше ее не распространяем. Читать -
Что поражает меня при разработке статического анализатора кода
28.11.2011При разработке любого инструмента для программистов, будь то компилятор, статический анализатор или что-то еще естественно используются тестовые проекты, на которых этот инструмент постоянно гоняется. Например, при разработке статического анализатора мы прогоняем его на базе из 70 реальных проектах. Это позволяет быть уверенным, что все в порядке и ничего не отломалось. Кроме того, когда мы разрабатываем новые правила диагностики ошибок, после прогона мы видим, в каких фрагментах кода выявлены новые ошибки. Все логично и очевидно. Так почему же такой заголовок?. Читать -
PVS-Studio: анализируем код Doom 3
25.11.2011Компания id Software имеет лицензию на PVS-Studio. Тем не менее, мы решили проверить исходные коды Doom 3, которые недавно были выложены в сеть. Результат - ошибок найдено мало, но всё-таки найдено. Я предполагаю, что это можно объяснить так. Читать -
Мифы о статическом анализе. Миф пятый – можно составить маленькую программу, чтобы оценить инструмент
07.11.2011Общаясь с людьми на форумах, я заметил несколько стойких заблуждений, касающихся методологии статического анализа. Я решил сделать небольшой цикл статей, в которых попробую показать, как всё обстоит на самом деле. Читать -
Мифы о статическом анализе. Миф четвёртый – программисты хотят добавлять свои правила в статический анализатор
04.11.2011Общаясь с людьми на форумах, я заметил несколько стойких заблуждений, касающихся методологии статического анализа. Я решил сделать небольшой цикл статей, в которых попробую показать, как всё обстоит на самом деле. Читать -
Мифы о статическом анализе. Миф третий – динамический анализ лучше чем статический
03.11.2011Общаясь с людьми на форумах, я заметил несколько стойких заблуждений, касающихся методологии статического анализа. Я решил сделать небольшой цикл статей, в которых попробую показать, как всё обстоит на самом деле. Читать -
Мифы о статическом анализе. Миф второй – профессиональные разработчики не допускают глупых ошибок
02.11.2011Общаясь с людьми на форумах, я заметил несколько стойких заблуждений, касающихся методологии статического анализа. Я решил сделать небольшой цикл статей, в которых попробую показать, как всё обстоит на самом деле. Читать -
Мифы о статическом анализе. Миф первый – статический анализатор это продукт разового применения
01.11.2011Общаясь с людьми на форумах, я заметил несколько стойких заблуждений, касающихся методологии статического анализа. Я решил сделать небольшой цикл статей, в которых попробую показать, как всё обстоит на самом деле. Читать -
Самая большая и интересная рекламная статья (70 листов) про статический анализ кода
26.10.2011Из всех видов рекламы довольно небольшое ее количество приходится на инструменты для программистов. Медийная реклама (телевидение, радио, популярные печатные издания) – очень дорого (так как оплата идет за потенциально большую аудиторию) и сильно мимо (так как программистов из них очень мало). Реклама на специализированных сайтах часто тоже не столь эффективна, так как, во-первых, глаз у программистов "отметает" рекламу автоматически, а, во-вторых, программисты знают про AdBlock. Делать видео по работе с программой – не все программы выглядят красочно и ярко, чтобы можно было их интересно снять. Таким образом, чуть ли не единственный способ сообщить о своем продукте миру – это честно и объективно показывать, чем он хорош на реальных примерах. Читать -
PVS-Studio vs Chromium - продолжение
13.10.2011Приблизительно полгода назад мы проверили проект Chromium и написали про это статью. Естественно, анализатор PVS-Studio постоянно развивается, и в новой версии Chromium мы нашли некоторые необнаруженные ранее ошибки. Конечно, многие ошибки относятся не к самому проекту Chromium, а к используемым в нём библиотекам. Однако в статье я хочу показать, что улучшились возможности анализатора, а не то, в какой части Chromium что-то нашлось, а в какой нет. Поэтому сообщения будут приведены вместе. Читать -
PVS-Studio Output Window vs plain text stdout
12.10.2011В беседах с программистами, которые подумывают об использовании статического анализатора кода, часто можно слышать такое мнение: "Никакого особенного интерфейса для такого инструмента не надо, достаточно просто command line tool. Да и вывод (stdout) всегда можно сохранить в файл". Я хочу показать ошибочность такого подхода на примере окна результатов PVS-Studio Output Window. Читать -
Проверка Intel IPP Samples for Windows - продолжение
12.10.2011Прогресс не стоит на месте. Развивается и мой любимый статический анализатор кода PVS-Studio. И недавно я понял, что те проекты, которые мы уже проверяли, можно вполне проверять заново. Писать про это новые статьи как-то странно, и вряд ли они получатся интересными. Однако, одну такую статью я всё-таки думаю надо сделать. Она станет еще одним аргументом в пользу утверждения, что настоящую пользу от статического анализа можно получить только при его регулярном использовании, а не при проверках от случая к случаю. Итак, посмотрим, что же удалось найти нового интересного в проекте Intel IPP Samples. Читать -
Как добавить новое диагностическое правило в PVS-Studio? Будни разработчиков
14.09.2011Вопрос о том, как добавить собственное диагностическое правило в наш статический анализатор PVS-Studio задают нам довольно часто. И мы всегда отвечаем, что сделать это очень просто: "Нужно всего лишь написать нам письмо, и мы добавим это правило в анализатор". Такой интерфейс для добавления новых правил удобен для пользователя. Это самый лучший и удобный интерфейс. Сделать самому подобную работу, не так просто, как кажется. В заметке я покажу подводную часть айсберга, которая скрывается за понятием "добавили вот это простое правило". Читать -
Ctrl+S и Visual Studio Output Window
12.08.2011Один из пользователей PVS-Studio прислал нам bug report следующего содержания:. Читать -
PVS-Studio vs Clang
05.08.2011Мы случайно проверили проект Clang. Думаю, результат будет любопытен ряду разработчиков. Читать -
Как в PVS-Studio мы решали одну инженерную задачу в течение нескольких лет
03.08.2011Сначала я хотел назвать эту заметку "Как PVS-Studio позволяет ДЕШЕВО внедрить статический анализ кода в процесс разработки", но не решился из-за двусмысленного толкования слова "дешево". Поэтому я расскажу об одной инженерной проблеме, которую мы постоянно должны были решать для того, чтобы люди пользовались нашим продуктом. Забегая вперед, скажу, что, как мне кажется, мы ее решили. Читать -
Проверка проекта Intel Energy Checker SDK (IEC SDK) с помощью PVS-Studio
28.07.2011В последнее время, рассказывая о проверке очередного проекта, я всё время повторял, что это очень качественный код и ошибок в нём практически не найдено. Примером может служить анализ таких проектов, как Apache, MySQL, Chromium. Почему мы выбираем такие приложения, я думаю понятно. Про них всех знают и никому не интересно, какие ужасы можно найти в дипломной работе студента Васи. Однако иногда мы поверяем и те проекты, которые просто случайно попали под руку. Некоторые такие проекты оставляют тяжёлые впечатления в моей тонкой и ранимой душе. В этот раз мы проверили Intel(R) Energy Checker SDK (IEC SDK). Читать -
Лев Толстой и статический анализ кода
21.07.2011В этот раз с помощью PVS-Studio мы проверили Apache HTTP Server. Как и ожидалось, нашли в нём ошибки. Ошибок мало. Это тоже ожидаемо. Читать -
Изменение лицензионной политики PVS-Studio
15.07.2011Лицензионная политика статического анализатора кода PVS-Studio изменяется в версии PVS-Studio 4.32. Читать -
Пояснения к статье про Copy-Paste
28.06.2011Многим читателя понравилась моя статья "Последствия использования технологии Copy-Paste при программировании на Си++ и как с этим быть" [1]. Обратил на неё внимание и Scott Meyers [2] и задал вопрос о том, как же собственно статический анализ помог выявить описанные в статье ошибки. Вот его письмо:. Читать -
PVS-Studio научился следить за тем, как вы программируете
24.06.2011Эта запись устарела. Читайте "Режим инкрементального анализа PVS-Studio" в документации.. Читать -
Использование анализатора PVS-Studio в процессе инкрементальной сборки в Microsoft Visual Studio 2010
20.06.2011Эта запись устарела. Читайте "Режим инкрементального анализа PVS-Studio" в документации.. Читать -
Статический анализ и ROI
06.06.2011Я регулярно общаюсь с потенциальными пользователями, озабоченными ошибками в программах на языке Си++. Их озабоченность выражается в том, что они пробуют инструмент PVS-Studio и начинают писать о том, что при испытаниях что-то подозрительно мало ошибок было найдено. И хотя, вроде чувствуется, что инструмент им интересен, их реакция полна скептицизма. Читать -
О внедрении PVS-Studio у наших клиентов
13.04.2011Иногда наши потенциальные клиенты интересуются примерами успешных внедрений PVS-Studio в различных компаниях. Этот интерес понятен. После Case Study от Microsoft в стиле "команда Формулы-1 McLaren начала использовать новый SQL Server и у нее настолько улучшились результаты..." хочется действительно увидеть пользу от того или иного инструмента. Читать -
Почему статический анализ кода необходимо проводить регулярно, а не время от времени (к примеру "каждый релиз")
12.04.2011Разрабатывая и помогая людям применять инструменты статического анализа кода, мы регулярно сталкиваемся с неэффективным подходом в использовании таких инструментов. Разработчики запускают инструмент, находят и исправляют интересные программные ошибки, после чего запускают инструмент лишь время от времени. Например, когда подходит срок выпуска очередной версии. Это подход обречен на неудачу. И я расскажу почему. Читать -
Вечный вопрос измерения времени
30.03.2011Казалось, закончились долгие обсуждения в форумах, как измерить время работы алгоритма, какие функции использовать, какую точность ожидать. Жаль, но опять придется вернуться к этому вопросу. На повестке дня вопрос – как лучше измерить скорость работы параллельного алгоритма. Читать -
Сделать правильно – трудно (об одной непростой ошибке)
22.03.2011Нашему анализатору PVS-Studio уже не первый год. Но до сих пор там иногда обнаруживаются "изначальные" ошибки. То есть те ошибки, которые были всю жизнь. Недавно мы проверяли исходный код проекта Chromium (архив только с исходным кодом занимает чуть меньше гигабайта). Это решение (solution) с примерно 450 проектами. И один из проектов у нас не проверялся, выдавая странные ошибки на этапе препроцессинга. Мы используем Visual C++ как препроцессор, и не выполнив препроцессинг выполнять анализ кода невозможно. Читать -
Чему равно выражение sizeof(&X), если X объявлен как "char *X[n];" ?
15.03.2011Рассмотрим пример. Читать -
По колено в Си++ г... коде
01.03.2011Наверное, многие знают сайт govnokod.ru. Если нет - рекомендую заглянуть тем, кто считает себя программистом. Хорошее настроение будет обеспечено. Сайт так заявляет о себе:. Читать -
Есть ли практический смысл использовать для итераторов префиксный оператор инкремента ++it, вместо постфиксного it++
13.02.2011Я все-таки решил разобраться, есть ли смысл при работе с итераторами писать ++iterator, а не iterator++. Мой интерес к этому вопросу возник не из любви к искусству, а из практических соображений. Мы давно хотим развивать PVS-Studio не только в направлении поиска ошибок, но и в сторону выдачи подсказок по оптимизации кода. Выдача сообщения, что лучше писать ++iterator вполне уместна в плане оптимизации. Читать -
Бесплатная лицензия на статический анализатор PVS-Studio для разработчиков, блоггеров и авторов статей в тематических IT изданиях
25.01.2011Пожалуйста, ознакомьтесь с изменениями в триал-модели, которые позволяют использовать PVS-Studio без лицензии.. Читать -
Ситуации, когда может пригодиться статический анализатор кода
24.12.2010Метод статического анализа кода заключается в поиске тех мест в тексте программы, которые с высокой вероятностью содержат ошибки. Для поиска таких мест используются инструменты, называемые статическими анализаторами кода. Получив список подозрительных строк, программист осуществляет обзор кода и исправляет найденные ошибки. Читать -
Проверка проекта Ultimate Toolbox
23.12.2010В ходе тестирования анализатора общего назначения, входящего в PVS-Studio 4.00 было проверено несколько открытых проектов с сайта CodeProject. Одним из таких проектов стал Ultimate ToolBox. Читать -
Почему PVS-Studio 4.00 будет платным решением :-(
21.12.2010К сожалению, нам придется сделать статический анализатор PVS-Studio 4.00 полностью платным. Мы планировали сделать платным только набор 64-битных правил, а анализ общего назначения и анализ OpenMP-программ свободными для использования. Но мир суров и не поддержал наши начинания. Читать -
Статический анализ и регулярные выражения
09.12.2010Я занимаюсь разработкой статического анализатор кода PVS-Studio для анализа программ на языке Си/Си++. После появления в PVS-Studio 4.00 анализа общего назначения мы получили множество откликов, как положительных, так и отрицательных. Кстати, предлагаю скачать новую версию PVS-Studio, в которой благодаря откликам людей было поправлено большое количество ошибок и недочетов. Читать -
Работа с PVS-Studio в Visual Studio 2010 из-под нескольких учётных записей Windows
09.12.2010Инсталлятор PVS-Studio позволяет устанавливать анализатор сразу для всех учётных записей Windows, имеющихся на целевой системе. Однако в силу ограничений на развёртку пакетов расширения Visual Studio версий 2005 и 2008 установка PVS-Studio под данные версии IDE возможна только из-под учётной записи, обладающей правами администратора системы, что может быть неудобно в некоторых случаях. Читать -
Проблема с символами '(' и ')' в системной переменной PATH при использовании PVS-Studio из Visual Studio 2008
08.12.2010Иногда у пользователей статического анализатора PVS-Studio, использующих среду Visual Studio 2008, возникает следующая проблема при запуске анализа: анализ не начинается, а выдаётся только одно сообщение вида:. Читать -
Трепещи, мир! Мы выпустили PVS-Studio 4.00 с анализатором общего назначения
01.12.2010Предлагаем вниманию программистов новый инструмент для поиска ошибок в исходном коде приложений на языке Си/Си++. В рамках анализатора PVS-Studio реализован новый набор правил общего назначения. Читать -
Статический анализ: ошибки в медиаплеере и безглючная аська
18.11.2010Продолжу экскурсию по ошибкам в программах и демонстрацию полезности статического анализа кода. Читать -
Разница в подходах анализа кода компилятором и выделенным инструментом
01.11.2010У компилятора и сторонних инструментов статического анализа кода есть общая задача - выявление опасных фрагментов кода. Однако существует существенная разница в том, анализ какого типа они осуществляют. Я попробую на примере компилятора Intel C++ и анализатора PVS-Studio продемонстрировать различия подходов, и пояснить, чем они вызваны. Читать -
Статический анализ исходного кода на примере WinMerge
30.10.2010Сегодня я хочу посвятить пост тематике, почему инструменты анализа исходного кода полезны вне зависимости от уровня знаний и опыта программиста. А польза такого анализа будет продемонстрирована на примере инструмента, который известен всем программистам - WinMerge. Читать -
О сложностях программирования, или C# нас не спасет?
26.10.2010Программирование это сложно. С этим никто, надеюсь, не спорит. Но вот тема новых языков программирования, а точнее поиск "серебряной пули" всегда находит бурных отклик в умах разработчиков программного обеспечения. Особенно "модной" является тема превосходства одного языка программирования над другим. Ну, к примеру, что C# "круче", чем C++. И хотя holy wars – это не та причина, по которой я пишу этот пост, тем не менее, что называется "наболело". Ну не поможет C#/lisp/F#/Haskell/... написать изящное приложение, взаимодействующее с внешним миром, и все тут. Вся изящность теряется, стоит захотеть написать что-то реальное, а не пример "сам в себе". Читать -
Поиск явного приведения указателя к 32-битному типу
19.10.2010В компиляторе Visual Studio C++ имеется warning C4311 ('variable' : pointer truncation from 'type' to 'type') предназначенный для выявления ошибок приведения указателя к 32-битным типам данных. В Intel C++ этому предупреждению соответствует warning #810. Пример обнаруживаемого дефекта:. Читать -
Проблемы 64-битного кода в реальных программах: а что же Linux?
11.10.2010Рассказывая про 64-битные ошибки, поджидающие программистов при миграции их программ, я часто слышу упреки: "Ну да, этот ваш Windows, он такой... Хорошо, что в Linux с 64-битным кодом проблем да-а-а-авно уже нет". Читать -
Intel VTune Amplifier XE 2011 beta под строгим взглядом программиста
15.09.2010Решил посмотреть на новый Intel VTune Amplifier XE 2011 beta и написать статью о примере использования. Правда, в процессе написания акцент частично сместился от использования Amplifier к его тестированию. Но это тоже хорошо, надеюсь, разработчики в Intel учтут пожелания и внесут изменения в следующую версию инструмента. И вообще буду критиковать и себя, и всех. :). Читать -
Щупаем новый Intel Parallel Studio XE 2011 beta
02.09.2010Вот, наконец, добрался попробовать Си++ компилятор, входящий в состав Intel Parallel Studio XE 2011 beta. Привожу краткий отчет о своих экспериментах. Читать -
Д'Артаньян и интернет, или работа над проблемой битых ссылок
30.08.2010Господа, хватит уже рассматривать ссылки исключительно в контексте их количества, купли/продажи и считать PR сайта, где они расположены. Пора заботиться не о роботах, а о людях. Работать с интернетом становится все невыносимее. Цветут и множатся фермы автогенерируемых сайтов с говнотекстами, да простят меня дамы. Из-за них невозможно найти даже технические материалы, не говоря про обыкновенные. Но я бы так не переживал про поиск технических материалов, если бы в них были корректные ссылки. Ссылки дохнут как мухи и, читая пост годичной давности в форуме или блоге, нет почти никаких надежд перейти по указанным ссылкам. Читать -
Пять дней на исправление ошибки в два символа, или миф о всемогущих технологиях при разработке программ
30.08.2010В этом блоге нередко можно почитать о том, как тот или иной программный инструмент, или технология разработки программ помогает делать меньше ошибок, быстрее их находить, легче исправлять. Все это конечно справедливо, но до сих пор нельзя отказываться от самого главного инструмента - мозга, так как заменить его не может ничто. Мой сегодняшний рассказ о программной ошибке, для исправления которой понадобились два символа и пять дней работы. Читать -
64-битные программы и вычисления с плавающей точкой
18.08.2010К нам в поддержку обратился разработчик, занимающийся портированием своего Windows-приложения на 64-битную платформу. Он задал вопрос, связанный с использованием вычислений с плавающей точкой. С его разрешения мы публикуем в блоге ответ на вопрос, поскольку эта тема может быть интересна и другим разработчикам. Читать -
Большой брат помогает тебе
13.07.2010В очередной раз убедился, что программисты пишут программы совершенно безалаберно. И работают они не благодаря их заслугам, а благодаря удачному стечению обстоятельств и заботе разработчиков компиляторов в Microsoft или Intel. Да, да, именно они заботятся и в нужный момент подставляют костылики нашим кривобоким программкам. Читать -
Почему в PVS-Studio в окне Error List иногда не показывается номер строки, в которой обнаружена проблема?
28.06.2010Иногда анализатор кода PVS-Studio якобы обнаруживает проблему в коде, выдает сообщение, указывает имя файла, но не показывает номер проблемной строки как показано на рисунке. Читать -
Новые диагностические возможности, реализованные в PVS-Studio 3.60
11.06.2010Диагностическое сообщение V303. Читать -
Причины, по которым 64-битные программы требуют больше стековой памяти
07.06.2010В форумах люди часто упоминают, что 64-битные версии программ поглощают больший объем памяти и стека. При этом обычно ссылаются на то, что размеры данных стали в 2 раза больше. Однако это необоснованное утверждение, так как размер большинства типов (char, short, int, float) в языке Си/Си++ остался прежним на 64-битных системах. Конечно, например, увеличился размер указателей, но ведь не все данные в программе состоят из указателей. Причины роста потребляемой памяти и стека более сложны. Я решил подробнее исследовать данный вопрос. Читать -
Общение разработчиков с пользователями программ
07.06.2010При разработке программных продуктов разработчикам очень важно иметь обратную связь с пользователями их программ. В статье рассмотрены различные способы организации такой связи. На примере инструмента для разработчиков программ рассматривается эффективность тех или иных методов обратной связи. Читать -
Привлечение внимания потенциальных клиентов с помощью статей
21.05.2010Многие, кто читал мой предыдущий пост "Получение отклика от потенциальных пользователей" пришли к мнению, что чтобы мы не делали, для привлечения внимания потенциальных клиентов, результат равен нулю. Это не так, внимание есть. Один хороший источник привлечения внимания мы уже нашли. Это статьи и блоги. Но этот источник, остается практически единственным, и именно это нас беспокоит, и мы ищем новые варианты. Читать -
Получение отклика от потенциальных пользователей
20.05.2010Не так просто получить отклик и мнение от потенциального клиента, если ты являешься небольшим стартапом. В случае большой компании, как мне кажется, дело обстоит проще. Можно потратить деньги на маркетинговые исследования. Можно пообщаться с уже имеющими клиентами, которые приобретают хотя и другие, но схожие объекты или услуги. В случае нового стартапа, клиентской базы нет, денег тоже нет. И встает задача с максимальной эффективностью, попытаться пообщаться с теми, кто потенциально может стать клиентом и скорректировать свое развитие, если спрос в чем-то расходится с предложением. Другими словами выявить, что следует поправить и предложить, для привлечения большего интереса. Читать -
"Что это такое?" – новая возможность анализатора кода PVS-Studio
19.05.2010Занимаясь разработкой, продвижением и продажей анализатора C/C++ кода PVS-Studio, нам очень нравится общаться с потенциальными пользователями нашего программного продукта. Основные темы для общения (помимо лицензионной и ценовой политики) - это что означает то или иное сообщение анализатора кода. Не секрет, что любой анализатор кода является достаточно сложным инструментом и сообщения об ошибках в программе не всегда понятны пользователям. Кроме того, не всегда очевидно, как исправить код, чтобы он был корректным. Читать -
Разработка инструментов тестирования и верификации кода
18.05.2010ООО "Системы программной верификации" занимается разработкой и сопровождением инструмента PVS-Studio, предназначенного для выявления 64-битных и параллельных ошибок в коде приложений на языке Си/Си++. Пакет PVS-Studio представляет собой набор специализированных статических анализаторов кода, позволяющих осуществлять верификацию исходного кода еще на этапе конструирования и тем самым существенно сокращать затраты на отладку, тестирование и сопровождение программы. Читать -
Как отключить IntelliSence в Visual Studio 2010?
13.05.2010Вопрос о том, как отключить IntelliSence в Visual Studio 2005 и Visual Studio 2008 был очень популярен у программистов. На форуме MSDN был даже огромный топик с обсуждением этой проблемы. Решением было удаление файла feacp.dll. Читать -
Параллельные заметки N5 — продолжаем знакомиться с конструкциями OpenMP
26.03.2010Предлагаю вашему вниманию очередную заметку посвященную знакомству с технологией параллельного программирования OpenMP. Рассмотрим директивы: atomic, reduction. Читать -
Параллельные заметки N4 - продолжаем знакомиться с конструкциями OpenMP
11.03.2010Автор: Андрей Карпов. Читать -
Параллельные заметки №3 - базовые конструкции OpenMP
02.03.2010Мы начинаем знакомить вас непосредственно с использованием технологии OpenMP и рассмотрим в этой заметке некоторые базовые конструкции. Читать -
Как стандарт C++0x поможет в борьбе с 64-битными ошибками
28.02.2010Программисты видят в стандарте C++0x возможность использовать лямбда-функции и прочие мало понятные для меня сущности :). Я увидел в нем удобные средства, позволяющие исключить многие 64-битные ошибки. Читать -
Платформа автоматизации сборок CruiseControl.NET
26.02.2010В ходе разработки структурно-сложных программных продуктов, в какой-то момент возникает необходимость автоматизировать процессы сборки и интеграции разрабатываемых проектов и дистрибутивов. Непрерывная интеграция - это практика разработки программного обеспечения, предполагающая частую (до нескольких раз в течение дня) автоматизированную сборку и последующее автоматическое тестирование текущей версии продукта. Такой подход позволяет снизить трудоёмкость самой интеграции, и выявлять в ней ошибки и противоречия, начиная с самых ранних этапов. Заметим, что данная методика предполагает использование системы управления версиями (как например CVSNT, Subversion) для хранения исходных кодов и всего остального, что необходимо для сборки и тестирования проекта. Читать -
Параллельные заметки №2 – инструментарий для OpenMP
24.02.2010Прежде чем приступить к изучению методики распараллеливания программ с помощью технологии OpenMP рассмотрим инструментарий, который нам потребуется. А потребуется нам в первую очередь Visual Studio 2005/2008 и Intel® Parallel Studio. Читать -
Суперкомпьютерные технологии в науке, образовании и промышленности
17.02.2010Недавно уважаемые и достойные организации, такие как МГУ, РАН и Суперкомпьютерный консорциум университетов России выпустили книгу "Суперкомпьютерные технологии в науке, образовании и промышленности". Книга вышла под редакцией академика В.А. Садовничего, академика Г.И. Савина, чл.-корр. РАН Вл.В. Воеводина, то есть не менее достойных сэров. Книга посвящена тому, как используются те вещи, которые обычно считаются "космическими" на практике. Однако в настоящее время, суперкомпьютерные технологии перестают быть только научным направлением и начинают решать все больше практических вопросов, связанных с проектированием и производством. Я приведу несколько примеров применения суперкомпьютеров из этой книги. Читать -
Описание ошибки интеграции Intel Parallel Studio Service Pack 1 в Visual Studio 2005/2008
13.02.2010Мы заметили одну ошибку интеграции Intel Parallel Studio Service Pack 1 в Visual Studio 2005/2008, которую хотим здесь описать и подсказать способ ее устранения. Мы преследуем сразу несколько целей. Во-первых, надеемся, что разработчики Intel Parallel Studio заметят эту ошибку и исправят ее. Во-вторых, это может помочь пользователям, использующим Intel Parallel Studio устранить эту или схожие ошибки, если они есть. В-третьих, из-за этой ошибки, некорректно себя ведет разрабатываемый нами анализатор PVS-Studio, который также интегрируется в среду Visual Studio. Читать -
"Improve your... Google?"
11.02.2010Занимаясь разработкой анализатора кода PVS-Studio для поиска проблем в 64-битных и параллельных программах, нам понадобилось собирать свежую информацию в сети интернет по некоторым темам. Например, всегда полезно отвечать в форумах и блогах на вопросы программистов, которым может быть интересен наш инструмент. В процессе сбора выяснилось, что информации в сети немало и вручную производить поиск весьма долго и утомительно, откуда появилась задача автоматизации поиска свежих данных. В этой записи мы расскажем, как делаем это. Читать -
Ключ /Wp64 и ошибка с обработкой шаблонов
05.02.2010Занимаясь продвижением анализатора Viva64 (из состава PVS-Studio) мы часто комментируем ключ /Wp64 из Microsoft Visual C++. Кто не в курсе, напомню, что этот ключ появился в Visual Studio 2003 и предназначался для подготовки миграции приложений на 64-битные системы. В Visual Studio 2008 ключ /Wp64 считается устаревшим, поскольку надо уже давно компилировать 64-битные приложения, а не готовиться к этому. То есть компиляция в 64-битном режиме выявляет все те же самые ошибки и недостатки кода, что выявлял ключ /Wp64 при сборке 32-битного приложения. Причем при компиляции 64-битного кода это делается гораздо более полно и точно. Читать -
Параллельные заметки №1 – технология OpenMP
03.02.2010В ближайшие несколько постов мы расскажем о практическом использовании многоядерных процессоров. Ведь все-таки что бы ни говорилось о многоядерности, в любом случае программы надо "обучать" эффективному использованию нескольких ядер. А в этом первом посте будет анонс и первая "вводная" заметка. Читать -
64-битные технологии - еще одно направление в современном программном обеспечении
29.01.2010В блогах и форумах довольно много говорится о многоядерных процессорах, как очевидном этапе развития компьютерных систем. Это действительно так. Но помимо многоядерных машин, другим важным направлением развития являются 64-битные технологии. Что это такое, в чем преимущества, какие есть проблемы - взгляд пользователя и взгляд программиста. Читать -
Знакомство с уровнями распараллеливания
19.01.2010Распараллелить решение задачи можно на нескольких уровнях. Между этими уровнями нет четкой границы и конкретную технологию распараллеливания, бывает сложно отнести к одному из них. Приведенное здесь деление условно и служит, чтобы продемонстрировать разнообразие подходов к задаче распараллеливания. Читать -
Visual Studio Team System, /analyze и D9040
19.01.2010В версиях Visual Studio Team System (в отличие от "обычных" редакций Visual Studio) в компиляторе C++ есть ключ командной строки /analyze. Этот ключ позволяет запустить модуль статического анализа, встроенный в Team System для поиска в коде некоторых ошибок. Читать -
Верификация и валидация
12.01.2010Термины верификация и валидация связаны с проверкой качества программного обеспечения. Мы используем эти термины в своих статьях и докладах. Неоднократно мы слышали различные комментарии и рассуждения, следует ли относить статический анализ исходного кода программ к верификации и валидации и в чем различие этих понятий. В целом складывается такое впечатление, что каждый вкладывает в эти термины свои понятия, а это приводит к взаимному недопониманию. Читать -
Оптимизация в мире 64-битных ошибок
11.01.2010В предыдущей записи блога я обещал рассказать, почему сложно демонстрировать 64-битные ошибки на простых примерах. Разговор касался operator[] и я говорил, что в простых случая может работать даже явно некорректный код. Сейчас я приведу такой пример:. Читать -
Тонкость с виртуальными функциями
11.01.2010Решил записать один момент, связанный с виртуальными функциями, а то боюсь, что потом его забуду и случайно вновь вернусь к этому вопросу. Читать -
Поиск 64-битных ошибок в реализации массивов
11.01.2010В PVS-Studio 3.43 был пересмотрен подход в обнаружении анализатором Viva64 ошибок в классах, представляющих собой контейнеры (массивы). Ранее мы придерживались позиции, что если в классе реализован operator[], то его параметр должен иметь memsize-тип (ptrdiff_t, size_t), а не int или unsigned. Мы и сейчас рекомендуем использовать для operator[] в качестве аргумента memsize тип. Это позволяет компилятору построить в ряде случаев более эффективный код и заранее предотвращает некоторые 64-битные ошибки. Сейчас мы изменили подход к работе с классами, имеющими operator[], что позволяет сократить количество лишних диагностических предупреждений. Рассмотрим пример, который потенциально может содержать ошибку, если мы захотим работать с большими объемами данных:. Читать -
Проблемы 64-битного кода в реальных программах: qsort
11.01.2010Продолжаем цикл рассказов о 64-битных ошибках, обнаруживаемых в реальных приложениях. Время идет, потребности в потребляемой памяти растут и пришел момент, когда кто-то решил отсортировать массив, состоящий более чем из 2^31 элементов. Для этого он решил воспользоваться функцией qsort, реализованной OpenBSD 4.5. Результатом стало обнаружение новой 64-битной ошибки. Запись "library/6287: 64-bit unsafety of qsort(3)" описывает данную ошибку и указывается способ ее исправления. Читать -
Embarcadero C++Builder и проверка 64-битного кода
28.12.2009В свое время мы написали в Embarcadero несколько писем с предложением пообщаться на тему использования наших наработок для проверки 64-битного Си/Си++ кода. Нашей идеей бала интеграция PVS-Studio с C++Builder или реализация некоторых правил диагностики непосредственно в их компиляторе. Все письма остались без ответа и поэтому мы решили сделать небольшую заметку для тех, кому интересна тематика проверки кода созданного в C++Builder с точки зрения работоспособности на 64-битных системах. Читать -
Много ядер хорошо, а быстрый жесткий диск тоже хорошо
28.12.2009Занимаясь разработкой анализатора кода PVS-Studio, мы большое внимание уделяем повышению производительности инструмента. Подобные решения работают достаточно медленно, поэтому программисту даже на мощной машине приходится иногда скучать, ожидая завершения анализа. Анализатор PVS-Studio использует возможности многоядерных процессоров, что позволяет повысить скорость анализа проекта в несколько раз по сравнению с одноядерными системами. Тем не менее, оказалось, что дисковая подсистема также может оказывать существенно влияние на скорость выполнения анализа. Читать -
Значение "Чисел Фибоначчи" в истории параллельного программирования
28.12.2009Чи́сла Фибона́ччи - элементы числовой последовательности 1, 1, 2, 3, 5, 8, 13, 21, 34, ... в которой каждое последующее число равно сумме двух предыдущих чисел. Числа Фибоначчи мы можем заметить во многих объектах природы, в соотношении пропорций туловища или увидеть реализацию спирали Фибоначчи в раковине моллюска. Читать -
Один из ответов на вопрос "Кому вообще нужна вся эта параллельность?"
25.12.2009В сети очень часто можно встретить рассуждения, что многоядерные процессоры, да и вообще параллельность никому не нужна, и все это проделки одной (двух, трех) компании, которой надо продавать новые процессоры. Читать -
Программные ошибки, которых не бывает
24.12.2009Недавно к нам обратился пользователь нашего анализатора PVS-Studio, который пожаловался на работу инструмента при проверке одного из проектов. Наш инструмент выдавал сообщение:. Читать -
Почему A + B != A - (-B)
21.12.2009Разрабатывая анализатор Viva64, предназначенный для поиска 64-битных ошибок, я иногда сталкиваюсь с интересными моментами поведения кода. Хочу показать один пример, который с практической точки зрения не очень интересен, но может быть полезен для понимания более сложных случаев. Читать -
Зависит ли результат статического анализа кода от используемого компилятора?
17.12.2009В очередном обсуждении статических анализаторов кода мы как обычно. Читать -
Проблемы в реальных программах - каких только ошибок не бывает на свете
10.12.2009Тестируя работу анализатора PVS-Studio на одном из проектов, обнаружили интересную ошибку. Данная ошибка не имеет отношения к 64-битной теме, хотя ее последствия диагностируются как таковые. Но эта ошибка привлекла внимание своей необычностью, и мы решили описать ее в блоге. Читать -
Холодный Tachyon
08.12.2009Чуть более месяца назад состоялся первый русскоязычный онлайн-семинар от Intel "Intel Parallel Studio workflow". На нем Кирилл Мавродиев продемонстрировал, как можно распараллелить приложение, рассматривая его как черный ящик. Другими словами была рассмотрена типичная ситуация, когда у разработчика имеется незнакомый ему код, которые необходимо модернизировать. Например, распараллелить. В качестве демонстрационного примера была выбрана программа Tachyon, реализующая алгоритм трассировки лучей и рисующая на экране трехмерный фрактал. В качестве инструментария был выбрана технология параллельного программирования OpenMP, компилятор Intel C++, профилировщик многопоточных приложений Parallel Amplifier и инструмент для поиска параллельных ошибок Parallel Inspector. После семинара появилась еще одна запись " По теплым следам онлайн семинара "Intel(R) Parallel Studio workflow"". Читать -
Tachyon и Parallel Lint
08.12.2009В предыдущем посте "Холодный Tachyon" был показан альтернативный подход к выявлению параллельных ошибок с помощью статического анализатора кода PVS-Studio (VivaMP). Инструмент PVS-Studio (VivaMP) был сравнен с Intel Parallel Inspector. На данном примере оба инструмента показали одинаковую результативность, диагностировав имеющиеся ошибки. Конечно, это не значит, что инструменты взаимозаменяемы. У каждого из них своя сфера применения, но на примере Tachyon оказалось, что обе технологии (статический и динамический анализ) дают одинаковый результат. Читать -
Проблемы 64-битного кода в реальных программах: изменение типа указателя
03.12.2009Явные приведения типа часто маскируют ошибки, связанные с изменением типа указателя. Одной из таких ошибок является превращение указателя на 32-битные объекты в указатель на 64-битные объекты. Рассмотрим пример, присланный пользователями нашего инструмента PVS-Studio (Viva64). Ошибка проявляет себя после переноса кода на 64-битную версию Windows:. Читать -
Красивая 64-битная ошибка на языке Си
19.11.2009В языке Си можно использовать функции без их предварительного объявления. Обращаю внимание, что речь идет именно о языке Си, а не Си++. Конечно, данная возможность опасна. Рассмотрим связанный с ней интересный пример 64-битной ошибки. Ниже приведен корректный код, который выделяет и использует три массива размером 1 гигабайт каждый:. Читать -
Будьте аккуратны с директивой atomic
16.11.2009Хочется рассказать об одной ошибке, которую легко может допустить человек еще мало знакомый с технологией OpenMP. Ошибка связана с неверным представлением о работе директивы atomic. Директива atomic работает быстрее, чем критические секции, так как некоторые атомарные операции могут быть напрямую заменены командами процессора. И поэтому ее удобно использовать при вычислении различных выражений. Но следует помнить, что atomic никак не влияет на вызов функций, используемых в выражении. Рассмотрим это на примере:. Читать -
PVS-Studio выдает ошибку "Some diagnostic messages may contain incorrect line number for file ..." (продолжение)
10.11.2009Мы уже писали про причины появления сообщения "Some diagnostic messages may contain incorrect line number for file ...". Напомню, что из-за ошибки препроцессора в Visual C++ 2005 (без SP1) многострочные #define обрабатывались некорректно. Что приводит к ошибке позиционирования анализатора PVS-Studio. Если у вас выдается это сообщение, то рекомендую прочитать указанную запись, чтобы понять, в чем дело и как с этим справиться. Читать -
А существуют ли в реальности 64-битные ошибки?
08.11.2009Я часто слышу в различных интерпретациях фразу "Приведенные примеры показывают не код, неправильный в плане переносимости на х64 системы, а код, неправильный сам по себе". Захотелось немного пообсуждать и пофилософствовать в блоге на эту тему. Просьба отнестись к этой записи с долей юмора. Читать -
Представление информации на сайте
22.10.2009Обращаюсь к читателям блога за советом о том, как разместить информацию на нашем сайте. Со временем сайт www.viva64.com помимо программного продукта для анализа кода PVS-Studio, который мы разрабатываем и продаем, стал содержать еще статьи и блог для программистов, презентации/демонстрации/буклеты про анализатор кода PVS-Studio, прочую традиционную для корпоративных сайтов информацию. Читать -
64-битный мир становится ближе
07.10.2009Занимаясь созданием инструментов для разработчиков 64-битных приложений, я постоянно слежу за ситуацией в мире. Какие выходят новые процессоры, какие новые операционные системы и технологии. Это нужно для того, чтобы понимать тенденции развития отрасли и в соответствии с этими тенденциями строить свои планы. Читать -
Проблемы 64-битного кода в реальных программах: виртуальные функции
15.09.2009Об одной проблеме при миграции кода на 64-битные системы, связанной с некорректной перегрузкой виртуальных функций мы писали в наших статьях уже давно. Например, наша статья "20 ловушек переноса Си++ - кода на 64-битную платформу" вышла в марте 2007 года (хотя ничуть не утратила актуальности). В ней было описание проблемы с виртуальными функциями. Суть проблемы заключается в следующем. С незапамятных времен в библиотеке MFC есть класс CWinApp, в котором имеется функция WinHelp:. Читать -
Возможные проблемы с stdafx.h при использовании PVS-Studio
15.09.2009Иногда при проверке кода приложений с помощью PVS-Studio могут возникнуть проблемы с файлом stdafx.h, который представляет собой часть механизма "precompiled headers". Например, PVS-Studio может сообщать, что этот файл не найден. Или при наличии нескольких файлов stdafx.h будет использоваться не тот файл, который должен. При этом компиляция в Visual C++ проходит нормально. Читать -
Cannot process the whole file "foo.cpp"
14.09.2009Анализатор PVS-Studio не всегда может полностью проанализировать файл с исходным кодом. Причины могут быть разные. Возможно, анализатор не смог разобрать особенно сложный шаблон или что-то еще. Такое редко, но все же случается. Как правило, это несущественно с точки зрения анализа, так как непроанализированным остается совсем небольшой участок кода. Поэтому предупреждение "Cannot process the whole file" выдается анализатором PVS-Studio только, если в настройках включен режим "Pedantic mode". Читать -
Обработка исключений внутри параллельных секций
07.09.2009Некоторое время назад я писал в блоге о проблемах (см. запись "OpenMP и исключения (exceptions)"), которые возникают при выходе исключения за пределы параллельных регионах. В том числе я рассказал, что исключение может быть сгенерировано оператором new и его необходимо обязательно перехватить и обработать до того, как оно покинет параллельный регион. Конструкции для этого выглядят достаточно неудобно и громоздко. И не так давно мне написали, что в данном случае более изящным решением будет использование оператора new, не генерирующего исключения. То есть использование "nothrow"-варианта оператора new, который возвращает NULL в случае неудачи, позволяет писать более простой OpenMP код. Читать -
Магические константы и функция malloc()
07.09.2009Вновь хочется вернуться к вопросу использования магических констант в коде. Можно сколько угодно говорить, что для вычисления корректного размера выделяемой памяти необходимо использовать оператор sizeof(). Но эти знания и корректное написание нового кода не помогут в диагностировании уже существующей ошибки в дебрях старого кода в больших проектах. Читать -
Проблемы 64-битного кода в реальных программах: магические константы
28.08.2009Вновь хочется рассказать об очередной 64-битной ошибке, найденной нами в одной из программ. Публиковать в блоге интересные и специфичные ошибки программирования для 64-битных систем постепенно становится хорошей традицией, которой мы постараемся следовать. Читать -
PVS-Studio выдает ошибку "Some diagnostic messages may contain incorrect line number for file ..."
28.08.2009Иногда анализатор кода PVS-Studio может выдавать следующую ошибку: "Some diagnostic messages may contain incorrect line number for file ...". Такое может происходить, если вы используете Microsoft Visual Studio 2005 без обновления Visual Studio Service Pack 1. Это именно ошибка (error), а не диагностическое сообщение (warning). В этой заметке мы расскажем, что это за сообщение и как на него реагировать. Читать -
Проверка Linux-приложений с помощью PVS-Studio на Windows
06.08.2009Совсем недавно мы выпустили новый программный продукт PVS-Studio, который объединил в себе два наших анализатора Viva64 и VivaMP. Еще когда анализатор Viva64, предназначенный для разработчиков 64-битных приложений, был отдельным продуктом, иногда к нам обращались люди с вопросом: "Есть ли версия Viva64 для Linux?". И хотя создать такую версию возможно (в рамках разработки специализированного решения для конкретного заказчика), сейчас Linux-версии анализатора кода не существует. Читать -
Атавизмы в больших системах
06.08.2009Большие старые программные системы, развивающиеся десятилетиями, изобилуют разнообразнейшими атавизмами и просто участками кода, написанными с использованием популярных парадигм и стилей разнообразных лет. В таких системах можно наблюдать эволюцию развития языков программирования, когда наиболее старые части написаны в стиле языка Си, а в наиболее свежих можно встретить сложные шаблоны в стиле Александреску. Читать -
PVS-Studio и проверка Loki
06.08.2009В PVS-Studio 3.10 будет существенно улучшена поддержка сложных конструкций, основанных на шаблонах, что позволяет эффективно искать ошибки даже в коде тех программ, где используются сложные шаблонные библиотеки, такие как Loki. Но начнем по порядку. Читать -
Функция распечатки типа выражения
20.07.2009Очень часто в форумах приходится встречать рассуждения, о том, какой тип будет иметь то или иное выражение. Решил сделать маленькую заметку в блог, чтобы затем ссылаться на пример кода, распечатывающий тип выражения и информацию о нем:. Читать -
Курс по статическому анализу
29.06.2009Некоторое время назад, мы общались с компанией ТЕКАМА на тему разработки для них курса по статическому анализу кода для одного из их корпоративных клиентов. К сожалению, проект не был реализован, но мы по прежнему готовы выполнить разработку теоретических и практических курсов в данной области. Если вас интересуют курсы в области качества программного обеспечения и верификации кода - пишите нам, мы уверены, что сможем найти совместные интересы. Читать -
OpenMP 3.0 и итераторы
29.06.2009Радостная новость ждет разработчиков, которые хотят одновременно использовать в своих программах итераторы и OpenMP. До не давнего времени, не то чтобы эти технологии были не совместимы, но дополняющее использование этих двух технологий было невозможно. Итераторы позволяют изящно организовывать перебор элементов, они более безопасны и так далее. Про преимущество итераторов написано во многих книгах и мы не будем здесь их вспоминать. К сожалению, до недавнего времени, технология OpenMP накладывала существенные ограничения на типы, которые могли использоваться для организации параллельных циклов. Причем это касалось не только итераторов. В ряде реализаций, не поддерживались даже такие простые беззнаковые типы, как unsigned/size_t. При этом ошибки может не возникать, просто цикл, написанный с использованием типа unsigned/size_t, не распараллеливался и выполнялся только в одном потоке [1]. Читать -
Планы ООО "СиПроВер" по развитию собственных программных продуктов
09.06.2009С начала весны 2009 года в нашей компании активно идет разработка нового программного продукта PVS-Studio, который является развитием анализаторов кода Viva64 и VivaMP. Настало время его анонсировать. Но прежде чем это сделать, я приведу небольшую историческую справку. Читать -
Первые наши практические исследования в области расчета метрик
09.06.2009Не так давно мы начали задумываться над вопросом анализа программного кода не только с точки зрения наличия в нем 64-битных или OpenMP ошибок, но и с точки сложности его адаптации для 64-битных и параллельных систем. И здесь хочется поделиться первыми нашими практическими экспериментами в этой области. Читать -
Использование rand() в параллельных секциях OpenMP
27.05.2009На форуме RSDN я встретил интересную ветку, где описывается специфическая ошибка использования функции rand() в параллельных секциях OpenMP (http://www.viva64.com/go.php?url=433). Я собираю различные ошибки, связанные с использованием технологии OpenMP для того, чтобы в дальнейшем реализовывать их диагностику в статическом анализаторе кода VivaMP. Описанная в форуме ошибка, пожалуй, слишком специфична, чтобы реализовывать правило для ее проверки и поэтому я решил просто написать о ней в блоге. Читать -
Первое впечатление от использования Intel Parallel Inspector
18.05.2009Экспериментировал с Intel Parallel Inspector в режиме диагностики ошибок работы с памятью. Могу сказать, что продукт и то, что он делает, мне крайне понравилось. Особенно понравилась прекрасно выполненная интеграция в Visual Studio и полноценная поддержка 64-битных проектов, что оценят пользователи Bounds Checker. Читать -
VivaCore, вопросы по документации
18.05.2009К нам уже несколько раз обращались с вопросом, где можно ознакомиться с документацией на библиотеку VivaCore. К сожалению должен сообщить, что на данный момент документация по библиотеке VivaCore не существует. Читать -
Изменения выравнивания типов и последствия
29.04.2009При переносе программного обеспечения одной из забот, которая ложится на плечи разработчика является изменение размерности типов и правил их выравнивания. Не так давно мы поддержали в анализаторе Viva64 диагностическое правило, позволяющее обнаружить структуры данных, неэффективно использующие память на 64-битных системах. Но в данном направлении еще стоит продолжать исследования и я внимательно просматриваю сообщения в форумах по этому поводу. Читать -
OpenMP и исключения (exceptions)
16.03.2009Мы продолжаем развивать наш статический анализатор VivaMP, и на этот раз хочется рассказать о диагностике ошибок, связанных с использованием исключений (exception) языка Си++ в параллельных регионах (parallel regions). Под параллельным регионом имеются виду фрагмент программы, который делится на параллельно выполняемые нити. Параллельно выполняемые нити формируют такими директивами OpenMP как for и sections. Использовать исключения внутри параллельных регионов можно. Но исключения не должны покидать эти параллельные регионы. Исключения должны быть пойманы и обработаны внутри параллельного региона с использованием конструкций try/catch. Если исключение выйдет за приделы параллельного региона, то это приведет к сбою и скорее всего к аварийному завершению программы. Рассмотрим пример некорректного кода:. Читать -
Поиск ошибок явного приведения типа в 64-битных программах
09.03.2009Я неоднократно сталкиваюсь c вопросами в форумах, касающихся поиска некорректного приведения типа при переносе кода на 64-битную платформу. Я решил написать эту небольшую заметку, чтобы потом иметь возможность давать на нее ссылку и не писать каждый раз ответ заново. Описание проблемы выглядит приблизительно следующим образом:. Читать -
Online диагностика ошибок связанных с использованием технологии OpenMP и архитектуры x64
02.03.2009Мне очень нравятся различные анализаторы кода, которые можно попробовать в online варианте, чтобы понять, стоил ли изучать их более подробно. Хорошим примером может служить online вариант анализатора PC-lint компании Gimpel Software: http://www.viva64.com/go.php?url=432. Наша компания периодически возвращается к вопросам: "А не создать ли аналогичную страницу на нашем сайте?". На ней в online режиме можно будет попробовать анализаторы Viva64 и VivaMP, входящие в PVS-Studio. Но я не знаю, на сколько это действительно интересно разработчикам. Все-таки online версия накладывает массу ограничений и лучше испытать демонстрационные версии продуктов, которые доступны для скачивания на сайте. Читать -
Мирное сосуществование PC-Lint и VivaMP
23.02.2009Нам задают различные вопросы, связанные с использованием PC-Lint, VivaMP и других статических анализаторов для проверки параллельных программ, спрашивают, являются ли они конкурентами и задают другие схожие вопросы. Видимо это связанно с выходом новой версии PC-Lint 9.0, в которой заявлено о поддержке анализа параллельности (см. PC-lint Manual. Раздел: 12. Multi-thread support). Я решил объединить обсуждения, в которых я участвовал по этому поводу и представить их в виде двух вопросов, на которые я дам развернутые ответы. Читать -
Viva64 для оптимизации структур данных
16.02.2009Наконец добрался до реализации диагностики в анализаторе Viva64, выявляющей структуры с неоптимальным расположением полей. До этого сдерживало отсутствие в библиотеке VivaCore поддержки вычисления типов для мелких типов данных, таких как ST_CHAR, ST_SHORT. Ранее все типы, размером меньше 32-бит назывались ST_LESS_INT. Так что пользователям библиотеки есть смысл скачать обновленную версию VivaCore. В последнее время там многое поменялась. Читать -
Неэффективность last() в реальном мире
09.02.2009Еще учась в институте и изучая различные алгоритмы обработки данных, я узнал, что необходимость использования такой функции как last() для односвязного списка может говорить о неудачном выборе структуры данных и стать причиной неэффективного алгоритма. Знать я это знал, но столкнуться с этим на практике до недавнего времени мне не приходилось. Читать -
Проблемы 64-битного кода в реальных программах: FreeBSD
02.02.2009Рассказывая людям про проблемы и трудности разработки 64-битных приложений, я часто слышу в ответ: "Надо просто программы писать хорошо и тогда никаких проблем не будет". Что мы только ни делали, чтобы убедить людей в абсурдности такой позиции! Писали статьи, приводили примеры, но всегда находились те, кто оставался при своем мнении. Недавно занимаясь исследованием интернета на предмет обсуждений 64-битных проблем, я наткнулся на форуме на описание странного поведения программы для чтения файлов. Эта программа никак не могла считать файл более двух гигабайт, хотя код был корректным:. Читать -
Запуск блога ООО "СиПроВер"
01.02.2009В ООО "СиПроВер" мы большое внимание уделяем написанию и публикации статей. В разделе "Статьи" нашего сайта представлено более 40 различных статей по статическому анализу кода, по разработке 64-битных и параллельных приложений. Многие статьи написаны сотрудниками компании, есть статьи написанные другими людьми. Однако занимаясь написанием статей мы стали все чаще замечать, что не все темы, на которые хочется высказаться, укладываются в формат полноценной статьи. Иногда достаточно было бы лишь небольшой заметки. По этой причине мы решили запустить блог, в котором наши сотрудники могли бы высказывать мысли, интересные другим людям. Читать