splint vs gcc: стоят ли внешние инструменты статического анализа кода усилий для баз кода C? - PullRequest
5 голосов
/ 22 ноября 2011

Я работаю над довольно сложным проектом, и в качестве дополнительного усложнения это модуль ядра Linux. Запуск инструмента для рисования, такого как splint, на такой кодовой базе, безусловно, не является невозможным [1], но простых усилий было недостаточно, чтобы что-то запустить.

Прежде чем уделять этому больше времени, я надеялся получить отзывы и мнения по этому вопросу. С достаточным количеством флагов gcc выполняет довольно много проверок. На практике стоит ли использовать отдельный инструмент статического анализа кода?

[1] http://www.cs.virginia.edu/pipermail/splint-discuss/2005-January/000531.html

Ответы [ 2 ]

6 голосов
/ 23 ноября 2011

В дополнение к таким инструментам, как sparse, я бы посоветовал взглянуть на проект LDV .LDV в первую очередь ориентирован на проверку драйверов Linux.Эта система выполняет более глубокий статический анализ, чем splint и sparse, и может обнаруживать очень неуловимые проблемы.

LDV - свободное программное обеспечение.

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

Кроме того, система Coccinelle также может стоитьсмотря на.Как и LDV, Coccinelle использовалась для обнаружения множества различных ошибок в ядре Linux.

3 голосов
/ 22 ноября 2011

Хотя splint определенно аккуратен, я думаю, что усилия, необходимые для его использования в исходных кодах ядра Linux, вероятно, больше, чем он мог бы вернуть.

Однако разработчики ядра имеют свой собственный инструмент sparse длявыполняя некоторые подобные проверки и уже глубоко интегрировала его использование в исходные коды ядра.Интеграция его в ваши источники тоже должна казаться довольно естественной, поскольку она уже есть во всем исходном коде ядра.Подробности об использовании sparse.

см. В Documentation/sparse.txt. Существует коммерческий проект Coverity , который иногда сканирует многие «важные» проекты с открытым исходным кодом на наличие проблем.Они обнаружили сотни, если не тысячи ошибок в исходниках ядра Linux с помощью своего инструмента.(Это радостная история о том, что они рекламируют свой продукт, правительство США получает огромную кучу чрезвычайно важных проверенных кодов, авторы с открытым исходным кодом получают бесплатные отчеты об ошибках, а пользователи с открытым исходным кодом получают преимущества от бесплатных обзоров кода. Победа в четырех направлениях!)

Стоит ли вам приобретать экспертные знания Coverity - это другой вопрос, но интеграция с sparse даст вам некоторые преимущества инструментов статической проверки кода без лицензионных сборов.

...