有一个随机的C ++程序生成器吗?

时间:2013-01-04 09:32:56

标签: c++ random generator

我正在寻找一种能够随机生成C ++程序的工具。我一直在使用Csmith C程序生成器来测试我正在开发的工具,但现在我想更进一步,用随机生成的C ++代码进行测试。请注意,我对现有的C ++测试套件不感兴趣(我已经使用了一些)。

任何帮助将不胜感激。提前致谢!

2 个答案:

答案 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 ++编译器是否有一些免费软件?我很高兴看到它......