Challenge Overview
Maru is a prototype of a lightweight, fast and extensible code analyser for Ethereum smart contracts. It is in the early development stage, and the work will be largerly crowdsourced via Topcoder community. In this challenge you will take care about misc updates and enhancements specified below.
Technology Stack
Maru is a NodeJS command-line tool, written in TypeScript. Mocha is used as the test framework.
Code Access
The codebase is proprietary, and must not be shared nor used beyond the scope of this challenge, as per the standard Topcoder Terms of Use. In the challenge forum you will find a ZIP archive with the current snapshot of the codebase Git repository. You will work out of the commit 276fb59ecc324bc7fe485518b67cc6218a18b38e.
Individual Requirements
All to be considered as major:
- Convert all JavaScript code to TypeScript. Fine-tuning of tsconfig.json is allowed; strict type-checking MUST be enabled.
- Ensure that plugins properly report any exceptions encountered during their execution; i.e. if there is an exception in a Maru analyser module, then an appropriate error message should be shown.
- Add --output (alias -o) command line option to choose between textual (option set to txt) and JSON (option set to json) outputs. The textual output is implemented already, the JSON one should be implemented in this challenge.
- Provide --plugin (alias -p) command line option to execute individual plugin(s), specified by names given as comma-separated value of this argument.
- Update swc-test_cases.js to support the current version of SWC-registry, and work properly for JSON output. Make sure all test cases are executed.
- Parse the SWCs in https://github.com/SmartContractSecurity/SWC-registry/tree/master/entries and output weakness meta data along with the location information.
- Update unit tests.