Sobre el proyecto

AutoFFF es una utilidad basada en Python diseñada para generar automáticamente definiciones de funciones falsas FFF para archivos de encabezado de la API C, abordando un punto doloroso común en la prueba unitaria de código C embebido. El problema fundamental que resuelve es que probar código C embebido en una máquina anfitriona suele ser inviable, ya que la arquitectura del anfitrión difiere de la plataforma de destino y los entornos embebidos suelen carecer de soporte para la vinculación dinámica, mientras que el C no tiene capacidades de reflexión en tiempo de ejecución incorporadas para manipular el código bajo prueba en tiempo de ejecución. La falsificación de las API de la plataforma de destino mediante la vinculación del código bajo prueba con implementaciones falsas soluciona esto, pero escribir definiciones falsas para las funciones de la API de forma manual es tedioso, laborioso y propenso a errores, con los encabezados de prueba mantenidos manualmente propensos a la "descomposición del código" a medida que evolucionan las API originales. AutoFFF automatiza este proceso analizando los archivos de encabezado de la API C y generando encabezados de prueba listos para usar con definiciones falsas compatibles con FFF. Sigue la filosofía de "envuelto": los encabezados de prueba generados incluyen el encabezado de API original para heredar todas sus declaraciones de tipo, variable y función, solo agregando las definiciones falsas necesarias. Este enfoque es mucho más fácil de mantener que la estrategia alternativa de "prohibición", que requiere redeclarar todos los elementos de la API de forma manual y es más propensa a desincronizarse con los encabezados originales. La herramienta incluye un workaround incorporado para las funciones definidas directamente dentro de los archivos de encabezado, que normalmente causarían errores de redefinición cuando se falsifican. Este workaround utiliza la redirección de macros para redirigir las llamadas a la función original en el encabezado a la falsa generada, siempre y cuando el encabezado de prueba se incluya antes del código bajo prueba en los archivos de prueba. AutoFFF admite trabajar con bibliotecas que tienen políticas de inclusión estrictas (como FreeRTOS o CMSIS) a través de opciones de la línea de comandos para inyectar los encabezados requeridos o definir macros de preprocesador durante el análisis. Ofrece múltiples opciones de integración: puede ejecutarse como un módulo de línea de comandos independiente, usarse como un paquete Python en scripts personalizados o integrarse en sistemas de compilación como Make a través de los archivos Makefile proporcionados. Proporciona dos modos de generador: el BareFakeGenerator solo produce definiciones de macro FFF sin el envoltorio de encabezado para los usuarios que desean agregar procesamiento personalizado, mientras que el SimpleFakeGenerator produce encabezados de prueba compilables mínimos viables con guardias de inclusión y los incluye necesarios desde cero. AutoFFF se distribuye bajo la licencia MIT, está disponible a través de PyPI y requiere la colección de encabezados fake_libc_include del proyecto pycparser para el análisis de C, que no se incluye con la versión de pip y debe obtenerse por separado del repositorio pycparser.