随机数生成java代码
生成大量随机Java应用程序的命令行工具
您一直在等待的命令行工具。 或不。 毕竟,这是很深奥的。 无论哪种方式,它对某些人都非常有用,而对其他人来说却是一个有趣的实用程序。 Bullshifier是David Levanon和Hodaya Gamliel开发的内部OverOps工具。 它用于在可笑的大型代码库上测试我们的某些监视功能,该事务的事务进行了数千次调用,涉及数千种类,最后都带有异常。
让我们深入研究如何使用它以及为什么要构建它。
一些动机
OverOps向开发人员展示了代码在何时何地中断生产的原因。 每当记录错误,警告或异常时,它就会在错误发生时向您显示整个调用堆栈中的完整源代码和变量状态。
它是为生产而构建的,所需的开销很低,就CPU和内存而言,永远不会超过3%。 因此,作为我们流程的一部分,我们需要在一些极端情况下进行测试-这就是Bullshifier的用处:
- 生成大量的代码和日志记录的大型项目
- 在具有深度调用堆栈的方法之间运行
- 引发由随机变量状态引起的异常
基本用法
要求
- 安装Groovy
- 已安装Java
安装
- 下载,解压缩,就可以开始了
运行设置
- ./gradlew运行(默认参数,生成一个包含10个类的jar)
- cd输出&& gradle fatJar构建生成的项目
- java -cp output / build / libs / tester.jar helpers.Main运行它
或者,您可以简单地使用预先配置的运行设置运行./scripts/small.sh或./scripts/big.sh 。
标志
- -Poutput-directory (输出目录的相对路径)
- -Poutput-classes (要生成的类数)
- -Psubprojects (要生成的jar数量)
请记住,生成500多个类将花费相当长的时间。 我们最大的比赛有20,000堂课,但最好不要超过5,000堂。
运行子项目
- / gradle构建 (获取WAR文件)
- 前往垃圾桶
- 每个项目都会创建一个shell脚本,root将全部运行它们
进阶设定
还有一些其他选项可以使您对生成的代码进行精细控制,但可能会使其混乱,使用后果自负:
- 低级配置: src / main / groovy / generator / Config.groovy
- 输出文件夹中提供了更高级别的配置。 还有更多选项可以添加日志记录,并微调应用程序的行为,但目前尚处于试验阶段。
如果您想了解更多信息,请随时与我们联系,或在评论部分询问我们更深入的演练。 默认设置是没有日志,并且在调用堆栈中的每第10帧都有一个例外。
样品输出
有趣的是,一开始,所有那些随机生成的类和变量名都引起了很多保留字的点击。 尽管它们是完全随机的,但是由于生成的代码量巨大。 所以现在是随机减保留字��
每个生成的方法包含4个部分:
- 变量定义,具有随机类型,随机名称和值。
- 根据事件发生率的配置设置,抛出异常的部分或打印到日志的部分。 它还包括一个“自杀”功能,该功能可以停止程序的执行。
- 调用下一个模式。
- 无法运行的代码。
这是第一部分中的一个随机代码段:
int methodId = 2;
Object[] root = new Object[9];
List<Object> valCjrukeawxor = new LinkedList<Object>();
Set<Object> valRvshucjormy = new HashSet<Object>();
boolean valSboiogeldpb = true;valRvshucjormy.add(valSboiogeldpb);
boolean valPjvoucyfprv = true;
访问该站点以下载示例结果或在GitHub上查看 。
翻译自: https://www.javacodegeeks.com/2016/11/java-bullshifier-generate-massive-random-code-bases.html
随机数生成java代码