Десять лет назад мы создали простенькую утилиту под названием Viva64, предназначенную для выявления некоторых проблем в 64-битном коде. Так было заложено начало статического анализатора кода PVS-Studio. Хотя с того момента прошло 10 лет, что-то более-менее у нас, как у компании, стало получаться только несколько лет назад. Эта статья — не история успеха, так как мы считаем, что всё интересное только начинается. Однако, 10 лет — это повод подвести промежуточные итоги и рассказать нашим читателям как все начиналось, какие нас ждали ошибки, и что на данный момент у нас получилось. Местами я, возможно, буду не совсем хронологически точен при описании событий. Моя память не идеальна, а 10 лет — это длительный промежуток времени. Желаю всем приятного чтения.
Читать полностью »
Рубрика «анализ кода» - 3
Как 10 лет назад начинался проект PVS-Studio
2016-12-29 в 12:57, admin, рубрики: 10 лет, C, c++, devops, pvs-studio, viva64, анализ кода, Блог компании PVS-Studio, информационная безопасность, история создания, история старта, история стартапов, Программирование, разработка под windows, разработка приложений, разработка программного обеспечения, статический анализ кода, статический анализатор кодаСистема отчётов: как получать 50 млн. отчетов и сохранить Дзен
2016-12-08 в 2:27, admin, рубрики: Parallels, parallels desktop, анализ данных, Анализ и проектирование систем, анализ кода, Блог компании Parallels, виртуализация, виртуальная машина, ит, отладка, отчетность, Программирование, Разработка под Linux, Тестирование IT-системЧем сложнее программный продукт, чем больше он взаимодействует со сторонними системами (часто не менее сложными), тем выше вероятность сбоев в работе. Тестирование помогает найти большинство багов перед выкатыванием релиза, но иногда что-то может проскользнуть. И чтобы быстро получать подробную информацию о факте сбоя и сопутствующих условиях, в наших продуктах широко используется система отчётов. О её устройстве мы хотим сегодня рассказать.Читать полностью »
Табы или пробелы? Анализ 400 тысяч репозиториев GitHub, миллиарда файлов, 14 ТБ кода
2016-09-01 в 6:11, admin, рубрики: github, sql, анализ кода, исследование, пробел, Программирование, статистика, табуляция, форматирование кодаДля пытливых разработчиков до сих пор остается актуальным вопрос использования табуляции и пробелов для форматирования кода. Могут ли они быть взаимозаменяемы: например, 2 пробела на табуляцию или 4? Но единого стандарта нет, поэтому иногда между разработчиками возникает непонимание. Кроме того, различные IDE и их компиляторы обрабатывают табуляцию также по-своему.
Решением вопроса обычно становится соглашение о правилах форматирования в рамках проекта или языка программирования в целом.
Команда разработчиков из Google исследовала проекты в репозитории Github. Они проанализировали код, написанный на 14 языках программирования. Целью исследования было выявить соотношение табуляций и пробелов — то есть, наиболее популярный способ форматирования текста для каждого из языков.Читать полностью »
Написание кастомных правил для анализатора кода Kiuwan
2016-02-15 в 13:44, admin, рубрики: kiuwan, анализ кода, Блог компании Softmart, Программирование, разработка, статический анализ кода, Тестирование IT-систем, управление качествомПродолжаем нашу серию заметок по статическому анализатору кода Kiuwan.
Данный класс инструментов исследует текст программ на предмет выявления в них каких-то известных шаблонов уязвимостей, ошибок, неточностей, неэффективных действий и многого другого. Откуда берутся эти шаблоны, мы писали в прошлый раз. Для каждого языка программирования эти шаблоны будут свои в силу понятных отличий в синтаксисе, но будут и общие правила качественного кода, типа избегать использования повторяющихся блоков кода.
Однако, не всегда этих шаблонов и правил хватает для оценки определенных качеств написанной программы. В каждом конкретном случае может понадобиться свой определяющий параметр. Например, нам важно убедиться, нет ли в написанной банковской программе скрытых транзакций копеечек на чей-нибудь счет. Или проверить, что не используются никакие недопустимые внешние библиотеки. В этом случае, нам просто необходимо иметь возможность заставить анализатор проверять не только штатные шаблоны, но и наши дополнительные правила.
Анализируй это или о качестве программного обеспечения
2016-01-14 в 15:01, admin, рубрики: kiuwan, анализ кода, Блог компании Softmart, Программирование, разработка, статический анализ кода, Тестирование IT-систем, управление качеством Почти всю свою сознательную карьеру разработчика, руководителя проектов, консультанта по процессам разработки я оставался в плену очень распространенного и простого заблуждения. Если программа выполняет требуемые функции, претензий к стабильности и производительности нет, то это «нормальная» программа. Прошу прощения за несколько утрированную формулировку, но так оно и есть, если разобраться.
За определениями термина «качество программного обеспечения» не грех обратиться к стандартам. Несколько определений из разных стандартов удобно приведены на одной странице wiki. И что же?! В фокусе способности программы удовлетворять потребностям Заказчика.
Читать полностью »
Комментарий к «Как попасть на дачу президента в пять часов утра»
2015-12-18 в 12:58, admin, рубрики: анализ кода, аудит кода, Блог компании PVS-Studio, закладки, информационная безопасность, ошибки в коде, сертификация, уязвимости Было бы странно, заниматься поиском ошибок в программах и при этом пройти мимо этой статьи.
Хочу оставить ряд комментариев. Основной их смысл, что это не похоже на страшные закладки. Мне этот код больше напоминает какой-то тестовый прототип, а не готовое приложение. Так что возможно не всё так страшно, как преподносит автор в статье. Во-первых, код содержит ошибку и случайные числа используются всегда. В реальности мимо такого вряд ли прошли в процессе тестировании системы. А во-вторых, существует такое понятие как «сертификация программ». И приведенный фрагмент кода — первый кандидат на обнаружение.
Читать полностью »
Программный комплекс студентов MIT автоматически исправляет работу программ
2015-06-30 в 15:55, admin, рубрики: анализ кода, баги, научная фантастика, ошибки, Программирование, программы
На конференции, посвящённой разработке и реализации языков программирования, команда компьютерных специалистов из Массачусетского технологического института (MIT) представила систему с удивительными характеристиками. По их утверждению, этот программный комплекс автоматически находит ошибки в программах, и исправляет их, подставляя на их место подходящие по функциональности куски от других программ. При этом для работы системе вовсе не нужно знакомиться с исходным кодом исправляемой программы — ей достаточно исполняемого файла.
Программисты-виртуозы назвали свою программу CodePhage (кодофаг). Разработчики поясняют, что их система «анализирует выполнение программы и характеризует типы проверок безопасности, которая та проводит». После чего кодофаг может взять такие же проверки у других программ-доноров, даже если те написаны на других языках программирования, и скормить их программе-реципиенту. Каким образом для этого выбираются программы-доноры, разработчики не уточнили.
«Программ с открытым кодом накопилось уже очень много — в репозиториях находятся миллионы проектов, и многие из них соответствуют сходным спецификациям,- говорит Стелиос Сидироглу-Дускос, под руководством которого был разработан CodePhage. — Даже если по сути программы разные, у них часто могут найтись компоненты со сходной функциональностью. При помощи CodePhage когда-нибудь можно будет создать такую гибридную систему, которая включает лучшие компоненты из всех доступных реализаций».
Читать полностью »
Визуализация качества кода с PhpMetrics
2015-04-05 в 9:00, admin, рубрики: laravel, php, PhpMetrics, анализ кода, Программирование, Совершенный код, Тестирование IT-систем, тестирование веб-приложений, метки: PhpMetrics Недавно мне попался отличный инструмент для анализа PHP кода. Публикую перевод статьи с обзором этого инструмента.
PhpMetrics использует D3 и несколько сложных алгоритмов для сканирования кода вашего приложения и вывода замысловатых отчетов по результатам.
Читать полностью »
Не совсем известные решения по защите ИТ-инфраструктуры бизнеса
2015-03-24 в 7:10, admin, рубрики: 152-фз, dlp, dpi, pci dss, анализ кода, Блог компании КРОК, ИБ, информационная безопасность, ит-инфраструктура, ПД, Россия, Сетевые технологии
Классический подход российского бизнеса сегодня — это установка файрволла, затем после первых попыток направленных атак — системы защиты от вторжений. И дальше спать спокойно. На практике это даёт хороший уровень защиты только против скрипткидди, при любой более-менее серьёзной угрозе (например, от конкурентов или атаке от недоброжелателей, либо направленной атаке от иностранной группы промшипонажа) нужно что-то дополнительное, помимо классических средств.
Я уже писал про профиль типовой направленной атаки на российское гражданское предприятие. Теперь расскажу о том, как меняется стратегия защиты в целом в нашей стране в последние годы, в частности, в связи со смещением векторов атак на 0-day и связанные с этим внедрения статических анализаторов кода прямо в IDE.
Плюс пара примеров на сладкое — вы узнаете, что может твориться в полностью изолированной от Интернета сети и на периметре банка. Читать полностью »
Делаем свободное ПО безопасней: баги и фиксы InstantCMS
2015-02-16 в 9:36, admin, рубрики: cms с удобной админкой, open source, анализ кода, безопасность свободного ПО, Блог компании Positive Technologies, информационная безопасность, ит-инфраструктура, разработка, свободное по, метки: свободное ПОЭтой статьёй мы начинаем серию материалов, посвященных поиску уязвимостей в популярных системах с открытым кодом. Ошибки в OpenSSL и glibc показали, что тысячи глаз, имеющих доступ к коду, — не гарантия безопасности open source. Конечно, и закрытый код не становится безопаснее от самого факта закрытости. Просто при наличии правильных инструментов доступность исходного кода позволяет выявить гораздо больше уязвимостей, чем при тестировании методом «чёрного ящика». Вопрос лишь в том, кто этим воспользуется раньше – разработчики или злоумышленники.
Последние два года в ходе разработки системы анализа исходных кодов PT Application Inspector мы проверяли на стендах и «в поле» сотни бесплатных и коммерческих, открытых и проприетарных приложений. В ходе этих тестов было найдено значительное число уязвимостей нулевого дня. Часть этих проблем была закрыта и известна по последним докладам о безопасности SCADA, часть ожидает своей погибели в ходе ответственного разглашения.
Воспользуемся же открытостью open source и покажем, как выявляются и анализируются уязвимости в исходном коде. В роли первого подопытного выступает бесплатная система управления сообществами InstantCMS, работающая на PHP и MySQL. На базе данного конструктора создано немало социальных сетей, сайтов знакомств, онлайн-клубов, городских порталов и государственных ресурсов. Читать полностью »