Как стать автором
Обновить

Cppcheck Premium 21.10

Время на прочтение1 мин
Количество просмотров2.7K

Вышел инструмент под названием Cppcheck Premium. Он включает в себя открытый инструмент Cppcheck, а также премиальный компонент.

Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии6

15000 ошибок в открытых проектах

Время на прочтение2 мин
Количество просмотров2.8K

PVS-Studio: 15000 ошибок в открытых проектах
Количество багов в нашей коллекции перевалило за отметку 15000. Именно такое количество ошибок обнаружила команда PVS-Studio в различных открытых проектах. Особенно интересно, что это всего лишь побочный результат от написания статей.

Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии7

AMD запустила проект openSIL для разработки прошивок

Время на прочтение2 мин
Количество просмотров2.6K

AMD представила открытый проект openSIL (Open-Source Silicon Initialization Library), в рамках которого развивается набор открытых библиотек с компонентами для упрощения создания прошивок. 

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии1

Создатель SourceHut представил язык программирования Hare, умещающийся на трехдюймовой дискете

Время на прочтение2 мин
Количество просмотров6.9K

Разработчик Дрю ДеВолт (Drew DeVault) представил язык программирования Hare. Отмечается, что по синтаксису язык схож с C, но при этом проще. Также Hare полностью доверяет программисту и выполняет то, что указано в коде, без дополнительных манипуляций.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии20

Единорог вновь готов к общению с Си++ программистами

Время на прочтение2 мин
Количество просмотров29K
Единорог вернулся
Приглашаю Си/Си++ программистов присоединиться к блогу PVS-Studio. Вы узнаете о разных интересных вещах из мира Си/Си++ и о том, кто, где и как программирует. Расскажу немного о том, что не было опубликовано на Хабре за время нашего отсутствия здесь.
Читать дальше →
Всего голосов 97: ↑79 и ↓18+61
Комментарии47

Развенчание мифов об x32 ABI

Время на прочтение7 мин
Количество просмотров18K
Наверное, некоторые из вас слышали о халяве под названием x32 ABI.

Вкратце о x32 ABI


Если вкратце, то это возможность использовать все преимущества 64-битной архитектуры, но при этом сохраняя 32-битные указатели. Потенциально при этом приложение будет расходовать меньше памяти, хоть и не сможет адресовать более 4 ГиБ памяти.

Пример. В своём коде вы определяете массив целых чисел и заполняете его значениями. Сколько при этом вы расходуете памяти? Если очень грубо изобразить, то получится примерно так:
32 бита: Указатель + Счётчик числа элементов + N целых чисел = N+2 32-битных числа
64 бита: Указатель + Счётчик числа элементов + N целых чисел = N+2 64-битных числа = 2N+4 32-битных числа
Вот инженеры и задумались: а что если попробовать использовать 32-битные указатели на 64-битной архитектуре? Архитектура X86-64 имеет систему команд CISC и позволяет это сделать. В этом случае наш массив выше будет расходовать памяти 2N+3 вместо 2N+4. Экономия конечно же незначительная, но дело в том, что в современном коде количество разного рода указателей в структурах нередко доходит до десятка, и использование коротких указателей потенциально позволит экономить до 50% памяти (в идеальном случае).

Для тех кому надо расчёты точнее:
* Насколько большие массивы (и значения) в PHP? (Подсказка: ОЧЕНЬ БОЛЬШИЕ)
* Сколько памяти потребляют объекты в PHP и стоит ли использовать 64-битную версию?

Но как оказалось халявы не будет.
Далее перевод статьи
Всего голосов 45: ↑35 и ↓10+25
Комментарии20

Google выпустила парсер HTML5 на чистом Си

Время на прочтение1 мин
Количество просмотров67K
Удачная возможность для веб-разработчиков выучить язык программирования Си — HTML5-парсер Gumbo, реализованный в виде небольшой библиотеки C99 без внешних зависимостей. Парсер создан как строительный блок для создания других инструментов и библиотек, таких как валидаторы, языки шаблонов, инструменты рефакторинга и анализа кода.

Особенности:
  • Полная совместимость со спецификациями HTML5.
  • Устойчивость к некачественным входным данным.
  • Простые API, которые могут быть легко обработаны программами на других ЯП.
  • Поддержка исходных позиций и указателей в оригинальном коде, при навигации по дереву зависимостей.
  • Проходит все тесты html5lib-0.95.
  • Проверен на более чем 2,5 млрд страниц в индексе Google.
Читать дальше →
Всего голосов 139: ↑134 и ↓5+129
Комментарии38

Проверка open-source игры Multi Theft Auto

Время на прочтение9 мин
Количество просмотров42K
MTA & PVS-Studio
Мы давно не проверяли игры с помощью PVS-Studio. Решили это исправить и выбрали проект MTA. Multi Theft Auto (MTA) является модификацией для PC версий игры Grand Theft Auto: San Andreas от Rockstar North. MTA позволяет игрокам со всего мира играть друг против друга в режиме онлайн. Как написано в Wikipedia, особенностью игры является «оптимизированный код с наименьшим количеством сбоев». Что же, давайте посмотрим, что скажет анализатор кода.
Читать дальше →
Всего голосов 81: ↑69 и ↓12+57
Комментарии45

OpenMCAPI: одновременный запуск Linux и RTOS на многоядерных процессорах

Время на прочтение10 мин
Количество просмотров15K


В повседневной практике разработчика встраиваемых систем приходится сталкиваться с необходимостью запуска двух и более разноплановых ОС на n-ядерных системах на кристалле. Это, как правило, Linux и специализированная RTOS. На плечи Linux ложится работа с тяжеловесными стеками протоколов, а RTOS же занимается задачами реального времени.
 
Одна из основных задач, которая встает при такой организации системы — обеспечение механизма взаимодействия, то есть межъядерный обмен данными. Если вам интересно узнать один из вариантов решения на базе открытой библиотеки OpenMCAPI, пролистать пару десятков строк программного кода и увидеть реальные цифры пропускной способности при использовании этой библиотеки, добро пожаловать под кат.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии15

Схема аргументов javascript функции или C-style прототипы без тяжёловесных фреймворков

Время на прочтение3 мин
Количество просмотров7.3K
Многие сталкивались с необходимостью использовать необязательные аргументы функции. Если такой аргумент один, да ещё и последний, то особых проблем не возникает.

function set(name, value){
    if(value == undefined){
        value = name;
    }
    ...
}

Читать дальше →
Всего голосов 12: ↑7 и ↓5+2
Комментарии18

Пересечение PVS-Studio и Cppcheck

Время на прочтение2 мин
Количество просмотров4K
Неоднократно нам задавали вопрос, как сильно пересекаются диагностики нашего анализатора PVS-Studio и анализатора Cppcheck. Я решил написать маленькую статью на эту тему, чтобы быстро отвечать на этот вопрос. Если совсем коротко — то пересекаются слабо. Только 6% от общего количества ошибок находятся обоими анализаторами. В статье будет рассказано как было получено это число.
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии4

Давай поиграем в игру

Время на прочтение2 мин
Количество просмотров31K
PVS-Studio. Давай поиграем в игру.
Авторы анализатора PVS-Studio предлагают вам проверить свою внимательность.

Анализаторы кода работают без устали и умеют находить множество ошибок, которые сложно заметить. Мы отобрали некоторые фрагменты кода, в которых мы выявили ошибки с помощью PVS-Studio. Все фрагменты взяты из известных Open-Source проектов.

Предлагаем вам посоревноваться с анализаторами в прозорливости и попробовать самостоятельно найти ошибки. Вам будет предложено 15 случайно выбранных заданий. За верный ответ насчитывается одно очко, если он дан в течение 1 минуты. Фрагменты кода короткие, и 1 минута это честное ограничение.
Читать дальше →
Всего голосов 90: ↑83 и ↓7+76
Комментарии115

Бесплатный CppCat для студентов

Время на прочтение3 мин
Количество просмотров22K
Бесплатный CppCat для студентов
CppCat – это статический анализатор кода, интегрирующийся в среду Visual Studio 2010-2013. Анализатор предназначен для регулярного использования и позволяет выявить множество ошибок и опечаток в программах на языке Си и Си++. С целью его популяризации мы решили выдавать бесплатные лицензии всем студентам, которые к нам обратятся. Достаточно прислать фотографию студенческого билета или зачётной книжки.
Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии32

Заметка про проверку PHP

Время на прочтение6 мин
Количество просмотров29K


PHP — скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.

В случае с компиляторами и интерпретаторами к исходному коду и тестированию, как правило, предъявляются повышенные требования качества и надёжности. Тем не менее, в исходном коде интерпретатора PHP нашлись подозрительные места.

В данной статье будут рассмотрены результаты проверки интерпретатора PHP, полученные с помощью PVS-Studio 5.18.

Читать дальше →
Всего голосов 77: ↑72 и ↓5+67
Комментарии35

Asterisk: PVS-Studio заинтересовался телефонией

Время на прочтение6 мин
Количество просмотров11K


Asterisk — свободное решение компьютерной телефонии с открытым исходным кодом от компании Digium. Приложение работает на таких операционных системах, как Linux, FreeBSD, OpenBSD, Solaris. Asterisk в комплексе с необходимым оборудованием обладает всеми возможностями классической АТС, поддерживает множество VoIP-протоколов и предоставляет богатые функции управления звонками.

В данной статье будут рассмотрены результаты проверки Asterisk, полученные с помощью PVS-Studio 5.18.

Проект, по всей видимости, проверяется анализатором Coverity, о чём свидетельствуют комментарии вида:

/* Ignore check_return warning from Coverity for ast_exists_extension below */

Тем не менее, я заметил некоторые досадные опечатки. Попробуем разобраться в них и в других подозрительных местах. Исходный код взят из SVN репозитория проекта.

Читать дальше →
Всего голосов 37: ↑23 и ↓14+9
Комментарии13

Проект Miranda NG получает приз «дикие указатели» (часть вторая)

Время на прочтение13 мин
Количество просмотров23K
Miranda NG
Продолжим рассматривать ошибки, которые удалось обнаружить в проекте Miranda NG с помощью статического анализатора кода PVS-Studio. В прошлый раз мы говорили об указателях и работе с памятью. Теперь поговорим об ошибках общего плана, которые, в основном, связаны с неаккуратностью и опечатками.
Читать дальше →
Всего голосов 70: ↑63 и ↓7+56
Комментарии102

Подготовка к сертификационному экзамену Microsoft 70-483 «Programming in C#»

Время на прочтение13 мин
Количество просмотров103K

Во время подготовки к экзамену номер 70-483 нашел множество разрозненных сайтов с различными ссылками на мануалы, которые мне немного помогли. Но, что помогло мне больше, так это то, что я составил для себя памятку на нескольких страницах, выдержками из которой и хочу поделиться.
Целью не является подробное описание C#, целью является освежить в памяти и заострить внимание на некоторых необходимых темах. Если какие-то темы вам незнакомы, то это значит, что у вас есть пробелы, которые необходимо устранить.
Раскрывать вопросы тестирования я не могу (да и не помню я уже их), но, если многие из перечисленных ниже нюансов, трюков и тонкостей, помогут вам, то вы на меня не обижайтесь (написано с иронией).
Читать дальше →
Всего голосов 50: ↑39 и ↓11+28
Комментарии17

Зло живёт в функциях сравнения

Время на прочтение27 мин
Количество просмотров31K
Зло в функциях сравнения

Возможно, читатели помнят мою статью под названием «Эффект последней строки». В ней идёт речь о замеченной мной закономерности: ошибка, чаще всего, допускается в последней строке однотипных блоков текста. Теперь я хочу рассказать о новом интересном наблюдении. Оказывается, программисты тяготеют к тому, чтобы допустить ошибку в функциях сравнения двух объектов. Такое утверждение выглядит неправдоподобным, однако, я покажу огромное количество примеров ошибок, которые шокируют читателя. Читайте новое исследование, будет интересно и страшно.
Читать дальше →
Всего голосов 58: ↑52 и ↓6+46
Комментарии19

27000 ошибок в операционной системе Tizen

Время на прочтение67 мин
Количество просмотров33K
PVS-Studio and Tizen

Эта статья продемонстрирует, что при разработке крупных проектов статический анализ кода является не просто полезным, а совершенно необходимым элементом процесса разработки. Я начинаю цикл статей, посвященных возможности использования статического анализатора кода PVS-Studio для повышения качества и надежности операционной системы Tizen. Для начала я проверил небольшую часть операционной системы (3.3%) и выписал около 900 предупреждений, указывающих на настоящие ошибки. Если экстраполировать результаты, то получается, что наша команда способна выявить и устранить в Tizen около 27000 ошибок. По итогам проведённого исследования я подготовил презентацию, которая предназначалась для демонстрации представителям Samsung и была посвящена возможному сотрудничеству. Встреча перенесена на неопределённый срок, поэтому я решил не тратить время и трансформировать материал презентации в статью. Запасайтесь вкусняшками и напитками, нас ждёт длинный программистский триллер.
Читать дальше →
Всего голосов 85: ↑70 и ↓15+55
Комментарии108

Поговорим о микрооптимизациях на примере кода Tizen

Время на прочтение24 мин
Количество просмотров8.8K

Микрооптимизации в коде

Как правило, при обсуждении диагностических возможностей PVS-Studio за кадром остаются рекомендации, выдаваемые анализатором по поводу микрооптимизаций Си и Cи++ кода. Конечно, микрооптимизации не так важны, как диагностики, выявляющие ошибки, но про них тоже интересно поговорить.
Читать дальше →
Всего голосов 31: ↑26 и ↓5+21
Комментарии15
1
23 ...