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

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

Send message

Это немного разное. Анализатор в 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 — именованные константы + желательны комментарии, поясняющие формулы
Что такое size_t и ptrdiff_t. Это моё повествование несколько устарело, но тем не менее.
unsigned int / int может как-бы быть недостаточно…
Вредный совет. Всё не так просто. У меня была целая статья про это: Почему важно проверять, что вернула функция malloc.
Запутался в символах при оформлении публикации. Fixed :)
Мне кажется мы друг друга не понимаем. Например, я не понимаю, почему Вы назвали пример из статьи «не плохой кандидат для автоматизации». Даже я сам не уверен, как должна выглядеть правка. Какая уж тут автоматизация. Возможно, Вы поспешили и не углубились в повествование: изменение на картинке не является правильным исправлением.

Information

Rating
528-th
Works in
Date of birth
Registered
Activity

Specialization

Specialist
C++
C
Software development