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

Ищу инструменты статического анализа кода для поиска уязвимостей

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

Для понятности приведу пример одного такого известного мне инструмента – Pixy.
Читать дальше →
Всего голосов 12: ↑7 и ↓5 +2
Просмотры2.9K
Комментарии 24

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

C++
Для меня красота C++ заключается, в первую очередь, во вседозволенности и ужасающей мощи языка. Мы можем работать с памятью так же плотно, как и в C, и в то же время имеем такие средства абстракции, как шаблоны и STL, где параметризовать можно что угодно и чем угодно.
Плата за это соответствующая — не всегда вразумительные ошибки компилятора (попробуйте забыть поставить точку с запятой после определения класса), очень большой срок подготовки и обучения программистов, но самое главное — некоторые баги становятся заметными только во время исполнения программы.
Мы хотим больше полезных ворнингов до запуска наших программ. Одно из средств получения желаемого — статический анализ кода. Статический — значит, не запуская программу. Интересны не только вероятные ошибки, случаи undefined behaviour, утечки памяти, но и вещи вроде недоступности/неиспользуемости кода, рекомендации по повышению интуитивности стиля программирования.
Читать дальше →
Всего голосов 40: ↑38 и ↓2 +36
Просмотры27.9K
Комментарии 43

Распознавание цифр с помощью простейшей статистики и анализа топологии

Алгоритмы
Дело было на третьем курсе, появился у нас предмет ИИС (интеллектуальные информационные системы). Так как я давно интересовался распознаванием образов, удалось выпросить тему «распознавание рукописных цифр». Я решил не возиться с нейронными сетями и придумать что-то свое, простое, но достаточно эффективное.
Читать дальше →
Всего голосов 71: ↑68 и ↓3 +65
Просмотры22.4K
Комментарии 57

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

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

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

Статический анализ исходного кода на примере WinMerge

Блог компании PVS-Studio
Сегодня я хочу посвятить пост тематике, почему инструменты анализа исходного кода полезны вне зависимости от уровня знаний и опыта программиста. А польза такого анализа будет продемонстрирована на примере инструмента, который известен всем программистам — WinMerge.

Читать дальше →
Всего голосов 56: ↑53 и ↓3 +50
Просмотры2.6K
Комментарии 28

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

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

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

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

Я пиарюсь


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

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

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

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

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

Я пиарюсь


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

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

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

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

Как в PVS-Studio мы решали одну инженерную задачу в течение нескольких лет

Я пиарюсь

Сначала я хотел назвать эту заметку «Как PVS-Studio позволяет ДЕШЕВО внедрить статический анализ кода в процесс разработки», но не решился из-за двусмысленного толкования слова «дешево». Поэтому я расскажу об одной инженерной проблеме, которую мы постоянно должны были решать для того, чтобы люди пользовались нашим продуктом. Забегая вперед, скажу, что, как мне кажется, мы ее решили.

Читать дальше →
Всего голосов 61: ↑38 и ↓23 +15
Просмотры435
Комментарии 33

Как добавить новое диагностическое правило в PVS-Studio? Будни разработчиков…

Я пиарюсь

Вопрос о том, как добавить собственное диагностическое правило в наш статический анализатор PVS-Studio задают нам довольно часто. И мы всегда отвечаем, что сделать это очень просто: «Нужно всего лишь написать нам письмо, и мы добавим это правило в анализатор». Такой интерфейс для добавления новых правил удобен для пользователя. Это самый лучший и удобный интерфейс. Сделать самому подобную работу, не так просто, как кажется. В заметке я покажу подводную часть айсберга, которая скрывается за понятием «добавили вот это простое правило».

Читать дальше →
Всего голосов 51: ↑36 и ↓15 +21
Просмотры349
Комментарии 22

Разрушаем мифы о статическом анализе кода

Блог компании PVS-Studio
Общаясь с людьми на форумах, я заметил несколько стойких заблуждений, касающихся методологии статического анализа. Я хочу развеять следующие мифы:
Разрушаем мифы о статическом анализе
  1. Статический анализатор это продукт разового применения.
  2. Профессиональные разработчики не допускают глупых ошибок.
  3. Динамический анализ лучше чем статический.
  4. Программисты хотят добавлять свои правила в статический анализатор.

Читать дальше →
Всего голосов 90: ↑51 и ↓39 +12
Просмотры4.1K
Комментарии 29

Джон Кармак о статическом анализе кода

Проектирование и рефакторинг
«Самой важной вещью, которую я сделал как программист за последние годы — это начал агрессивно применять статический анализ кода. — пишет Джон Кармак в статье, опубликованной на AltDevBlogADay. — Не так важны сотни серьёзных багов, которые удалось предотвратить, сколько смена ментальности и моего отношения к надёжности ПО и качеству кода».

Джон Кармак рассказывает о различных инструментах, которые пытался использовать в течение своей карьеры и о тех выводах, к которым пришёл в итоге.
Читать дальше →
Всего голосов 92: ↑77 и ↓15 +62
Просмотры12.9K
Комментарии 55

Что общего у статического анализа и поисковиков? Хороший «top»!

Блог компании PVS-Studio
Разработчики поисковиков типа Google/Яндекс и разработчики инструментов статического анализа кода решают в каком-то смысле очень похожую задачу. И те, и другие должны предоставить пользователю некоторую выборку с ресурсами, которые «отвечают» желаниям пользователя. Нет, конечно, в идеале разработчики поисковиков хотели бы ограничиться кнопкой «Мне повезет!» (I'm Feeling Lucky). А разработчики инструментов анализа кода хотят выдавать только список реальных ошибок в коде. Но реальность как всегда накладывает ограничения. Хотите узнать, как мы сражаемся с жестокой реальностью при разработке PVS-Studio?

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

TypeScript: статический анализ, автодополнение и немножко ES6 для JavaScript

JavaScriptTypeScript
Из песочницы
image Такие web приложения как почта, карты, текстовые процессоры, инструменты для совместной работы, стали неотъемлемой частью нашей жизни. Язык программирования TypeScript был разработан для удовлетворения потребностей разработчиков подобных приложений. Он облегчает определение интерфейсов между программными компонентами, помогает изучать поведение существующих JavaScript библиотек, снижает риск конфликта имен посредством организации кода в динамично подгружаемые модули. Система типов TypeScript (которая кстати необязательна) позволяет использовать такие высокопроизводительные инструменты и техники разработки как статический анализ, символьная навигация, автодополнение и рефакторинг кода.
Читать дальше →
Всего голосов 32: ↑28 и ↓4 +24
Просмотры11K
Комментарии 21

«Разработчики PVS-Studio, вы вообще слышали про Clang?», или сравнение PVS-Studio и Clang без кода

Блог компании PVS-Studio
Довольно часто, когда мы пишем статьи про статический анализатор C++ кода PVS-Studio, нам задают один из следующих вопросов:
  1. А чем PVS-Studio лучше, чем Clang?
  2. А вот Clang бесплатный, а вы стоите денег – не понятно, почему?
  3. Clang лучше, туда легко можно добавить свои диагностики, ведь это open source!
  4. Вам пора закрываться, Clang вас раздавит, если не сейчас, то когда отладят версию под Windows.(ну это даже и не как вопрос сформулировано).
Пришло время обстоятельно ответить на эти вопросы.
Читать дальше →
Всего голосов 19: ↑12 и ↓7 +5
Просмотры9.5K
Комментарии 11

PVS-Studio для Visual C++

Блог компании PVS-StudioVisual Studio
PVS-Studio small
Очень давно все наши статьи стали посвящаться чему угодно, но только не самому инструменту PVS-Studio. Мы рассказываем о проверенных проектах, о тонкостях языка Си++, о создании плагинов на C#, о запуске PVS-Studio из командной строки. А ведь в первую очередь PVS-Studio ориентирован на разработчиков, использующих Visual Studio. Мы очень много сделали, чтобы им было удобно пользоваться нашим инструментом. Но как раз это часто оказывается за кадром. Решил исправить эту ситуацию и рассказать с чистого листа о плагине PVS-Studio. Если вы используете Visual C++, эта статья для вас.
Читать дальше →
Всего голосов 35: ↑29 и ↓6 +23
Просмотры9.2K
Комментарии 23

Как участвовать в проекте с открытым исходным кодом и получать деньги?

Open sourcePythonGitHub
Tutorial
Здравствуй Хабрахабр!

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

Есть несколько вариантов. Один из них это начать свой проект и ждать когда он взлетит, при этом тратить время на создание кода и рекламу проекта в конкурсах, акселераторах, переговорах с инвесторами. В случае успеха надо находить специалистов поднимать инфраструктуру. Ряд виртуальных или реальных серверов для сайта, программистов, базы данных, клиентов. В итоге, многие проекты так и не взлетев попадают на GitHub и другие подобные ресурсы.
Но есть и другой вариант
Всего голосов 57: ↑51 и ↓6 +45
Просмотры40.2K
Комментарии 5

Flow — статический анализ типов в JS от Facebook

Разработка веб-сайтовJavaScript
Flow — это статический анализатор кода и набор синтаксических конструкций, для прямого указания типа переменной.
Flow умеет вычислять тип переменной, без внесения изменений в код (в отличии от TypeScript) что позволяет начать использовать его уже сейчас в любом проекте. Также есть возможность самостоятельно указывать типы в стиле TypeScript.

Есть 3 режима:
  1. Не проверять ничего, по умолчанию
  2. Проверка без использования аннотаций (с коментарием-аннотацией, как в React)
  3. Строгое указание типа переменной (с внесением изменения непосредственно в код)

Примеры под катом
Всего голосов 19: ↑17 и ↓2 +15
Просмотры35.3K
Комментарии 56

Проверяем открытый исходный код UEFI для Intel Galileo при помощи PVS-Studio

Open sourceСистемное программированиеCUEFI
Разработка прошивок, даже если она ведется не на ассемблере для экзотических архитектур, а на C для i386/amd64 — дело весьма непростое, да и цена ошибки может быть крайне высокой, вплоть до выхода целевой аппаратной платформы из строя, поэтому использование различных техник предотвращения ошибок на самых ранних этапах разработки — необходимость.

К сожалению, о формальной верификации или использовании MISRA C в случае UEFI-прошивок остается только мечтать (с другой стороны, мало кто хочет тратить на разработку прошивки пару лет и 50% бюджета проекта), поэтому сегодня поговорим о статическом анализе, а точнее — о популярном на Хабре статическом анализаторе PVS-Studio, которым попытаемся найти ошибки в открытом коде UEFI для Intel Galileo.

За результатами проверки покорнейше прошу под кат.
Читать дальше →
Всего голосов 49: ↑44 и ↓5 +39
Просмотры14.4K
Комментарии 22

Пишем простой анализатор кода на Roslyn

.NETVisual StudioC#
Привет, Хабр!

Не так давно я сходил на конференцию CLRium от sidristij, где увидел довольно простой и удобный способ для анализа исходного кода C# в MSVS 2015.

Задача взята из проекта, в котором я участвую: каждый аргумент со ссылочным типом должен иметь аттрибут NotNull или CanBeNull (которые потом использует ReSharper). В реальности, конечно, в самом проекты атрибуты являются только частью проверок, однако это не мешает им быть обязательными. Уже есть тесты, которые проверяют сборку и падают, если методы или конструкторы не содержат требуемых атрибутов, однако разработчики все равно довольно часто забывают их проставить, что приводит к падениям билдов, обновлению кода и т.д. Вот если бы Visual Studio вместе с ReSharper выдавали бы предупреждения, что код не совсем хороший, то можно было бы сэкономить время и нервы…

И, на самом деле, вместе с новой студией это становится возможным! Более того, сделать свои проверки нереально просто.

Исходный код можно посмотреть тут.
Посмотреть простые действия
Всего голосов 23: ↑22 и ↓1 +21
Просмотры13.2K
Комментарии 9