Я регулярно проверяю различные открытые проекты, чтобы продемонстрировать возможности статического анализатора кода PVS-Studio (C, C++, C#). Настало время компилятора GCC. Бесспорно, GCC — это очень качественный и оттестированный проект, поэтому найти в нём хотя бы несколько ошибок уже большое достижение для любого инструмента. К моей радости, PVS-Studio справился с этой задачей. Никто не застрахован от опечаток и невнимательности. Именно поэтому PVS-Studio может стать вашей дополнительной линией обороны на фронте бесконечной войны с багами.
Читать полностью »
Рубрика «ошибки в коде» - 6
Находим ошибки в коде компилятора GCC с помощью анализатора PVS-Studio
2016-08-31 в 13:47, admin, рубрики: bugs, C, c++, gcc, GNU Compiler Collection, pvs-studio, PVS-Studio for Linux, static code analysis, Блог компании PVS-Studio, информационная безопасность, ошибки в коде, Разработка под Linux, Си, статический анализ кодаСамые дорогие и судьбоносные ошибки в ИТ-индустрии
2016-08-09 в 6:45, admin, рубрики: баги, бизнес, ит-индустрия, неудачи, ошибки в коде, разработка по, самые, тестирование по, управление проектами, управление разработкой, ущерб
Досадные ошибки в программном обеспечении могут стоить компаниям очень дорого и даже ставят под угрозу существование их бизнеса. Однако ошибки, которые допускает сам «бизнес», влияют на судьбу ИТ-индустрии и судьбы целых поколений.
Первый баг был зафиксирован 9 сентября 1945 года: в вычислительной машине Mark II Aiken Relay Calculator нашли мотылька, застрявшего между контактами электромеханического реле, что приводило к ошибкам. Извлеченное насекомое было вклеено в технический дневник с сопроводительной надписью: «First actual case of bug being found». Этот забавный факт и положил начало использованию слова «баг» в современном значении.Читать полностью »
Сортировка предупреждений статических анализаторов по приоритету при поиске и исправлении программных ошибок
2016-07-12 в 18:06, admin, рубрики: cert, CERT Secure Coding, static code analysis, Блог компании PVS-Studio, информационная безопасность, ошибки в коде, Программирование, статический анализ кодаЗа 2015 год в Национальной базе данных уязвимостей США (National Vulnerability Database, NVD) было зарегистрировано 6,488 новых программных уязвимостей, всего же в ней насчитывается 74,885 уязвимостей, найденных за период 1988-2016 гг. Инструменты статического анализа проверяют исходный код программ на наличие дефектов, в том числе потенциальных уязвимостей защиты, и выдают диагностические сообщения (предупреждения), в которых указывается местоположение предполагаемого дефекта, его характер, и, как правило, дополнительная контекстуальная информация. Достоверность таких предупреждений затем оценивается пользователем. Трудозатраты на проверку всех предупреждений и исправление всех подтвержденных ошибок вручную зачастую значительно превосходят бюджет и сроки проекта. По этой причине пользователи нуждаются в инструментах, которые позволили бы сортировать предупреждения по степени важности, тем самым определяя порядок их проверки. Настоящая статья посвящена проводимому нами исследованию данного вопроса с использованием классификационных моделей, призванных помочь специалистам по анализу и программистам в классификации предупреждений по приоритету и определении оптимального порядка исправления соответствующих ошибок.
Читать полностью »
PVS-Studio спешит на помощь CERN: проверка проекта Geant4
2016-07-03 в 16:10, admin, рубрики: c++, CERN, coverity, Geant4, open source, pvs-studio, Блог компании PVS-Studio, открытый код, ошибки в коде, Программирование, статический анализ кодаПроект Geant4 продолжает развиваться, поэтому интересно вновь проверить его с помощью статического анализатора кода PVS-Studio. На этот раз проверке будет подвергнута версия 10.2 (предыдущая проверка относилась к версии 10.0-beta).
Читать полностью »
Единорог, который смог
2016-06-22 в 12:15, admin, рубрики: c++, C++ REST SDK, Casablanca, microsoft, pvs-studio, rest, Блог компании PVS-Studio, ошибки в коде, разработка под windowsОдна из команд разработчиков Microsoft уже использует в работе анализатор PVS-Studio. Это хорошо, но недостаточно. Поэтому я продолжаю демонстрировать, какую пользу может приносить статический анализ кода на примере проектов Microsoft. Три года назад мы проверяли проект Casablanca и не смогли в нём ничего обнаружить. За это проект был отмечен медалью «безбажный код». Прошло время, проект развивался и рос. В свою очередь, анализатор PVS-Studio существенно продвинулся в возможностях анализа кода. И наконец я могу написать статью об ошибках, которые анализатор выявляет в проекте Casablanca (C++ REST SDK). Ошибок мало, но то, что теперь их достаточно для написания статьи, говорит о эффективности PVS-Studio.
Читать полностью »
Главный вопрос программирования, рефакторинга и всего такого
2016-04-15 в 12:34, admin, рубрики: C, c/c++, c++, code review, Блог компании PVS-Studio, обучение программированию, ошибки в коде, Программирование, Совершенный код, учимся на ошибках, хороший код
Я написал маленькую электронную книгу в которой рассматриваю вопросы как сделать код лучше. Книга ориентирована на Си/Си++ программистов, но будет интересна и разработчикам, использующих другие языки. Формат книги не подходит для моего любимого Хабра, но мне интересно получить обратную связь и обсудить мысли, изложенные в статье. Поэтому я решил разместить здесь только анонс, а с самой статьей можно познакомиться здесь. И приглашаю в комментарии для обсуждения.
Читать полностью »
Проверка проекта 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 и т.д., и каждый раз им удается находить интересные ошибки, подолгу живущие в коде, никем не обнаруженные. Опечатки, неаккуратное копирование, неопределенное поведение, бессмысленный код, синтаксические ошибки, которые чудесным образом пропускаются компилятором…
Как сказал Джон Кармак, "Все, что является допустимым с точки зрения синтаксиса и пропускается компилятором, в конце концов окажется в вашей кодовой базе".
Читать полностью »
Комментарий к «Как попасть на дачу президента в пять часов утра»
2015-12-18 в 12:58, admin, рубрики: анализ кода, аудит кода, Блог компании PVS-Studio, закладки, информационная безопасность, ошибки в коде, сертификация, уязвимостиБыло бы странно, заниматься поиском ошибок в программах и при этом пройти мимо этой статьи.
Хочу оставить ряд комментариев. Основной их смысл, что это не похоже на страшные закладки. Мне этот код больше напоминает какой-то тестовый прототип, а не готовое приложение. Так что возможно не всё так страшно, как преподносит автор в статье. Во-первых, код содержит ошибку и случайные числа используются всегда. В реальности мимо такого вряд ли прошли в процессе тестировании системы. А во-вторых, существует такое понятие как «сертификация программ». И приведенный фрагмент кода — первый кандидат на обнаружение.
Читать полностью »
Цена ошибки и ее последствия в Google
2015-06-29 в 17:16, admin, рубрики: Google, корпоративная культура, ошибки, ошибки в коде, ошибки программистов, притча Эту историю я услышал на первой неделе моей летней практики в Гугле, во время ознакомления с компанией. Рассказывал ее один бывалый инженер имя которого я теперь не вспомню, как и не вспомню мелких деталей истории, например конкретные числа. Однако, посыл этой истории очень важен, и показывает как «нетрадиционные» методы менеджмента могут оказаться довольно продуктивными. Речь пойдет об ошибке стоимостью в несколько сотен тысяч долларов, и о ее последствиях.
Читать полностью »
Устранение загадочной ошибки «undefined is not a function» в V8
2015-04-19 в 12:26, admin, рубрики: chromium, Google Chrome, javascript, Node, node.js, nodejs, V8, новая Opera, ошибки в кодеДжаваскриптовая ошибка «undefined is not a function» довольно загадочна. Как раз поэтому определённым спросом пользуются разъяснительные статьи, из которых читатель, начинающий изучать программирование на JavaScript, способен узнать о том, что такая ошибка (попытка использовать неопределённое значение как функцию) чаще всего возникает при вызове несуществующего метода объекта (а такой вызов, в свою очередь, чаще всего происходит в случае опечатки в названии метода). Такой разъяснительной статьёю может послужить «Ошибки в JavaScript и как их исправить», например.
Однако и после разъяснений остаётся мысль о том, что обнаружение и устранение опечаток (да и других оплошностей при вызове методов) было бы много проще, если бы название «виновного» метода содержалось непосредственно в тексте появляющейся ошибки.
Так и вышло:
Improved exception messages: Goodbye "undefined is not a function". Hello "http://t.co/rMIELG5VoW is not a function" pic.twitter.com/3uykfrTK9O
— Addy Osmani (@addyosmani) 21 февраля 2015