Как стать автором
Обновить
581
35.6
Андрей Карпов @Andrey2008

Директор по маркетингу

Отправить сообщение

Встречи с командой PVS-Studio, митапы, сотрудничество

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 435

PVS-Studio, конференции


Команда PVS-Studio в целом и я в частности активно участвуем в различных конференциях, подкастах, митапах и других мероприятиях. Нового в этом нет, но есть пара причин сделать маленькую заметку на эту тему.


Первая причина — предложить тем, кто интересуется нашим блогом на Хабре, подписаться на рассылку/телеграм/группу, чтобы не пропустить мероприятие, где можно пообщаться с нами. Живое общение — это всегда интересно.


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

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

Притча о нулевом указателе для ленивых C программистов

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 9.3K

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


Притча о нулевом указателе

Читать дальше →
Всего голосов 34: ↑32 и ↓2 +30
Комментарии 26

Почему проверять результат вызова malloc c помощью assert плохая идея

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 8K

malloc и assert


Указатель, который вернула функция malloc, необходимо проверить перед использованием. Неправильным решением будет использовать для этого макрос assert. В этой статье мы разберём, почему это является антипаттерном.

Читать дальше →
Всего голосов 29: ↑25 и ↓4 +21
Комментарии 117

Следует ли проверять указатель на NULL перед вызовом функции free?

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 12K

Проверка указателя перед вызовом функции free


Короткий ответ: нет. Тем не менее, раз про это вновь и вновь спрашивают на Reddit, Stack Overflow и других сайтах, пришло время подробно разобрать эту тему. Оказывается, есть много интересного, о чём можно порассуждать.

Читать дальше →
Всего голосов 86: ↑85 и ↓1 +84
Комментарии 35

Какую статью хочется прочитать в нашем блоге на тему C++, C# или Java?

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 2.1K

Какую статью хочется прочитать


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


На данный момент контент нашего блога можно разделить на 4 основные категории:


  1. Теоретические статьи;
  2. Информационно-развлекательные статьи;
  3. Проверка открытых проектов;
  4. Всё остальное.
Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 12

Опечатки, нулевые указатели и коварный таб: 33 фрагмента в библиотеке GTK

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 4.5K

Использование TAB в строковом литерале


GTK – популярный фреймворк с открытым исходным кодом для создания графических интерфейсов, который интересно проверять с помощью анализатора PVS-Studio. Тем более, что предыдущую проверку мы делали около 3 лет назад, а значит, наверняка найдём в нём новые ошибки.


Очень не хотелось частично повторять введение из прошлой статьи "Выявляем опечатки в проекте GTK 4 с помощью PVS-Studio", но подозреваю, что далеко не все читатели знакомы с GTK. Поэтому вкратце: библиотека позволяет кроссплатформенно реализовывать графический пользовательский интерфейс. Полностью бесплатна и имеет открытый исходный код, лицензированный под GNU GPL, что позволяет использовать её в любых проектах (даже коммерческих).

Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 6

FreeCAD и C++ код с неопределённым поведением для медитации

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 5.3K

PVS-Studio, FreeCAD, неопределённое поведение, C++


Изучая код проекта с помощью статического анализатора, иногда задаёшься вопросом: "Как возникла ошибка и почему её до сих пор не заметили?" Хотите посмотреть пример? Тогда приглашаем познакомиться с этой статьёй.

Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 22

Поиск ошибок в проектах на основе Unreal Engine

Уровень сложности Средний
Время на прочтение 2 мин
Количество просмотров 1.5K

Единорог Коди (PVS-Studio) коллекционирует баги, специфичные для Unreal Engine проектов


В статическом анализаторе PVS-Studio начали появляться диагностические правила для выявления багов, специфичных для Unreal Engine проектов. Однако без сообщества разработчиков игр здесь не обойтись. Напишите нам про типовые паттерны ошибок, поиск которых хотелось бы автоматизировать.


Анализатор PVS-Studio хорошо выявляет распространённые паттерны опечаток, логические ошибки, потенциальные уязвимости и многое другое. Теперь взор команд, разрабатывающих PVS-Studio, обратился в сторону Unreal Engine.

Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 0

Ошибка настолько проста, что программисты её не замечают

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 12K

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

Читать дальше →
Всего голосов 41: ↑36 и ↓5 +31
Комментарии 80

Распространённые паттерны опечаток при программировании

Уровень сложности Простой
Время на прочтение 20 мин
Количество просмотров 12K

Распространённые паттерны опечаток при программировании


Есть бесконечное количество способов ошибиться при написании кода. Однако иногда можно заметить явные интересные закономерности, как и где ошибаются программисты. Поговорим о коде, который "притягивает" опечатки.


На чём основаны наблюдения


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


Рассматривая все эти ошибки, я постепенно замечаю различные повторяющиеся паттерны опечаток. За редким исключением они не зависят от языка программирования. По крайней мере, они одновременно свойственны коду, написанному на C, C++, C#, Java. В этой статье я опишу 7 паттернов, которые заметил к настоящему моменту:


  1. Эффект последней строки.
  2. Злополучная функция memset.
  3. Неверные функции сравнения.
  4. Неверные функции копирования.
  5. Ошибки работы с датами и временем.
  6. Несчастливые числа: 0, 1, 2.
  7. Ошибка на единицу (off-by-one error).

Заметность закономерностей в ошибках свидетельствует о том, что они крайне распространены. Полезно знать о них, чтобы избегать написания потенциально опасного кода или более эффективно находить их в процессе обзоров кода. Другим словами, вы узнаете, какой код притягивает ошибки, и будете более внимательно его проверять. Конечно, PVS-Studio способен выявить многие подобные ошибки, но не все. Поэтому дополнительное внимание не повредит.

Читать дальше →
Всего голосов 42: ↑41 и ↓1 +40
Комментарии 23

Review of mini-book «60 terrible tips for a C++ developer»

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 1.2K

I wrote a small e-book about terrible tips for C++ developers. Actually, it describes bad programming practices and explains why it's better to avoid them. However, every chapter of this mini-book starts with a terrible tip — just for fun.


60 terrible tips for a C++ developer


By the way, these tips may seem artificial but believe me, they are based on the real experience. In other words, the described terrible tips occur in developers' lives — that's why it's worth discussing them. First of all, this book will be useful for junior developers. But more skilled C++ developers can also find interesting and useful tips.


Even though it's a mini-book, it clearly does not fit into the Habr format. Too many words. So, I decided to write here the review. Here is the link to find the full version of the mini-book: 60 terrible tips for a C++ developer.


If you still hesitate whether to read it or not, below you will find a list of terrible tips that will be discussed in the mini-book.


View the terrible tips:

Read more →
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 3

60 антипаттернов для С++ программиста, часть 12 (совет 56 — 60)

Уровень сложности Простой
Время на прочтение 14 мин
Количество просмотров 11K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

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

60 антипаттернов для С++ программиста, часть 11 (совет 51 — 55)

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 5.7K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 2

60 антипаттернов для С++ программиста, часть 10 (совет 46 — 50)

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 5.1K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 15

60 антипаттернов для С++ программиста, часть 9 (совет 41 — 45)

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 3.3K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 3

60 антипаттернов для С++ программиста, часть 8 (совет 36 — 40)

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 3.1K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

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

60 антипаттернов для С++ программиста, часть 7 (совет 31 — 35)

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 3.1K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 23

60 антипаттернов для С++ программиста, часть 6 (совет 26 — 30)

Уровень сложности Простой
Время на прочтение 19 мин
Количество просмотров 3.7K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 9

60 антипаттернов для С++ программиста, часть 5 (совет 21 — 25)

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 3.5K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 3

60 антипаттернов для С++ программиста, часть 4 (совет 16 — 20)

Уровень сложности Простой
Время на прочтение 17 мин
Количество просмотров 4.7K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

Читать дальше →
Всего голосов 15: ↑11 и ↓4 +7
Комментарии 32

Информация

В рейтинге
134-й
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Специалист
C++
C
Software development