这个项目能做什么

AutoFFF 是一个基于 Python 的实用工具,旨在自动为 C API 头文件生成 FFF(Fake Functions Framework)伪函数定义,解决嵌入式 C 单元测试中的一个常见痛点。 它解决的核心问题是:在主机上测试嵌入式 C 代码通常不可行,因为主机架构与目标平台不同,且嵌入式环境通常不支持动态链接,而 C 语言没有内置的运行时反射能力来在运行时操纵被测代码。通过将被测代码与伪实现链接来伪造目标平台 API 可以解决这一问题,但手动为 API 函数编写伪定义既繁琐、劳动密集又容易出错,而且手动维护的测试头文件会随着原始 API 的演进而出现“代码腐化”。 AutoFFF 通过解析 C API 头文件并生成可直接使用的、包含 FFF 兼容伪定义的测试头文件来自动化这一过程。它遵循“包装”(wrapping)伪造理念:生成的测试头文件包含原始 API 头文件,以继承其所有类型、变量和函数声明,仅添加必要的伪定义。这种方法远比另一种“禁止”(banning)策略更易于维护,后者需要手动重新声明所有 API 元素,更容易与原始头文件失去同步。 该工具内置了对直接在头文件内部定义的函数的解决方法,否则这些函数在被伪造时通常会导致重定义错误。该解决方法使用宏重路由,将对原始头文件内函数的调用重定向到生成的伪函数,只要在测试文件中先于被测代码包含测试头文件即可。 AutoFFF 支持通过命令行选项处理具有严格包含策略的库(如 FreeRTOS 或 CMSIS),可在解析期间注入所需头文件或定义预处理器宏。它提供多种集成方式:可作为独立命令行模块运行,可在自定义脚本中作为 Python 包使用,也可通过提供的示例 Makefile 集成到 Make 等构建系统中。 它提供两种生成器模式:BareFakeGenerator 仅输出原始 FFF 宏定义,不包含头文件样板,适用于希望添加自定义处理的用户;SimpleFakeGenerator 则开箱即用地生成带有包含守卫和所需包含项的最小可编译测试头文件。 AutoFFF 以 MIT 许可证分发,可通过 PyPI 获取,并且需要 pycparser 项目的 fake_libc_include 头文件集合来进行 C 解析,该集合未随 pip 版本捆绑,必须单独从 pycparser 仓库获取。