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

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

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

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

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

Проверка компилятора GCC 13 с помощью PVS-Studio

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

После некоторых поисков серьёзного вызова для анализатора PVS-Studio выбор пал на открытую коллекцию компиляторов GCC. Да, это уже не первая по счёту проверка этого проекта. Однако поддерживаемые этой коллекцией языки программирования не стоят на месте, и их постоянное развитие влечёт за собой соответствующее постоянное усложнение кода GCC. Таким образом цель — обнаружить ошибки в коде GCC с помощью анализатора PVS-Studio.

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

Ква! Как писали код во времена Quake

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

Как говорил Джон Кармак: "Фокус — это умение определить, на что вы не будете тратить время". Так давайте не будем тратить время на аннотацию и приступим к анализу кода легендарной Quake World.

Погнали!
Всего голосов 34: ↑31 и ↓3 +28
Комментарии 33

PVS-Studio vs CodeLite: битва за идеальный код

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

Как улучшить качество и надёжность кодовой базы? Один из ответов на этот вопрос — использование статического анализа. В данной статье мы исследуем, как эта методология может улучшить качество кодовой базы на примере проекта CodeLite.

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

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

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

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


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


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


С целью тестирования и продвижения статического анализатора кода 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

DefectDojo и PVS-Studio: отслеживаем ошибки и уязвимости

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

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

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

Обзор подозрительных мест в исходном коде MassTransit

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

MassTransit — Open Source платформа распределённых приложений для .NET. В этой статье мы расскажем о проблемных местах в коде проекта. С поиском таких мест нам поможет статический анализатор. Приятного чтения :).

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

Всегда ли в C# есть упаковка при конкатенации со строкой и интерполяции?

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

Разработчики на C# хорошо знакомы с термином "упаковка". Она может быть явной, а может быть незаметна. Например, к упаковке приводит сложение значимого типа со строкой. Или не приводит. Такая вот "упаковка Шрёдингера". В заметке попробуем разобраться с этой неопределённостью.

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

Как уговорить начальника съездить на неделю в Питер: HighLoad++ и TeamLead Conf 2023

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

Мы продолжаем знакомить сообщество разработчиков с нашим статическим анализатором. На этот раз наше путешествие затянулось на неделю! Нам предстояло посетить сразу две конференции в Санкт-Петербурге — Saint HighLoad++ и Saint TeamLead Conf. В статье мы расскажем, чем удивляли и как развлекали разработчиков и других участников, а также поделимся своими впечатлениями.

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

Герои Кода и Магии: анализ игрового движка VCMI

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

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

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

Изучаем подозрительные места в коде AWS SDK для .NET

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

1057_AWS_SDK_NET_ru/image1.png


Сегодня под нашим скальпелем оказался проект AWS SDK для .NET. Мы посмотрим на подозрительные места из исходного кода, разберёмся, что в них происходит, и попробуем воспроизвести некоторые проблемы. Заваривайте кофе и устраивайтесь поудобнее.

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

Обзор Top-3 Open Source игр на C# и ошибок в их коде

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

В мире много хороших игр, но совсем немногие открывают исходный код. В этой статье мы познакомимся, на мой взгляд, с тремя лучшими Open Source играми на C# и разберём наиболее интересные ошибки, найденные в их исходном коде.

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

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

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

1053_60_cpp_antipatterns_ru/image2.png


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

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

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

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

1053_60_cpp_antipatterns_ru/image2.png


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

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

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

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

1053_60_cpp_antipatterns_ru/image2.png


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

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

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

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

1053_60_cpp_antipatterns_ru/image2.png


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

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

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

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

1053_60_cpp_antipatterns_ru/image2.png


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

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

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

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

1053_60_cpp_antipatterns_ru/image2.png


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

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

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

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

1053_60_cpp_antipatterns_ru/image2.png


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

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

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

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

1053_60_cpp_antipatterns_ru/image2.png


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

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

Информация

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