{"repo":"haoyang9804/Erwin","free":true,"listed":false,"github":"https://github.com/haoyang9804/Erwin","clone":"git clone https://github.com/haoyang9804/Erwin.git","description":"A random Solidity program generator.","language":"TypeScript","stars":134,"topics":["smart-contracts","solidity","random-program-generator"],"license":"GPL-3.0","category":"blockchain-web3","readme_excerpt":"Erwin is an academic attempt on introducing bounded exhaustive instantiation in random program generator to mitigate opportunism. This effort is inspired by . Paper for this work can be found on . Different from Csmith-family tools that generate a test program in one go, Erwin separates the generation process into two sub-steps: 1) randomly generate a type/loc/scope-agnostic IR (i.e., a program without type, storage location, and scope), and 2) conducts bounded exhaustive instantiation to instantiate the IR into a swarm of real-word test programs. By masking out bug-related langauge features, such as type, storage location, and scope in the IR, Erwin shrinks the search space into a highly bug-related subspace. This way, Erwin reduce opportunism in random program generations. Erwin is still under development, any suggestion and collaboration is welcomed. Install Erwin Install through NPM Install through Git Run Erwin If you install Erwin through NPM, the erwin executable is in node modules/.bin , add it to your PATH, and directly call erwin . If you install Erwin through Git, go into the folder and type npx erwin generate . Use Erwin as a Solidity program generator. Erwin support various flags to tune the probability distribution of all language features (e.g., literal prob ), control the program size (e.g., function body stmt cnt upper limit ), change the generation mode (e.g, -m ), regulate the upperlimit of the amount of the test programs generated from the IR (e.g., -max )","default_branch":null,"files":null,"tree":[],"storefront":"/r/haoyang9804","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/haoyang9804/Erwin/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}