Код C для оценки инструментов статического анализа кода

Итак, я скоро вернусь к кодированию C. У меня есть предыдущий опыт работы с Gimpel Lint и Splint, но я хотел бы проверить некоторые другие.

Кто-нибудь знает какой-нибудь код C, специально предназначенный для проверки возможностей анализаторов статического кода C?

То есть какой-то код, который преднамеренно обращается к освобожденной памяти, читает за конец массива, недостижимый код и т.д. и т.п.

Я хотел бы использовать его для оценки анализаторов статического кода C, чтобы помочь мне выбрать один из них.

Бесплатно, пожалуйста, желательно Windows, но я также приму Linux.


Это мой вопрос по теме. Я не думаю, что стал бы жаловаться, если бы были комментарии не по теме, сравнивающие такие анализаторы, указывающие на веб-сайты, сравнения, рекомендации, простоту настройки/использования и т. д. (подмигивание ;-)

Если это поможет, у меня есть один или два сотрудника, которые пишут именно то, что вы ищете - ВСЕ время. Если бы не проблемы с авторскими правами, я мог бы прислать вам мегабайты примеров.
Lolx - (+1) Я вообще пишу свое - но не намеренно
Если вы кодируете проекты с открытым исходным кодом, вам будет трудно превзойти Coverity для статического анализа, бесплатный Cppcheck также стоит посмотреть, но пчелиные колени для встроенного кода C — это LDRA — хотя LDRA совсем не бесплатный. Один из лучших, конечно, gcc -Wall -Werrorпотом все исправить!
@Mawg Просто чтобы дать вам несколько идей ... Список инструментов C/C++ для статического анализа кода
Да, я знаю (во всяком случае, спасибо, +1) - но по правилам этого сайта я не могу просить "лучшее", поэтому я оценю их все и посмотрю, с чем я чувствую себя хорошо.
Мок, даже если бы это был твой "вопрос по теме", я не уверен, что это действительно так. Этот сайт предназначен для рекомендаций программного обеспечения , и да, это включает в себя библиотеки для разработки. Но ИМХО не фрагменты кода. В качестве справки: запрашивает ли образец иллюстративный код по теме? говорит: Вопросы не должны задаваться в первую очередь по коду . Так что я бы посчитал это не по теме, извините.
Я думал об этом перед публикацией, но понял, что, как вы говорите, многие здесь просят библиотеки ( ). Что они, но исходный код? Этот сайт для Software Recommendationsи я прошу участников порекомендовать некоторое программное обеспечение. Может, стоит переименовать сайт в Application Recommendations? ;-) Если я хочу быть педантичным, то могу сказать, что прошу не фрагмент кода, а полный набор тестов. - где еще я могу спросить? ( ) не так давно был сайт для библиотечных рекомендаций, предложенных по Зоне 51, но он, кажется, исчез :-(
Единственный текущий ответ на упомянутый вопрос Иззи гласит: «Я бы не чувствовал ничего, кроме как в контексте описания чего-то, что является частью ответа, например, иллюстрируя, как конкретная комбинация языка/компилятора решает конкретную проблему». чтобы проиллюстрировать, как статический анализатор кода решает конкретную проблему ошибочного кода.
@Izzy Это мета-обсуждение не имеет прямого отношения: Mawk запрашивает кодовую базу, а не пример кода. Я думаю, что это требует новой мета-дискуссии.
Хорошо, @Gilles & Mawg – тогда я отозвал свой голос (Mawg: извините за неправильную интерпретацию – хотя аргумент «где еще я могу спросить» я действительно не считаю;)
Спасибо, Иззи. Я все еще думаю, что это нормально, хотя я могу понять возможные возражения. Кстати, программистам это не понравится... meta.programmers.stackexchange.com/questions/7414/…
@Mawg может просто запросить программное обеспечение, которое использует инструменты анализа программного обеспечения, и тогда этот вопрос будет в порядке; «исходный код необязательный плюс». Я предоставил ответ, который состоит именно из такого программного обеспечения.

Ответы (2)

Набор тестов Julia , созданный АНБ и доступный в NIST, представляет собой набор тестов широкого спектра, позволяющий сравнивать различные инструменты анализа с использованием стандартизированного описательного словаря.

Есть набор тестов для C/C++ и еще один набор тестов для Java.

Моя компания использовала его для тестирования нашего инструмента динамического анализа CheckPointer для C. С десятками тысяч отдельных тестов он показался довольно тщательным.

Сайт NIST по ссылке содержит множество других наборов тестов, предоставленных самыми разными авторами. Насколько я знаю, все они доступны для бесплатного скачивания. Выбрать свой яд :-}

Этот набор тестов от Toyota содержит недопустимый доступ к памяти, переполнения и т. д. Они удобно размещены в отдельных файлах:

https://github.com/orbitcowboy/itc-benchmarks/tree/master/01.w_Defects

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

Лицензия BSD