Fuzz introspector
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues

Fuzzer details

Fuzzer: parse

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 97 14.9%
gold [1:9] 2 0.30%
yellow [10:29] 2 0.30%
greenyellow [30:49] 4 0.61%
lawngreen 50+ 546 83.8%
All colors 651 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
8 10 3 :

['tl::detail::expected_operations_base ::geterr() &', 'void tl::detail::expected_operations_base ::construct (ada::url_aggregator&&)', 'tl::detail::expected_operations_base ::get() &&']

12 14 voidtl::detail::expected_operations_base ::assign (tl::detail::expected_operations_base &&) call site: 00000 /src/ada-url/build/singleheader/ada.h:2676
2 2 1 :

['tl::detail::expected_operations_base ::geterr() &']

2 4 voidtl::detail::expected_operations_base ::assign_common >(tl::detail::expected_operations_base &&) call site: 00000 /src/ada-url/build/singleheader/ada.h:2732
0 0 None 951 13962 ada::url_aggregatorada::parser::parse_url (std::__1::basic_string_view >,ada::url_aggregatorconst*) call site: 00000 /src/ada-url/build/singleheader/ada.cpp:12284
0 0 None 951 13962 ada::url_aggregatorada::parser::parse_url (std::__1::basic_string_view >,ada::url_aggregatorconst*) call site: 00000 /src/ada-url/build/singleheader/ada.cpp:12825
0 0 None 501 575 ada::url_aggregator::clear_hostname() call site: 00000 /src/ada-url/build/singleheader/ada.h:6593
0 0 None 258 2680 ada::urlada::parser::parse_url (std::__1::basic_string_view >,ada::urlconst*) call site: 00000 /src/ada-url/build/singleheader/ada.cpp:12180
0 0 None 258 2680 ada::urlada::parser::parse_url (std::__1::basic_string_view >,ada::urlconst*) call site: 00000 /src/ada-url/build/singleheader/ada.cpp:12186
0 0 None 258 2680 ada::urlada::parser::parse_url (std::__1::basic_string_view >,ada::urlconst*) call site: 00000 /src/ada-url/build/singleheader/ada.cpp:12189
0 0 None 250 2672 ada::urlada::parser::parse_url (std::__1::basic_string_view >,ada::urlconst*) call site: 00000 /src/ada-url/build/singleheader/ada.cpp:12279
0 0 None 250 2672 ada::urlada::parser::parse_url (std::__1::basic_string_view >,ada::urlconst*) call site: 00000 /src/ada-url/build/singleheader/ada.cpp:12337
0 0 None 250 2672 ada::urlada::parser::parse_url (std::__1::basic_string_view >,ada::urlconst*) call site: 00000 /src/ada-url/build/singleheader/ada.cpp:12825
0 0 None 250 2672 ada::urlada::parser::parse_url (std::__1::basic_string_view >,ada::urlconst*) call site: 00000 /src/ada-url/build/singleheader/ada.cpp:12871

Runtime coverage analysis

Covered functions
313
Functions that are reachable but not covered
112
Reachable functions
546
Percentage of reachable functions covered
79.49%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/src/ada-url/fuzz/parse.cc 1
/src/ada-url/build/singleheader/ada.cpp 94
/src/ada-url/build/singleheader/ada.h 118
/usr/local/bin/../include/c++/v1/optional 10

Analyses and suggestions

Optimal target analysis

Remaining optimal interesting functions

The following table shows a list of functions that are optimal targets. Optimal targets are identified by finding the functions that in combination, yield a high code coverage.

Func name Functions filename Arg count Args Function depth hitcount instr count bb count cyclomatic complexity Reachable functions Incoming references total cyclomatic complexity Unreached complexity
ada::url::get_origin()const /src/ada-url/build/singleheader/ada.cpp 2 ['N/A', 'N/A'] 11 0 176 36 33 163 0 396 68
ada_search_params_get_all /src/ada-url/build/singleheader/ada.cpp 3 ['N/A', 'N/A', 'size_t'] 8 0 124 21 21 29 0 53 51
ada::url_aggregator::set_scheme_from_view_with_colon(std::__1::basic_string_view >) /src/ada-url/build/singleheader/ada.cpp 3 ['N/A', 'N/A', 'size_t'] 5 0 298 70 48 13 0 129 48
ada::url_aggregator::set_scheme(std::__1::basic_string_view >) /src/ada-url/build/singleheader/ada.cpp 3 ['N/A', 'N/A', 'size_t'] 5 0 334 71 47 21 0 144 47
ada::url_aggregator::get_origin()const /src/ada-url/build/singleheader/ada.cpp 2 ['N/A', 'N/A'] 11 0 233 37 33 198 0 2240 45
ada::url_aggregator::to_string()const /src/ada-url/build/singleheader/ada.cpp 2 ['N/A', 'N/A'] 3 0 586 93 39 25 0 152 42
ada::url_aggregator::parse_ipv6(std::__1::basic_string_view >) /src/ada-url/build/singleheader/ada.cpp 3 ['N/A', 'N/A', 'size_t'] 5 0 760 140 42 35 0 203 42
ada::url_aggregator::clear_hash() /src/ada-url/build/singleheader/ada.h 1 ['N/A'] 5 0 246 48 42 17 0 137 42
ada_parse_with_base /src/ada-url/build/singleheader/ada.cpp 4 ['N/A', 'size_t', 'N/A', 'size_t'] 11 0 87 13 9 223 0 2243 42
ada::url_aggregator::parse_ipv4(std::__1::basic_string_view >,bool) /src/ada-url/build/singleheader/ada.cpp 4 ['N/A', 'N/A', 'size_t', 'bool'] 6 0 449 79 21 29 0 182 41

Implementing fuzzers that target the above functions will improve reachability such that it becomes:

Functions statically reachable by fuzzers
56.0%
305 / 544
Cyclomatic complexity statically reachable by fuzzers
80.0%
4619 / 5799

All functions overview

If you implement fuzzers for these functions, the status of all functions in the project will be:

Func name Functions filename Args Function call depth Reached by Fuzzers Fuzzers runtime hit Func lines hit % I Count BB Count Cyclomatic complexity Functions reached Reached by functions Accumulated cyclomatic complexity Undiscovered complexity