Логическое выражение в программировании — конструкция языка программирования, результатом вычисления которой является «истина» или «ложь». Во многих книгах по программированию, предназначенных для изучения языка «с нуля», приводятся возможные операции над логическими выражениями, с которыми сталкивался каждый начинающий разработчик. В этой статье я не буду рассказывать, что оператор 'И' приоритетнее оператора 'ИЛИ'. Я расскажу о распространённых ошибках в простых условных выражениях, состоящих всего из трёх операторов, и покажу, как можно проверить свой код с помощью построения таблиц истинности. Описанные ошибки делают разработчики таких известных проектов как FreeBSD, Microsoft ChakraCore, Mozilla Thunderbird, LibreOffice и многих других.
Читать полностью »
Рубрика «Блог компании PVS-Studio» - 37
Логические выражения в C-C++. Как ошибаются профессионалы
2016-04-11 в 6:40, admin, рубрики: C, c++, pvs-studio, Блог компании PVS-Studio, СиПлохой код пакета для создания 2D-анимаций Toonz
2016-04-07 в 7:43, admin, рубрики: c++, futurama, open source, opentoonz, pvs-studio, Toonz, Блог компании PVS-Studio, компьютерная графика, обзор кода, обработка изображений, Работа с векторной графикойНа днях стало известно о том, что Digital Video, создатели проекта TOONZ, и японский издатель DWANGO подписали соглашение о приобретении компанией DWANGO проекта Toonz, программного обеспечения для создания 2D анимации.
По условиям соглашения, подписанного между сторонами, будет открыт общий доступ к OpenToonz, проекту, разработанному компанией Toonz. Он так же будет включать некоторые элементы, разработанные Studio Ghibli, которые в свою очередь являются активными пользователями этих программ. С их помощью, например, Studio Ghibli создавали «Ходячий замок Хоула», «Унесенных призраками», «Рыбку Поньо», а также множество других картин. В их числе так же мультфильм «Футурама», который вдохновил меня на написание этой разоблачающей статьи про исходный код OpenToonz.
Читать полностью »
Безопасная очистка приватных данных
2016-04-06 в 12:23, admin, рубрики: C, c++, memset, pvs-studio, Блог компании PVS-Studio, Компиляторы
Часто в программе необходимо хранить приватные данные. Например: пароли, ключи и их производные. Очень часто после использования этих данных, необходимо очистить оперативную память от их следов, чтобы злоумышленник не мог получить доступ к ним доступ. В этой заметке пойдет речь о том, почему для этих целей нельзя пользоваться функцией memset().
Читать полностью »
Проверка проекта Samba с помощью PVS-Studio под Linux
2016-04-04 в 11:41, admin, рубрики: C, c/c++, c++, linux, open source, pvs-studio, samba, Блог компании PVS-Studio, ошибки в коде, Разработка под Linux, СиЕсли вы следили за новостями о последних разработках в области инструментов анализа C/C++ кода, то, должно быть, слышали про инструмент PVS-Studio. Я узнал о нем благодаря статьям, которые разработчики публикуют на своем сайте и в которых они рассказывают о проверках проектов с открытым кодом. К настоящему времени уже проверено внушительное число проектов, включая ядро Linux, Qt, Unreal и т.д., и каждый раз им удается находить интересные ошибки, подолгу живущие в коде, никем не обнаруженные. Опечатки, неаккуратное копирование, неопределенное поведение, бессмысленный код, синтаксические ошибки, которые чудесным образом пропускаются компилятором…
Как сказал Джон Кармак, "Все, что является допустимым с точки зрения синтаксиса и пропускается компилятором, в конце концов окажется в вашей кодовой базе".
Читать полностью »
О преобразовании типов в арифметических выражениях в C++ и C#
2016-03-29 в 8:39, admin, рубрики: C#, c++, pvs-studio, static code analysis, Блог компании PVS-Studio, преобразование типов, статический анализ кода, метки: преобразование типов В арифметическом выражении типы операндов могут быть преобразованы к общему типу. Такие преобразования описаны в стандарте языка — в C# они существенно проще чем в C++. Тем не менее, скорее всего далеко не каждый программист знает обо всех тонкостях.
Читать полностью »
Как обнаружить переполнение 32-битных переменной в длинных циклах в 64-битной программе
2016-03-22 в 6:46, admin, рубрики: 64-бита, c/c++, c++, pvs-studio, stackoverflow.com, x64, Блог компании PVS-Studio, поиск ошибок, руководство, Си Одна из проблем, с которой сталкиваются разработчики 64-битных приложений, это переполнение 32-битных переменных в очень длинных циклах. С этой задачей хорошо справляется анализатор кода PVS-Studio (набор диагностик Viva64). На тему переполнения переменных в циклах есть ряд вопросов на сайте StackOverflow.com. Но поскольку мои ответы могут счесть исключительно рекламными, а не как полезную информацию, я решил описать возможности PVS-Studio в статье.
Читать полностью »
Проверка исходного кода игрового движка Serious Engine v.1.10 к юбилею шутера Serious Sam
2016-03-21 в 13:35, admin, рубрики: c++, game development, open source, pvs-studio, serious engine, serious games, Блог компании PVS-Studio, обзор кода, Программирование
К юбилею выхода шутера от первого лица Serious Sam, который состоялся в марте 2016 года, разработчики игры из хорватской компании Croteam решили открыть исходный код игрового движка Serious Engine 1 v.1.10. Он заинтересовал много разработчиков, которые захотели изучить и улучшить движок. Я тоже решил поучаствовать в улучшении кода и подготовил статью с обзором ошибок, найденных с помощью статического анализатора PVS-Studio.
Читать полностью »
Проверяем исходный код плагина PVS-Studio с помощью PVS-Studio
2016-03-16 в 12:33, admin, рубрики: .net, C#, pvs-studio, static code analysis, Блог компании PVS-Studio, Компиляторы, разработка, статический анализ кода
Один из вечных вопросов, с которыми мы встречаемся, звучит так — «Вы проверяли PVS-Studio с помощью PVS-Studio? Где статья о результатах проверки?». Да, мы регулярно делаем это, поэтому мы никак не могли написать статью об ошибках, которые нашли сами в себе. Ошибки исправляются разработчиками ещё на этапе написания кода, и мы постоянно забываем в этот момент их выписать. Но читателям в этот раз повезло. Из-за недосмотра C# код плагина для Visual Studio не был добавлен в ежедневные ночные проверки, которые мы проводим. И, соответственно, в отличие от ядра анализатора, ошибки в нем не замечались на протяжении всего развития C# PVS-Studio. Как говорится, нет худа без добра, и благодаря этому вы и читаете данную статью.
Читать полностью »
Об одной интересной ошибке в Lucene.Net
2016-03-14 в 12:14, admin, рубрики: .net, C#, lucene.net, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, Программирование, статический анализ кода
Некоторые программисты, когда слышат про статический анализ, говорят о том, что он им не нужен, так как весь их код покрыт юнит-тестами, и этого достаточно, чтобы выловить все ошибки. Мне попалась ошибка, найти которую с помощью юнит-тестов теоретически возможно, но если о ней не знать, то написать такой тест практически нереально.
Свежий взгляд на код Oracle VM VirtualBox
2016-03-10 в 11:10, admin, рубрики: c++, open source, oracle, pvs-studio, virtualbox, Блог компании PVS-Studio, виртуализация, ошибки в программе, Программирование, статический анализ кода Виртуальные машины — важный инструмент в арсенале разработчика программного обеспечения. Мой интерес к коду VirtualBox вызван личным использованием этого продукта для проверки открытых проектов, а также для других разных задач, связанных с использованием нескольких операционных систем. Первая проверка этого проекта состоялась в 2014 году, тогда описание около 50 ошибок едва уместилось в двух статьях. C выходом Windows 10 и VirtualBox 5.0.XX, на мой взгляд, стабильность работы программы заметно ухудшилась. Поэтому я решил проверить проект ещё раз.
Читать полностью »