
Я пишу статьи, посвященные написанию качественного кода и про поиск ошибок с помощью инструментов статического анализа. Однообразие наскучивает, хочется пошалить. А давайте все вместе напишем статью "100 вредных советов для С++ программиста". Я начну, а вы подхватите.
Рубрика «ошибки в коде» - 2
Коллекционирую вредные советы для С++ программистов
2022-01-03 в 20:07, admin, рубрики: C, c++, Блог компании PVS-Studio, вредные советы, КодоБред, ненормальное программирование, ошибки в коде, СиВыявляем ошибки в релизе LLVM 13.0.0
2021-10-08 в 19:16, admin, рубрики: c++, clang, clang static analyzer, Clang-Tidy, LLVM, llvm 13, open source, pvs-studio, баги, Блог компании PVS-Studio, информационная безопасность, Компиляторы, обзоры кода, опечатки, открытый исходный код, ошибки в коде, статический анализ кода
Задача коммерческих статических анализаторов выполнять более глубокий и полный анализ кода, чем компиляторы. Давайте посмотрим, что смог обнаружить PVS-Studio в исходном коде проекта LLVM 13.0.0.
Пример, как в PVS-Studio появляются новые диагностики
2021-03-20 в 15:10, admin, рубрики: C, c++, CovidSim, MISRA, MISRA C, pvs-studio, баги, Блог компании PVS-Studio, информационная безопасность, качество кода, медицинское по, обзор кода, ошибки в коде, ошибки в программе, Программирование, Совершенный код, тестирование по
Пользователи иногда спрашивают, как появляются новые диагностики в статическом анализаторе PVS-Studio. Мы отвечаем, что черпаем вдохновение из разнообразнейших источников: книг, стандартов кодирования, собственных ошибок, писем наших пользователей и так далее. Сегодня мы придумали новую интересную диагностику и решили рассказать историю, как это произошло.
Не решают ли программисты противоречащие задачи (архитектура кода)
2020-12-05 в 9:34, admin, рубрики: ошибки в коде, ПрограммированиеДопустим, у нас есть сайт с товарами. У нас есть метод Product::getProducts — возвращает массив товаров.
Затем к нам пришел менеджер и сказал: хотим сделать акции на сайте (скидки, распродажи). В каждой акции будут прикреплены товары. Мы написали метод Action::getProductsByActionId(actionId)
Затем к нам снова пришел менеджер и сказал что нужны еще статьи, к которым прикреплены товары. Добавим метод Article::getProductsByArticleId(arcticleId).
Вы скажите — давайте сделаем 1 метод с параметрами. Ок, мы до этого дойдем.
И тут внимание: Читать полностью »
Продолжение: обидно за мнения про статические анализаторы кода
2020-10-16 в 7:36, admin, рубрики: C, c++, pvs-studio, volatile, Блог компании PVS-Studio, опечатки, ошибки в коде, С++, Си, Совершенный код, статический анализ кода, статический анализатор кода
Планировалось, что, написав статью "Обидно за мнения про статические анализаторы кода", мы выговоримся и спокойно отпустим тему. Но неожиданно эта статья вызвала бурный отклик. К сожалению, обсуждение пошло не туда, и сейчас мы сделаем вторую попытку объяснить своё видение ситуации.
Читать полностью »
Начало коллекционирования ошибок в функциях копирования
2020-04-04 в 8:37, admin, рубрики: bugs, C, c++, memcpy, static code analysis, баги, Блог компании PVS-Studio, ошибки в коде, Си, статический анализ кода
Уже несколько раз замечал, что программисты допускают ошибки в простых функциях копирования данных. Эта тема потребует в будущем ещё много времени для изучения и подбора материала, чтобы написать основательную статью. Но захотелось поделиться парой примеров, недавно замеченных мною.
Читать полностью »
Ошибки в JavaScript: исправляем, обрабатываем, чиним
2019-12-04 в 15:19, admin, рубрики: javascript, Блог компании OTUS. Онлайн-образование, ошибки в коде, ПрограммированиеВсем привет! Вдохновленные успехом предыдущей статьи, которая была написана в преддверии запуска курса "Fullstack разработчик JavaScript", мы решили продолжить серию статей для новичков и всех тех, кто только начинает заниматься программированием на языке JavaScript. Cегодня мы поговорим об ошибках, которые случаются в JS, а также о том, как именно с ними бороться.

Отдебажь за человека одну ошибку, и он будет благодарен тебе один пулл реквест. Научи его дебажить самостоятельно, и он будет благодарен тебе весь проект.
Неизвестный тимлид
Проверка Telerik UI for UWP для знакомства с PVS-Studio
2019-10-08 в 8:20, admin, рубрики: .net, C#, open source, pvs-studio, Telerik, telerik ui, Блог компании PVS-Studio, ошибки в коде, Программирование, разработка под windows, статический анализ кода
Уже стало традицией, что программисты, пополняющие команду PVS-Studio, начинают свою деятельность с написания статьи про анализ проекта с открытым исходным кодом. В этот раз таким проверенным проектом станет Telerik UI for UWP.
Читать полностью »
Работа с возражениями: статический анализ будет отнимать часть рабочего времени
2019-09-12 в 11:30, admin, рубрики: ci, devops, pvs-studio, SAST, Блог компании PVS-Studio, качество кода, ошибки в коде, Программирование, статический анализ кода, тестирование, Тестирование IT-систем, управление проектами, управление разработкой
Общаясь с людьми на конференциях и в комментариях к статьям, мы сталкиваемся со следующим возражением: статический анализ сокращает время на нахождение ошибок, но отнимает время у программистов, что нивелирует пользу от его использования и даже наоборот тормозит процесс разработки. Давайте разберём это возражение и покажем, что оно беспочвенно.
Читать полностью »
Вред макросов для C++ кода
2019-03-20 в 19:17, admin, рубрики: C, c++, c++11, Блог компании PVS-Studio, качество кода, макросы, ошибки в коде, Программирование, Си, Совершенный код
Язык C++ открывает обширные возможности для того, чтобы обходиться без макросов. Так давайте попробуем использовать макросы как можно реже!
Сразу оговорюсь, что я не являюсь фанатиком и не призываю отказываться от макросов из идеалистических соображений. Например, когда речь заходит о ручной генерации однотипного кода, я могу признать пользу от макросов и смириться с ними. Например, я спокойно отношусь к макросам в старых программах, написанных с использованием MFC. Нет смысла воевать с чем-то вроде этого:
BEGIN_MESSAGE_MAP(efcDialog, EFCDIALOG_PARENT )
//{{AFX_MSG_MAP(efcDialog)
ON_WM_CREATE()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
Существуют такие макросы, да и ладно. Они действительно были созданы для упрощения программирования.
Я говорю о других макросах, с помощью которых пытаются избежать реализации полноценной функции или стараются сократить размер функции. Рассмотрим несколько мотивов избегать таких макросов.
Читать полностью »
