Новости и события » Hi-Tech » Статический анализатор PVS-Studio 6.22 адаптирован для ARM-компиляторов (реклама)

Статический анализатор PVS-Studio 6.22 адаптирован для ARM-компиляторов (реклама)

Статический анализатор PVS-Studio 6.22 адаптирован для ARM-компиляторов (реклама)

Как сообщает opennet.ru компания СиПроВер подготовила новую версию статического анализатора PVS-Studio 6.22, который доработан для обеспечения проверки кода для встраиваемых устройств на базе архитектуры ARM. В частности, в новой версии появилась поддержка ARM Compiler 5 и ARM Compiler 6 в составе сред разработки Keil uVision 5 и Keil DS-MDK, а также поддержка IAR C/C++ Compiler for ARM в составе среды IAR Embedded Workbench.

Для загрузки доступна демонстрационная версия PVS-Studio для Linux. Так как многие проекты для встраиваемых систем являются небольшими и для них не всегда окажется целесообразным приобретать лицензию, разработчики предоставили для подобных проектов вариант бесплатной лицензии. В том числе предоставленный вариант бесплатной лицензии позволяет использовать ее не только в открытых, но и в закрытых проектах.

Для тестирования новых возможностей PVS-Studio была проведена проверка кода открытой операционной системы RT-Thread, ориентированной на применения на IoT-устройствах на базе как микроконтроллеров (ARM Cortex-M0, Cortex-M3/4/7), так и процессоров ARM (ARM Cortex-A8 и ARM Cortex-A9 DualCore). Тестирование было проведено в режимах Keil и IAR, и результаты получились примерно одинаковыми.

Из выявленных предупреждений было отобрано 95 наиболее интересных проблем, среди которых:

  • Запись во внешнюю структуру локальных переменных, которые перестанут существовать после выхода из функции, а в структуре останутся указатели уже на другие объекты в стеке;
  • Логическая ошибка при построении условных операторов;
  • Опечатки, в которых вместо двух операторов "&" дважды использовали оператор "&&", что приводит к постоянному возврату значения 0 или 1;
  • Использование вместо оператора "&8249;&8249;" значения "&8249;";
  • Применение всегда истинного условия "i &8249;= 255" для переменной i с типом uint8_t, которое в коде приводит к зацикливанию;
  • Использование условий вида (x!=0 || x!= 1 || x!= 2 || x!= 3), которые всегда являются истинными;
  • Использование при вызове memcpy(elementAddress, filter, sizeof(filter)) не размера всей структуры, а размера указателя на структуру;
  • Разыменование указателя до его проверки;
  • Неосмысленная перезапись переменной ("reg_value =" вместо "reg_value |=");
  • Неполная инициализация массива (обнулялся только элемент с индексом 0, а остальные элементы остались неинициализированными);
  • Тело цикла всегда выполняется только один раз и все условия внутри цикла бессмысленны, так как переменная i всегда равна 0;
  • Переменная нигде не инициализируется перед чтением из нее значения.

Бензопила Mächtz: надежность и производительность для любых задач

Бензопила Mächtz: надежность и производительность для любых задач

Бензопилы являются незаменимым инструментом как для профессионалов, так и для тех, кто занимается бытовыми работами на участке. Если вы ищете высококачественную бензопилу, которая сочетает в себе надежность, мощность и удобство в использовании, стоит...

сегодня 11:27

Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх