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

Я хочу использовать инструменты статического анализа для обнаружения разыменования нулевого указателя и утечек памяти в драйверах устройств Linux (linux-3.17.2).

Я пробовал некоторые инструменты:

  1. Статический анализатор Clang
    Он показывает некоторые неважные предупреждения, такие как «Значение, сохраненное в 'usbhid' во время его инициализации, никогда не читается».
  2. Smatch и Cppcheck Они находят некоторые дефекты, но многие разыменования нулевого указателя, обнаруженные сопровождающими или мной, не могут быть обнаружены.

Не могли бы вы порекомендовать другие полезные статические инструменты для обнаружения реальных ошибок в драйверах устройств Linux?


person Napoleon    schedule 10.06.2015    source источник


Ответы (2)


Вот список доступных инструментов. В зависимости от того, ищете ли вы «бесплатные» инструменты или коммерческие - это дает вам хороший обзор. Еще одна возможность - это проект сканирования покрытия, где можно подавать заявки на проекты с открытым исходным кодом и получать бесплатное сканирование от покрытия.

Другие варианты:

person Lonzak    schedule 10.06.2015
comment
Спасибо! Я пробовал некоторые инструменты, о которых вы упомянули. Splint, flawinder и UNO нельзя напрямую использовать для драйверов устройств Linux, поскольку возникают некоторые ошибки синтаксического анализа. Я использовал Smatch и sparse. но они не показывают очень хороших результатов. Может ли Valgrind работать напрямую с драйверами? Я знаю, что его можно использовать для приложений. - person Napoleon; 11.06.2015

Не так давно была опубликована статья о проверке Linux 3.18.1 с помощью PVS- Студия. Поиск утечек памяти - их любимое хобби; они отлично справляются с поиском опечаток. Тем не менее, они обнаружили ошибки, и я решил упомянуть здесь эту статью. Кстати, у них есть много статей о своих поисках - где и что они нашли.

person Eugene Rourke    schedule 10.06.2015