Как стать автором
Обновить

Как покрывать код проверками безопасности: обсуждаем в прямом эфире

Время на прочтение 3 мин
Количество просмотров 322
Блог компании Swordfish Security Информационная безопасность *

Привет, Хабр! 

Не устаю напоминать, что меня зовут Юрий Шабалин. Вместе с командой Стингрей Технолоджиз мы занимаемся анализом защищенности мобильных приложений: находим различные типы уязвимостей и помогаем их устранять. Сегодня я хочу поделиться с вами отличной новостью: в этот четверг, 11 августа, расскажу в прямом эфире в Telegram о том, как покрывать код проверками безопасности. Приглашаю всех вас послушать - уверен, вам будет жарко, вернее, интересно. 

Читать далее
Рейтинг 0
Комментарии 0

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

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

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

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

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

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

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

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

Время на прочтение 8 мин
Количество просмотров 14K
Блог компании Intel

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

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

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

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

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

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

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

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

Время на прочтение 6 мин
Количество просмотров 586
Я пиарюсь


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

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

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

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

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

Время на прочтение 10 мин
Количество просмотров 2.1K
Я пиарюсь


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

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

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

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

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

Время на прочтение 3 мин
Количество просмотров 529
Я пиарюсь

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

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

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

Время на прочтение 5 мин
Количество просмотров 405
Я пиарюсь

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PVS-Studio для Visual C++

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

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

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

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

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

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

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

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

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

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

Время на прочтение 5 мин
Количество просмотров 14K
.NET *Visual Studio *C# *
Привет, Хабр!

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

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

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

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