Java Bullshifier –生成大量随机代码库
生成大量隨機(jī)Java應(yīng)用程序的命令行工具
您一直在等待的命令行工具。 或不。 畢竟,這是很深奧的。 無論哪種方式,它對某些人都非常有用,而對其他人來說卻是一個有趣的實(shí)用程序。 Bullshifier是由David Levanon和Hodaya Gamliel開發(fā)的內(nèi)部OverOps工具。 它用于在可笑的大型代碼庫上測試我們的某些監(jiān)視功能,其中事務(wù)進(jìn)行了數(shù)千次調(diào)用,上千個類,并且最終會產(chǎn)生異常。
讓我們深入研究如何使用它以及為什么要構(gòu)建它。
一些動機(jī)
OverOps向開發(fā)人員展示了代碼在何時(shí)何地中斷生產(chǎn)的原因。 只要有記錄的錯誤,警告或異常發(fā)生,它就會向您顯示錯誤發(fā)生時(shí)整個調(diào)用堆棧的完整源代碼和變量狀態(tài)。
它是為生產(chǎn)而構(gòu)建的,并且所需的開銷很低,就CPU和內(nèi)存而言,永遠(yuǎn)不會超過3%。 因此,作為我們流程的一部分,我們需要在一些極端情況下進(jìn)行測試-這就是Bullshifier的用處:
- 生成大量的代碼和日志記錄的大型項(xiàng)目
- 在具有深度調(diào)用堆棧的方法之間運(yùn)行
- 引發(fā)由隨機(jī)變量狀態(tài)引起的異常
基本用法
要求
- 安裝Groovy
- 已安裝Java
安裝
- 下載,解壓縮,就可以開始了
運(yùn)行設(shè)置
- ./gradlew運(yùn)行(默認(rèn)參數(shù),生成一個包含10個類的jar)
- cd輸出&& gradle fatJar構(gòu)建生成的項(xiàng)目
- java -cp output / build / libs / tester.jar helpers.Main運(yùn)行它
或者,您可以簡單地使用預(yù)先配置的運(yùn)行設(shè)置運(yùn)行./scripts/small.sh或./scripts/big.sh 。
標(biāo)志
- -Poutput-directory (輸出目錄的相對路徑)
- -Poutput-classes (要生成的類數(shù))
- -Psubprojects (要生成的罐數(shù))
請記住,生成500多個類將花費(fèi)相當(dāng)長的時(shí)間。 我們最大的比賽有20,000課,但最好不要超過5,000。
運(yùn)行子項(xiàng)目
- / gradle構(gòu)建 (獲取WAR文件)
- 前往垃圾桶
- 每個項(xiàng)目都會創(chuàng)建一個shell腳本,root將全部運(yùn)行它們
進(jìn)階設(shè)定
還有一些其他選項(xiàng)可以使您對生成的代碼進(jìn)行精細(xì)控制,但可能會使其混亂,使用后果自負(fù):
- 低級配置: src / main / groovy / generator / Config.groovy
- 更高級別的配置在輸出文件夾中可用。 還有更多選項(xiàng)可以添加日志記錄,并微調(diào)應(yīng)用程序的行為,但目前尚處于試驗(yàn)階段。
如果您想了解更多信息,請隨時(shí)與我們聯(lián)系,或在評論部分詢問我們更深入的演練。 默認(rèn)設(shè)置是沒有日志,并且在調(diào)用堆棧中每第10幀都有一個例外。
樣品輸出
有趣的是,一開始,所有那些隨機(jī)生成的類和變量名都引起了很多保留字的點(diǎn)擊。 盡管它們是完全隨機(jī)的,但由于生成的代碼量巨大。 所以現(xiàn)在是隨機(jī)減保留字��
每個生成的方法包含4個部分:
- 變量定義,具有隨機(jī)類型,隨機(jī)名稱和值。
- 根據(jù)事件發(fā)生率的配置設(shè)置,拋出異常的部分或打印到日志的部分。 它還包括“自殺”功能,該功能可停止程序的執(zhí)行。
- 調(diào)用下一個模式。
- 無法運(yùn)行的代碼。
這是第一部分中的一個隨機(jī)代碼段:
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;訪問該站點(diǎn)以下載示例結(jié)果或在GitHub上查看 。
翻譯自: https://www.javacodegeeks.com/2016/11/java-bullshifier-generate-massive-random-code-bases.html
總結(jié)
以上是生活随笔為你收集整理的Java Bullshifier –生成大量随机代码库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: days to_days_Java2Da
- 下一篇: 千古词帝是谁 千古词帝指的是哪个人