Рубрика «анализ кода» - 2

Как PVS-Studio оказался внимательнее, чем три с половиной программиста

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь оказался внимательнее нескольких человек.

Нам в поддержку написал пользователь, утверждая, что анализатор выдаёт сразу четыре ложных срабатывания на одну строчку кода. Письмо, написанное в поддержку, изначально попало к Евгению Рыжкову, который, бегло прочитав его и не заметив аномального в фидбеке, сразу переслал его ведущему разработчику Святославу Размыслову. Евгений не всматривался в код, так что будет честно посчитать его только за половину программиста :).
Читать полностью »

Анализ бинарного кода, то есть кода, который выполняется непосредственно машиной, – нетривиальная задача. В большинстве случаев, если надо проанализировать бинарный код, его восстанавливают сначала посредством дизассемблирования, а потом декомпиляции в некоторое высокоуровневое представление, а дальше уже анализируют то, что получилось.

Здесь надо сказать, что код, который восстановили, по текстовому представлению имеет мало общего с тем кодом, который был изначально написан программистом и скомпилирован в исполняемый файл. Восстановить точно бинарный файл, полученный от компилируемых языков программирования типа C/C++, Fortran, нельзя, так как это алгоритмически неформализованная задача. В процессе преобразования исходного кода, который написал программист, в программу, которую выполняет машина, компилятор выполняет необратимые преобразования.

В 90-е годы прошлого века было распространено суждение о том, что компилятор как мясорубка перемалывает исходную программу, и задача восстановить ее схожа с задачей восстановления барана из сосиски.
Анализ унаследованного кода, когда исходный код утрачен: делать или не делать? - 1
Читать полностью »

Почему так важно запретить самому себе отладку руками?

Когда вы отлаживаете программу, то вы, сами того не осознавая, думаете что за один отладочный сеанс исправите все проблемы, возникшие в рамках этой задачи. Но наша недальновидность не хочет верить в то, что на самом деле там не одна проблема, а несколько. И за один отладочный сеанс не получится решить все эти проблемы.

Поэтому вам надо будет несколько раз запускать этот код в отладочном режиме, проводя часы отладки над одним и тем же куском кода. И это только вы один столько времени потратили над этой частью программы. Каждый член команды, кому «посчастливится» работать с этим кодом, будет вынужден прожить ту же самую историю, которую прожили вы.

Я уже не говорю о том, что люди в командах меняются, команды меняются и так далее. Человеко-часы уходят на одно и то же. Перестаньте делать это. Я серьёзно. Возьмите ответственность за других людей на себя. Помогите им не переживать тот же самый участок вашей жизни.
Читать полностью »

Сегодня невозможно представить большой город без метрополитена с его линиями, правилами и станциями, достопримечательностями и своей историей, иногда даже известными во всем мире и привлекающими к себе особое внимание. Метро функционирует как отдельный организм, но вместе с тем является неотъемлемой частью города. Так и средства информационной безопасности в нашей стране уже невозможно представить без решений отечественных производителей (станции метро) различных классов систем (линии метро).

Предлагаем прокатиться вместе с нами по нашему метро под названием «Информационная безопасность» и подробно, при желании, остановится на известных или не очень, а, может, просто любимых станциях….

P.S. Карта метро ИБ является лишь информативным инструментом, не несет ответственности за работоспособность станций метро и является актуальной на конец 2017 года. Функциональность и качество работоспособности станций не зависит от их месторасположения на карте, внутри кольца или за пределами, аналогии с отчетами мировых аналитических агентств нет, мы же в столице России! График работы и иные детали функционирования уточняйте в самостоятельном порядке.

Любые предложения по реставрации станций, их закрытию или пожелания по внесению неучтенных станций приветствуются! Ведь линии метро продлеваются, а МЦК строится быстрыми темпами…

До встречи в 2018 году!
Читать полностью »

GitHub предупредит разработчиков об уязвимостях в их проектах - 1

Платформа для разработчиков запустила функцию под названием Dependency Graph, которая оповещает разработчиков в том случае, если их код содержит известные уязвимости. Система анализирует зависимости и модули, использующиеся в проекте, и выводит информацию о содержащихся в них ошибках безопасности. Инициатива направлена на повышение уровня безопасности проектов с открытым исходным кодом.Читать полностью »

PVS-Studio - супергерой

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.
Читать полностью »

Поддержка пользователей, использующих бесплатную лицензию PVS-Studio, теперь осуществляется на сайте StackOverflow - 1

Популярность бесплатного варианта лицензирования PVS-Studio постепенно растёт, и всё больше бесплатных пользователей обращаются к нам в поддержку с различными вопросами. Многие вопросы повторяют друг друга и, чтобы сократить объем переписки, мы с настоящего момента будем оказывать поддержку бесплатным пользователям только через сайт StackOverflow. Так нам будет проще работать с вопросами, и мы сможем давать ссылки на более ранние ответы. Кроме того, множество вопросов просто отпадёт, так как ответ можно будет сразу найти с помощью поиска на StackOverflow, и не потребуется ожидать ответа по почте. Данное решение облегчит жизнь как нам, так и пользователям PVS-Studio.
Читать полностью »

Настоящей статьей мы продолжаем серию обзоров, посвященных обнаружению уязвимостей в open-source проектах с помощью статического анализатора кода AppChecker.

В рамках этой серии рассматриваются наиболее часто встречающиеся дефекты в программном коде, которые могут привести к серьезным уязвимостям. В этой статье мы остановимся на широком классе дефектов типа "Expression Issues".

Обнаружение дефектов кода типа «Expression Issues» (CWE-569) - 1

В международной классификации CWE данный тип дефектов известен как CWE-569: Expression Issues. К нему относятся различные ошибки в логических выражениях в коде программы. Частным случаем дефекта такого класса является дефект «Присваивание вместо сравнения».

Читать полностью »

Единорог

Десять лет назад мы создали простенькую утилиту под названием Viva64, предназначенную для выявления некоторых проблем в 64-битном коде. Так было заложено начало статического анализатора кода PVS-Studio. Хотя с того момента прошло 10 лет, что-то более-менее у нас, как у компании, стало получаться только несколько лет назад. Эта статья — не история успеха, так как мы считаем, что всё интересное только начинается. Однако, 10 лет — это повод подвести промежуточные итоги и рассказать нашим читателям как все начиналось, какие нас ждали ошибки, и что на данный момент у нас получилось. Местами я, возможно, буду не совсем хронологически точен при описании событий. Моя память не идеальна, а 10 лет — это длительный промежуток времени. Желаю всем приятного чтения.
Читать полностью »

Система отчётов: как получать 50 млн. отчетов и сохранить Дзен - 1

Чем сложнее программный продукт, чем больше он взаимодействует со сторонними системами (часто не менее сложными), тем выше вероятность сбоев в работе. Тестирование помогает найти большинство багов перед выкатыванием релиза, но иногда что-то может проскользнуть. И чтобы быстро получать подробную информацию о факте сбоя и сопутствующих условиях, в наших продуктах широко используется система отчётов. О её устройстве мы хотим сегодня рассказать.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js