生成大量随机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 (要生成的罐数)

请记住,生成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 Bullshifier –生成大量随机代码库相关推荐

  1. 随机数生成java代码_Java Bullshifier –生成大量随机代码库

    随机数生成java代码 生成大量随机Java应用程序的命令行工具 您一直在等待的命令行工具. 或不. 毕竟,这是很深奥的. 无论哪种方式,它对某些人都非常有用,而对其他人来说却是一个有趣的实用程序. ...

  2. Java后台生成图表——主代码(折线图,饼状图,柱状图,-》并产出图片PDF或其他格式的图片内容)

    声明: 本文采用的数据均来源于网络,本人只用于学习记录,若有侵权,还望能及时联系. Maven 的 POM 依赖 <!--必要--><!--用于jfreechart生成图片 --&g ...

  3. 告别加班/解放双手提高单测覆盖率之Java 自动生成单测代码神器推荐

    一.背景 很多公司对分支单测覆盖率会有一定的要求,比如 单测覆盖率要达到 60% 或者 80%才可以发布. 有时候工期相对紧张,就优先开发功能,测试功能,然后再去补单元测试. 但是编写单元测试又比较浪 ...

  4. java实现生成纯色图片代码实例

    //生成黑色底图 public static void pureColorPictures(String width,String height ) {//width 生成图宽度// height 生 ...

  5. 又一巨头从Java迁移到Kotlin:关键应用全部开始切换、安卓代码库超过千万行Kotlin代码

    Meta 现在爱 Kotlin 多于 Java. Facebook 母公司 Meta 正在将其 Android 应用的 Java 代码迁移到 Kotlin.根据 Meta 的官方博客所述,截至今天,其 ...

  6. java 邮箱地址生成器_关于java:生成随机电子邮件

    你能帮帮我吗??如何使用JAVA使用硒生成随机电子邮件?? 我在StackOverflow中查看这里,但还没有找到答案.我试过了,但没用 电子邮件地址还是真盒子? 如果你只想发电子邮件,就不需要硒了. ...

  7. java 学习代码库_java 学习4

    [java]代码库多态:统一行为 多种形式 * 1.继承或者实现 * 2.放法的重写 * 3.父类引用指向对象: 对父类进行声明,指向子类的对象(方法) * * 多态的作用:提高代码的维护性 和扩展性 ...

  8. 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo是基于数据库的代码自动生成工具,低代码编程技术的实现,可以零代码自动生成SpringBoot项目工程.生成JavaBean.生成前后端分离的CRUD代码.生成MyBaits的Mapper ...

  9. java代码雨_代码雨 - java代码库 - 云代码

    [java]代码库import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...

最新文章

  1. fmod实现声音波形_“老张说数理化”—中考物理专题02-声音与环境(收藏可打印)...
  2. iMeta | 中科院李小方等膳食甘草促进小鼠镉解毒并调节肠道菌群代谢
  3. @ConfigurationProperties和@Value 注入
  4. html5 list css,使用HTML5的classList属性操做CSS类
  5. (转)编译Android源码的全过程
  6. 16岁上大学,25岁博士毕业,她还是南大医学院最年轻的博导!
  7. sql如何遍历几百万的表_SQL Server遍历表中记录的2种方法(使用表变量和游标)
  8. RotateCard(自定义旋转view)
  9. vos3000防火墙规则
  10. php 爬虫框架QueryList
  11. Bootstrap 弹出框modal 垂直居中(适用各种分辨率窗口)
  12. python- 机器人抓取谷歌地图数据
  13. 利用pyecharts实现中国省与市之间的跳转
  14. 看板娘全是php的怎么办,【教程】给网站添加互动二次元看板娘老婆
  15. MYSQL笔试题(考试题)附带答案
  16. 头插法建立单链表 c
  17. 10月25日 c语言 打印所有水仙花数
  18. oracle中trim函数的用法
  19. 阅读文献“Language Models are Unsupervised Multitask Learner”(GPT-2)
  20. 小程序——切割字符串

热门文章

  1. 人人都能掌握的Java服务端性能优化方案
  2. 如何设计一个安全的登录流程
  3. [编程入门]带参数宏定义练习:定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
  4. 《四世同堂》金句摘抄(十二)
  5. 使用阿里云智能翻译接口案例——CSDN博客
  6. 老师不能把你怎样,但外面的世界可以!
  7. 264. 丑数 II---LeetCode---JAVA(动态规划)
  8. strcompare php,PHP中的startswith()和endsWith()函数
  9. android url回调json,【求助】本地页面如何取某个URL返回的json
  10. Object.hashCode()与Object.equals()