Pull to refresh
583
18
Андрей Карпов @Andrey2008

Директор по маркетингу

Send message

Продолжение про Toyota ITC спустя несколько лет: Что там у PVS-Studio c покрытием Toyota ITC Benchmark?

Да, да. Мы уже знакомы с этим форматом.

Анализатор не делает "регвесты по исправлению ошибок" :). Чтобы их делать, нужен человек. Во-первых, только программист способен понять, предупреждение анализатора действительно указывает на аномалию/ошибку в коде, которую следует исправить. Во-вторых, исправление ошибки - это часто достаточно сложная творческая задача, на которую пока никакая программа не способна. Про сложность автоисправлений я писал в статье "Почему PVS-Studio не предлагает автоматические правки кода".

Это немного разное. Анализатор в Rider, это больше productivity tool. PVS-Studio это классический статический анализатор с такими возможностями, как baseline, классификация сообщений согласно OWASP и так далее.

Здесь были собраны полезные советы по программированию. А теперь для разнообразия коллекция вредных :). 50 вредных советов для C++ программиста.

Благодаря обсуждениям здесь и на других площадках я подготовил более фундаментальную подборку: "50 вредных советов для C++ программиста" :). Спасибо.

Да, в анализаторе вручную прописаны тысячи аннотаций для функций из стандартной библиотеки, WinAPI и таких распространённых библиотек как Qt, Unreal Engine (про это даже статья отдельная была), Zlib и так далее. Разметка достаточно разносторонняя и касается не только возвращаемых значений, но и аргументов и их взаимосвязи. Это позволяет находить разнообразные аномальное использование функций.

Более того, если функция не проаннотирована, то анализатор сам пытается вывести на основе её тела некоторые критерии и затем использовать их в точках вызова функции. Другими словами, он пытается самостоятельно проаннотировать функции. К сожалению, получается это обычно только для относительно простых функций. Плюс тело функции должно быть доступно анализатору. Хорошо, если она в той-же единице компиляции. А если в другой, тот ту всё ещё сложнее и в игру вступает межмодульный анализ.

Дополнительно см. статью "Технологии статического анализа кода PVS-Studio".

Автор хотел иметь ответ на вопрос, который время от времени задаётся и обсуждается. А так дал ссылку - и всё :)

И раз вопрос временами задаётся - значит есть коллективное бессознательное любопытство и теперь его можно удовлетворить :).

The Simpsons Already Did It.

Мы приписывали в конце статей:

Часто к нашим статьям задают одни и те же вопросы. Ответы на них мы собрали здесь: Ответы на вопросы читателей статей про PVS-Studio, версия 2015. Пожалуйста, ознакомьтесь со списком.

Пример. Причём поясняющий текст менялся со временем. Но всё равно никто не читает и спрашивает про "уведомили разработчиков?", "проверили сами себя?".

А раз так, то смысла нет. Мы прекратили несколько лет назад приписывать в конце пояснения.

Таких запросов от пользователей нет.
Наверное, Вас смущает, что статья звучит как новость «Впервые вышла PVS-Studio для Visual Studio» :). Конечно, это не так. Мы поддерживали и будем поддерживать новые версии Visual Studio. Но статья такая нужна, как минимум для того, чтобы можно было быстро нагулять её по запросу «pvs-studio visual studio 2022» и не писать письмо в поддержку с этим вопросом. А такие вопросы сейчас регулярно есть :).
Каждый .cpp файл обрабатывает отдельным процессом. Поскольку какие-то пользовательские данные потеряны быть не могут, то исключение std::bad_alloc будет перехвачено и ядро спокойно завершит работу, выдав соответствующее предупреждение. Т.е. какой-то особый файл будет просто не проверен. Поскольку это крайне редкое явление, как-то специально думать про такой сценарий нет необходимости.

А теоретически такое может быть? Да, может. Но это что-то особенное. Про один из таких интересных случаев вы можете услышать в докладе "Не связывайтесь с поддержкой C++ программистов". Это там, где про строковый литерал на 26 мегабайт.
3 — pvs-studio.com/ru/docs/warnings/v550
5 — именованные константы + желательны комментарии, поясняющие формулы

Information

Rating
328-th
Works in
Date of birth
Registered
Activity

Specialization

Specialist
C++
C
Software development