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

随机数生成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代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

背景区域为负样本什么意思_词向量-skipgram与负采样

大纲&#xff1a;1. onehot vs 分布式表示2. 分布式表示的全局泛化能力3. how to learn word2vec - intuition4. SkipGram5. SkipGram Negative Sampling6. 评估词向量7. CBOW与SkipGram对比1. onehot vs 分布式表示Onehot表示:V (apple, going, I, home, machine ,learing)ap…

嵌入式linux应用程序实例,嵌入式Linux应用程序访问物理地址的实例

前言  按照Linux分层驱动思想&#xff0c;外设驱动与主机控制器的驱动不相关&#xff0c;主机控制器的驱动不关心外设&#xff0c;而外设驱动也不关心主机&#xff0c;外设访问核心层的通用应用程序接口进行数据传输&#xff0c;主机和外设之间可以进行任意的组合。这样思想要…

生成验证码图片的Java代码

文章目录验证码演示代码请求资源路径为什么要添加一个随机数的参数验证码演示代码 package priv.lwx.javaex.servlet_demo.web.servlet.response;import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import …

线程同步 线程安全_同步装饰器来替换线程安全类

线程同步 线程安全您知道什么是线程安全吗&#xff1f; 如果没有&#xff0c;下面是一个简单的示例。 所有类都必须是线程安全的&#xff0c;对吗&#xff1f; 并不是的。 其中一些必须是线程安全的&#xff1f; 又错了。 我认为它们都不必是线程安全的&#xff0c;而它们都必须…

python数学要求_python数学工具之积分(1)

加载库Polygon&#xff0c;绘制积分图形。 fig, ax plt.subplots(figsize(7, 5))表示绘图尺寸为7*5&#xff1b;plt.plot(x, y, b, linewidth2)表示绘制蓝色线宽为2的函数图形&#xff1b;plt.ylim(ymin0)表示y轴最小值为0&#xff1b;Ix np.linspace(a, b)表示lx取值范围为[…

linux swap分区与内存,虚拟内存和swap分区的关系

首先&#xff0c;这两个概念分别对应windows和linux&#xff0c;即&#xff1a;windows&#xff1a;虚拟内存linux&#xff1a;swap分区windows即使物理内存没有用完也会去用到虚拟内存&#xff0c;而Linux不一样 Linux只有当物理内存用完的时候才会去动用虚拟内存(即swap分区)…

.net2.0 orm_Java 8:深入研究速度3.0.1“森林”流ORM

.net2.0 orm沿着这条路 我一直在为开源项目Speedment &#xff08;它是Stream ORM Java工具包和运行时&#xff09;做出贡献&#xff0c;并且刚刚发布了一个新的主要版本3.0.1“ Forest”。 版本的发布是以加利福尼亚帕洛阿尔托的大街小巷命名&#xff0c;大多数贡献者都在此工…

JavaScript/JS如何给元素对象添加事件

使用普通的 js 代码给元素对象添加事件 绑定事件&#xff0c;添加事件处理程序&#xff1a; var obj document.getElementById("name"); obj.onclick f1; function f1(){ alert("hello!"); }说明&#xff1a;函数名 f1 就是一个引用数据类型的变量&…

forge开发_使用Forge,WildFly Swarm和Arquillian开发微服务

forge开发在这篇文章中&#xff0c;我们将看到如何使用WildFly Swarm和Forge开发微服务&#xff0c;以及如何使用Arquillian和Rest Assured对其进行测试。 WildFly Swarm提供了一种创新的方法来打包和运行Java EE应用程序&#xff0c;方法是将它们与足够的服务器运行时一起打包…

zynq+linux固化程序,如何在 Zynq UltraScale+ MPSoC 上实现 Linux UIO 设计

原标题&#xff1a;如何在 Zynq UltraScale MPSoC 上实现 Linux UIO 设计简介作者&#xff1a; Alex He (何晔)&#xff0c; 赛灵思高级嵌入式应用工程师这里的 UIO 即 Userspace I/O&#xff0c;本文中 UIO 泛指 UIO 设备和 UIO 驱动。它在 Linux kernel 的世界里比较小众&…

python初学者代码示例_Selenium 快速入门笔记和代码示例(Python版)

链接 文档链接&#xff1a; 安装 selenium 模块和 Chrome 浏览器驱动 步骤&#xff1a; 安装 Selenium 模块&#xff1a; pip install selenium 下载浏览器驱动&#xff08;下载即可&#xff0c;无需安装&#xff0c;使用时要指定它的路径&#xff09;&#xff1a;请参考 https…

用例描述

用例名称&#xff1a;简要说明/描述&#xff0c; 优先级&#xff1a; 参与者&#xff1a; 事件流&#xff1a;就是用例执行时&#xff0c;由一序列活动组成的控制流。 基本事件流&#xff1a;对用例中常规、预期路径的描述。 扩展事件流&#xff1a;主要是对一些异常情况、选…

thinkpad笔记本散热风扇_极致的散热体验,ORICO 全铝DIY双风扇笔记本散热垫评测...

电脑的出现&#xff0c;极大的改变了人类的生活。娱乐、办公、游戏、电子竞技等等都需要用到电脑。而电脑也慢慢的在升级着。电脑的体积也由最开始的的占据几间屋子的庞大体积&#xff0c;到后来的台式机、台式一体机、电脑的体积慢慢的变的越来越小。而便携式笔记本电脑的出现…

清除java_如何在Java地毯下有效地清除问题

清除java因为软件错误可能使我们在开发人员面前看起来很糟糕&#xff0c;并导致其他人对我们的想法减少&#xff0c;所以最好避免编写错误&#xff0c;快速识别和修复错误或掩盖我们的错误。 有许多博客文章和文章讨论如何避免错误以及如何识别和修复错误&#xff0c;因此&…

Web产品的交互说明文档应该怎么写?

经常与开发同学聊天&#xff0c;他们说有一个详细的说明文档可以帮助他们更准确的进行工时评估&#xff0c;还可以帮助他们提高工作效率&#xff0c;减少多余的思考时间。因此在这里分享一些制作交互说明文档的经验。 我先说说说交互原型包含哪些部分&#xff1f; 版本说明及更…

linux类似360软件,linux下有什么类似鲁大师查看电脑配置的软

满意答案drqyna2017.05.26采纳率&#xff1a;40% 等级&#xff1a;11已帮助&#xff1a;5455人linux如何查看系统的硬件配置如何在linux系统下查看系统配置&#xff1f;在图形模式下我们可以很方便的利用Linux的图形工具&#xff0c;点击几下就可以查看到Linux系统的的硬件信…

java 编写代码_如果您在2016年编写过Java代码-这是您不容错过的趋势

java 编写代码2016年最有趣的Java相关主题 关于代码&#xff0c;有很多热门话题&#xff0c;而要跟上所有事情&#xff0c;这是一项全职的工作。 如果您想知道如何从谷壳中分离出小麦&#xff0c;我们已经为您完成了工作。 在下面的文章中&#xff0c;我们将介绍2016年最热门…

thinkphp json_原创干货 | Thinkphp序列化合总

听说转发文章会给你带来好运最近Thinkphp几个版本都出了反序列化利用链&#xff0c;这里集结在一起&#xff0c;下面是复现文章&#xff0c;poc会放在最后01Thinkphp5.1.37环境搭建composercreate-project topthink/think5.1.37 v5.1.37poc演示截图调用链单步调试漏洞起点在\th…

linux安java,Linux安装Java

从人类社会的角度看OO&lpar;独家视角&rpar;引言 在OO的工作中,我们一定会涉及到类,抽象类和接口.那么类和抽象类以及接口到底扮演的什么角色? 本文主要是从人类社会的角度阐述类与抽象类以及接口的"社会"关系,从而让我们抛弃书 ...include与require的区别&a…

前端和后端的区别

后端工程师负责服务器端应用程序的编写开发&#xff08;业务逻辑、方法、函数、数据库代码等&#xff09; 前端工程师负责UI的html代码编写和设计&#xff0c;所以前端工程师一般指网页工程师 前端部分是和用户直接交互的&#xff0c;包括前台和后台部分 客户端其实就是属于前端…