PVS-Studio: поиск ошибок в С/С++, С# и Java
1.78K subscribers
1.5K photos
70 videos
2 files
1.47K links
Статический анализатор на страже качества, защищённости (SAST) и безопасности кода.

Сайт: https://pvs-studio.ru/ru/
Download Telegram
А вот и новый термин! В этот раз рассматриваем термин из DevOps – непрерывную интеграцию или Continuous Integration. А о том, как анализатор PVS-Studio встраивается в CI можно прочитать в соответствующем разделе нашей документации по ссылке 😉
👌2
PVS-Studio: поиск ошибок в С/С++, С# и Java
#Задача_PVS #programming #csharp
Ответ на задачу: при инициализации taxRates через transaction.summary?. допускается, что taxRates может быть null. Затем переменная используется в foreach, что при null приведёт к исключению NullReferenceException, так как у коллекции неявно вызывается GetEnumerator.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
10 января — День рождения Дональда Эрвина Кнута

Дональд Кнут — математик, учёный, автор монографии "Искусство компьютерного программирования".

Какие еще интересные факты вы знаете об этом человеке? Пишите в комментариях 😉

#праздник
👍5
🚀Рассказываем про новые диагностики

В новым релизе PVS-Studio — 7.34, команда C# анализатора сфокусировалась на улучшении Unity направления, но и про диагностики общего назначения не забывает. Сегодня разберем одну из таких – V3207.

В новой диагностике анализатор выявляет некорректное использование паттерна 'not A or B', связанного с путаницей в порядке операций.
Рассмотрим пример кода:
private void ShowWordDetails(string key)
{
if (key is not "" or null)
{
PanelReferenceBox.Controls.Clear();

CurrentWord = Words.Find(x => x.Name == key);
....
}
}

В начале метода присутствует проверка входного параметра 'key' на пустую строку или 'null'.

Но в логике условного выражения была допущена ошибка. Все дело в том, что приоритет оператора 'not' выше, чем у оператора 'or'. Вследствие этого отрицание не применяется к правой части выражения и если 'key' будет иметь значение 'null' – условие будет 'true'.

Вы еще не забыли про Unity? А мы все равно напомним! В этом релизе появилось сразу 4 новых Untiy-специфичных диагностических правила: V3208, V3209, V3210, V4007.

Но на этом мы не закончили улучшение анализа Unity проектов, ждите еще больше новых диагностик!

#csharp #PVS_Studio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
PVS-Studio: поиск ошибок в С/С++, С# и Java
#Задача_PVS #programming #cpp
Ответ на задачу: Переменная gps_dst->fill_opacity_fac присваивается сама себе. Скорее всего, имеет место быть опечатка, и в правой части присвоения должно быть другое выражение.
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳1
PVS-Studio: поиск ошибок в С/С++, С# и Java
#Задача_PVS #programming #java
Ответ на задачу: в этом методе инициализации ссылочного поля m.blockDeviceMapping не произойдёт, если аргумент blockDevice будет равен null. Это поле инициализируется только в указанном методе, поэтому при вызове метода add у поля m.blockDeviceMapping произойдёт исключение NullPointerException.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
В новом видео поговорим про критические ошибки 🐞

Более подробно можно послушать в этом докладе 👈🏻

#видео
🔥7🥰1
PVS-Studio: поиск ошибок в С/С++, С# и Java
#Задача_PVS #programming #csharp
Ответ на задачу: для удаления повторяющихся элементов используют метод LINQ Distinct. Он не изменяет исходную коллекцию, а возвращает новую. Если не использовать возвращаемое значение, вызов бессмыслен. В данном примере результат Distinct следовало присвоить переменной query.
Please open Telegram to view this post
VIEW IN TELEGRAM
💻Добро пожаловать на пятый выпуск нашего дайджеста, посвящённого новостям и событиям в мире .NET! Как обычно, набралось множество материала, а в этот раз ещё и новый .NET вышел.

Команда PVS-Studio рада представить вам подборку самых интересных и полезных материалов!

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

#csharp #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🚀 Рассказываем про новые диагностики

С++ разработчики, у нас отличные новости — в релизе 7.34 появилось новое диагностическое правило V1116.

Оно предназначено для обнаружения ситуаций, когда исключения создаются без поясняющих сообщений. Рассмотрим пример:
void DoSomething(const char *val)
{
if (!val) throw std::runtime_error { "" };
}

void Function()
{
const char *val = ....;
try
{
DoSomething(val);
}
catch (std::runtime_error &err)
{
std::cerr << err.what() << std::endl;
}
}


В функции DoSomething в случае возникновения ошибки бросается исключение с пустым сообщением, которое затем попадёт в std::cerr. Написав такой код, разработчик словно оставил коллегам послание: "Счастливой отладки". Это усложнит для них понимание того, что именно вызвало сбой.

Ситуацию можно исправить следующим образом:
if (!val)
{
throw std::runtime_error
{
"[DoSomething]: "
"the 'val' pointer was nullptr."
};
}

Теперь вы получите сообщение, которое объясняет, что именно пошло не так.

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

#cpp #PVS_Studio
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
PVS-Studio: поиск ошибок в С/С++, С# и Java
#Задача_PVS #programming #cpp
Ответ на задачу: суть в том, что потеряли инструкцию return или присвоение переменной boundingRect.
Please open Telegram to view this post
VIEW IN TELEGRAM
11
🎉21 января — День, когда выпустили Java 1.0.

💻День, когда компьютеры стали говорить "Hello, world!" на новом языке. Всё благодаря компании Sun Microsystems, которая в 1996 году выпустила первую официальную версию Java.

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

#праздник #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉7
Новый разбор проекта на очереди!

Jellyfin — это бесплатный медиасервер с открытым исходным кодом, является альтернативой Emby и Plex. В этой статье мы рассмотрим диагностику, у которой было больше всего срабатываний в коде Jellyfin.

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

#csharp #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2