Если вы занимаетесь разработкой ПО в сфере видеоигровой индустрии и задаётесь вопросом о том, что ещё можно сделать, чтобы повысить качество продукта упростить процесс разработки, и при этом не используете статический анализ — самое время начать. Сомневаетесь? Что ж, я попробую вас в этом убедить. Если же вам просто интересно посмотреть на ошибки, которые допускают разработчики из сферы видеоигровой индустрии, то, опять же, вы попали по адресу — специально для вас отобраны наиболее интересные.
Читать полностью »
Рубрика «C» - 46
Статический анализ в видеоигровой индустрии: топ-10 программных ошибок
2018-05-03 в 8:27, admin, рубрики: .net, C, C#, c++, CryEngine, DOOM, epic games, open source, pvs-studio, quake, static analysis, unity, Unreal Engine, x-ray engine, Xenko, Блог компании PVS-Studio, Программирование, разработка игрИногда ответ не «42»
2018-04-20 в 8:47, admin, рубрики: 0x17 оттенков си, C, c++, Блог компании Перспективный мониторинг, код делает больно иначе, не надо так, ненормальное программированиеДоброй вам пятницы, читатели. У меня с друзьями есть такая традиция — мы собираемся и вместе программируем. Раньше у нас такая работа была, а сейчас уже просто традиция — кодобредогенерация. Мы выбрали несложную задачку и нарисовали решений кто во что горазд. Код будет ближе к концу статьи, но не спешите листать вниз, надо же сначала объяснить, что это за код и как мы пришли к нему.
Сама задача — получить число 0x17 самым внезапным образом.
Внимание! Данный пост оскорбляет чувство прекрасного и практики программирования на C. Читайте, воспринимайте и комментируйте на свой страх и риск.
Мигаем светодиодом из модуля ядра Linux
2018-04-13 в 19:21, admin, рубрики: C, diy или сделай сам, gpio, linux, linux kernel, Raspberry PiВсем привет. В этой статье хочу поделиться опытом создания простого модуля ядра Linux. Статья будет полезна тем, кто хотел бы понять как писать модули ядра, но не знает с чего начать.
Мне давно хотелось разобраться в этой теме, но до недавнего времени не знал как к ней подойти. Хотелось, чтобы модуль был достаточно простым, но сложнее чем сообщение «Hello world!» выведенное в log файле. В итоге я решил попробовать помигать светодиодом. Дополнительная цель была вывести параметр отвечающий за частоту мигания в sysfs.
Читать полностью »
Особенности настройки и запуска PVS-Studio в Docker на примере кода Azure Service Fabric
2018-04-13 в 7:46, admin, рубрики: C, c++, Microsoft Azure, open source, pvs-studio, Service Fabric, static code analysis, Блог компании PVS-Studio, Компиляторы, статический анализ кода
Технологии контейнеризации активно используются для сборки и тестирования программного обеспечения. С появлением PVS-Studio для Linux, пользователям стала доступна возможность добавить статический анализ к другим методам тестирования своего проекта на этой платформе, в том числе в Docker. В статье будут описаны особенности работы с анализатором PVS-Studio в Docker, которые повысят качество анализа и удобство использования. А также будут приведены ошибки, найденные в проекте Azure Service Fabric.
Читать полностью »
Почему "=" означает присваивание?
2018-04-11 в 15:14, admin, рубрики: C, история создания, ПрограммированиеДавайте посмотрим на следующий код:
a = 1
a = a + 1
print(a)
В среде ФП часто критикуют данный момент императивного программирования: «Как так может быть, что a = a + 1? Это всё равно что сказать „1 = 2“. В мутабельном присваивании нет смысла».
Здесь мы наблюдаем несовпадение обозначения: «равно» должно обозначать «равенство», когда на практике оно обозначает «присвоить». Я согласен с этой критикой и считаю, что это неудачная нотация. Но также мне известно, что в некоторых языках вместо a = a + 1
пишут выражение a := a + 1
. Почему же эта запись не является нормой?
На этот вопрос обычно отвечают «потому что так сделано в C». Но это похоже на перекладывание ответственности на кого-то другого: кто из нас знает, почему так сделано в C? Давайте разбираться вместе!
Большая четвёрка
В начале 1960-ых существовало четыре доминирующих высокоуровневых языка: COBOL, FORTRAN II, ALGOL-60, и LISP. В то время, программисты разбивали присваивание на два класса: инициализацию (initialization) — когда вы впервые определяете переменную, и переприсвоение (reassignment) — когда вы вы изменяется значение существующей переменной.
Читать полностью »
Релиз CLion 2018.1: новые возможности из С++17, поддержка WSL, CMake Install, плагин для Rust и многое другое
2018-03-30 в 10:03, admin, рубрики: C, c++, c++17, CLion, cmake, IDE, jetbrains, Rust, WSL, Блог компании JetBrains, ПрограммированиеПривет!
Вот и подоспел первый релиз CLion в этом году — 2018.1! В этом посте мы расскажем, что мы успели реализовать за эти месяцы и какие планы у нас на следующий релиз.
Cначала очень коротко о главном. В этот релиз вошли:
- Поддержка языка C++
- Поддержка возможности C++17: structured binding
- Поддержка возможности C++17: операторы if и switch с инициализаторами
- Множество баг-фиксов и улучшений
- Возможность использовать файлы конфигурации Clang-Tidy в CLion, а также настраивать опции для проверок из Clang-Tidy в интерфейсе CLion
- Улучшения для пользователей Windows
- Компилятор Microsoft Visual C++ включен по умолчанию
- Поддержка подсистемы WSL
- CMake и не только
- Вызов из IDE CMake Install
- Шаблоны для создания файлов CMakeLists.txt
- Возможность открыть файл или папку без проектной модели CMake
- Экспериментальная поддержка hex view в отладчике
- Улучшения редактора:
- “Хлебные крошки” (breadcrumbs) для C/C++
- Действие Unwrap
- Сворачивание управляющих конструкций
- Поддержка новых языков в CLion: Objective-C / Objective-C++, Rust, Fortran
Можно прямо сейчас скачать бесплатную 30-дневную версию с нашего сайта и попробовать новые возможности. Для этого мы даже подготовили специальный небольшой демо-проект. А ниже поговорим об улучшениях более подробно.
Читать полностью »
Обнаруживаем целочисленные константные выражения в макросе [вместе с Линусом]
2018-03-29 в 11:31, admin, рубрики: C, linus torvalds, lkml, Программирование, системное программированиеВашему вниманию предлагается перевод недавнего письма по поводу неоднозначной идеи из рассылки Linux Kernel Mailing List, вызвавшей традиционную реакцию Линуса Торвальдса. Необходимые для понимания пояснения предоставлены в конце поста.
Письмо
Отправитель: Мартин Уэкер
Дата: Tue, 20 Mar 2018 22:13:35 +0000
Тема: Обнаружение целочисленных константных выражений в макросе
Здравствуй Линус,
У меня появилась идея:
Тест для целочисленных константных выражений, который возвращает само целочисленное константное выражение (integer constant expression, ICE), которое должно подходить для передачи в __builtin_choose_expr
, и выглядит следующим образом:
#define ICE_P(x) (sizeof(int) == sizeof(*(1 ? ((void*)((x) * 0l)) : (int*)1)))
Кстати, в этом выражении само x
не вычисляется в gcc, хотя это и не гарантируется стандартом (я не проверял этот факт в старых версиях gcc.)
Ответ Линуса Торвальдса
Отправитель: Линус Торвальдс <>
Дата: Tue, 20 Mar 2018 16:08:30 -0700
Тема: Re: Обнаружение целочисленных константных выражений в макросе
On Tue, Mar 20, 2018 at 3:13 PM, Мартин Уэкер
<Martin.Uecker@med.uni-goettingen.de> написал:
У меня появилась идея:
Нет, это не «идея».
Это либо работа гения, либо напрочь больного на голову.
До конца пока не уверен, поэтому не могу сказать с точностью.
Читать полностью »
Релиз PVS-Studio для macOS: 64 weaknesses в Apple XNU Kernel
2018-03-28 в 11:16, admin, рубрики: apple, C, c/c++, c++, iOS, MacOS, OS X, pvs-studio, tvos, watchos, xnu, XNU Kernel, Блог компании PVS-Studio, информационная безопасность, операционные системы, Разработка под OS X, релиз, Си, си/си++, системное программирование, статический анализ кодаНовая версия PVS-Studio 6.23 работает под управлением macOS и позволяет проверять проекты, написанные на языке C и C++. К этому событию наша команда решила приурочить проверку XNU Kernel.
PVS-Studio для macOS
С выходом версии анализатора для macOS, PVS-Studio можно смело называть кроссплатформенным статическим анализатором кода для C и C++.
Читать полностью »
Toп 10 ошибок в C++ проектах за 2017 год
2018-03-26 в 8:28, admin, рубрики: C, c++, clickhouse, CryEngine, CVE, freebsd, illumos-gate, mysql, notepad++, open source, pvs-studio, StarEngine, static code analysis, tizen, Unreal Engine, Блог компании PVS-Studio, ПрограммированиеЗа окном уже почти как 3 месяца стоит 2018 год, а это значит, что пришло время (пусть и немного запоздало) составить топ 10 ошибок, найденных анализатором PVS-Studio в C++ проектах за прошедший год. Итак, начнём!
Читать полностью »
Разработка игр под NES на C. Глава 24. Приложение 2 — работа с банками памяти
2018-03-25 в 20:44, admin, рубрики: C, cc65, Nes, Nintendo Entertainment System, ненормальное программирование, разработка, разработка игрЗавершающая часть цикла. В этой главе рассмотрим работу с маппером MMC3 на примерах
<<< предыдущая
Источник
Раньше мы не использовали переключение банков памяти, но теперь настало время освоить маппер MMC3. Без маппера можно использовать 32 килобайта PRG ROM для кода и 8 килобайт CHR ROM для графики. Маппер позволяет обойти этот барьер.