Java Bullshifier –生成大量随机代码库

生成大量随机Java应用程序的命令行工具

您一直在等待的命令行工具。 或不。 毕竟,这是很深奥的。 无论哪种方式,它对某些人都非常有用,而对其他人来说却是一个有趣的实用程序。 Bullshifier是由David LevanonHodaya 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 (要生成的罐数)

请记住,生成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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值