Maru is a prototype of a lightweight, fast and extensible static code analyser for Ethereum smart contracts. In this challenge, you will add unit tests to the provided code, and take care about various auxiliary tasks.
All requirements are considered major.
Integrate Omnibus as GitHub submodule. Parse https://github.com/EthereumAnalysisBenchmarks/Omnibus/blob/master/benchconf/Omnibus.yaml, and write tests for the OutdatedCompilerVersion and LockPragma Maruplugins to verify that they find issues at specified linenumbers.
Add other unit tests for all Maroo plugins to ensure that test coverage of each plugin is above 90%.
Add maru --version (and shortcut maroo -v) commands to print Maru version into console. Version number is taken from package.json.
Create CircleCI configuration that executes tests on any branch or tag commit, and automatically release the tool to NPM on tagged commits with tags of form v0.1.2. Refer to this CircleCI config as the example.
NOTE: As the codebase is proprietary, you MUST NOT test CircleCI configuration with a public Git repository! As provided example CircleCI config only requires small tuning, it should not be a problem. You may use CircleCI CLI for local testing of configuration.
Create a build script that allows to install development and production builds. The development version builds https://github.com/thec00n/solidity-parser-antlr from source. The production version uses the latest version in node_modules.
Write README.md with the following content:
- Brief description of the tool purpose, architecture and usage
- Information for developers (how to run tests, what CircleCI setup does currently, which environment variables should be set in CircleCI to configure NPM releases, how to release a new tool version to NPM (do not forget to mention usage of $ npm version command for bumping package versions before releases)).
In case of any doubts, do not hesitate to ask questions in the challenge forum.