【发布时间】:2016-08-11 20:27:53
【问题描述】:
我有一个项目,其中包含一些(相当简单的)C 代码生成作为构建系统的一部分。本质上,我有一些与项目(嵌入式 C)相关的版本信息,我想在我的二进制文件中公开这些信息,以便我可以轻松地确定为特定设备编程的固件版本以进行调试。
我正在编写一些简单的 Python 工具来执行此操作,并且我想确保它们经过彻底的测试。一般来说,这相当简单,但我不确定代码生成部分的最佳策略是什么。本质上,我想确保生成的文件都:
- 语法正确
- 包含必要的信息
第二,我可以(我相信)通过正则表达式匹配达到合理的程度。然而,第一个任务是一项更大的任务。我可能可以使用 pycparser 之类的东西并检查生成的 AST 以实现这两个目标,但这似乎是一个不必要的重量级解决方案。
编辑:我的构建层次结构的数据流程图
【问题讨论】:
-
正则表达式不是答案。
-
请edit your question 提供一个数据流图,说明 C/Python/binary/codegen 部分如何组合在一起,以及您要验证哪个阶段的输出?此外,您是否尝试详尽地测试构建过程的某些方面,或者您是否尝试在刻录到 Flash 之前验证您要刻录的映像是否具有基于 C 或 Python 源代码的信息? (或者别的什么?)谢谢!
-
@cxw 添加了一个基本图表。这只是代码生成的单元测试,所以我关心的是所需的信息存在于头/源文件对中,并且该对是有效的 C(本身不会导致构建失败)
标签: python c unit-testing auto-generate