В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub или Bitbucket. Им предоставляется возможность бесплатного использования статического анализатора PVS-Studio для развития открытых проектов.
Читать полностью »
Рубрика «c/c++» - 2
Бесплатный PVS-Studio для тех, кто развивает открытые проекты
2018-12-22 в 16:21, admin, рубрики: bitbucket, c/c++, C#, c++, cwe, devops, DevSecOps, free, github, java, MISRA, open source, pvs-studio, баги, бесплатная лицензия, Блог компании PVS-Studio, информационная безопасность, открытые проекты, ошибки в коде, ошибки в программе, Программирование, Си, сишарп, статический анализ кодаТехнологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей
2018-11-21 в 8:28, admin, рубрики: C, c/c++, C#, c++, Data-Flow Analysis, java, Method Annotations, pattern-based analysis, pvs-studio, Symbolic Execution, Анализ потока данных, Аннотирование методов, Блог компании PVS-Studio, информационная безопасность, Компиляторы, Программирование, Си, Символьное выполнение, Сопоставление с шаблоном, статический анализ, статический анализ кода
Краткое описание технологий, используемых в инструменте PVS-Studio, которые позволяют эффективно обнаруживать большое количество паттернов ошибок и потенциальных уязвимостей. Статья описывает реализацию анализатора для С и C++ кода, однако приведённая информация справедлива и для модулей, отвечающих за анализ C# и Java кода.
Читать полностью »
Почему перенос при целочисленном переполнении — не очень хорошая идея
2018-10-25 в 8:26, admin, рубрики: C, c/c++, c++, undefined behavior, wrapping, Блог компании PVS-Studio, всё сложно, неопределённое поведение, переполнение int, СиЭта статья посвящена неопределённому поведению и оптимизациям компилятора, особенно в контексте знакового целочисленного переполнения.
Примечание от переводчика: в русском языке нет четкого соответствия в употребляемом контексте слова «wrap»/«wrapping». Существует математический термин "перенос", который близок к описываемому явлению, а термин "флаг переноса" (carry flag) — механизм выставления флага в процессорах при целочисленном переполнении. Другим вариантом перевода может быть фраза «вращение/переворот/оборот вокруг нуля». Она лучше отображает смысл «wrap» по сравнению с «перенос», т.к. показывает переход чисел при переполнении из положительного в отрицательный диапазон. Однако, как оказалось, эти слова смотрятся в тексте непривычно для тестовых читателей. Для упрощения в дальнейшем примем в качестве перевода термина «wrap» слово «перенос».
Компиляторы языка C (и C++) в своей работе всё чаще руководствуются понятием неопределённого поведения — представлением о том, что поведение программы при некоторых операциях не регламентировано стандартом и что, генерируя объектный код, компилятор вправе исходить из предположения, что программа таких операций не производит. Немало программистов возражало против такого подхода, поскольку сгенерированный код в этом случае может вести себя не так, как задумывал автор программы. Эта проблема становится всё острее, так как компиляторы применяют всё более хитроумные методы оптимизации, которые наверняка будут опираться на понятие неопределённого поведения.
Читать полностью »
Бинарные модули для Python
2018-08-29 в 9:52, admin, рубрики: c/c++, ctypes, cython, python, Rust, SWIG, Блог компании Конференции Олега Бунина (Онтико), высокая производительностьPython — классный. Мы говорим «pip install» и скорее всего нужная библиотека поставится. Но иногда ответ будет: «compilation failed», потому что есть бинарные модули. Они практически у всех современных языков страдают какой-нибудь болью, потому что архитектур много, что-то нужно собирать под конкретную машину, что-то нужно линковать с другими библиотеками. В целом интересный, но малоизученные вопрос: а как же их делать и какие там проблемы? На этот вопрос постарался ответить Дмитрий Жильцов (zaabjuda) на MoscowPython Conf в прошлом году.
Под катом текстовая версия доклада Дмитрия. Ненадолго остановимся на том, когда бинарные модули нужны, а когда от них лучше отказаться. Обсудим правила, которые стоит соблюдать при их написании. Рассмотрим пять возможных вариантов реализации:
- Native C/C++ Extension
- SWIG
- Cython
- Ctypes
- Rust
О спикере: Дмитрий Жильцов занимается разработкой больше 10 лет. Работает в компании ЦИАН системным архитектором, то есть несет ответственность за технические решения и контроль сроков. В своей жизни успел попробовать и ассемблер, Haskell, C, а последние 5 лет активно программирует на Python.Читать полностью »
Проверили с помощью 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, Си, статический анализ кода, статический анализатор кода
Разработка больших сложных проектов невозможна без использования методологий программирования и инструментальных средств, помогающих контролировать качество кода. В первую очередь, это грамотный стандарт кодирования, обзоры кода, юнит-тесты, статические и динамические анализаторы кода. Всё это помогает выявлять дефекты в коде на самых ранних этапах разработки. В этой статье демонстрируются возможности статического анализатора PVS-Studio по выявлению ошибок и потенциальных уязвимостей в коде операционной системы Android. Надеемся, что статья привлечёт внимание читателей к методологии статического анализа кода и они захотят внедрить её в процесс разработки собственных проектов.
Читать полностью »
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 практик.
Читать полностью »
CUDA и удалённый GPU
2018-07-04 в 8:03, admin, рубрики: c/c++, CUDA, gpgpu, linux, Nvidia, высокая производительность, параллельное программированиеCUDA всем хороша, пока под рукой есть видеокарта от Nvidia. Но что делать, когда на любимом ноутбуке нет Nvidia видеокарты? Или нужно вести разработку в виртуальной машине?
Я постараюсь рассмотреть в этой статье такое решение, как фреймворк rCUDA (Remote CUDA), который поможет, когда Nvidia видеокарта есть, но установлена не в той машине, на которой предполагается запуск CUDA приложений. Тем, кому это интересно, добро пожаловать под кат.
rCUDA (Remote CUDA) — фреймворк, реализующий CUDA API, позволяющий использовать удалённую видеокарту. Находится в работоспособной бета-версии, доступен только под Linux. Основная цель rCUDA — полная совместимость с CUDA API, вам не нужно никак модифицировать свой код, достаточно задать специальные переменные среды.
Релиз 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++.
Читать полностью »
PVS-Studio — дополнительная страховка медицинского программного обеспечения
2018-03-20 в 11:59, admin, рубрики: 64-битные ошибки, C, c/c++, c++, code review, Therac-25, Блог компании PVS-Studio, встраиваемые системы, здоровье, информационная безопасность, качество кода, медицина, медицинские технологии, МРТ, надежность программ, обзор кода, ответственность, ошибки в коде, ошибки в программе, Си, си/си++, статический анализ кода, статический анализатор кода, Тестирование IT-систем, управление проектами, управление разработкойОшибки в программном обеспечении могут приводить не только к материальным потерям, но и повредить здоровью людей. Например, артисты на сцене театра могут получить травму, если вдруг одна из декораций начнёт опускаться на сцену не вовремя. Однако более очевидна взаимосвязь между ошибками в коде и вредом здоровью в медицинском программном обеспечении. Давайте поговорим на эту тему.
Читать полностью »