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

Как научить кота программировать. Необычные подходы к изучению нового

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

Твой хомячок давно забыл свои молодые деньки, когда писал код на C#? Он хочет вернуться к программированию, но время летело так быстро, что уже вышел C# 12? Кошечка не знает, как организовать мероприятие, а на носу новогодний корпоратив на 50 человек? Так ещё эти подопечные насмотрелись тиктоков, и теперь их внимание фокусируется не более чем на минутку?

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

Готовы прочесть? Тогда берём кота за ушки (или за лапки, если он согласится) и вперёд!

Читать далее
Всего голосов 12: ↑12 и ↓0+15
Комментарии5

Неожиданности в авторизации. Что скрывает Keycloak?

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

Авторизация и регистрация пользователей — важная часть приложения как для юзеров, так и для безопасности. Но какие неожиданности содержит исходный код популярного Open Source решения для авторизации, и как они могут повлиять на работу приложения?

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

Насекомое 13 лет сидит в вашем компиляторе и не собирается оттуда вылезать

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

Представим, что у вас идеальный проект. Таски пилятся, компилятор компилирует, статические анализаторы анализируют, релизы релизятся. В какой‑то момент вы принимаете волевое решение открыть древний файл, в который никто не залезал уже много лет, и видите, что он в кодировке Windows-1251. При том, что весь проект уже давно перешёл на UTF-8. «Непорядок!» — думаете вы, и лёгким движением руки меняете кодировку. На следующий день на вашем тестовом сервере случается локальный апокалипсис. Думаете, такого не может быть? Тогда предлагаю это обсудить.

Читать далее
Всего голосов 33: ↑32 и ↓1+40
Комментарии70

.NET Digest #1

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

Добро пожаловать на первый выпуск нашего дайджеста, посвященного новостям и событиям в мире .NET! Команда C# разработчиков из PVS-Studio собрала для вас самые интересные и полезные материалы, чтобы держать вас в курсе последних тенденций и разработок. Поехали!

Читать далее
Всего голосов 30: ↑30 и ↓0+34
Комментарии11

Тотемные утки и шаманские бубны: есть ли у разработчиков свои ритуалы и приметы?

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

Баги, баги, баги... Как же их много... Немудрено и фобию заиметь. И ведь никогда не знаешь, чем обернётся очередная ошибка в коде. Страх перед неизвестным, желание держать всё под контролем — закономерные спутники магического мышления. Но подождите, какие ещё магические ритуалы в 21 веке? Тем более у программистов...

Читать далее
Всего голосов 19: ↑18 и ↓1+20
Комментарии14

Подборка докладов по С# 2023-2024

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

Недавно мы публиковали подборку докладов по C++, но не будем же мы обделять и C# разработчиков. Поэтому предлагаем вашему вниманию интересные доклады из мира .NET и C#.

Вперёд к новым знаниям!
Всего голосов 10: ↑10 и ↓0+11
Комментарии2

12 мгновений опечаток и копипаста, или почему сбоит AI: проверяем код OpenVINO

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

"OpenVINO — набор инструментов, позволяющий проводить глубокое обучение AI для взаимодействия с реальным миром теперь ещё эффективнее!" — эта новость для нас прозвучала как призыв к действию. Код проекта проверен, ошибки найдены, и первая часть статьи готова к прочтению. Будет интересно!

Читать далее
Всего голосов 10: ↑10 и ↓0+12
Комментарии2

Побитовые проверки в Java и почему они так неоднозначны

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

Операторы "&" и "|" не вызывают вопросов, когда применяются в подходящих ситуациях. Но знаете ли вы о всех последствиях использования побитовых операторов вместо логических в Java? В этой статье мы рассмотрим как плюсы производительности такого подхода, так и минусы его читабельности.

Читать далее
Всего голосов 15: ↑15 и ↓0+18
Комментарии8

Ненавижу, _____, C++ массивы

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

Или почему мне кажется, что про них нужно знать, но не нужно использовать в своей каждодневной работе.

Но почему?
Всего голосов 47: ↑45 и ↓2+58
Комментарии170

Как шаблонный метод может сломать ваш Java код

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

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

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

Улыбка сквозь баги

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

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

Читать далее
Всего голосов 18: ↑18 и ↓0+22
Комментарии1

Сколько UB в моём компиляторе?

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

У C и C++ программистов две головные боли в плане ошибок: утечки памяти и неопределённое поведение. И как вы догадались из названия, речь пойдёт о неопределённом поведении. И каком‑то «моём» компиляторе. Если точнее, то о наборе компиляторов и инструментах для их разработки, а именно LLVM. Почему «моём»? Потому что мы очень любим Clang, входящий в состав LLVM, и пользуемся им на постоянной основе.

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

Ловушки volatile, DCL и синхронизации в Java

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

А что если окажется, что простые знания на самом деле более нюансированные, а старые знакомые, такие как Double-checked locking, являются неоднозначными? Именно на такие мысли наталкивает изучение кода реальных проектов. Результаты этого исследования мы и рассмотрим в этой статье.

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

Объявляю ошибку вида if (x = 42) вымирающей и заношу её в Красную книгу C и C++ багов

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

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

Читать дальше →
Всего голосов 61: ↑60 и ↓1+80
Комментарии109

Какие ошибки есть в коде LLVM?

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

LLVM — open-source проект с огромной кодовой базой. Лучший из лучших, если говорить о качестве кода, учитывая его размеры и открытость. Ведь кому, как не разработчикам инструментов для компиляторов, лучше знать о возможностях языка и правильном их использовании. Их код всегда на высоте, а найти ошибки в нём всегда вызов для нашего анализатора, который мы принимаем.

Читать далее
Всего голосов 13: ↑12 и ↓1+18
Комментарии14

С++: освобождение ресурсов в деструкторах с использованием вспомогательных функций

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

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


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

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

Garnet. Хранит ли баги кэш-хранилище от Microsoft?

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

Microsoft представили Garnet — проект кроссплатформенного быстрого кэш-хранилища с открытым исходным кодом, написанный на языке C#. Предлагаю расчехлить статический анализатор и посмотреть, какие ошибки и странности содержатся в исходном коде проекта.

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

Проверка игрового движка qdEngine, часть третья: дополнительная десятка багов

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

Часть третья


В первой статье про qdEngine было рассмотрено 10 ошибок, выбранных плагином PVS-Studio. Однако есть ещё 10 багов, заслуживающих внимания. Как говорится, лучше учиться на чужих ошибках. Заодно они хорошо демонстрируют возможности PVS-Studio в выявлении разнообразнейших ошибочных паттернов.

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

11 мгновений ReactOS: user mode становится лучше?

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

ReactOS — это проект, где победу над регрессией, появление новой фичи или её рабочего прототипа празднуют так громко, что FOSS‑сообществу приходится отвлекаться от переписывания всего на Rust и полемик о systemd. В последний раз мы проверяли ReactOS в 2013 году, почти одиннадцать лет назад. Проверка была неточной ввиду неполного понимания структуры папок, из‑за чего в поле видимости PVS‑Studio оставались компоненты Wine. Пришло время освежить память и провести новую проверку, учитывая опыт предыдущей недоработки.

Читать далее
Всего голосов 20: ↑19 и ↓1+28
Комментарии20

Проверка игрового движка qdEngine, часть вторая: упрощение C++ кода

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

Ищем баг
В этой статье мы рассмотрим, как статический анализатор PVS-Studio воодушевляет заняться рефакторингом кода. Ведь чем короче, проще и понятнее код, тем меньше в нём ошибок.

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

Информация

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