我正在寻找一种能够随机生成C ++程序的工具。我一直在使用Csmith C程序生成器来测试我正在开发的工具,但现在我想更进一步,用随机生成的C ++代码进行测试。请注意,我对现有的C ++测试套件不感兴趣(我已经使用了一些)。
任何帮助将不胜感激。提前致谢!
答案 0 :(得分:4)
这是对类似程序(包含源代码)的另一个建议,它用于编译器开发。你可以参考它并开发类似的东西。 link
随机C / C ++程序生成器
- 创建一整套程序中使用的随机类型
- 创建主要功能。
- 生成具有最大控制权的随机语句块表达式嵌套深度。
- 如果在#3中定义了新功能,则循环返回以填充它的正文。
- 当达到最大功能数时,停止生成新功能并完成剩余功能的主体。
- 输出生成的程序。
目标:
答案 1 :(得分:1)
我的manydl.c程序演示了(在Linux上)一个程序可以在dlopen
- s上做很多事情(桌面上至少有几十万个)。它的工作原理是生成一些或多或少的随机C代码(在很多文件中),然后编译它们和dlopen
- 但是我设计了生成器,以便生成的函数快速终止。
您可能很容易适应它(例如,生成一些C ++代码)。
顺便说一下,我觉得生成或多或少的随机C ++代码相当简单。你只需要生成一些随机AST,然后发出它。生成一些有用的" C ++代码可能更棘手。BTW,我的MELT程序也可能会让您感兴趣:它是一种用于自定义GCC的特定于域的语言,它可以生成相当大的C ++文件。
PS。您的C或C ++编译器是否有一些免费软件?我很高兴看到它......