Как стать автором
Обновить
329.24
PVS-Studio
Статический анализ кода для C, C++, C# и Java
Сначала показывать

Есть ли практический смысл использовать для итераторов префиксный оператор инкремента ++it, вместо постфиксного it++

Время на прочтение5 мин
Количество просмотров22K
c++ or ++c
Я все-таки решил разобраться, есть ли смысл при работе с итераторами писать ++iterator, а не iterator++. Мой интерес к этому вопросу возник не из любви к искусству, а из практических соображений. Мы давно хотим развивать PVS-Studio не только в направлении поиска ошибок, но и в сторону выдачи подсказок по оптимизации кода. Выдача сообщения, что лучше писать ++iterator вполне уместна в плане оптимизации.

Но вот насколько эта рекомендация актуальна в наше время? В стародавние времена, например, советовали не повторять вычисления. Считалось хорошим тоном вместо:
X = A + 10 + B;
Y = A + 10 + C;

написать так:
TMP = A + 10;
X = TMP + B;
Y = TMP + C;

Читать дальше →
Всего голосов 135: ↑112 и ↓23+89
Комментарии112

Intel IPP Samples for Windows — работа над ошибками

Время на прочтение13 мин
Количество просмотров2.5K
Проверка Intel IPP Samples for Windows
Это моя очередная заметка о том, как PVS-Studio делает программы более надёжными. То есть где, и какие ошибки он обнаруживает. На этот раз под молоток попали примеры, демонстрирующие работу с библиотекой IPP 7.0 (Intel Performance Primitives Library). Хотел, вначале, этот пост поместить в блог Intel, но потом решил, что это будет совсем уже...
Читать дальше →
Всего голосов 40: ↑29 и ↓11+18
Комментарии15

Последствия использования технологии Copy-Paste при программировании на Си++ и как с этим быть

Время на прочтение8 мин
Количество просмотров6.6K
Copy-Paste, Ctrl-C, Ctrl-V
Я занимаюсь созданием анализатора PVS-Studio, выявляющего ошибки в исходном коде приложений на языке C/C++/C++0x. В связи с этим мне приходится просматривать большой объем исходного кода различных приложений, где с помощью PVS-Studio были обнаружены подозрительные участки кода. У меня накопилось достаточно примеров, в которых хорошо видно, когда ошибка появилась на свет из-за копирования участка кода и его модификации. Конечно, это не новая идея, что использовать Copy-Paste при программировании плохо. Однако попробуем не отделываться рекомендацией «не копируйте код» и подойдем к этой теме более внимательно.
Читать дальше →
Всего голосов 94: ↑82 и ↓12+70
Комментарии50

Почему PVS-Studio 4.00 будет платным решением

Время на прочтение4 мин
Количество просмотров1.1K
К сожалению, нам придется сделать статический анализатор PVS-Studio 4.00 полностью платным. Мы планировали сделать платным только набор 64-битных правил, а анализ общего назначения и анализ OpenMP-программ свободными для использования. Но мир суров и не поддержал наши начинания.
Читать дальше →
Всего голосов 85: ↑46 и ↓39+7
Комментарии90

Статический анализ и регулярные выражения

Время на прочтение7 мин
Количество просмотров5.8K
Я занимаюсь разработкой статического анализатор кода PVS-Studio для анализа программ на языке Си/Си++. После появления в PVS-Studio 4.00 анализа общего назначения мы получили множество откликов, как положительных, так и отрицательных. Кстати, предлагаю скачать новую версию PVS-Studio, в которой благодаря откликам людей было поправлено большое количество ошибок и недочетов.

В ходе обсуждения PVS-Studio 4.00 вновь встал вопрос, можно ли реализовывать большинство проверок, используя регулярные выражения, и не переусложняем ли мы, говоря, что обязательно необходимо строить и работать с деревом разбора. Вот пример комментария на эту тему. Подобный вопрос возникает уже не в первый раз, и я решил написать статью, чтобы объяснить, почему пытаться использовать регулярные выражения для анализа Си/Си++ кода — эта очень плохая идея.

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

Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии37

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

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

В статье кратко рассказывается о новых возможностях PVS-Studio. На примере статического анализа исходного кода проекта TortoiseSVN будет продемонстрировано использование новых диагностических возможностей.
Читать дальше →
Всего голосов 88: ↑78 и ↓10+68
Комментарии170

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

Время на прочтение8 мин
Количество просмотров1.7K
Продолжу экскурсию по ошибкам в программах и демонстрацию полезности статического анализа кода.

Это мой последний пост про пока недоступную для скачиванию версию PVS-Studio. Планирую, что через неделю вы уже сможете попробовать первую beta-версию с новым набором правил общего назначения.

Рассмотрим два проекта. Первый — Fennec Media Project. Это универсальный медиа-плеер ориентированный на воспроизведение аудио и видео в высоком разрешении. В комплект исходных кодов входит множество модулей расширения (plugins) и кодеков, но анализироваться будет только сам плеер. Исходный код последней на данный момент версии 1.2 Alpha доступен здесь.

Второй проект — qutIM. Это кроссплатформенный клиент мгновенного обмена сообщениями с открытым исходным кодом. Был проанализирован код на момент начала ноября 2010 года. Набор исходных кодов был предоставлен мне одним из разработчиков, но вы также можете скачать исходный код с официального сайта. Этот разработчик, кстати, присутствует здесь — gorthauer87.

Посмотреть на лики зла
Всего голосов 85: ↑73.5 и ↓11.5+62
Комментарии69

Статический анализ исходного кода на примере WinMerge

Время на прочтение6 мин
Количество просмотров3K
Сегодня я хочу посвятить пост тематике, почему инструменты анализа исходного кода полезны вне зависимости от уровня знаний и опыта программиста. А польза такого анализа будет продемонстрирована на примере инструмента, который известен всем программистам — WinMerge.

Читать дальше →
Всего голосов 56: ↑53 и ↓3+50
Комментарии28

Как за два дня создать успешный стартап? Никак!

Время на прочтение2 мин
Количество просмотров12K
гребем деньги лопатой!

В последнее время в сети возникает довольно много тем вокруг стартапов вообще и конкретно проектов, которые создаются или созданы за пару дней, за выходные, за неделю. На мой взгляд, это довольно странная активность, так как все CD-Ejector давно созданы, а их авторы уже заработали свои миллионы. Или нет?
Читать дальше →
Всего голосов 98: ↑60 и ↓38+22
Комментарии84

Коллекция примеров 64-битных ошибок в реальных программах — часть 1

Время на прочтение16 мин
Количество просмотров5K
Эту статью я посвящаю хабрапользователю f0b0s, который постоянно следит за нашей активностью, сопровождая ее тонким юмором, что держит нас в тонусе.

Читатели наших статей, посвященных разработке 64-битных приложений, часто упрекают нас в отсутствии обоснованности описываемых проблем. А именно, что мы не приводим примеры ошибок в реальных приложениях.

Я решил собрать примеры различных типов ошибок, которые мы сами обнаружили в реальных программах, о которых прочитали в интернете или о которых нам сообщили пользователи PVS-Studio. Итак, предлагаю вашему вниманию статью, представляющую собой коллекцию из 30 примеров 64-битных ошибок на языке Си и Си++.

Продолжение статьи >>

Читать дальше →
Всего голосов 150: ↑143 и ↓7+136
Комментарии62

Привлечение внимания потенциальных клиентов с помощью статей

Время на прочтение8 мин
Количество просмотров1.5K

Многие, кто читал мой предыдущий пост "Получение отклика от потенциальных пользователей" пришли к мнению, что чтобы мы не делали, для привлечения внимания потенциальных клиентов, результат равен нулю. Это не так, внимание есть. Один хороший источник привлечения внимания мы уже нашли. Это статьи и блоги. Но этот источник, остается практически единственным, и именно это нас беспокоит, и мы ищем новые варианты.

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

Обзор сайтов, где можно опубликовать статьи по программированию и про инструмент для разработчиков
Всего голосов 82: ↑67 и ↓15+52
Комментарии26

Получение отклика от потенциальных пользователей

Время на прочтение6 мин
Количество просмотров1.3K

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

Расскажу на собственном примере о наших экспериментах.
Всего голосов 29: ↑20 и ↓9+11
Комментарии44

И льется кровь, идет война бобра с ослом!

Время на прочтение3 мин
Количество просмотров1.2K

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

**Борьба Бобра c Ослом — фонетико-ироническая перелицовка фразы «Борьба Добра со Злом», пародирующая пафосные рассуждения о Добре и Зле.

Читать дальше →
Всего голосов 21: ↑14 и ↓7+7
Комментарии18

Статический анализ Си++ кода и новый стандарт языка C++0x

Время на прочтение18 мин
Количество просмотров5.8K
Аннотация
Введение
1. auto
2. decltype
3. Ссылка на временный объект (R-value reference)
4. Правые угловые скобки
5. Лямбда-функции (Lambdas)
6. Suffix return type syntax
7. static_assert
8. nullptr
9. Новые стандартные классы
10. Новые направления в развитии статических анализаторов кода
Заключение
Библиографический список

Аннотация


В статье рассмотрены новые возможности языка Си++, описанные в стандарте C++0x и поддержанные в Visual Studio 2010. На примере PVS-Studio рассмотрено, как изменения языка отразятся на инструментах статического анализа кода.
Читать дальше →
Всего голосов 93: ↑91 и ↓2+89
Комментарии43

Уроки разработки 64-битных приложений на языке Си/Си++

Время на прочтение2 мин
Количество просмотров6.9K
Мы регулярно пишем статьи посвященные разработке и тестированию 64-битных программ на языке Си/Си++. Каждая из статей представляет взгляд на задачу разработки 64-битных программ с разных точек зрения. Но существенная часть информации в них повторяется, так как необходимо знакомить читателя с проблематикой и вводить различные определения. Это, к сожалению, делает чтение подборки статей скучным занятием и соответственно не позволяет всесторонне изучить вопросы разработки 64-битных приложений.

Мы решили объединить все наши знания в единый труд, в котором будут рассмотрены сразу все вопросы, касающиеся 64-битного программирования. Для оформления в виде статьи материала оказалась слишком много и мы решили представить его в виде курса уроков.

Кратко опишу курс "Уроки разработки 64-битных приложений на языке Си/Си++" и приведу его содержание.
Читать дальше →
Всего голосов 68: ↑59 и ↓9+50
Комментарии50

64-битный конь, который умеет считать

Время на прочтение10 мин
Количество просмотров1.8K
Статья посвящена особенностям поведения компилятора Visual C++ при генерации 64-битного кода и связанными с этим потенциальными ошибками.
Читать дальше →
Всего голосов 69: ↑62 и ↓7+55
Комментарии32

7 шагов по переносу программы на 64-битную систему

Время на прочтение20 мин
Количество просмотров39K

Аннотация


В статье рассмотрены основные шаги, обеспечивающие корректный перенос 32-битных Windows приложений на 64-битные Windows системы. Хотя статья ориентирована на разработчиков, использующих язык Си/Си++ в среде Visual Studio 2005/2008, она будет полезна и другим разработчикам, планирующим перенос своих приложений под 64-битные системы.

Читать дальше →
Всего голосов 107: ↑103 и ↓4+99
Комментарии51
12 ...
43

Информация

Сайт
pvs-studio.com
Дата регистрации
Дата основания
2008
Численность
31–50 человек
Местоположение
Россия