PVS-Studio: поиск ошибок в коде
1.85K subscribers
1.66K photos
89 videos
2 files
1.65K links
Статический анализатор на страже качества, защищённости (SAST) и безопасности кода.

Наш стек: C, C++, C#, Java, JS, TS, Go

Сайт: https://pvs-studio.ru/

E-Mail: support@viva64.com
Телефон: +7(903)844-02-22

Для бизнеса: https://xn--r1a.website/pvsstudio_business
Download Telegram
В интернете только и разговоров, что про GNU/Linux. Про операционные системы семейства BSD не так часто разговаривают, как о нём. Они сложнее? Они скучнее? Попробуем ответить на эти вопросы вместе с одним из активных участников сообщества OpenBSD!

Переходите по ссылке 🔗

#статья #cpp
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Начал появляться код тех самых навайбкоденных проектов, который изменит мир и т. д. Ну а мы начинаем потихоньку смотреть код этих проектов, в том числе и сквозь призму статического анализа.

Подробности по ссылке 🔗

#статья #вайбкодинг #cpp
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Что это тут у нас?! Ошибка из проекта Erlang! Сможете найти?
BIF_RETTYPE system_info_1(BIF_ALIST_1)
{
....
if (is_tuple(BIF_ARG_1)) { // L2778
....
} else if (BIF_ARG_1 == am_scheduler_id) { // L2782
....
}
....
else if (BIF_ARG_1 == am_garbage_collection) { // L2903
....
} else if (BIF_ARG_1 == am_fullsweep_after) { // L2921
....
}
else if (BIF_ARG_1 == am_garbage_collection) { // L3053
....
} else if (BIF_ARG_1 == am_instruction_counts) { // L3056
....
}
....
else if (ERTS_IS_ATOM_STR("halt_flush_timeout", BIF_ARG_1)) { // L3552
....
}
}

О других ошибках из этого проекта можно почитать в статье 🔗

#cpp #ошибка
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работает выбор catch-блока при обработке исключений

Если таблетка знает, что лечить, может, и исключение само может понять, когда нужно остановиться в своём путешествии по стеку? В прикладном программировании часто хватает и подобного описания, но иногда хочется деталей. Что ж, разберёмся в них!

Переходите по ссылке 🔗

#cpp #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Новый крутой материал по геймдеву 🔥

В своем блоге опубликовали первую часть книги Сергея Кушниренко "Game++. Часть 1.1: С++, движки и архитектуры". Это сборник размышлений о языке программирования C++, алгоритмах и практиках в контексте разработки игр — о его сильных и слабых сторонах, практических решениях и устоявшихся способах работы.

В общем, лучше пойти почитать! Переходите по ссылке 🔗

#cpp #книга #gamedev
Please open Telegram to view this post
VIEW IN TELEGRAM
71
Ценность квалифицированного программиста смещается в сторону умения проводить обзоры кода. Генерировать код становится проще, но всё так же важно проверять его с точки зрения качества декомпозиции, корректности реализации, эффективности, безопасности.

Посмотрим на примере маленького проекта markus, созданного с помощью Claude Opus, почему важно понимать сгенерированный код и уметь видеть, что скрывает красивый текст программы.

Переходите по ссылке 🔗

#статья #cpp
Please open Telegram to view this post
VIEW IN TELEGRAM
9
📣 Напоминалка: пройти бесплатный курс от PVS-Studio!

Друзья, давайте создадим язык программирования на нашем курсе! Он абсолютно бесплатный и вот, что он может дать:

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

Всего 10 уроков, где будет минимум сухой теории и максимум практики 👍

Подробнее можно почитать тут 🔗

#курс #cpp #programming
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Тема неопределённого поведения (UB) в языке C++ освещается и обсуждается многие годы, но это не значит, что она исчерпала себя. Это плата, которую программисты отдают за эффективные оптимизации кода, такие как удаление ряда проверок.

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

Посмотреть можно тут:
- Наш сайт
- VK Video
- Rutube
- YouTube

#доклад #cpp
2
Мы уже прошли через базовое выравнивание полей и изучили, как наследование наслаивает данные друг на друга. Казалось бы, теперь-то всё, все ловушки изучены. Но не тут-то было! Есть у этой темы ещё одна, по-настоящему тёмная сторона, про которую не так часто говорят. Одно короткое слово virtual полностью переписывает "геометрию" класса, внося в выравнивание свои коррективы, которые трудно игнорировать.

Давайте разберёмся, что на самом деле происходит под капотом, когда выравнивание сталкивается с виртуальностью. Переходите по ссылке 🔗

#статья #cpp
Please open Telegram to view this post
VIEW IN TELEGRAM
21
⚡️PVS-Studio в CMake: теперь официально!

Если у вас кроссплатформенный проект на C или C++, то, как правило, вы не завязываетесь на одну систему сборки, а используете генератор сценариев для сборочных систем. Самый распространённый из них, CMake, недавно получил официальную интеграцию со статическим анализатором PVS-Studio для этих языков.

Подробнее по ссылке 🔗

#cpp #статья #PVS_Studio
Please open Telegram to view this post
VIEW IN TELEGRAM
71
У нас тут фрагмент кода из проекта TDengine — база данных для IoT систем. Нашли ошибку? Пишите ответ в комментарии!

#cpp #ошибка
Давненько мы не собирали дайджесты по языкам. Время это исправить!

Мы собрали самые интересные события в мире C++ за последнее время, а также полезные материалы. Подробности по ссылке 🔗

#cpp #статья #дайджест
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Наш архитектор, Юрий Минаев, выступил в прошлом году на C++ Russia с докладом "Семантика C++ изнутри компилятора".

О чём рассказал Юра:

- о семантике C++ с точки зрения статического анализатора или фронтенда компилятора;
- как устроена таблица символов и как происходит поиск имен, а также как семантика влияет на парсинг;
- о том, как происходит выбор перегрузок и каким образом компилятор находит функции, которые даже не видны в текущей точке программы;
- о шаблонах и их инстанцировании.

Посмотреть запись доклада можно тут:
- наш сайт
- VK Video
- YouTube
- Rutube

Приятного просмотра! Ждем ваши комментарии! ❤️

#cpp #доклад
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Проверяли инструмент CMake и обнаружили в этом фрагменте кода ошибку. Сможете ее отыскать?

#cpp #ошибка
А вот и продолжение книги "Game++": Часть 1.3: Архитектуры игровых движков 🔥

Напоминаем, что эта книга представляет собой сборник размышлений о языке программирования C++, алгоритмах и практиках в контексте разработки игр — о его сильных и слабых сторонах, практических решениях и устоявшихся способах работы.

Первая часть тут 👈🏻
А вторая тут 👈🏻

#gamedev #cpp #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
21
Проверяли инструмент CMake и обнаружили в этом фрагменте кода ошибку. Сможете ее отыскать?

#cpp #ошибка
Как не пропустить опасные участки кода при ревью? Можно воспользоваться инструментами статического анализа. Возьмём для примера OrcaSlicer — популярную программу, которая подготавливает 3D-модель к печати.

Заглянем внутрь и посмотрим, какие сюрпризы нас ждут.


#статья #cpp
2
Продолжение книги "Game++": Часть 1.4: Архитектуры игровых движков" 🔥

В этой части Сергей Кушниренко разбирает архитектурные решения, которые определили развитие игровой индустрии. Почему микроядерный подход сделал CryEngine революционным? Чем data-driven архитектура Dagor отличается от классических решений? За счёт чего монолитный X-Ray подарил миру атмосферу S.T.A.L.K.E.R., но столкнулся с техническими ограничениями? И как идеи микросервисов нашли отражение в Godot?

Подробности здесь

Первая часть тут 👈🏻
А вторая тут 👈🏻
Третью ищи здесь 👈🏻

#gamedev #cpp #статья
4