All streams
Search
Write a publication
Pull to refresh
611
7
Андрей Карпов @Andrey2008

Директор по развитию бизнеса

Send message

Странные мысли. Мы 15 лет успешно разрабатываем и продаём PVS-Studio без всяких ГОСТ. Однако, раз уж стандарт появился, странно не обратить на это внимание и не доработать напильником PVS-Studio, чтобы ему соответствовать. Благо хоть это и потребовало несколько месяцев доработок, ничего сверх особенного не пришлось делать. Анализатор уже был мощен, просто нужно было например, классифицировать предупреждения по типу перечисленным там критических ошибок. Естественно такой классификации в инструменте до ГОСТ не существовало и не могло существовать.

Это компилируется в C (хотя и с варнингом, GCC: incompatible integer to pointer conversion assigning to 'int *' from 'int' [-Wint-conversion]).

И не компилируется в C++. И это замечательно.

Возьмётесь? :)

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

Условно говоря, функция записи на диск не виновата, что с её помощью в файл записываете в открытом виде секретный пароль пользователя.

Taint-анализ (анализ помеченных данных, taint checking).

Нет. Это выходит далеко за пределы методологии статического анализа кода.

Но не покрыт :)

P.S. Про юнит-тесты в DPDK отдельная земетка скоро будет :)

Хм.. Место для подумать, спасибо.

Движок habr для кода умный там, где не надо :)

Он схлопывает две пустые строчки в одну, поэтому не удаётся показать лишнюю пустую строчку в коде, про которою идёт речь. Она здесь:

Как вариант можно у нас в блоге посмотреть статью, там как показан так, как надо.

Первая диагностика V801 на тему микрооптимизаций, которая была реализована в PVS-Studio, как раз про копирования больших объектов :)

Кстати, есть и обратная – V835 (обнаружена функция, которая принимает параметр по ссылке на константный объект, когда эффективнее это делать по копии).

P.S. Мы называем это "микрооптимизациями", по причине, что статический анализатор, как правило не знает, часто используется какой-то код или нет. Для настоящей оптимизации нужен профайлер. Иногда, впрочем, пользователи писали, что заметно улучшили производительность, просто исправив код, на который указывал PVS-Studio этими самыми диагностиками.

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

Вот мне делать больше нечего :) Наверняка найдутся какие-то компиляторы без такой диагностики. Например для embedded или просто старые, но ещё где-то используемые. Но речь про общий тренд. Компиляторы и анализаторы вытравили такие баги из кода в целом :)

Information

Rating
816-th
Works in
Date of birth
Registered
Activity

Specialization

Specialist
C++
C
Software development