Código C para evaluar herramientas de análisis de código estático

Por lo tanto, volveré a la codificación C pronto. Tengo experiencia previa con Gimpel Lint y Splint, pero me gustaría ver algunos otros.

¿Alguien sabe de algún código C que esté diseñado específicamente para probar las capacidades de los analizadores de código estático C?

Es decir, algún código que accede deliberadamente a la memoria liberada, lee más allá del final de las matrices, código inalcanzable, etc., etc.

Me gustaría usarlo para evaluar analizadores de código estático C, para ayudarme a elegir uno.

Gratis, por favor, preferiblemente Windows, pero también aceptaré Linux.


Esa es mi pregunta sobre el tema. Supongo que no me quejaría si hubiera algunos comentarios fuera de tema comparando dichos analizadores, apuntando a sitios web, comparaciones, recomendaciones, facilidad de configuración/uso, etc. (guiño ;-)

Si te sirve de ayuda, he tenido uno o dos compañeros de trabajo que escriben exactamente el tipo de cosas que estás buscando, TODO el tiempo. Si no fuera por temas de derechos de autor te podría mandar megas de ejemplos.
Lolx: (+1) generalmente escribo el mío, pero no deliberadamente
Si está codificando proyectos de código abierto, le resultará difícil superar a Coverity en análisis estático, también vale la pena echarle un vistazo a Cppcheck gratuito, pero las rodillas de las abejas para el código C incrustado es LDRA; sin embargo, LDRA es cualquier cosa menos gratuito. ¡ Una de las mejores, por supuesto, es gcc -Wall -Werrorarreglar las cosas!
Sí, lo sé (gracias de todos modos, +1), pero según las reglas de este sitio no puedo pedir un "mejor", así que los evaluaré a todos y veré con qué me siento bien.
Mawk, incluso si incluirlo fuera su "pregunta sobre el tema", no estoy seguro de que realmente lo sea. Este sitio trata de recomendar software , y sí, eso incluye bibliotecas para el desarrollo. Pero en mi humilde opinión no fragmentos de código. Como referencia: ¿está pidiendo un ejemplo de código ilustrativo sobre el tema? dice: Las preguntas no deben preguntar principalmente por el código . Así que consideraría esto fuera de tema, lo siento.
Eso sí lo pensé antes de postear, pero me di cuenta que, como dices, mucha gente aquí pregunta por las bibliotecas ( ). ¿Qué son, sino código fuente? Este sitio es para Software Recommendationsy les pido a los miembros que recomienden algún software. Tal vez deberíamos cambiar el nombre del sitio a Application Recommendations? ;-) Si quiero ser pedante, puedo decir que no estoy pidiendo un fragmento de código, sino un conjunto de pruebas completo. - ¿Dónde más puedo preguntar? ( ) no hace mucho se propuso un sitio para recomendaciones de bibliotecas en el Área 51, pero parece haber desaparecido :-(
La única respuesta actual a la pregunta referida de Izzy dice "Sentiría que no, excepto en el contexto de describir algo que es parte de la respuesta, por ejemplo, ilustrar cómo una combinación específica de lenguaje/compilador resuelve un problema específico". Quiero algo de s/w para ilustrar cómo un analizador de código estático resuelve el problema específico del código con errores.
@Izzy Esa meta discusión no se aplica directamente: Mawk está pidiendo una base de código, no un código de muestra. Creo que esto amerita una nueva meta discusión.
De acuerdo, @Gilles y Mawg: entonces me retracté de mi voto (Mawg: perdón por la mala interpretación, aunque el argumento de "dónde más puedo preguntar" realmente no cuenta;)
Gracias, Izzy. Sigo pensando que está bien, aunque puedo entender posibles objeciones. Por cierto, los programadores no lo entretendrán... meta.programmers.stackexchange.com/questions/7414/…
@Mawg podría simplemente solicitar un software que ejerza herramientas de análisis de software, y luego esta pregunta está bien; "código fuente una ventaja opcional". Proporcioné una respuesta que consiste exactamente en ese software.

Respuestas (2)

El conjunto de pruebas de Julia creado por la NSA, disponible a través del NIST, pretende ser un conjunto de pruebas de amplio espectro para permitir la comparación de varias herramientas de análisis utilizando un vocabulario descriptivo estandarizado.

Hay un conjunto de pruebas para C/C++ y otro conjunto de pruebas para Java.

Mi empresa lo ha usado para probar nuestra herramienta de análisis dinámico CheckPointer para C. Con decenas de miles de pruebas individuales, parecía bastante completo.

El sitio del NIST en el enlace contiene una variedad de otros conjuntos de pruebas aportados por una amplia variedad de autores. AFAIK, todos estos están disponibles como descargas sin cargo. Elige tu veneno :-}

Este conjunto de pruebas de Toyota contiene acceso a memoria no válido, desbordamientos, etc. Están convenientemente ubicados en archivos separados:

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

Se utilizaron para averiguar la tasa de falsos positivos/negativos de algunas herramientas de análisis de código estático.

Licencia BSD