Contributing code
This page walks you through the process of contributing new code changes to FuzzBench.
Source code structure
- analysis/ - code for analyzing fuzzer performance using statistical tests.
- benchmarks/ - benchmarks integrated in the FuzzBench platform (e.g. OpenSSL).
- common/ - common helper modules (e.g. logging, new process handling, etc).
- database/ - database handling code.
- docker/ - Dockerfiles for infra images (does not include fuzzer images).
- docs/ - this documentation.
- experiment/ - code for running FuzzBench experiments.
- experiment/build - code for building benchmarks and fuzzers for experiments.
- experiment/measurer - code for measuring coverage trial coverage.
- fuzzers/ - fuzzers integrated in the FuzzBench platform (e.g. AFL).
- service/ - code for the FuzzBench service run by Google.
- test_libs/ - test helper modules.
- third_party/ - third-party dependencies (e.g. sancov, oss-fuzz repo).
Running unit tests
You can run all checks and unit tests for the core functionality using:
make presubmit
You can also run the following to format your code or do different checks separately:
make format
- formats source code usingyapf
.make lint
- runs the linter checks.make typecheck
- runs type checker usingpytype
.make licensecheck
- runs the license header checks.