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

Разыменовывание нулевого указателя приводит к неопределённому поведению

Время на прочтение6 мин
Количество просмотров54K
Silent NULL (Разыменовывание нулевого указателя приводит к неопределённому поведению)
Ненароком я породил большую дискуссию, касающуюся того, допустимо ли использовать в Си/Си++ выражение &P->m_foo, если P является нулевым указателем. Программисты разделились на два лагеря. Одни уверенно доказывали, что так писать нельзя, другие столь же уверенно утверждали, что можно. Приводились различные аргументы и ссылки. И я понял, что нужно внести окончательную ясность в этот вопрос. Для этого я обратился к экспертам Microsoft MVP и разработчикам Visual C++, общающимся через закрытый список рассылки. Они помогли подготовить эту статью, и я представляю её всем желающим. Для нетерпеливых: этот код не корректен.
Читать дальше →

PVS-Studio для Microsoft Visual Studio Community 2013

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


Компания Microsoft представила свой очередной программный продукт – новую бесплатную версию Visual Studio, единственным ограничением которой является запрет на разработку корпоративных приложений.

Какое же значение будет иметь это событие для продукта PVS-Studio?
Читать дальше →

Проверяем MatrixSSL с помощью PVS-Studio и Сppcheck

Время на прочтение5 мин
Количество просмотров6K
MatrixSSL and PVS-Studio В статье я хочу рассказать о проверке проекта MatrixSSL статическими анализаторами C/C++ PVS-Studio и Cppcheck.
О библиотеке узнал из комментария на сайте Хабрахабр.
Читать дальше →

PVS-Studio и враждебная среда обитания

Время на прочтение5 мин
Количество просмотров7.1K
враждебная среда обитания
Очередная история, как непросто программам взаимодействовать с внешним миром. На первый взгляд, у статического анализатора никаких проблем быть не должно. Он получает на вход файлы, дополнительную информацию и должен сгенерировать отчёт. Но как всегда, дьявол кроется в деталях.

Я считаю PVS-Studio очень качественным продуктом. Мы можем почти в любой день сделать и выложить дистрибутив. У нас используется очень большое количество автоматизированных тестов различного уровня и типов. Вот описание некоторых из них: "Как мы тестируем анализатор кода". Сейчас их стало больше. Например, теперь для статического анализа мы используем не только свой собственный анализатор, но и Clang. Если исправленная версия прошла все тесты, значит ее можно смело выдавать пользователям.
Читать дальше →

Размышления над разыменованием нулевого указателя

Время на прочтение3 мин
Количество просмотров9.7K
Оказывается, что вопрос, корректен или нет вот такой код &((T*)(0)->x), весьма непрост. Решил написать про это маленькую заметку.
Читать дальше →

Вычисление средней температуры по больнице

Время на прочтение14 мин
Количество просмотров19K
Статистика
Начать стоит с того, что это, статья совершенно не серьёзна. Новый год, праздник, сил никаких нет заниматься чем-то серьёзным как писателям, так и читателям. Именно поэтому было принято решение о написании статьи про, внезапно, статистику.
Читать дальше →

PVS-Studio покопался во внутренностях Linux (3.18.1)

Время на прочтение20 мин
Количество просмотров86K
Linux and PVS-Studio
Соавтор: Святослав Размыслов SvyatoslavMC.

В рекламных целях мы решили попробовать проверить ядро Linux с помощью нашего статического анализатора кода. Эта задача интересна своей сложностью. Исходные коды Linux чем только не проверялись и проверяются. Поэтому найти хоть что-то новое, весьма сложная задача. Но если получится, то это будет хорошая рекламная заметка о возможностях анализатора PVS-Studio.
Читать дальше →

Проверка симулятора The Powder Toy

Время на прочтение6 мин
Количество просмотров16K
The Powder Toy является песочницей со свободной физикой, которая имитирует давление и скорость воздуха, тепла, тяжести и бесчисленное количество взаимодействий между различными веществами. Игра предоставляет различные строительные материалы, жидкости, газы и электронные компоненты, которые могут быть использованы для построения сложных машин, оружия, бомб, реалистичной местности и почти всего, что угодно. Вы можете просматривать и воспроизводить тысячи различных сделанных построек. Вот только в игре оказалось не всё так замечательно: для небольшого проекта размером в ~350 файлов было получено довольно много предупреждений статического анализатора. В этой статье будут описаны наиболее интересные места.
Читать дальше →

Почему студентам нужен анализатор кода CppCat

Время на прочтение10 мин
Количество просмотров17K
CppCat
CppCat – это простой статический анализатор кода для поиска ошибок в программах на языке Си/Си++. Мы начали выдавать бесплатные академические лицензии всем желающим (студентам, преподавателям и так далее). Для большей популяризации CppCat среди студентов я решил написать эту заметку об ошибках, которые можно найти в лабораторных работах, встречающихся на сайте Pastebin.com.
Читать дальше →

Зачем понадобилась система подавления сообщений статического анализатора

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

Каждый программный продукт имеет свою историю происхождения и развития. Проект может быть новым и небольшим или быть коммерчески успешным десяток лет и иметь тысячи исходных файлов. При внедрении статического анализатора, кроме технического вопроса интеграции в проект, возникают и другие немаловажные вопросы: как правильно обрабатывать результаты анализа? Стоит ли править все предупреждения анализатора?… В данной статье будет рассказано о новом способе обработки результатов работы статических анализаторов.
Читать дальше →

Техосмотр движка Spring RTS

Время на прочтение10 мин
Количество просмотров14K
Spring RTS — это движок для игр в жанре «стратегия реального времени». Изначально Spring был написан для повторения популярной в 90\00-е игры Total Annihilation. В дальнейшем появилось много других красивых и интересных стратегий на этом движке, в том числе и коммерческих. Игры под него кроссплатформенные и представляют из себя трёхмерные стратегии реального времени с огромными картами и большим количеством боевых и строительных юнитов. У игр возникают проблемы со стабильностью. Попробуем взглянуть на исходники (благо, проект открытый).
Читать дальше →

Проект Miranda NG получает приз «дикие указатели» (часть вторая)

Время на прочтение13 мин
Количество просмотров23K
Miranda NG
Продолжим рассматривать ошибки, которые удалось обнаружить в проекте Miranda NG с помощью статического анализатора кода PVS-Studio. В прошлый раз мы говорили об указателях и работе с памятью. Теперь поговорим об ошибках общего плана, которые, в основном, связаны с неаккуратностью и опечатками.
Читать дальше →

Проект Miranda NG получает приз «дикие указатели» (часть первая)

Время на прочтение13 мин
Количество просмотров50K
Miranda NG
Я добрался до проекта Miranda NG и проверил его с помощью анализатора кода PVS-Studio. К сожалению, с точки зрения работы с памятью и указателями это самый неаккуратный проект из виданных мной. Хотя я внимательно не анализировал результаты, ошибок столь много, что я решил разбить собранный материал на 2 статьи. Первая статья будет посвящена указателям, а вторая всему остальному. Желаю приятного чтения, и не забудьте взять попкорн.
Читать дальше →

Бесплатный CppCat для студентов

Время на прочтение3 мин
Количество просмотров23K
Бесплатный CppCat для студентов
CppCat – это статический анализатор кода, интегрирующийся в среду Visual Studio 2010-2013. Анализатор предназначен для регулярного использования и позволяет выявить множество ошибок и опечаток в программах на языке Си и Си++. С целью его популяризации мы решили выдавать бесплатные лицензии всем студентам, которые к нам обратятся. Достаточно прислать фотографию студенческого билета или зачётной книжки.
Читать дальше →

Новый механизм подавления ненужных сообщений анализатора

Время на прочтение10 мин
Количество просмотров3K
PVS-Studio
На данный момент анализатор PVS-Studio уже имеет механизм для подавления ложных срабатываний (False Positive). Этот механизм полностью устраивает нас с функциональной точки зрения, т.е. у нас нет претензий к надёжности его работы. Однако, у некоторых из наших пользователей и клиентов возникало желание иметь возможность работать с сообщениями анализатора только на «новом», т.е. вновь написанном коде. Это желание вполне можно понять, учитывая, что в крупном проекте анализатор может сгенерировать тысячи или даже десятки тысяч сообщений на существующий код, править которые, конечно, никто не станет.

Читать дальше →

Тяп-ляп, проверил библиотеки Visual C++ 2013 (update 3)

Время на прочтение15 мин
Количество просмотров27K
PVS-Studio and Visual Studio 2013Мне предложили проверить библиотеки, входящие в Visual Studio 2013. Ничего особенно примечательного я не нашёл. Только несколько мелких ошибок и недочётов. Интригующую статью из этого не сделаешь, но я всё равно опишу замеченные недостатки. Надеюсь, это сделает библиотеки чуть лучше, и подвигнет авторов провести более тщательную проверку. У меня нет файлов проектов для сборки библиотек. Поэтому я проверял файлы кое-как, и много могло быть пропущено.
Читать дальше →

Таблица виртуальных методов и техника безопасности

Время на прочтение10 мин
Количество просмотров44K
Техника безопасностиВ качестве небольшой разминки перед статьёй хотелось бы, чтобы читатель задал себе следующий вопрос: нужно ли фотографу для получения качественных снимков знать, как работает фотоаппарат? Ну, по крайней мере, должен ли он знать понятие «диафрагма»? «Отношение сигнал-шум»? «Глубина резкости»? Практика подсказывает, что даже со знанием таких сложных слов снимки могут получиться у наиболее «рукастых» не особо лучше снятых на мобильник через 0.3-МПикс-дупло. И наоборот, по-настоящему хорошие снимки могут получаться благодаря исключительно опыту и наитию при полном незнании матчасти (хотя это, скорее, исключения из правил, но всё же). Однако вряд ли со мной кто-то будет спорить, что профессионалам, которые хотят выжать из своей техники всё (а не только количество мегапикселей на квадратный миллиметр матрицы), эти знания нужны в обязательном порядке, поскольку в противном случае ему и называться профессионалом-то нельзя. И верно это не только для отрасли цифровой фотографии, но и для практически любой другой.

Верно это и для программирования, а для программирования на языке С++ – вдвойне. В этой статье будет описано важное понятие языка, известное как «Виртуальный табличный указатель», что присутствует почти во всех сложных классах, и то, каким образом его можно случайно повредить. Это может, в свою очередь, вести к едва поддающимся отладке ошибкам. Сначала напомню, что это вообще такое, а затем и поделюсь своими соображениями по поводу того, как и что может там сломаться.
Читать дальше →

Проверка библиотеки Network Security Services

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

Network Security Services (NSS) — это набор библиотек, разработанных для поддержки кроссплатформенной разработки защищенных клиентских и серверных приложений. Библиотека используется для криптографии в браузерах Firefox и Chrome, и после недавно найденной уязвимости в проверке подписей сертификатов, я решил тоже взглянуть на этот проект.
Читать дальше →

По мотивам «трёх интервью о статических анализаторах», или четвертое интервью

Время на прочтение5 мин
Количество просмотров5.5K
интервью
Примерно неделю назад на Хабре мною была опубликована статья "Три интервью о статических анализаторах кода", в которой на читательский суд были представлены точки зрения опытных программистов из Acronis, AlternativaPlatform и НПО «Эшелон» о методике разработки ПО, а также некоторые их размышления относительно использования статических анализаторов кода.

Поскольку спонсором статьи выступила компания ООО «СиПроВер» — разработчик статического анализатора PVS-Studio, — я решил попросить Андрея Карпова (технический директор) также ответить на некоторые вопросы. А именно — прокомментировать интересные моменты всех трёх интервью. Плюс сделать обращение к коллегам и читателям. Получился вот такой интересный результат.

Читать дальше →

Единорог заинтересовался KDE

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

KDE (сокращение от K Desktop Environment) — среда рабочего стола, преимущественно для Linux и других UNIX-подобных систем. Если простым языком, то это та штука, которая отвечает за всё графическое оформление. Среда построена на основе кроссплатформенного инструментария разработки пользовательского интерфейса Qt. Разработкой занимаются несколько сотен программистов со всего мира, преданных идее свободного программного обеспечения. KDE предлагает полный набор приложений пользовательского окружения, который позволяет взаимодействовать с операционной системой в современном графическом интерфейсе. Давайте же посмотрим, что у KDE под капотом.
Читать дальше →

Информация

Сайт
pvs-studio.ru
Дата регистрации
Дата основания
2008
Численность
51–100 человек
Местоположение
Россия
Представитель
Андрей Карпов