Разработка больших сложных проектов невозможна без использования методологий программирования и инструментальных средств, помогающих контролировать качество кода. В первую очередь, это грамотный стандарт кодирования, обзоры кода, юнит-тесты, статические и динамические анализаторы кода. Всё это помогает выявлять дефекты в коде на самых ранних этапах разработки. В этой статье демонстрируются возможности статического анализатора PVS-Studio по выявлению ошибок и потенциальных уязвимостей в коде операционной системы Android. Надеемся, что статья привлечёт внимание читателей к методологии статического анализа кода и они захотят внедрить её в процесс разработки собственных проектов.
Читать полностью »
Рубрика «c++» - 86
Проверили с помощью PVS-Studio исходные коды Android, или никто не идеален
2018-08-01 в 9:36, admin, рубрики: android, android development, C, c/c++, c++, Common Weakness Enumeration, cwe, devops, DevSecOps, open source, pvs-studio, SAST, static code analysis, Блог компании PVS-Studio, информационная безопасность, операционные системы, ошибки в коде, Разработка под android, Си, статический анализ кода, статический анализатор кодаВсе, что вы давно просили, в одном релизе — CLion 2018.2
2018-07-31 в 10:30, admin, рубрики: C, c++, clang, CLion, cmake, Compilation Database, gradle, IDE, jetbrains, sanitizers, Блог компании JetBrains, ПрограммированиеПривет!
Не знаем, насколько жарко у вас за окном, но у нас в JetBrains эти недели точно жара — релизная. Одну за другой мы опубликовали обновленные версии 2018.2 почти всех наших инструментов на базе платформы IntelliJ: WebStorm, IntelliJ IDEA, PyCharm, DataGrip, GoLand, PhpStorm, RubyMine и CLion.
Для команды CLion этот релиз особенный, так как включает в себя результаты нашей работы по трем очень важных направлениям:
- Clangd как основа для нового экспериментального движка для разбора кода на C++.
- Улучшения производительности IDE за счет новых архитектурных решений.
- Новые проектные модели, поддерживаемые в CLion.
А также поддержка Google Sanitizers, возможность пересборки отдельного файла и многое другое!
Ниже мы поговорим про улучшения и нововведения подробно, а самые нетерпеливые могут прямо сейчас скачать бесплатную 30-дневную версию с нашего сайта и попробовать новые возможности на своем проекте или специально подготовленном демо-проекте с GitHub.
Читать полностью »
Доклады с весенней конференции С++ Russia 2018
2018-07-30 в 12:11, admin, рубрики: c++, Блог компании PVS-Studio, качество кода, конференции, Программирование, статический анализ кода
С 19 по 21 апреля в Санкт-Петербурге прошла конференция С++ Russia 2018. Из года в год организация и проведение становится на уровень выше, что может не радовать. Спасибо бессменному организатор С++ Russia Сергею Платонову за его вклад в развитие этого направления.
Читать полностью »
Когда не стоит пользоваться алгоритмами STL. Пример с множествами
2018-07-27 в 16:12, admin, рубрики: c++, Алгоритмы, Блог компании Издательский дом «Питер», высокая, книги, Профессиональная литература, С++Товарищи, добрый вечер!
Вы так здорово разобрали у нас первый тираж книги "С++17 STL. Стандартная библиотека шаблонов" и продолжаете разбирать второй, что мы наконец-то решили изложить здесь и альтернативную точку зрения. Автор сегодняшней статьи — Иван Чукич (Ivan Čukić), перу которого также принадлежит книга "Functional Programming in C++", которая готовится к выходу в издательстве «Manning». Предлагаем оценить его скептические мысли, код и выкладки
Читать полностью »
Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.3
2018-07-27 в 6:07, admin, рубрики: boost, borland c++ builder, c++, c++03, c++11, c++98, gcc, loki, open source, QNX, sfinae, Visual Studio, велосипедостроение, грязные хаки, Компиляторы, кроссплатформенная разработка, макросы, ненормальное программирование, Разработка под Linux, Совершенный код, стандартная библиотека, шаблонное программирование
Краткое содержание предыдущих частей
Из-за ограничений на возможность использовать компиляторы C++ 11 и от безальтернативности boost'у возникло желание написать свою реализацию стандартной библиотеки C++ 11 поверх поставляемой с компилятором библиотеки C++ 98 / C++ 03.
Были реализованы static_assert, noexcept, countof, а так же, после рассмотрения всех нестандартных дефайнов и особенностей компиляторов, появилась информация о функциональности, которая поддерживается текущим компилятором. Включена своя реализация nullptr, которая подбирается на этапе компиляции.
Настало время type_traits и всей этой «особой шаблонной магии». В предыдущих частях данной главы мы рассмотрели мою реализацию базовых шаблонов стандартной библиотеки и в данной части речь пойдет про комбинацию техники SFINAE с шаблонами и немного о кодогенерации.
Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:
Больше шаблонов C++ под катом.
Читать полностью »
Ускоряем умножение матриц float 4×4 с помощью SIMD
2018-07-25 в 17:17, admin, рубрики: c++, simd, vectormathУже немало лет прошло, как я познакомился с инструкциями MMX, SSE, а позже и AVX на процессорах Intel. В своё время они казались какой-то магией на фоне x86 ассемблера, который уже давно стал чем-то обыденным. Они меня настолько зацепили, что пару лет назад у меня появилась идея написать свой собственный софт рендерер для одной известной игры. Сподвигло меня на это то, какую производительность обещали эти инструкции. В какой-то момент я даже думал об этом написать. Но писать текст оказалось куда сложнее кода.
В то время я хотел избежать проблем с поддержкой на разных процессорах. Хотелось иметь возможность проверить мой рендерер на максимально доступном количестве. У меня до сих пор остались знакомые со старыми AMD процессорами, и их потолок был SSE3. Поэтому на тот момент я решил ограничиться максимум SSE3. Так появилась векторная математическая библиотека, чуть менее, чем полностью реализованная на SSE, с редким включением до SSE3. Однако в какой-то момент мне стало интересно, какую максимальную производительность я смогу выжать из процессора для ряда критичных операций векторной математики. Одной из таких операций является умножение матриц float 4 на 4.
PVS-Studio как SAST решение
2018-07-25 в 7:48, admin, рубрики: C, c/c++, C#, c++, CVE, cwe, devops, java, pvs-studio, SAST, Блог компании PVS-Studio, информационная безопасность, надежность программ, ошибки в коде, ошибки в программе, Программирование, Си, статический анализ кода, управление разработкой, уязвимости
До недавнего времени в своих статьях мы позиционировали PVS-Studio как инструмент для выявления ошибок в коде. При этом мы почти не рассматривали PVS-Studio в контексте безопасности. Попробуем немного исправить эту ситуацию и взглянем на инструмент с точки зрения тестирования защищённости приложений и DevSecOps практик.
Читать полностью »
Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.2
2018-07-23 в 15:36, admin, рубрики: boost, borland c++ builder, c++, c++03, c++11, c++98, gcc, loki, QNX, sfinae, Visual Studio, велосипедостроение, грязные хаки, Компиляторы, кроссплатформенная разработка, макросы, ненормальное программирование, Разработка под Linux, разработка под windows, Совершенный код, стандартная библиотека, шаблонное программирование
Краткое содержание предыдущих частей
Из-за ограничений на возможность использовать компиляторы C++ 11 и от безальтернативности boost'у возникло желание написать свою реализацию стандартной библиотеки C++ 11 поверх поставляемой с компилятором библиотеки C++ 98 / C++ 03.
Были реализованы static_assert, noexcept, countof, а так же, после рассмотрения всех нестандартных дефайнов и особенностей компиляторов, появилась информация о функциональности, которая поддерживается текущим компилятором. Включена своя реализация nullptr, которая подбирается на этапе компиляции.
Настало время type_traits и всей этой «особой шаблонной магии». В первой части мы рассмотрели мою реализацию самых простых шаблонов стандартной библиотеки, теперь же заберемся «поглубже» в шаблоны.
Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:
Продолжение погружения в мир «шаблонной магии» C++.
Читать полностью »
Brain Trainer Qt (Учимся считать в уме или проект выходного дня)
2018-07-22 в 12:40, admin, рубрики: c++, linux, qt, Разработка под LinuxНаткнулся на посты, где очень бурно обсуждалась тема эффективного счета в уме
Один, Два
Тема заинтересовала и я начал искать программы и сервисы для тренировки
В скором времени пришло осознание, что быстрее написать свое приложение, под свои хотелки и с кнопками где мне удобно, + перспектива переноса на любимый Windows Phone
Для тех кому интересно посмотреть/покритиковать — добро пожаловать под кат
Читать полностью »
Бот для Starcraft на Rust, C и на любом другом языке
2018-07-21 в 18:42, admin, рубрики: bindings, broodwar, c++, Rust, Starcraft, ненормальное программирование, разработка игр
StarCraft: Brood War. Как много это значит для меня. И для многих из вас. Настолько много, что я засомневался, давать ли ссылку на вики.
Как-то раз мне в личку постучался Halt и предложил выучить Rust. Как и любые нормальные люди, мы решили начать с hello world написания динамической библиотеки под Windows, которая могла бы загружаться в адресное пространство игры StarCraft и управлять юнитами.
В статье будет описан процесс поиска решений, использования технологий, приемов, которые позволят вам почерпнуть новое в языке Rust и его экосистеме или вдохновиться для реализации бота на своем любимом языке, будь то C, C++, ruby, python, e.t.c.