Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Приглашаем на демонстрацию инструментов LDRA

Блог компании ЦИТМ ЭкспонентаC
Всем привет.

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

  • Юнит-тесты и покрытие кода
  • Статический анализ
  • Динамический анализ
  • Связь кода, тестов и требований

Таким образом, неважно для чего вы пишете код — самолеты, автомобили, банкоматы или автоматы по продаже билетов, эти принципы едины и этот вебинар окажется полезным для вас.

Все что вам надо для участия — пройти регистрацию у нас на сайте
Всего голосов 3: ↑3 и ↓0 +3
Просмотры374
Комментарии 0

Регулярное использование статического анализа кода в командной разработке

Блог компании Intel

В преддверии выхода примерно в сентябре статического анализатора от Intel под названием Advisor, который войдет в Intel Parallel Studio 2011, нелишне будет в целом рассказать о технологии статического анализа кода и об ее применении. Дело в том, что по опыту в России статический анализ применяется не часто, видимо из-за того, что у нас не так много сложных программных проектов. Поэтому краткий текст на тему что это и кому может быть полезно, надеюсь, окажется кстати. Ну и кому же как не авторам анализатора PVS-Studio этот текст делать? :-)
Читать дальше →
Всего голосов 39: ↑27 и ↓12 +15
Просмотры13.8K
Комментарии 23

Разница в подходах анализа кода компилятором и выделенным инструментом

Блог компании Intel
У компилятора и сторонних инструментов статического анализа кода есть общая задача — выявление опасных фрагментов кода. Однако существует существенная разница в том, анализ какого типа они осуществляют. Я попробую на примере компилятора Intel C++ и анализатора PVS-Studio продемонстрировать различия подходов, и пояснить, чем они вызваны.

В качестве испытуемого на этот раз выступит проект Notepad++ версии 5.8.2.

Читать дальше →
Всего голосов 64: ↑63 и ↓1 +62
Просмотры15K
Комментарии 25

Собираю страшненькое от программистов

Блог компании Intel
Уважаемые коллеги-программисты, предлагаю поделиться в комментариях примерами ошибок, которые на ваш взгляд можно обнаружить в программе еще на этапе ее написания. Наверняка у всех были ситуации, когда исправляя после часовой отладки ляп, вы вздыхали «эх, ну что же мне компилятор здесь предупреждение не выдал».

Мне интересны в первую очередь паттерны ошибок, допускаемых в программах на Си++. Но я сознательно не стал помещать этот пост в раздел «Си++». Приводите примеры ошибок из других языков. Часто рассматривая ошибку, можно придумать ее аналог на другом языке.

Ошибки мне нужны для создания нового уникального набора правил диагностики ошибок общего типа. Правил, которые действительно актуальны, которые найдут ошибки не в абстрактных приложениях, а в данных нам в ощущениях. Неинтересно уже искать в тексте завалявшиеся случайно триграфы. Ни разу не видел ошибку, связанную с триграфом. А вот опечаток, где для очистки строки вместо str.clear() написано str.empty(), полным-полно. Например, я писал про такой пример здесь. И ведь такие ошибки не находятся существующими инструментами! Поэтому мы и идем по пути создания нового, а не повторения старого.

Теперь попробую пояснить, про какие же ошибки мне хочется услышать и как.

Читать дальше →
Всего голосов 63: ↑54 и ↓9 +45
Просмотры24.9K
Комментарии 82

Статический анализ: ошибки в медиаплеере и безглючная аська

Блог компании PVS-Studio
Продолжу экскурсию по ошибкам в программах и демонстрацию полезности статического анализа кода.

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

Рассмотрим два проекта. Первый — Fennec Media Project. Это универсальный медиа-плеер ориентированный на воспроизведение аудио и видео в высоком разрешении. В комплект исходных кодов входит множество модулей расширения (plugins) и кодеков, но анализироваться будет только сам плеер. Исходный код последней на данный момент версии 1.2 Alpha доступен здесь.

Второй проект — qutIM. Это кроссплатформенный клиент мгновенного обмена сообщениями с открытым исходным кодом. Был проанализирован код на момент начала ноября 2010 года. Набор исходных кодов был предоставлен мне одним из разработчиков, но вы также можете скачать исходный код с официального сайта. Этот разработчик, кстати, присутствует здесь — gorthauer87.

Посмотреть на лики зла
Всего голосов 85: ↑73.5 и ↓11.5 +62
Просмотры1.5K
Комментарии 69

Трепещи, мир! Мы выпустили PVS-Studio 4.00 с бесплатным анализатором общего назначения

Блог компании PVS-Studio
Check TortoiseSVN
Предлагаем вниманию программистов новый инструмент для поиска ошибок в исходном коде приложений на языке Си/Си++. В рамках анализатора PVS-Studio реализован новый набор правил общего назначения. Эта функциональность на данный момент является бесплатной. Вы можете скачать PVS-Studio по адресу http://www.viva64.com/ru/pvs-studio-download/.

В статье кратко рассказывается о новых возможностях PVS-Studio. На примере статического анализа исходного кода проекта TortoiseSVN будет продемонстрировано использование новых диагностических возможностей.
Читать дальше →
Всего голосов 88: ↑78 и ↓10 +68
Просмотры1.8K
Комментарии 170

Статический анализ и регулярные выражения

Блог компании PVS-Studio
Я занимаюсь разработкой статического анализатор кода PVS-Studio для анализа программ на языке Си/Си++. После появления в PVS-Studio 4.00 анализа общего назначения мы получили множество откликов, как положительных, так и отрицательных. Кстати, предлагаю скачать новую версию PVS-Studio, в которой благодаря откликам людей было поправлено большое количество ошибок и недочетов.

В ходе обсуждения PVS-Studio 4.00 вновь встал вопрос, можно ли реализовывать большинство проверок, используя регулярные выражения, и не переусложняем ли мы, говоря, что обязательно необходимо строить и работать с деревом разбора. Вот пример комментария на эту тему. Подобный вопрос возникает уже не в первый раз, и я решил написать статью, чтобы объяснить, почему пытаться использовать регулярные выражения для анализа Си/Си++ кода — эта очень плохая идея.

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

Читать дальше →
Всего голосов 43: ↑40 и ↓3 +37
Просмотры5.3K
Комментарии 37

Почему PVS-Studio 4.00 будет платным решением

Блог компании PVS-Studio
К сожалению, нам придется сделать статический анализатор PVS-Studio 4.00 полностью платным. Мы планировали сделать платным только набор 64-битных правил, а анализ общего назначения и анализ OpenMP-программ свободными для использования. Но мир суров и не поддержал наши начинания.
Читать дальше →
Всего голосов 85: ↑46 и ↓39 +7
Просмотры963
Комментарии 90

Ситуации, когда может пригодиться статический анализатор кода

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

Чаще всего статический анализ кода применяется для контроля качества разрабатываемого проекта. Но есть и более необычные задачи, для решения которых используется анализ кода. В этой небольшой заметке хочется описать некоторые из них.
Читать дальше →
Всего голосов 29: ↑18 и ↓11 +7
Просмотры1.7K
Комментарии 5

Язык Mt: C для высоконагруженных серверов

C++
Из песочницы
Приветствую, хабровчане!

Я хочу предложить к обсуждению идеи о том, как упростить написание серверных программ на C введением дополнительных языковых средств. Полагаю, что эта тема может быть интересна всем разработчикам, которым приходилось иметь дело с написанием многопоточного или асинхронного кода.

На данный момент я практически завершил написание инструментария — генератора парсеров, парсера C и частично C++, — который позволяет приступить к написанию транслятора, поддерживающего языковые расширения, о которых я здесь расскажу. Но перед тем, как продолжить работу, хотелось бы посоветоваться с коллегами по цеху и найти единомышленников.
Читать дальше →
Всего голосов 63: ↑58 и ↓5 +53
Просмотры1.4K
Комментарии 73

Последствия использования технологии Copy-Paste при программировании на Си++ и как с этим быть

Блог компании PVS-Studio
Copy-Paste, Ctrl-C, Ctrl-V
Я занимаюсь созданием анализатора PVS-Studio, выявляющего ошибки в исходном коде приложений на языке C/C++/C++0x. В связи с этим мне приходится просматривать большой объем исходного кода различных приложений, где с помощью PVS-Studio были обнаружены подозрительные участки кода. У меня накопилось достаточно примеров, в которых хорошо видно, когда ошибка появилась на свет из-за копирования участка кода и его модификации. Конечно, это не новая идея, что использовать Copy-Paste при программировании плохо. Однако попробуем не отделываться рекомендацией «не копируйте код» и подойдем к этой теме более внимательно.
Читать дальше →
Всего голосов 94: ↑82 и ↓12 +70
Просмотры5.4K
Комментарии 50

Как уменьшить вероятность ошибки на этапе написания кода. Заметка N1

Блог компании PVS-Studio
Check Miranda IM
Я добрался до кода широко известного клиента мгновенных сообщений Miranda IM. Вместе с различными плагинами это достаточно большой проект, размер которого составляет около 950 тысяч строк кода на C и C++. И, как в любом солидном проекте с историей развития, в нем имеется немалое количество ошибок и опечаток.

Рассматривая дефекты в различных приложениях, я заметил некоторые закономерности. И сейчас на примере дефектов, найденных в Miranda IM, я попробую сформулировать некоторые рекомендации, которые позволят избежать многих ошибок и опечаток ещё на этапе написания кода.

Читать дальше →
Всего голосов 130: ↑120 и ↓10 +110
Просмотры4K
Комментарии 102

Трудности сравнения анализаторов кода или не забывайте об удобстве использования

Я пиарюсь


Желание пользователей сравнить между собой разные анализаторы кода понятно и естественно. Однако реализовать это желание совсем не так просто как может показаться на первый взгляд. Дело в том, что непонятно какие конкретно факторы между собой сравнивать.

Если отбросить уж совсем нелепые идеи типа «сравнить количество диагностируемых ошибок» или «сравнить количество сообщений, которые выдал инструмент», то даже разумный параметр «соотношение сигнал/шум» не кажется идеальным критерием оценки анализатора кода.

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

Читать дальше →
Всего голосов 21: ↑17 и ↓4 +13
Просмотры509
Комментарии 10

Как уменьшить вероятность ошибки на этапе написания кода. Заметка N2

Блог компании PVS-Studio
Operator ?:
Это вторая статья о том, как можно избежать ряда ошибок еще на этапе написания кода. В предыдущей заметке уже упоминался совет избегать множества вычислений в одном выражении. Однако, этот вопрос требует более пристального внимания. Рассмотрим опасность сложных условий, и как можно предупредить многие логические ошибки.

Читать дальше →
Всего голосов 97: ↑83 и ↓14 +69
Просмотры3.1K
Комментарии 57

Проверка пяти открытых проектов статическими анализаторами общего назначения

Я пиарюсь


В статье «Трудности сравнения анализаторов кода или не забывайте об удобстве использования» [1] говорится о том, что сравнить между собой два инструмента не так просто как кажется, потому что помимо собственно технических характеристик анализаторов очень большое значение имеет такой параметр как удобство использования.

Но все-таки от сравнения по обнаруживаемым ошибкам никуда не деться. Естественно, просто посчитать их количество – смысла нет. Поэтому мы решили провести практический эксперимент по обнаружению ошибок в реальных проектах.

В статье показаны ошибки, выявленные с помощью статического анализатора кода, встроенного в Visual Studio 2010. Исследование проводилось на пяти open source проектах. Эти же проекты были проверены с помощью PVS-Studio. Приведены результаты сравнения этих двух инструментов.

Читать дальше →
Всего голосов 37: ↑32 и ↓5 +27
Просмотры1.9K
Комментарии 5

Скринкаст: статический анализ Си++ кода

Блог компании PVS-Studio
ADD 2011. Скринкаст: статический анализ Си++ кода
На конференции ADD 2011 я выступал с докладом «Статический анализ Си++ кода». Благодаря старанию Стаса Фомина belonesox появился замечательный скринкаст (видео + презентация), который я предлагаю вашему вниманию.

В докладе показано много примеров интересных ошибок, найденных мною в open source проектах. Я расскажу, как можно найти многие подобные ошибки еще на этапе написания кода с помощью методологии статического анализа.
Читать дальше →
Всего голосов 42: ↑34 и ↓8 +26
Просмотры2K
Комментарии 18

PVS-Studio vs Chromium

Блог компании PVS-Studio
PVS-Studio VS Chromium
В этот раз победу одержало добро. А вернее, исходные коды проекта Chromium. Chromium — один из лучших проектов, который мы проверяли с помощью PVS-Studio.
Читать дальше →
Всего голосов 153: ↑134 и ↓19 +115
Просмотры2.6K
Комментарии 64

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

Блог компании PVS-Studio
PVS-Studio on-the-fly
В PVS-Studio появился режим работы, который поможет максимально рано выявлять ошибки и опечатки. Анализатор запускается сразу после компиляции файлов и если что-то не так, покраснеет от стыда за ваш код. Фича доступна на данный момент только для пользователей Visual Studio 2010.
Читать дальше →
Всего голосов 76: ↑59 и ↓17 +42
Просмотры1.2K
Комментарии 66

Как уменьшить вероятность ошибки на этапе написания кода. Заметка N3

Блог компании PVS-Studio
PVS-Studio VS QT
Это третья статья, где я хочу рассказать про новую пару приёмов при программировании, которые помогут сделать код более простым и надежным. С предыдущими двумя заметками можно познакомиться здесь [1] и здесь [2]. В этот раз примеры будут взяты из проекта Qt.
Читать дальше →
Всего голосов 61: ↑59 и ↓2 +57
Просмотры1.6K
Комментарии 43

Лев Толстой и статический анализ кода

Блог компании PVS-Studio
PVS-Studio vs Apache HTTP Server
В этот раз с помощью PVS-Studio мы проверили Apache HTTP Server. Как и ожидалось, нашли в нём ошибки. Ошибок мало. Это тоже ожидаемо.

С этой же ситуацией сталкиваются и другие разработчики, испытывая PVS-Studio на своих проектах. К сожалению, первый вывод, который хочется сделать, увидев только несколько ошибок, что такой инструмент ему малополезен. Сейчас я придумал хорошую аналогию, которая поясняет, почему это не так.
Читать дальше →
Всего голосов 67: ↑57 и ↓10 +47
Просмотры2.3K
Комментарии 45