---
# System prepended metadata

title: Выбор фаззера для запуска
tags: [seleсt, weight]

---

# Выбор фаззера для запуска

###### tags: `seleсt`, `weight`

Файл реализации - [`fuzzer_selection.py`](https://github.com/google/clusterfuzz/blob/master/src/python/fuzzing/fuzzer_selection.py)

Выбрать следующий фаззер для запуска помогает его вес. (подробнее [здесь](https://hackmd.io/@reverse-clusterfuzz/S1C360uIU)). Обычно, процесс выбора новой *цели* (target) начинается вызовом функции [_set_random_fuzz_target_for_fuzzing_if_needed](https://github.com/google/clusterfuzz/blob/master/src/python/build_management/build_manager.py#L271). Эта функция принимает на вход все цели и их веса. Если цель ещё не выбрана (не установлена переменная окружения FUZZ_TARGET), то происходит вызов функций [select_fuzz_target](https://github.com/google/clusterfuzz/blob/master/src/python/fuzzing/fuzzer_selection.py#L95) и [random_weighted_choice](https://github.com/google/clusterfuzz/blob/993d76460b3b21b5cb56f70a81c8ec8121fa5ffe/src/python/base/utils.py#L549). Используется алгоритм выбора **случайного** элемента из списка с учётом его **веса**.
