История одного бага 👾
Практика доказывает, что в любом ПО самая главная уязвимость — человеческий фактор. И неважно, появился ли баг из-за недостаточной квалификации специалиста или потери данных в связанном проекте, выжил после долгих часов дебага в поисках ошибки, или считался хитро замаскировавшейся фичей.
В карточках рассказали об одной из неочевидных программных ошибок. Остальные ждут в нашем блоге: pvs-studio.com/go.php?url=1918
Практика доказывает, что в любом ПО самая главная уязвимость — человеческий фактор. И неважно, появился ли баг из-за недостаточной квалификации специалиста или потери данных в связанном проекте, выжил после долгих часов дебага в поисках ошибки, или считался хитро замаскировавшейся фичей.
В карточках рассказали об одной из неочевидных программных ошибок. Остальные ждут в нашем блоге: pvs-studio.com/go.php?url=1918
❤3👍1👎1😐1
В новой версии .NET улучшилась производительность методов Min, Max, Average и Sum для массивов и списков
За удобство использования LINQ приходится платить скоростью выполнения и лишней выделенной памятью. В местах, где производительность критича, эти недостатки могут неприятно проявиться.
Чтобы улучшить производительность LINQ, разработчики Microsoft и .NET использовали 'Span' и аппаратное ускорение для работы с векторами.
Технические подробности — в нашем блоге.
За удобство использования LINQ приходится платить скоростью выполнения и лишней выделенной памятью. В местах, где производительность критича, эти недостатки могут неприятно проявиться.
Чтобы улучшить производительность LINQ, разработчики Microsoft и .NET использовали 'Span' и аппаратное ускорение для работы с векторами.
Технические подробности — в нашем блоге.
PVS-Studio
Как увеличилась производительность LINQ в .NET 7?
В новой версии .NET улучшилась производительность методов Min, Max, Average и Sum для массивов и списков. Как вы думаете, во сколько раз увеличилась скорость их выполнения? В 2 раза, в 5? Н…
👍6
🔺 Linkage (связывание) — это свойство идентификатора, позволяющее компилятору в некоторых случаях создавать одну общую сущность для нескольких одинаковых имён, объявленных в разных единицах трансляции. Вместе с областью видимости связывание определяет, из каких единиц трансляции и их блоков можно обратиться к сущности.
Существуют 4 вида связывания:
🔹 no linkage
🔹 internal linkage
🔹 external linkage
🔹 module linkage
Подробнее о каждом из них: pvs-studio.com/go.php?url=1929
Существуют 4 вида связывания:
🔹 no linkage
🔹 internal linkage
🔹 external linkage
🔹 module linkage
Подробнее о каждом из них: pvs-studio.com/go.php?url=1929
👍2😐2
✅ Правильный ответ:
Любой индекс будет считаться корректным. Чтобы исправить ошибку, надо заменить оператор || на &&:
if (idx >= 0 && idx < 4) {
#задача_PVS
if (idx >= 0 && idx < 4) {
🚩 Проверяйте места, где указатель приводится к целочисленным типам
Запись значения указателя в 32-битную целочисленную переменную — коварная ошибка при создании 64-битного приложения. Такие ошибки незаметны: программа "почти работает", а специально повторить возникающие проблемы трудно.
Разбираемся, как обезопасить себя при создании 64-битных приложений ⬇️
Запись значения указателя в 32-битную целочисленную переменную — коварная ошибка при создании 64-битного приложения. Такие ошибки незаметны: программа "почти работает", а специально повторить возникающие проблемы трудно.
Разбираемся, как обезопасить себя при создании 64-битных приложений ⬇️
Telegraph
Проверяйте все места, где указатель явно приводится к целочисленным типам
Фрагмент взят из проекта IPP Samples. Ошибка выявляется PVS-Studio диагностикой: V205 Explicit conversion of pointer type to 32-bit integer type: (unsigned long)(img) void write_output_image(...., const Ipp32f *img, ...., const Ipp32s iStep) { ... img = …
👍2
Релиз .NET 7 — хороший повод покопаться в исходниках, чтобы поискать ошибки и странные места.
В этот раз за комментариями по находкам мы обратились к самим разработчикам .NET — кому знать код, как не им? Что из этого вышло, читайте в новой статье ⬇️
В этот раз за комментариями по находкам мы обратились к самим разработчикам .NET — кому знать код, как не им? Что из этого вышло, читайте в новой статье ⬇️
PVS-Studio
.NET 7: разбираем ошибки и подозрительные места в исходниках
.NET 7 зарелизился. Это хороший повод покопаться в исходниках, чтобы поискать ошибки и странные места. За комментариями по находкам обратимся к самим разработчикам .NET — кому знать код, ка…
👍5
🆕 Вышла новая версия PVS-Studio — 7.22
Что нового:
🔹Плагины для Visual Studio Code и Qt Creator
🔹Поддержка анализа .NET 7, C# 11 и Blazor компонентов
🔹Улучшения и доработки механизма Best Warnings
🔹7 новых диагностик для анализа C, C++ и C# кода
👉🏻 Читать подробнее о релизе
👉🏻 Попробовать новую версию анализатора
#релиз_PVS
Что нового:
🔹Плагины для Visual Studio Code и Qt Creator
🔹Поддержка анализа .NET 7, C# 11 и Blazor компонентов
🔹Улучшения и доработки механизма Best Warnings
🔹7 новых диагностик для анализа C, C++ и C# кода
👉🏻 Читать подробнее о релизе
👉🏻 Попробовать новую версию анализатора
#релиз_PVS
🔥4👍1
✅ Правильный ответ:
В цикле производится проверка значения переменной data. Если она равна null и её свойство Length имеет положительное значение, то производится выход из цикла. Очевидно, это невозможно. Более того, обращение к свойству Length переменной, имеющей значение null, приведёт к выбрасыванию исключения. Здесь же обращение производится именно тогда, когда data = null. Учитывая комментарий разработчика, в условии должен использоваться оператор '||'.
#задача_PVS
Новогодние праздники – одни из самых любимых и ожидаемых во всём мире 🎄🎅✨
Подарки, украшения, внимание к родным и близким – всё это неотъемлемый атрибут новогодней суматохи. Эта суматоха не обошла стороной и нас.
В преддверии новогодних праздников подготовили для вас развлечения и подарки, а вот какие именно — читайте в этой статье 🎁
Подарки, украшения, внимание к родным и близким – всё это неотъемлемый атрибут новогодней суматохи. Эта суматоха не обошла стороной и нас.
В преддверии новогодних праздников подготовили для вас развлечения и подарки, а вот какие именно — читайте в этой статье 🎁
PVS-Studio
Новогодние праздники вместе с PVS–Studio
Новогодние праздники – одни из самых любимых и ожидаемых праздников во всем мире. Подарки, украшения, внимание к родным и близким – всё это неотъемлемый атрибут новогодней суматохи. Эта сум…
❤5
Получить NullReferenceException на этапе разработки – не самый плохой сценарий, ведь проблему можно исправить сразу. Гораздо хуже, когда её находит пользователь при работе с продуктом.
Защититься от NRE помогают nullable reference типы. Они позволяют сделать приложение более безопасными и правильными с точки зрения архитектуры.
В этой статье рассказываем о неочевидных возможностях nullable reference типов.
Защититься от NRE помогают nullable reference типы. Они позволяют сделать приложение более безопасными и правильными с точки зрения архитектуры.
В этой статье рассказываем о неочевидных возможностях nullable reference типов.
PVS-Studio
Помоги компилятору, и он поможет тебе. Тонкости работы с nullable reference типами в C#
Nullable reference типы появились в C# 3 года назад. За это время они смогли найти свою аудиторию. Но даже те, кто имеет дело с этим зверем, скорее всего, не знают всех его возможностей. Да…
👍2🤔1
✅ Правильный ответ:
Рассмотрим подробнее выражение (12 * 1 « (2 * order)). Анализатор напоминает, что операция '*' имеет более высокий приоритет, чем операция битового сдвига '«'. Умножение 12 на 1 бессмысленно, а скобки вокруг 2 * order не нужны.
#задача_PVS
Любой бы на месте Бага позеленел и взбесился. Как порядочный интроверт он живёт в глубине кода и скрывается куда подальше от разработчиков, ревьюверов, тестировщиков и вообще всех.
Но эти «все» готовят грандиознейшее празднование Нового года и Рождества. Они шумят, всё украшают и дико бесят. Кто бы отказал себе в удовольствии испортить праздники? Баг решает украсть их.
Не дай Багу всё испортить! Пройди квиз, чтобы спасти новогодние праздники от обиженного крылатого монстра: https://pvs-studio.com/go.php?url=1950
Но эти «все» готовят грандиознейшее празднование Нового года и Рождества. Они шумят, всё украшают и дико бесят. Кто бы отказал себе в удовольствии испортить праздники? Баг решает украсть их.
Не дай Багу всё испортить! Пройди квиз, чтобы спасти новогодние праздники от обиженного крылатого монстра: https://pvs-studio.com/go.php?url=1950
❤6
За 2022 год мы написали много статей об ошибках, найденных в Open Source проектах.
Подводим итоги и представляем десяток самых интересных C#-срабатываний 🏆
pvs-studio.com/go.php?url=1955
А как бы выглядел ваш топ?
Подводим итоги и представляем десяток самых интересных C#-срабатываний 🏆
pvs-studio.com/go.php?url=1955
А как бы выглядел ваш топ?
🔥4