Сравнение инструментов анализа статического кода в Linux? [закрыто

StackOverflow https://stackoverflow.com/questions/995774

  •  13-09-2019
  •  | 
  •  

Вопрос

Кто -нибудь сделал какие -либо сравнения по инструментам анализа статического кода, доступными для Linux? Каковы сильные и слабые стороны следующих инструментов:

  • Линьян,
  • Редкий,
  • Шине,
  • Крысы,
  • Используя опцию -wall.

Считаете ли вы, что использование только одного из этих инструментов является адекватным?

Я не ищу рекомендаций (я могу найти много из них), но прямое сравнение между доступными инструментами.

Это было полезно?

Решение

Есть, конечно Список Википедии. Анкет Этот список - это просто список, а не сравнение, а один из ссылки На странице, кажется, по крайней мере частично отвечает на ваш вопрос и (очень кратко) упоминает пару перечисленных вами программ.

Другие советы

Использование -Wall должно быть само собой разумеющимся для каждого разработчика C. Кроме того, дополнительно использование -Wextra может быть хорошей идеей.

Splint может найти другие потенциальные недостатки в вашем приложении, но в большинстве случаев (!).вне/ или же /неиспользованный/ В вашем коде, так что шина не кричит на вас. С помощью шины вы должны отфильтровать предупреждения, которые не важны для вас, в противном случае вы потратили слишком много времени на анализ и прокрутку множества сообщений.

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

Я использовал шину пару раз и нашел его слишком многословным: я отключил большую часть предупреждений. Я думаю, что этот инструмент может дать интересные результаты, если вы правильно аннотируете свой код. Без кодовой аннотации этот инструмент не очень полезен.

Я иногда использую редкий и считаю его ценным инструментом. Он обеспечивает обертку вокруг GCC, называемой «CGCC». В результате легко запустить разреженную программу, даже если она содержит много исходных файлов (export CC=cgcc и вуаля). Эта программа работает лучше всего, если вы анализируете исходный код ядра.

В качестве сиденота я также использую PMCCabe на регулярной основе. PMCCabe не является статическим анализатором: он рассчитывает цикломатическую сложность. Это может помочь вам найти самые сложные функции в вашей программе. Эти функции, вероятно, будут подвержены ошибкам и трудно проверить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top