For Developers - ClamAV Documentation
Description: An open source malware detection toolkit and antivirus engine.

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# ClamAV Development

This chapter aims to provide information useful when developing, debugging, or profiling ClamAV.

## Pull Request Basics

If you’re new to open source software development on GitHub, take a moment to read this quick introduction on GitHub Pull Requests.

## ClamAV Git Work Flow

ClamAV’s Git work flow isn’t too complicated, but it is unique. See this section to get a better understanding of how we use Git.

## Working with Your Fork

New core developers and community contributors can follow these steps to prepare an environment to work on ClamAV development.

## Reviewing Pull Requests

If you need to review a pull request, it’s best to not only eyeball the changes and review the test logs, but to also build and test the PR manually on your own computer. This section will help you check out someone else’s PR so you can test it.

## Building for Development

Basic instructions for building ClamAV can be in the Installing chapter and a comprehensive reference for compiling ClamAV with CMake is available in the INSTALL.md file accompanying the source code, but if you want a few extra tips on building ClamAV for development purposes, check this out.

## Building the Installer Packages

If you’d like to learn how we build the installer packages and even replicate this on your own, you can read about it here.

## Dev Tips & Tricks

This section contains a varied assortment of techniques you can use when coding on ClamAV to up your development game.

## libclamav

Are you interested in using libclamav to scan for malware in your own C/C++ application? This section introduces the most important functions of the libclamav API. For a more comprehensive reference, inline documention can be found in the `clamav.h` header distributed with libclamav.

## Contribute

If you’re interested in contributing to ClamAV, we’ve assembled a page of bugs that need fixing as well as other project ideas that we feel might be great new-contributor projects.

If you’re looking for project ideas, check out the project ideas list to find out how you might be able to help out the project!