Время от времени читатели наших статей о проверке открытых проектов обращают внимание, что статический анализатор кода PVS-Studio выявляет большой процент ошибок, которые незначительны или вообще не влияют на работу приложения. Это действительно так. Большинство важных ошибок уже поправлены благодаря ручному тестированию, отзывам пользователей и иным дорогим методам. При этом, многие из этих ошибок можно было бы найти ещё на этапе написания кода и исправить с минимальными потерями времени, репутации, денег. В этой статье будет приведено несколько примеров реальных ошибок, которые были бы сразу исправлены, если бы авторы проектов использовали статический анализ кода.
Рубрика «C» - 30
Ошибки, которые не находит статический анализ кода, потому, что он не используется
2019-07-15 в 13:31, admin, рубрики: bugs, C, c++, pvs-studio, static code analysis, static code analyzer, Блог компании PVS-StudioErrors that static code analysis does not find because it is not used
2019-07-15 в 13:30, admin, рубрики: bugs, C, c++, pvs-studio, static code analysis, static code analyzer, Блог компании PVS-StudioReaders of our articles occasionally note that the PVS-Studio static code analyzer detects a large number of errors that are insignificant and don't affect the application. It is really so. For the most part, important bugs have already been fixed due to manual testing, user feedback, and other expensive methods. At the same time, many of these errors could have been found at the code writing stage and corrected with minimal loss of time, reputation and money. This article will provide several examples of real errors, which could have been immediately fixed, if project authors had used static code analysis.
Как в 1995 году писали игры для Sega Saturn
2019-07-12 в 11:03, admin, рубрики: C, sega, Sega Saturn, ассемблер, Игры и игровые приставки, разработка игр, ретрогейминг, старое железо, старые консолиЭто документ, написанный мной в 1995 году, когда я работал над первой игрой студии Neversoft: Skeleton Warriors. Это была первая игра, в которой я не использовал язык ассемблера 68K.
Фото сделано примерно в то время. Комплект разработчика (dev kit) («Small Box» и ICE) стоит справа от меня.
Состояние игры
В представленном ниже документе вкратце описывается состояние кода Skeleton Warriors для Sega Saturn, а также упоминаются некоторые из множества аспектов, которые нужно было ещё сделать.
Документ нужен был, чтобы ускорить Дэну, Кену и Джеймсу знакомство с уже готовым кодом, объяснить им назначение каждого модуля и взаимодействие между ними. Также он позволил мне оценить печальное состояние этого кода, и, надеюсь, заставил меня взяться за ум.
Также я немного рассказываю о встраивании данных (файлы .GOV и .GOB) в программу, и о том, что мы будем делать в будущем.
Оборудование для разработки
Наша целевая платформа — Sega Saturn, имеющая два Risc-микропроцессора SH2 и один 68000. Пока мы используем только основной процессор Master SH2, вспомогательный slave SH2 будет использоваться, когда мы разберёмся, как это сделать. 68000 применяется для управления звуковым чипом, нам не пришлось писать для него код, потому что он будет использовать предоставленную Sega звуковую библиотеку.
Читать полностью »
Самые частые грабли при использовании printf в программах под микроконтроллеры
2019-07-10 в 10:45, admin, рубрики: C, c++, Cpp, debug, gcc, ld script, linker, stm, Компиляторы, компоновщик, микроконтроллеры, отладка, программирование микроконтроллеров, системы сборкиВремя от времени в моих проектах приходится применять printf в связке с последовательным портом (UART или абстракция над USB, имитирующая последовательный порт). И, как обычно, времени между его применениями проходит много и я успеваю напрочь забыть все нюансы, которые требуется учитывать, чтобы он нормально работал в крупном проекте.
В данной статье я собрал свой собственный топ нюансов, которые возникают при использовании printf в программах под микроконтроллеры, сортированный по очевидности от самых очевидных к полностью неочевидным.
Читать полностью »
Делаем процесс разработки тяжеловесного программного обеспечения под микроконтроллеры более удобным (нет)
2019-07-08 в 13:24, admin, рубрики: C, c++, CLion, cmake, debug, flash, gcc, ld, ld script, linker, makefile, st-link v2, Компиляторы, компоновщик, микроконтроллеры, микроконтроллеры stm, отладка, программирование микроконтроллеров, системы сборкиСейчас уже никого не удивить микроконтроллерами с энергонезависимой (чаще всего Flash) памятью объемом 512 килобайт и более. Их стоимость постепенно снижается, а доступность напротив, растет. Наличие такого объема энергонезависимой памяти дает возможность писать «тяжелые» по объему занимаемой памяти приложения, облегчая при этом последующее сопровождение кода за счет использования готовых решений из различных стандартных библиотек. Однако это ведет к росту объема файла прошивки целевого устройства, который требуется каждый раз целиком заново загружать в энергонезависимую память микроконтроллера при малейшем изменении в коде.
Цель статьи — рассказать о методе построения проекта на C и/или C++, при котором, в случае изменения участка кода, отладка которого производится чаще всего, большая часть проекта не нуждалась в повторной перезаписи. А так же показать, почему данный метод не всегда является эффективным решением.
Читать полностью »
PVS-Studio идёт в облака – запуск анализа на Travis CI
2019-06-28 в 11:53, admin, рубрики: C, c programming, devops, pvs-studio, travis-ci, Блог компании PVS-StudioНа данный момент облачные CI-системы — очень востребованный сервис. В этой статье мы расскажем, как, с помощью уже существующих средств, доступных в PVS-Studio, можно интегрировать анализ исходного кода с облачной CI платформой, на примере сервиса Travis CI.
PVS-Studio in the Clouds — Running the Analysis on Travis CI
2019-06-28 в 11:40, admin, рубрики: C, c programming, devops, pvs-studio, travisci, Блог компании PVS-StudioAt the moment, cloud CI systems are a highly-demanded service. In this article, we'll tell you how to integrate analysis of source code into a CI cloud platform with the tools that are already available in PVS-Studio. As an example we'll use the Travis CI service.
Как быстро посмотреть интересные предупреждения, которые выдает анализатор PVS-Studio для C и C++ кода?
2019-06-24 в 7:08, admin, рубрики: C, c++, codereview, pvs-studio, SAST, static code analysis, static code analyzer, Блог компании PVS-Studio, информационная безопасность, обзор кода, Си, статический анализ кода
Время от времени программисты, которые начинают знакомиться с анализатором кода PVS-Studio, спрашивают: «Есть ли список предупреждений, которые точно указывают на ошибки?» Такого списка нет по той причине, что неинтересные (ложные) предупреждения в одном проекте, в другом оказываются очень важными и полезными. Однако начать знакомство с анализатором с самых интересных предупреждений вполне можно. Давайте рассмотрим эту тему подробнее.
Читать полностью »
How to quickly check out interesting warnings given by the PVS-Studio analyzer for C and C++ code?
2019-06-24 в 7:01, admin, рубрики: C, c++, codereview, pvs-studio, SAST, static code analysis, static code analyzer, Блог компании PVS-Studio
Once in a while, programmers who start getting acquainted with the PVS-Studio code analyzer ask me: «Is there a list of warnings that accurately indicate errors?» There is no such list because uninteresting (false) warnings in one project are very important and useful in another one. However, one can definitely start digging into the analyzer from the most exciting warnings. Let's take a closer look at this topic.
Читать полностью »
Пишем никому не нужный эмулятор
2019-06-22 в 6:22, admin, рубрики: C, Программирование, Процессоры, эмуляторДоброго времени суток.
Довольно давно имелось желание написать эмулятор какого-нибудь процессора.
А что может быть лучше, чем изобрести велосипед?
Имя велосипеду — V16, от склеивания слова Virtual и, собственно, разрядности.