Skip to main content Link Menu Expand (external link) Document Search Copy Copied

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 using yapf.
  • make lint - runs the linter checks.
  • make typecheck - runs type checker using pytype.
  • make licensecheck - runs the license header checks.