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

Fuzzers overview

Fuzzer Fuzzer filename Functions Reached Functions unreached Fuzzer depth Files reached Basic blocks reached Cyclomatic complexity Details
uloc_canonicalize_fuzzer /src/icu/icu4c/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp 1728 789 36 68 12899 6832 uloc_canonicalize_fuzzer.cpp
uloc_for_language_tag_fuzzer /src/icu/icu4c/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp 1728 789 38 68 12894 6833 uloc_for_language_tag_fuzzer.cpp
ubidi_fuzzer /src/icu/icu4c/source/test/fuzzer/ubidi_fuzzer.cpp 115 1891 9 10 2799 992 ubidi_fuzzer.cpp
uloc_open_keywords_fuzzer /src/icu/icu4c/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp 1723 792 39 68 12876 6825 uloc_open_keywords_fuzzer.cpp
unicode_string_codepage_create_fuzzer /src/icu/icu4c/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp 348 1957 21 33 2769 1358 unicode_string_codepage_create_fuzzer.cpp
list_format_fuzzer /src/icu/icu4c/source/test/fuzzer/list_format_fuzzer.cpp 1979 1929 36 85 14308 7676 list_format_fuzzer.cpp
converter_fuzzer /src/icu/icu4c/source/test/fuzzer/converter_fuzzer.cpp 352 1955 19 32 2452 1244 converter_fuzzer.cpp
collator_compare_fuzzer /src/icu/icu4c/source/test/fuzzer/collator_compare_fuzzer.cpp 2300 2306 36 115 17956 8990 collator_compare_fuzzer.cpp
ucasemap_fuzzer /src/icu/icu4c/source/test/fuzzer/ucasemap_fuzzer.cpp 2091 2733 36 99 16418 8588 ucasemap_fuzzer.cpp
uregex_match_fuzzer /src/icu/icu4c/source/test/fuzzer/uregex_match_fuzzer.cpp 3180 2350 42 143 30099 14480 uregex_match_fuzzer.cpp
locale_fuzzer /src/icu/icu4c/source/test/fuzzer/locale_fuzzer.cpp 1727 793 35 67 12888 6835 locale_fuzzer.cpp
uloc_get_name_fuzzer /src/icu/icu4c/source/test/fuzzer/uloc_get_name_fuzzer.cpp 1728 789 36 68 12899 6832 uloc_get_name_fuzzer.cpp
collator_rulebased_fuzzer /src/icu/icu4c/source/test/fuzzer/collator_rulebased_fuzzer.cpp 3540 3216 36 152 27768 13659 collator_rulebased_fuzzer.cpp
normalizer2_fuzzer /src/icu/icu4c/source/test/fuzzer/normalizer2_fuzzer.cpp 335 1106 17 33 1769 982 normalizer2_fuzzer.cpp
break_iterator_fuzzer /src/icu/icu4c/source/test/fuzzer/break_iterator_fuzzer.cpp 1964 2727 36 90 14288 7729 break_iterator_fuzzer.cpp
plurrule_fuzzer /src/icu/icu4c/source/test/fuzzer/plurrule_fuzzer.cpp 2094 2983 36 85 15264 8037 plurrule_fuzzer.cpp
rule_based_break_iterator_fuzzer /src/icu/icu4c/source/test/fuzzer/rule_based_break_iterator_fuzzer.cpp 1615 2921 44 94 13903 6159 rule_based_break_iterator_fuzzer.cpp
date_time_pattern_generator_fuzzer /src/icu/icu4c/source/test/fuzzer/date_time_pattern_generator_fuzzer.cpp 2478 5042 36 92 18961 10521 date_time_pattern_generator_fuzzer.cpp
unicodeset_fuzzer /src/icu/icu4c/source/test/fuzzer/unicodeset_fuzzer.cpp 1234 2089 40 76 10225 4592 unicodeset_fuzzer.cpp
locale_morph_fuzzer /src/icu/icu4c/source/test/fuzzer/locale_morph_fuzzer.cpp 1755 785 35 68 13296 7109 locale_morph_fuzzer.cpp
uprop_fuzzer /src/icu/icu4c/source/test/fuzzer/uprop_fuzzer.cpp 926 2154 31 64 7371 3109 uprop_fuzzer.cpp
decimal_format_symbols_fuzzer /src/icu/icu4c/source/test/fuzzer/decimal_format_symbols_fuzzer.cpp 1986 1861 36 80 14906 8029 decimal_format_symbols_fuzzer.cpp
uloc_is_right_to_left_fuzzer /src/icu/icu4c/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp 1734 785 36 69 12987 6902 uloc_is_right_to_left_fuzzer.cpp
uregex_open_fuzzer /src/icu/icu4c/source/test/fuzzer/uregex_open_fuzzer.cpp 3111 2453 41 143 27395 13573 uregex_open_fuzzer.cpp
timezone_create_fuzzer /src/icu/icu4c/source/test/fuzzer/timezone_create_fuzzer.cpp 2108 4956 34 85 16570 9026 timezone_create_fuzzer.cpp
calendar_fuzzer /src/icu/icu4c/source/test/fuzzer/calendar_fuzzer.cpp 2151 4915 36 93 16167 8513 calendar_fuzzer.cpp
time_zone_names_fuzzer /src/icu/icu4c/source/test/fuzzer/time_zone_names_fuzzer.cpp 2049 4971 36 84 15269 8222 time_zone_names_fuzzer.cpp
dtfmtsym_fuzzer /src/icu/icu4c/source/test/fuzzer/dtfmtsym_fuzzer.cpp 2242 4987 36 91 16942 9114 dtfmtsym_fuzzer.cpp
number_formatter_fuzzer /src/icu/icu4c/source/test/fuzzer/number_formatter_fuzzer.cpp 5651 3079 52 226 40114 21075 number_formatter_fuzzer.cpp
relative_date_time_formatter_fuzzer /src/icu/icu4c/source/test/fuzzer/relative_date_time_formatter_fuzzer.cpp 2188 9720 36 106 15057 8268 relative_date_time_formatter_fuzzer.cpp
message_formatter_fuzzer /src/icu/icu4c/source/test/fuzzer/message_formatter_fuzzer.cpp 3557 10512 45 129 26386 13353 message_formatter_fuzzer.cpp
date_format_fuzzer /src/icu/icu4c/source/test/fuzzer/date_format_fuzzer.cpp 5511 8702 53 238 42412 22001 date_format_fuzzer.cpp
number_format_fuzzer /src/icu/icu4c/source/test/fuzzer/number_format_fuzzer.cpp 3898 7053 36 176 26654 14086 number_format_fuzzer.cpp

Fuzzer details

Fuzzer: uloc_canonicalize_fuzzer

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 2428 68.1%
gold [1:9] 361 10.1%
yellow [10:29] 22 0.61%
greenyellow [30:49] 66 1.85%
lawngreen 50+ 687 19.2%
All colors 3564 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
7056 13927 8 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::CharString::data()', 'icu_78::CharString::CharString()', 'icu_78::Locale::init(char const*, signed char)', 'icu_78::(anonymous namespace)::canonicalizeLocale(icu_78::Locale const&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::~CharString()', 'icu_78::Locale::setToBogus()', 'icu_78::(anonymous namespace)::isKnownCanonicalizedLocale(char const*, UErrorCode&)']

7056 13927 icu_78::Locale::init(icu_78::StringPiece,signedchar) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1967
6816 20488 6 :

['entryOpen(char const*, char const*, UResOpenType, UErrorCode*)', 'ulocimp_getBaseName_78(std::__1::basic_string_view >, UErrorCode&)', 'icu_78::CharString::data()', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::~CharString()', 'uloc_getDefault_78']

6816 20625 ures_openWithType(UResourceBundle*,charconst*,charconst*,UResOpenType,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:2718
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 01168 /src/icu/icu4c/source/common/uresbund.cpp:2512
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
16 16 5 :

['strcat', 'strchr', 'strlen', 'strcmp', 'strncat']

16 62 uprv_getDefaultLocaleID_78 call site: 00044 /src/icu/icu4c/source/common/putil.cpp:1747
12 16 2 :

['uprv_realloc_78', 'uprv_malloc_78']

16 20 ures_appendResPath(UResourceBundle*,charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1091
10 83 4 :

['strchr', 'strrchr', 'uprv_pathIsAbsolute_78', 'icu_78::CharString::append(char const*, int, UErrorCode&)']

686 4295 doOpenChoice(charconst*,charconst*,charconst*,signedchar(*)(void*,charconst*,charconst*,UDataInfoconst*),void*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:1202
9 9 1 :

['uprv_strdup_78']

6881 14623 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:563
7 188 4 :

['icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'res_getTableItemByIndex_78', 'res_getArrayItem_78', 'icu_78::CharString::clear()']

7 7350 (anonymousnamespace)::getAliasTargetAsResourceBundle(ResourceDataconst&,unsignedint,charconst*,int,UResourceDataEntry*,charconst*,int,UResourceBundle*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1264

Runtime coverage analysis

Covered functions
395
Functions that are reachable but not covered
905
Reachable functions
1728
Percentage of reachable functions covered
47.63%
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/icu/icu4c/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp 1
/src/icu/icu4c/source/test/fuzzer/locale_util.cpp 1
/src/icu/icu4c/source/common/uloc.cpp 56
/src/icu/icu4c/source/common/locid.cpp 79
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 86
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresbund.cpp 52
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/uresimp.h 2
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 23
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 27
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3

Fuzzer: uloc_for_language_tag_fuzzer

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 2691 75.5%
gold [1:9] 256 7.18%
yellow [10:29] 18 0.50%
greenyellow [30:49] 66 1.85%
lawngreen 50+ 532 14.9%
All colors 3563 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
20448 20488 6 :

['entryOpen(char const*, char const*, UResOpenType, UErrorCode*)', 'ulocimp_getBaseName_78(std::__1::basic_string_view >, UErrorCode&)', 'icu_78::CharString::data()', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::~CharString()', 'uloc_getDefault_78']

20448 20625 ures_openWithType(UResourceBundle*,charconst*,charconst*,UResOpenType,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:2718
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 00768 /src/icu/icu4c/source/common/uresbund.cpp:2512
6816 6816 1 :

['uloc_getDefault_78']

20463 27349 entryOpenDirect(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:974
6816 6816 1 :

['uloc_getDefault_78']

13697 21479 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:529
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
14 14 1 :

['icu_78::UnicodeString::setToBogus()']

14 52 icu_78::ures_getUnicodeString(UResourceBundleconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/unicode/ures.h:817
14 14 1 :

['icu_78::UnicodeString::setToBogus()']

14 14 icu_78::UnicodeString::setTo(signedchar,icu_78::ConstChar16Ptr,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1356
12 16 2 :

['uprv_realloc_78', 'uprv_malloc_78']

16 20 ures_appendResPath(UResourceBundle*,charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1091
10 83 4 :

['strchr', 'strrchr', 'uprv_pathIsAbsolute_78', 'icu_78::CharString::append(char const*, int, UErrorCode&)']

686 4295 doOpenChoice(charconst*,charconst*,charconst*,signedchar(*)(void*,charconst*,charconst*,UDataInfoconst*),void*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:1202

Runtime coverage analysis

Covered functions
321
Functions that are reachable but not covered
1035
Reachable functions
1728
Percentage of reachable functions covered
40.1%
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/icu/icu4c/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp 1
/src/icu/icu4c/source/test/fuzzer/locale_util.cpp 1
/src/icu/icu4c/source/common/uloc_tag.cpp 63
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/localpointer.h 86
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/uloc.cpp 54
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresbund.cpp 52
/src/icu/icu4c/source/common/locid.cpp 79
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uresimp.h 2
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/unicode/unistr.h 23
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unistr.cpp 27
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/unicode/ures.h 1

Fuzzer: ubidi_fuzzer

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 60 26.0%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 2 0.86%
lawngreen 50+ 168 73.0%
All colors 230 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
789 789 1 :

['setParaRunsOnly(UBiDi*, char16_t const*, int, unsigned char, UErrorCode*)']

789 789 ubidi_setPara_78 call site: 00047 /src/icu/icu4c/source/common/ubidi.cpp:2573
22 22 1 :

['checkExplicitLevels(UBiDi*, UErrorCode*)']

42 369 ubidi_setPara_78 call site: 00048 /src/icu/icu4c/source/common/ubidi.cpp:2643
6 6 1 :

['getRunFromLogicalIndex(UBiDi*, int)']

6 6 ubidi_getRuns_78 call site: 00156 /src/icu/icu4c/source/common/ubidiln.cpp:694
2 2 1 :

['u_strlen_78']

833 1490 ubidi_setPara_78 call site: 00046 /src/icu/icu4c/source/common/ubidi.cpp:2568
0 101 1 :

['ubidi_getVisualIndex_78']

220 530 testVisual(UBiDi*) call site: 00000 /src/icu/icu4c/source/test/fuzzer/ubidi_fuzzer.cpp:62
0 20 1 :

['ubidi_getMemory_78']

0 34 ubidi_openSized_78 call site: 00032 /src/icu/icu4c/source/common/ubidi.cpp:166
0 14 1 :

['ubidi_close_78']

0 14 ubidi_openSized_78 call site: 00034 /src/icu/icu4c/source/common/ubidi.cpp:177
0 4 1 :

['uprv_malloc_78']

0 4 uprv_realloc_78 call site: 00029 /src/icu/icu4c/source/common/cmemory.cpp:71
0 0 None 220 732 testVisual(UBiDi*) call site: 00000 /src/icu/icu4c/source/test/fuzzer/ubidi_fuzzer.cpp:49
0 0 None 110 319 testVisual(UBiDi*) call site: 00000 /src/icu/icu4c/source/test/fuzzer/ubidi_fuzzer.cpp:73
0 0 None 42 697 ubidi_setPara_78 call site: 00048 /src/icu/icu4c/source/common/ubidi.cpp:2617
0 0 None 42 572 ubidi_setPara_78 call site: 00048 /src/icu/icu4c/source/common/ubidi.cpp:2629

Runtime coverage analysis

Covered functions
61
Functions that are reachable but not covered
24
Reachable functions
115
Percentage of reachable functions covered
79.13%
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/icu/icu4c/source/test/fuzzer/ubidi_fuzzer.cpp 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 4
/src/icu/icu4c/source/common/ubidi.cpp 38
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/ustring.cpp 2
/src/icu/icu4c/source/common/ubidi_props.cpp 7
/src/icu/icu4c/source/common/ubidiln.cpp 12
/src/icu/icu4c/source/common/ubidiwrt.cpp 3
/src/icu/icu4c/source/common/uchar.cpp 1

Fuzzer: uloc_open_keywords_fuzzer

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 2557 71.8%
gold [1:9] 255 7.16%
yellow [10:29] 15 0.42%
greenyellow [30:49] 62 1.74%
lawngreen 50+ 672 18.8%
All colors 3561 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
20448 20488 6 :

['entryOpen(char const*, char const*, UResOpenType, UErrorCode*)', 'ulocimp_getBaseName_78(std::__1::basic_string_view >, UErrorCode&)', 'icu_78::CharString::data()', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::~CharString()', 'uloc_getDefault_78']

20448 20625 ures_openWithType(UResourceBundle*,charconst*,charconst*,UResOpenType,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:2718
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 00769 /src/icu/icu4c/source/common/uresbund.cpp:2512
6816 6816 1 :

['uloc_getDefault_78']

20463 27349 entryOpenDirect(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:974
6816 6816 1 :

['uloc_getDefault_78']

13697 21479 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:529
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
6816 6816 1 :

['uloc_getDefault_78']

6816 7370 uloc_openKeywords_78 call site: 00009 /src/icu/icu4c/source/common/uloc.cpp:1754
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
15 20 9 :

['uprv_asciitolower_78', 'std::__1::basic_string_view >::size[abi:ne180100]() const', 'std::__1::optional ::operator*[abi:ne180100]() &', '(anonymous namespace)::_findIndex(char const* const*, char const*)', 'strlen', 'uprv_max_78', 'std::__1::__optional_storage_base ::has_value[abi:ne180100]() const', 'std::__1::basic_string_view >::operator[][abi:ne180100](unsigned long) const', '(anonymous namespace)::_isIDSeparator(char)']

15 20 (anonymousnamespace)::_getLanguage(std::__1::basic_string_view >,icu_78::ByteSink*,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1245
14 14 1 :

['icu_78::UnicodeString::setToBogus()']

14 52 icu_78::ures_getUnicodeString(UResourceBundleconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/unicode/ures.h:817
14 14 1 :

['icu_78::UnicodeString::setToBogus()']

14 14 icu_78::UnicodeString::setTo(signedchar,icu_78::ConstChar16Ptr,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1356

Runtime coverage analysis

Covered functions
379
Functions that are reachable but not covered
935
Reachable functions
1723
Percentage of reachable functions covered
45.73%
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/icu/icu4c/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp 1
/src/icu/icu4c/source/test/fuzzer/locale_util.cpp 1
/src/icu/icu4c/source/common/uloc.cpp 54
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/bytesinkutil.h 14
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/localpointer.h 86
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresbund.cpp 52
/src/icu/icu4c/source/common/locid.cpp 79
/src/icu/icu4c/source/common/putil.cpp 12
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uresimp.h 2
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/unicode/unistr.h 23
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unistr.cpp 27
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/unicode/ures.h 1

Fuzzer: unicode_string_codepage_create_fuzzer

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 295 48.8%
gold [1:9] 95 15.7%
yellow [10:29] 49 8.11%
greenyellow [30:49] 40 6.62%
lawngreen 50+ 125 20.6%
All colors 604 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
1229 1229 4 :

['icu_78::StringPiece::StringPiece(char const*, int)', 'icu_78::UnicodeString::setToUTF8(icu_78::StringPiece)', 'ucnv_getDefaultName_78', 'u_getDefaultConverter_78']

1386 1665 icu_78::UnicodeString::doCodepageCreate(charconst*,int,charconst*) call site: 00000 /src/icu/icu4c/source/common/unistr_cnv.cpp:320
978 982 2 :

['uprv_free_78', 'ucnv_canCreateConverter_78']

978 982 _ISO2022Open(UConverter*,UConverterLoadArgs*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/ucnv2022.cpp:557
978 978 1 :

['ucnv_canCreateConverter_78']

978 978 _HZOpen(UConverter*,UConverterLoadArgs*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/ucnvhz.cpp:74
272 272 1 :

['UConverter_toUnicode_ISO_2022_KR_OFFSETS_LOGIC_IBM(UConverterToUnicodeArgs*, UErrorCode*)']

272 272 UConverter_toUnicode_ISO_2022_KR_OFFSETS_LOGIC(UConverterToUnicodeArgs*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/ucnv2022.cpp:2688
157 157 1 :

['u_releaseDefaultConverter_78']

157 157 icu_78::UnicodeString::doCodepageCreate(charconst*,int,charconst*) call site: 00000 /src/icu/icu4c/source/common/unistr_cnv.cpp:353
109 109 1 :

['_UTF16ToUnicodeWithOffsets(UConverterToUnicodeArgs*, UErrorCode*)']

109 109 _UTF16BEToUnicodeWithOffsets(UConverterToUnicodeArgs*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/ucnv_u16.cpp:266
109 109 1 :

['_UTF16ToUnicodeWithOffsets(UConverterToUnicodeArgs*, UErrorCode*)']

109 109 _UTF16LEToUnicodeWithOffsets(UConverterToUnicodeArgs*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/ucnv_u16.cpp:867
72 119 4 :

['umtx_unlock_78', '_EBCDICSwapLFNL(UConverterSharedData*, UErrorCode*)', 'umtx_lock_78', 'U_FAILURE(UErrorCode) [clone .6527]']

90 137 ucnv_MBCSOpen(UConverter*,UConverterLoadArgs*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/ucnvmbcs.cpp:1918
69 69 1 :

['ucnv_extContinueMatchToU_78']

166 371 ucnv_MBCSToUnicodeWithOffsets_78 call site: 00000 /src/icu/icu4c/source/common/ucnvmbcs.cpp:2490
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
36 38 2 :

['icu_78::MaybeStackArray ::getCapacity() const', 'icu_78::MaybeStackArray ::resize(int, int)']

36 38 icu_78::CharString::ensureCapacity(int,int,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/charstr.cpp:234
36 36 2 :

['_uhash_rehash(UHashtable*, UErrorCode*)', 'U_FAILURE(UErrorCode) [clone .5931]']

36 58 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:494

Runtime coverage analysis

Covered functions
192
Functions that are reachable but not covered
116
Reachable functions
348
Percentage of reachable functions covered
66.67%
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/icu/icu4c/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp 1
/src/icu/icu4c/source/common/unistr_cnv.cpp 3
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 1
/src/icu/icu4c/source/common/ucnv_bld.cpp 19
/src/icu/icu4c/source/common/unicode/stringpiece.h 5
/src/icu/icu4c/source/common/unistr.cpp 13
/src/icu/icu4c/source/common/unicode/unistr.h 10
/src/icu/icu4c/source/common/umutex.h 8
/src/icu/icu4c/source/common/cmemory.cpp 2
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/ustring.cpp 2
/src/icu/icu4c/source/common/ustr_cnv.cpp 3
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/ucnv.cpp 8
/src/icu/icu4c/source/common/ucnv_io.cpp 10
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 1
/src/icu/icu4c/source/common/charstr.h 11
/src/icu/icu4c/source/common/cmemory.h 8
/src/icu/icu4c/source/common/stringpiece.cpp 1
/src/icu/icu4c/source/common/charstr.cpp 6
/src/icu/icu4c/source/common/putil.cpp 8
/src/icu/icu4c/source/common/uobject.cpp 3
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uhash.cpp 21
/src/icu/icu4c/source/common/uinvchar.cpp 1

Fuzzer: list_format_fuzzer

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 2664 64.7%
gold [1:9] 373 9.07%
yellow [10:29] 20 0.48%
greenyellow [30:49] 3 0.07%
lawngreen 50+ 1052 25.5%
All colors 4112 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
7872 21814 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::clear()', 'icu_78::LocalPointer ::LocalPointer(icu_78::StringEnumeration*)', 'icu_78::LocalPointer ::~LocalPointer()', 'strcmp', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::CharString::toStringPiece() const', 'locale_getKeywordsStart_78', 'icu_78::(anonymous namespace)::AliasReplacer::replaceSubdivision(icu_78::StringPiece, icu_78::CharString&, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::replaceTransformedExtensions(icu_78::CharString&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'icu_78::CharString::data()', 'icu_78::LocalPointerBase ::operator->() const', 'icu_78::CharString icu_78::Locale::getKeywordValue (icu_78::StringPiece, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::CharString::CharString()', 'icu_78::Locale::setKeywordValue(char const*, char const*, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::outputToString(icu_78::CharString&, UErrorCode&)', 'strlen', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::getName() const', 'icu_78::Locale::createKeywords(UErrorCode&) const', 'icu_78::Locale::~Locale()']

7872 21962 icu_78::(anonymousnamespace)::AliasReplacer::replace(icu_78::Localeconst&,icu_78::CharString&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1716
7053 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

7053 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380
6855 6871 7 :

['std::__1::basic_string_view >::size[abi:ne180100]() const', 'U_SUCCESS(UErrorCode)', 'icu_78::CharString::toStringPiece() const', 'icu_78::CharString::operator=(icu_78::CharString&&)', 'std::__1::basic_string_view >::operator[][abi:ne180100](unsigned long) const', 'ulocimp_forLanguageTag_78(char const*, int, int*, UErrorCode&)', 'icu_78::StringPiece::operator std::__1::basic_string_view >() const']

7021 15258 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1819
6816 6816 2 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]']

6844 13747 ures_getStringByKey_78 call site: 01260 /src/icu/icu4c/source/common/uresbund.cpp:2565
6816 6816 2 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]']

6816 13632 ures_getByKey_78 call site: 00481 /src/icu/icu4c/source/common/uresbund.cpp:2510
6816 6816 1 :

['(anonymous namespace)::getAliasTargetAsResourceBundle(ResourceData const&, unsigned int, char const*, int, UResourceDataEntry*, char const*, int, UResourceBundle*, UErrorCode*)']

6816 6816 (anonymousnamespace)::init_resb_result(UResourceDataEntry*,unsignedint,charconst*,int,UResourceDataEntry*,charconst*,int,UResourceBundle*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1398
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
162 162 2 :

['std::__1::basic_string_view >::remove_prefix[abi:ne180100](unsigned long)', 'ulocimp_getKeywords_78(std::__1::basic_string_view >, char, icu_78::ByteSink&, bool, UErrorCode&)']

162 378 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1970
130 482 15 :

['icu_78::UnicodeString::UnicodeString(char16_t const*, int)', 'icu_78::UnicodeString::setToBogus()', 'us_arrayCopy(char16_t const*, int, char16_t*, int, int)', 'u_memcpy_78', 'uprv_free_78', 'icu_78::UnicodeString::isBogus() const', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeString::doReplace(int, int, char16_t const*, int, int)', 'u_strlen_78', 'icu_78::UnicodeString::getArrayStart()', 'icu_78::UnicodeString::isBufferWritable() const', 'icu_78::UnicodeString::setLength(int)', 'icu_78::UnicodeString::pinIndices(int&, int&) const', 'icu_78::UnicodeString::cloneArrayIfNeeded(int, int, signed char, int**, signed char)', 'icu_78::(anonymous namespace)::getGrowCapacity(int)']

130 482 icu_78::UnicodeString::doReplace(int,int,char16_tconst*,int,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1526
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
30 30 1 :

['icu_78::FormattedValueStringBuilderImpl::prependSpanInfo(UFieldCategory, int, int, int, UErrorCode&)']

30 683 icu_78::(anonymousnamespace)::FormattedListBuilder::append(icu_78::SimpleFormatterconst&,icu_78::UnicodeStringconst&,int,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/listformatter.cpp:583
28 45 2 :

['icu_78::ListFormatInternal::~ListFormatInternal()', 'icu_78::UMemory::operator delete(void*)']

28 96 icu_78::ListFormatter::getListFormatInternal(icu_78::Localeconst&,charconst*,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/listformatter.cpp:342

Runtime coverage analysis

Covered functions
525
Functions that are reachable but not covered
928
Reachable functions
1979
Percentage of reachable functions covered
53.11%
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/icu/icu4c/source/test/fuzzer/list_format_fuzzer.cpp 2
/src/icu/icu4c/source/common/unicode/stringpiece.h 9
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 1
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uresbund.cpp 55
/src/icu/icu4c/source/common/uloc.cpp 54
/src/icu/icu4c/source/common/locid.cpp 80
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 110
/src/icu/icu4c/source/common/uobject.cpp 6
/src/icu/icu4c/source/common/bytesinkutil.h 14
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 97
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 26
/src/icu/icu4c/source/common/ustring.cpp 11
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 31
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 36
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/i18n/listformatter.cpp 29
/src/icu/icu4c/source/common/hash.h 6
/src/icu/icu4c/source/common/simpleformatter.cpp 3
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/common/unicode/simpleformatter.h 4
/src/icu/icu4c/source/i18n/formattedval_sbimpl.cpp 3
/src/icu/icu4c/source/i18n/unicode/formattedvalue.h 2
/src/icu/icu4c/source/i18n/formatted_string_builder.cpp 10
/src/icu/icu4c/source/i18n/formattedvalue.cpp 4
/src/icu/icu4c/source/i18n/unicode/listformatter.h 2
/src/icu/icu4c/source/i18n/formattedval_impl.h 1
/src/icu/icu4c/source/i18n/formatted_string_builder.h 5
/src/icu/icu4c/source/common/unicode/appendable.h 2
/src/icu/icu4c/source/common/appendable.cpp 1

Fuzzer: converter_fuzzer

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 247 41.2%
gold [1:9] 113 18.8%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 239 39.8%
All colors 599 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
989 989 2 :

['U_FAILURE(UErrorCode) [clone .3263]', 'u_getDefaultConverter_78']

1146 1256 icu_78::UnicodeString::extract(char*,int,UConverter*,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/unistr_cnv.cpp:227
157 157 1 :

['u_releaseDefaultConverter_78']

157 157 icu_78::UnicodeString::extract(char*,int,UConverter*,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/unistr_cnv.cpp:242
62 62 1 :

['ucnv_extContinueMatchFromU_78']

149 430 ucnv_MBCSFromUnicodeWithOffsets_78 call site: 00000 /src/icu/icu4c/source/common/ucnvmbcs.cpp:4097
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
36 36 2 :

['_uhash_rehash(UHashtable*, UErrorCode*)', 'U_FAILURE(UErrorCode) [clone .5931]']

36 58 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:494
14 14 1 :

['icu_78::UnicodeString::setToBogus()']

14 16 icu_78::UnicodeString::UnicodeString(signedchar,icu_78::ConstChar16Ptr,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:247
10 83 4 :

['strchr', 'strrchr', 'uprv_pathIsAbsolute_78', 'icu_78::CharString::append(char const*, int, UErrorCode&)']

880 4295 doOpenChoice(charconst*,charconst*,charconst*,signedchar(*)(void*,charconst*,charconst*,UDataInfoconst*),void*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:1202
2 2 1 :

['strlen']

75 230 icu_78::CharString::append(charconst*,int,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/charstr.cpp:129
2 2 1 :

['u_strlen_78']

2 11 icu_78::UnicodeString::UnicodeString(signedchar,icu_78::ConstChar16Ptr,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:253
2 2 1 :

['icu_78::UnicodeString::setToEmpty()']

2 4 icu_78::UnicodeString::UnicodeString(signedchar,icu_78::ConstChar16Ptr,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:244
2 2 1 :

['u_memcpy_78']

2 2 _fromUnicodeWithCallback(UConverterFromUnicodeArgs*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/ucnv.cpp:1064
0 811 3 :

['haveAliasData(UErrorCode*)', 'isAlias(char const*, UErrorCode*)', 'findConverter(char const*, signed char*, UErrorCode*)']

0 811 ucnv_io_getConverterName_78 call site: 00477 /src/icu/icu4c/source/common/ucnv_io.cpp:748

Runtime coverage analysis

Covered functions
255
Functions that are reachable but not covered
99
Reachable functions
352
Percentage of reachable functions covered
71.88%
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/icu/icu4c/source/test/fuzzer/converter_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/char16ptr.h 4
/src/icu/icu4c/source/common/unistr.cpp 6
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 10
/src/icu/icu4c/source/common/uobject.cpp 3
/src/icu/icu4c/source/common/umutex.h 8
/src/icu/icu4c/source/common/cmemory.cpp 2
/src/icu/icu4c/source/common/ustring.cpp 4
/src/icu/icu4c/source/common/ucnv.cpp 11
/src/icu/icu4c/source/common/ucnv_bld.cpp 23
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/ustr_cnv.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/uhash.cpp 21
/src/icu/icu4c/source/common/ucnv_io.cpp 11
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 1
/src/icu/icu4c/source/common/charstr.h 11
/src/icu/icu4c/source/common/cmemory.h 8
/src/icu/icu4c/source/common/stringpiece.cpp 1
/src/icu/icu4c/source/common/unicode/stringpiece.h 4
/src/icu/icu4c/source/common/charstr.cpp 6
/src/icu/icu4c/source/common/putil.cpp 8
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/unistr_cnv.cpp 2

Fuzzer: collator_compare_fuzzer

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 2165 47.1%
gold [1:9] 618 13.4%
yellow [10:29] 59 1.28%
greenyellow [30:49] 76 1.65%
lawngreen 50+ 1675 36.4%
All colors 4593 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
7126 21814 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::clear()', 'icu_78::LocalPointer ::LocalPointer(icu_78::StringEnumeration*)', 'icu_78::LocalPointer ::~LocalPointer()', 'strcmp', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::CharString::toStringPiece() const', 'locale_getKeywordsStart_78', 'icu_78::(anonymous namespace)::AliasReplacer::replaceSubdivision(icu_78::StringPiece, icu_78::CharString&, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::replaceTransformedExtensions(icu_78::CharString&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'icu_78::CharString::data()', 'icu_78::LocalPointerBase ::operator->() const', 'icu_78::CharString icu_78::Locale::getKeywordValue (icu_78::StringPiece, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::CharString::CharString()', 'icu_78::Locale::setKeywordValue(char const*, char const*, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::outputToString(icu_78::CharString&, UErrorCode&)', 'strlen', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::getName() const', 'icu_78::Locale::createKeywords(UErrorCode&) const', 'icu_78::Locale::~Locale()']

7126 21962 icu_78::(anonymousnamespace)::AliasReplacer::replace(icu_78::Localeconst&,icu_78::CharString&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1716
7051 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

7051 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380
6921 13775 3 :

['icu_78::Locale::Locale()', 'icu_78::ICULocaleService::get(icu_78::Locale const&, icu_78::Locale*, UErrorCode&) const', 'icu_78::Locale::~Locale()']

6921 20687 icu_78::Collator::createInstance(icu_78::Localeconst&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/coll.cpp:443
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
1028 1028 3 :

['icu_78::UnicodeSetStringSpan::~UnicodeSetStringSpan()', 'icu_78::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_78::UnicodeSet const&, icu_78::UVector const&, unsigned int)', 'icu_78::UnicodeSetStringSpan::needsStringSpanUTF16()']

1028 1197 icu_78::UnicodeSet::freeze() call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2177
187 2893 24 :

['icu_78::CollationData::getCE32(int) const', 'icu_78::CollationData::readCE32(char16_t const*)', 'icu_78::Collation::lengthFromCE32(unsigned int)', 'icu_78::Collation::latinCE0FromCE32(unsigned int)', 'icu_78::CollationIterator::backwardNumSkipped(int, UErrorCode&)', 'U_SUCCESS(UErrorCode) [clone .2258]', 'icu_78::CollationIterator::CEBuffer::append(long, UErrorCode&)', 'icu_78::CollationData::getCEFromOffsetCE32(int, unsigned int) const', 'icu_78::CollationIterator::getCE32FromPrefix(icu_78::CollationData const*, unsigned int, UErrorCode&)', 'U_FAILURE(UErrorCode) [clone .2264]', 'icu_78::CollationIterator::appendCEsFromCE32(icu_78::CollationData const*, int, unsigned int, signed char, UErrorCode&)', 'icu_78::Collation::unassignedCEFromCodePoint(int)', 'icu_78::Collation::isSpecialCE32(unsigned int)', 'icu_78::Collation::latinCE1FromCE32(unsigned int)', 'icu_78::CollationIterator::nextCE32FromContraction(icu_78::CollationData const*, unsigned int, char16_t const*, unsigned int, int, UErrorCode&)', 'icu_78::Collation::ceFromSimpleCE32(unsigned int)', 'icu_78::Collation::tagFromCE32(unsigned int)', 'icu_78::CollationData::getCE32FromSupplementary(int) const', 'icu_78::CollationIterator::appendNumericCEs(unsigned int, signed char, UErrorCode&)', 'icu_78::CollationIterator::nextSkippedCodePoint(UErrorCode&)', 'icu_78::Collation::indexFromCE32(unsigned int)', 'icu_78::Collation::ceFromLongSecondaryCE32(unsigned int)', 'icu_78::CollationFCD::mayHaveLccc(int)', 'icu_78::Collation::ceFromLongPrimaryCE32(unsigned int)']

187 3049 icu_78::CollationIterator::appendCEsFromCE32(icu_78::CollationDataconst*,int,unsignedint,signedchar,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/collationiterator.cpp:381
168 3861 16 :

['icu_78::(anonymous namespace)::compareNFDIter(icu_78::Normalizer2Impl const&, icu_78::(anonymous namespace)::NFDIterator&, icu_78::(anonymous namespace)::NFDIterator&)', 'icu_78::(anonymous namespace)::UTF16NFDIterator::UTF16NFDIterator(char16_t const*, char16_t const*)', 'icu_78::FCDUTF16CollationIterator::FCDUTF16CollationIterator(icu_78::CollationData const*, signed char, char16_t const*, char16_t const*, char16_t const*)', 'icu_78::CollationCompare::compareUpToQuaternary(icu_78::CollationIterator&, icu_78::CollationIterator&, icu_78::CollationSettings const&, UErrorCode&)', 'icu_78::FCDUTF16CollationIterator::~FCDUTF16CollationIterator()', 'icu_78::UTF16CollationIterator::UTF16CollationIterator(icu_78::CollationData const*, signed char, char16_t const*, char16_t const*, char16_t const*)', 'icu_78::(anonymous namespace)::FCDUTF16NFDIterator::~FCDUTF16NFDIterator()', 'icu_78::CollationData::isUnsafeBackward(int, signed char) const', 'U_FAILURE(UErrorCode) [clone .965]', 'icu_78::(anonymous namespace)::UTF16NFDIterator::~UTF16NFDIterator()', 'icu_78::CollationSettings::dontCheckFCD() const', 'icu_78::UTF16CollationIterator::~UTF16CollationIterator()', 'icu_78::(anonymous namespace)::FCDUTF16NFDIterator::FCDUTF16NFDIterator(icu_78::Normalizer2Impl const&, char16_t const*, char16_t const*)', 'icu_78::CollationSettings::isNumeric() const', 'icu_78::CollationSettings::getStrength() const', 'icu_78::CollationFastLatin::compareUTF16(unsigned short const*, unsigned short const*, int, char16_t const*, int, char16_t const*, int)']

168 3861 icu_78::RuleBasedCollator::doCompare(char16_tconst*,int,char16_tconst*,int,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/i18n/rulebasedcollator.cpp:995
87 107 4 :

['U_FAILURE(UErrorCode) [clone .4105]', 'icu_78::UnicodeSet::allocateStrings(UErrorCode&)', 'icu_78::UnicodeSet::setToBogus()', 'icu_78::UVector::assign(icu_78::UVector const&, void (*)(UElement*, UElement*), UErrorCode&)']

103 129 icu_78::UnicodeSet::UnicodeSet(icu_78::UnicodeSetconst&,signedchar) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:171
55 202 3 :

['icu_78::Normalizer2Impl::copyLowPrefixFromNulTerminated(char16_t const*, int, icu_78::ReorderingBuffer*, UErrorCode&) const', 'u_strchr_78', 'icu_78::Normalizer2Impl::getFCD16(int) const']

55 795 icu_78::Normalizer2Impl::makeFCD(char16_tconst*,char16_tconst*,icu_78::ReorderingBuffer*,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:2312
55 161 3 :

['icu_78::Normalizer2Impl::copyLowPrefixFromNulTerminated(char16_t const*, int, icu_78::ReorderingBuffer*, UErrorCode&) const', 'U_FAILURE(UErrorCode) [clone .7900]', 'u_strchr_78']

57 487 icu_78::Normalizer2Impl::decompose(char16_tconst*,char16_tconst*,icu_78::ReorderingBuffer*,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:589
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621

Runtime coverage analysis

Covered functions
1035
Functions that are reachable but not covered
752
Reachable functions
2300
Percentage of reachable functions covered
67.3%
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/icu/icu4c/source/test/fuzzer/collator_compare_fuzzer.cpp 1
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 1
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/umutex.h 12
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uresbund.cpp 54
/src/icu/icu4c/source/common/uloc.cpp 56
/src/icu/icu4c/source/common/locid.cpp 87
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 101
/src/icu/icu4c/source/common/cstring.cpp 9
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 28
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 27
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 29
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 20
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 3
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 10
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 4
/src/icu/icu4c/source/common/utf_impl.cpp 4
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 9
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/i18n/coll.cpp 12
/src/icu/icu4c/source/common/servls.cpp 4
/src/icu/icu4c/source/common/serv.cpp 5
/src/icu/icu4c/source/common/servnotf.cpp 2
/src/icu/icu4c/source/common/servrbf.cpp 1
/src/icu/icu4c/source/common/servlkf.cpp 2
/src/icu/icu4c/source/common/serv.h 1
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/common/locutil.cpp 1
/src/icu/icu4c/source/i18n/ucol_res.cpp 4
/src/icu/icu4c/source/i18n/collationroot.cpp 3
/src/icu/icu4c/source/i18n/collationtailoring.cpp 3
/src/icu/icu4c/source/common/sharedobject.h 9
/src/icu/icu4c/source/i18n/collationsettings.h 4
/src/icu/icu4c/source/common/sharedobject.cpp 5
/src/icu/icu4c/source/i18n/collationtailoring.h 2
/src/icu/icu4c/source/i18n/collationdatareader.cpp 3
/src/icu/icu4c/source/common/normalizer2.cpp 12
/src/icu/icu4c/source/common/normalizer2impl.h 1
/src/icu/icu4c/source/common/normalizer2impl.cpp 1
/src/icu/icu4c/source/common/norm2allmodes.h 5
/src/icu/icu4c/source/common/unicode/normalizer2.h 1
/src/icu/icu4c/source/i18n/collationdata.h 1
/src/icu/icu4c/source/common/utrie2.cpp 1
/src/icu/icu4c/source/common/uniset.cpp 31
/src/icu/icu4c/source/common/unicode/unifilt.h 2
/src/icu/icu4c/source/common/unicode/unifunct.h 2
/src/icu/icu4c/source/common/unicode/unimatch.h 2
/src/icu/icu4c/source/common/unicode/uniset.h 2
/src/icu/icu4c/source/common/unifilt.cpp 2
/src/icu/icu4c/source/common/unifunct.cpp 1
/src/icu/icu4c/source/common/uset.cpp 3
/src/icu/icu4c/source/common/unisetspan.cpp 29
/src/icu/icu4c/source/common/bmpset.cpp 9
/src/icu/icu4c/source/common/bmpset.h 1
/src/icu/icu4c/source/common/unisetspan.h 3
/src/icu/icu4c/source/i18n/collationfastlatin.cpp 1
/src/icu/icu4c/source/i18n/collationdata.cpp 7
/src/icu/icu4c/source/i18n/collationsettings.cpp 8
/src/icu/icu4c/source/common/uvectr32.cpp 5
/src/icu/icu4c/source/common/uvectr32.h 4
/src/icu/icu4c/source/common/unifiedcache.cpp 23
/src/icu/icu4c/source/common/unifiedcache.h 6
/src/icu/icu4c/source/i18n/rulebasedcollator.cpp 1

Fuzzer: ucasemap_fuzzer

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 2629 62.3%
gold [1:9] 390 9.25%
yellow [10:29] 57 1.35%
greenyellow [30:49] 11 0.26%
lawngreen 50+ 1129 26.7%
All colors 4216 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
7870 21814 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::clear()', 'icu_78::LocalPointer ::LocalPointer(icu_78::StringEnumeration*)', 'icu_78::LocalPointer ::~LocalPointer()', 'strcmp', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::CharString::toStringPiece() const', 'locale_getKeywordsStart_78', 'icu_78::(anonymous namespace)::AliasReplacer::replaceSubdivision(icu_78::StringPiece, icu_78::CharString&, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::replaceTransformedExtensions(icu_78::CharString&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'icu_78::CharString::data()', 'icu_78::LocalPointerBase ::operator->() const', 'icu_78::CharString icu_78::Locale::getKeywordValue (icu_78::StringPiece, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::CharString::CharString()', 'icu_78::Locale::setKeywordValue(char const*, char const*, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::outputToString(icu_78::CharString&, UErrorCode&)', 'strlen', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::getName() const', 'icu_78::Locale::createKeywords(UErrorCode&) const', 'icu_78::Locale::~Locale()']

7870 21962 icu_78::(anonymousnamespace)::AliasReplacer::replace(icu_78::Localeconst&,icu_78::CharString&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1716
6972 6974 2 :

['CreateLSTMData_78', 'icu_78::LocalPointerBase ::orphan()']

6972 7208 CreateLSTMDataForScript_78 call site: 00000 /src/icu/icu4c/source/common/lstmbe.cpp:805
6964 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

6964 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380
6919 13899 7 :

['icu_78::LocaleBased::LocaleBased(icu_78::CharString*&, icu_78::CharString*&)', 'icu_78::LocaleBased::setLocaleIDs(char const*, char const*, UErrorCode&)', 'U_SUCCESS(UErrorCode) [clone .5607]', 'icu_78::Locale::getName() const', 'icu_78::ICULocaleService::get(icu_78::Locale const&, int, icu_78::Locale*, UErrorCode&) const', 'icu_78::Locale::Locale(char const*, char const*, char const*, char const*)', 'icu_78::Locale::~Locale()']

6919 13899 icu_78::BreakIterator::createInstance(icu_78::Localeconst&,int,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/brkiter.cpp:387
6828 6871 7 :

['std::__1::basic_string_view >::size[abi:ne180100]() const', 'U_SUCCESS(UErrorCode)', 'icu_78::CharString::toStringPiece() const', 'icu_78::CharString::operator=(icu_78::CharString&&)', 'std::__1::basic_string_view >::operator[][abi:ne180100](unsigned long) const', 'ulocimp_forLanguageTag_78(char const*, int, int*, UErrorCode&)', 'icu_78::StringPiece::operator std::__1::basic_string_view >() const']

6994 15258 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1819
6826 6923 3 :

['ures_getString_78', 'ures_close_78', 'ures_getByIndex_78']

6826 6923 ures_getStringWithAlias(UResourceBundleconst*,unsignedint,int,int*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1710
6823 6823 1 :

['uloc_getLanguage_78']

6823 6922 ucasemap_setLocale_78 call site: 03642 /src/icu/icu4c/source/common/ucasemap.cpp:107
6816 13747 7 :

['ures_getByKey_78', 'ures_getString_78', 'ures_close_78', 'U_SUCCESS(UErrorCode) [clone .2765]', 'getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'icu_78::res_getString(icu_78::ResourceTracer const&, ResourceData const*, unsigned int, int*)', 'icu_78::ResourceTracer::ResourceTracer(void const*, char const*)']

6816 13747 ures_getStringByKey_78 call site: 01258 /src/icu/icu4c/source/common/uresbund.cpp:2567
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
6816 6816 2 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]']

6816 13632 ures_getByKey_78 call site: 00479 /src/icu/icu4c/source/common/uresbund.cpp:2510
6816 6816 1 :

['(anonymous namespace)::getAliasTargetAsResourceBundle(ResourceData const&, unsigned int, char const*, int, UResourceDataEntry*, char const*, int, UResourceBundle*, UErrorCode*)']

6816 6816 (anonymousnamespace)::init_resb_result(UResourceDataEntry*,unsignedint,charconst*,int,UResourceDataEntry*,charconst*,int,UResourceBundle*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1398
4668 4668 3 :

['U_SUCCESS(UErrorCode) [clone .10186]', 'DeleteLSTMData_78', 'CreateLSTMBreakEngine_78']

4668 43583 icu_78::ICULanguageBreakFactory::loadEngineFor(int,charconst*) call site: 00000 /src/icu/icu4c/source/common/brkeng.cpp:172

Runtime coverage analysis

Covered functions
1008
Functions that are reachable but not covered
858
Reachable functions
2091
Percentage of reachable functions covered
58.97%
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/icu/icu4c/source/test/fuzzer/ucasemap_fuzzer.cpp 1
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 1
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/umutex.h 10
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uresbund.cpp 58
/src/icu/icu4c/source/common/uloc.cpp 60
/src/icu/icu4c/source/common/locid.cpp 82
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uobject.cpp 6
/src/icu/icu4c/source/common/bytesinkutil.h 19
/src/icu/icu4c/source/common/bytesinkutil.cpp 8
/src/icu/icu4c/source/common/unicode/bytestream.h 4
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 12
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 107
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 29
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 33
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 3
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 22
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/common/ucasemap.cpp 22
/src/icu/icu4c/source/common/ucase.cpp 15
/src/icu/icu4c/source/common/edits.cpp 7
/src/icu/icu4c/source/common/unicode/edits.h 2
/src/icu/icu4c/source/common/ustrcase.cpp 2
/src/icu/icu4c/source/common/ucasemap_titlecase_brkiter.cpp 1
/src/icu/icu4c/source/common/utext.cpp 4
/src/icu/icu4c/source/common/ustr_titlecase_brkiter.cpp 2
/src/icu/icu4c/source/common/brkiter.cpp 13
/src/icu/icu4c/source/common/servls.cpp 3
/src/icu/icu4c/source/common/serv.cpp 5
/src/icu/icu4c/source/common/servnotf.cpp 2
/src/icu/icu4c/source/common/servrbf.cpp 1
/src/icu/icu4c/source/common/servlkf.cpp 2
/src/icu/icu4c/source/common/serv.h 1
/src/icu/icu4c/source/common/locutil.cpp 1
/src/icu/icu4c/source/common/locbased.h 3
/src/icu/icu4c/source/common/locbased.cpp 2
/src/icu/icu4c/source/common/rbbi.cpp 4
/src/icu/icu4c/source/common/uchriter.cpp 2
/src/icu/icu4c/source/common/chariter.cpp 4
/src/icu/icu4c/source/common/rbbi_cache.cpp 4
/src/icu/icu4c/source/common/uvectr32.cpp 3
/src/icu/icu4c/source/common/rbbidata.cpp 6
/src/icu/icu4c/source/common/ucptrie.cpp 3
/src/icu/icu4c/source/common/filteredbrk.cpp 6
/src/icu/icu4c/source/common/ucasemap_imp.h 2
/src/icu/icu4c/source/common/uchar.cpp 1

Fuzzer: uregex_match_fuzzer

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 4266 56.8%
gold [1:9] 512 6.82%
yellow [10:29] 123 1.63%
greenyellow [30:49] 33 0.43%
lawngreen 50+ 2571 34.2%
All colors 7505 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
7056 13927 8 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::CharString::data()', 'icu_78::CharString::CharString()', 'icu_78::Locale::init(char const*, signed char)', 'icu_78::(anonymous namespace)::canonicalizeLocale(icu_78::Locale const&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::~CharString()', 'icu_78::Locale::setToBogus()', 'icu_78::(anonymous namespace)::isKnownCanonicalizedLocale(char const*, UErrorCode&)']

7056 13927 icu_78::Locale::init(icu_78::StringPiece,signedchar) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1967
6972 6974 2 :

['CreateLSTMData_78', 'icu_78::LocalPointerBase ::orphan()']

6972 7208 CreateLSTMDataForScript_78 call site: 00000 /src/icu/icu4c/source/common/lstmbe.cpp:805
6919 13899 7 :

['icu_78::LocaleBased::LocaleBased(icu_78::CharString*&, icu_78::CharString*&)', 'icu_78::LocaleBased::setLocaleIDs(char const*, char const*, UErrorCode&)', 'U_SUCCESS(UErrorCode) [clone .5607]', 'icu_78::Locale::getName() const', 'icu_78::ICULocaleService::get(icu_78::Locale const&, int, icu_78::Locale*, UErrorCode&) const', 'icu_78::Locale::Locale(char const*, char const*, char const*, char const*)', 'icu_78::Locale::~Locale()']

6919 13899 icu_78::BreakIterator::createInstance(icu_78::Localeconst&,int,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/brkiter.cpp:387
6855 6871 7 :

['std::__1::basic_string_view >::size[abi:ne180100]() const', 'U_SUCCESS(UErrorCode)', 'icu_78::CharString::toStringPiece() const', 'icu_78::CharString::operator=(icu_78::CharString&&)', 'std::__1::basic_string_view >::operator[][abi:ne180100](unsigned long) const', 'ulocimp_forLanguageTag_78(char const*, int, int*, UErrorCode&)', 'icu_78::StringPiece::operator std::__1::basic_string_view >() const']

7021 15258 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1819
6826 6923 3 :

['ures_getString_78', 'ures_close_78', 'ures_getByIndex_78']

6826 6923 ures_getStringWithAlias(UResourceBundleconst*,unsignedint,int,int*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1710
6822 13643 6 :

['loadParentsExceptRoot(UResourceDataEntry*&, char*, int, signed char, char*, UErrorCode*)', 'insertRootBundle(UResourceDataEntry*&, UErrorCode*)', 'strcmp', 'U_FAILURE(UErrorCode) [clone .2757]', 'chopLocale(char*)', 'strcpy']

6822 13671 entryOpenDirect(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:997
6816 13747 7 :

['ures_getByKey_78', 'ures_getString_78', 'ures_close_78', 'U_SUCCESS(UErrorCode) [clone .2765]', 'getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'icu_78::res_getString(icu_78::ResourceTracer const&, ResourceData const*, unsigned int, int*)', 'icu_78::ResourceTracer::ResourceTracer(void const*, char const*)']

6816 13747 ures_getStringByKey_78 call site: 04363 /src/icu/icu4c/source/common/uresbund.cpp:2567
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
6816 6816 2 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]']

6816 13632 ures_getByKey_78 call site: 03836 /src/icu/icu4c/source/common/uresbund.cpp:2510
6816 6816 1 :

['(anonymous namespace)::getAliasTargetAsResourceBundle(ResourceData const&, unsigned int, char const*, int, UResourceDataEntry*, char const*, int, UResourceBundle*, UErrorCode*)']

6816 6816 (anonymousnamespace)::init_resb_result(UResourceDataEntry*,unsignedint,charconst*,int,UResourceDataEntry*,charconst*,int,UResourceBundle*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1398
4668 4668 3 :

['U_SUCCESS(UErrorCode) [clone .10186]', 'DeleteLSTMData_78', 'CreateLSTMBreakEngine_78']

4668 43583 icu_78::ICULanguageBreakFactory::loadEngineFor(int,charconst*) call site: 00000 /src/icu/icu4c/source/common/brkeng.cpp:172
1089 1091 3 :

['icu_78::EmojiProps::addStrings(USetAdder const*, UProperty, UErrorCode&) const', 'icu_78::LocalPointerBase ::getAlias() const', 'icu_78::EmojiProps::getSingleton(UErrorCode&)']

1089 5306 (anonymousnamespace)::makeSet(UProperty,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/characterproperties.cpp:291

Runtime coverage analysis

Covered functions
1083
Functions that are reachable but not covered
1443
Reachable functions
3180
Percentage of reachable functions covered
54.62%
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/icu/icu4c/source/test/fuzzer/uregex_match_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/char16ptr.h 12
/src/icu/icu4c/source/common/unistr.cpp 49
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/unicode/unistr.h 46
/src/icu/icu4c/source/common/uobject.cpp 6
/src/icu/icu4c/source/common/umutex.h 14
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/ustring.cpp 15
/src/icu/icu4c/source/i18n/repattrn.cpp 9
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/uvectr64.cpp 8
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uvectr32.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 26
/src/icu/icu4c/source/common/uniset.cpp 62
/src/icu/icu4c/source/common/unicode/unifilt.h 2
/src/icu/icu4c/source/common/unicode/unifunct.h 2
/src/icu/icu4c/source/common/unicode/unimatch.h 2
/src/icu/icu4c/source/i18n/regeximp.h 4
/src/icu/icu4c/source/common/uvector.h 11
/src/icu/icu4c/source/common/unisetspan.cpp 30
/src/icu/icu4c/source/common/unifilt.cpp 2
/src/icu/icu4c/source/common/unifunct.cpp 1
/src/icu/icu4c/source/common/utext.cpp 15
/src/icu/icu4c/source/common/uhash.cpp 27
/src/icu/icu4c/source/i18n/regexcmp.cpp 36
/src/icu/icu4c/source/common/ustack.cpp 5
/src/icu/icu4c/source/i18n/regexst.cpp 5
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/common/unicode/uniset.h 6
/src/icu/icu4c/source/common/bmpset.cpp 10
/src/icu/icu4c/source/common/bmpset.h 1
/src/icu/icu4c/source/common/ustrtrns.cpp 4
/src/icu/icu4c/source/common/unisetspan.h 3
/src/icu/icu4c/source/common/utf_impl.cpp 4
/src/icu/icu4c/source/common/uniset_props.cpp 22
/src/icu/icu4c/source/common/unicode/parsepos.h 3
/src/icu/icu4c/source/common/ruleiter.cpp 10
/src/icu/icu4c/source/common/patternprops.cpp 2
/src/icu/icu4c/source/common/putil.cpp 13
/src/icu/icu4c/source/common/util.cpp 4
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/charstr.cpp 12
/src/icu/icu4c/source/common/propname.cpp 14
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/characterproperties.cpp 7
/src/icu/icu4c/source/common/uprops.cpp 9
/src/icu/icu4c/source/common/unicode/localpointer.h 123
/src/icu/icu4c/source/common/uchar.cpp 8
/src/icu/icu4c/source/common/utrie2.cpp 2
/src/icu/icu4c/source/common/normalizer2.cpp 12
/src/icu/icu4c/source/common/normalizer2impl.h 15
/src/icu/icu4c/source/common/normalizer2impl.cpp 12
/src/icu/icu4c/source/common/norm2allmodes.h 5
/src/icu/icu4c/source/common/unicode/normalizer2.h 1
/src/icu/icu4c/source/common/ucptrie.cpp 9
/src/icu/icu4c/source/common/ucase.cpp 22
/src/icu/icu4c/source/common/loadednormalizer2impl.cpp 10
/src/icu/icu4c/source/common/udata.cpp 22
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/umutablecptrie.cpp 55
/src/icu/icu4c/source/common/ubidi_props.cpp 2
/src/icu/icu4c/source/common/emojiprops.cpp 9
/src/icu/icu4c/source/common/emojiprops.h 2
/src/icu/icu4c/source/common/unames.cpp 17
/src/icu/icu4c/source/common/ucharstrieiterator.cpp 4
/src/icu/icu4c/source/common/uvectr32.h 7
/src/icu/icu4c/source/common/unicode/ucharstrie.h 8
/src/icu/icu4c/source/common/parsepos.cpp 1
/src/icu/icu4c/source/common/ruleiter.h 1
/src/icu/icu4c/source/i18n/regextxt.cpp 2
/src/icu/icu4c/source/common/uvectr64.h 9
/src/icu/icu4c/source/common/unistr_case.cpp 3
/src/icu/icu4c/source/common/unicode/edits.h 10
/src/icu/icu4c/source/common/edits.cpp 12
/src/icu/icu4c/source/common/ustrcase.cpp 17
/src/icu/icu4c/source/common/uniset_closure.cpp 9
/src/icu/icu4c/source/common/locid.cpp 86
/src/icu/icu4c/source/common/uloc.cpp 56
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uresbund.cpp 56
/src/icu/icu4c/source/common/unicode/locid.h 9
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uresimp.h 2
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/brkiter.cpp 14
/src/icu/icu4c/source/common/servls.cpp 3
/src/icu/icu4c/source/common/serv.cpp 5
/src/icu/icu4c/source/common/servnotf.cpp 2
/src/icu/icu4c/source/common/servrbf.cpp 1
/src/icu/icu4c/source/common/servlkf.cpp 2
/src/icu/icu4c/source/common/serv.h 1
/src/icu/icu4c/source/common/locutil.cpp 1
/src/icu/icu4c/source/common/locbased.h 3
/src/icu/icu4c/source/common/locbased.cpp 2
/src/icu/icu4c/source/common/rbbi.cpp 4
/src/icu/icu4c/source/common/uchriter.cpp 2
/src/icu/icu4c/source/common/chariter.cpp 4
/src/icu/icu4c/source/common/rbbi_cache.cpp 4
/src/icu/icu4c/source/common/rbbidata.cpp 6
/src/icu/icu4c/source/common/filteredbrk.cpp 6
/src/icu/icu4c/source/common/unistr_case_locale.cpp 2
/src/icu/icu4c/source/common/ustrcase_locale.cpp 1
/src/icu/icu4c/source/common/unistr_titlecase_brkiter.cpp 2
/src/icu/icu4c/source/common/ustr_titlecase_brkiter.cpp 2
/src/icu/icu4c/source/i18n/rematch.cpp 23
/src/icu/icu4c/source/i18n/regeximp.cpp 9

Fuzzer: locale_fuzzer

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 2402 67.3%
gold [1:9] 329 9.22%
yellow [10:29] 27 0.75%
greenyellow [30:49] 75 2.10%
lawngreen 50+ 734 20.5%
All colors 3567 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
7056 13927 8 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::CharString::data()', 'icu_78::CharString::CharString()', 'icu_78::Locale::init(char const*, signed char)', 'icu_78::(anonymous namespace)::canonicalizeLocale(icu_78::Locale const&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::~CharString()', 'icu_78::Locale::setToBogus()', 'icu_78::(anonymous namespace)::isKnownCanonicalizedLocale(char const*, UErrorCode&)']

7056 13927 icu_78::Locale::init(icu_78::StringPiece,signedchar) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1967
6816 20488 6 :

['entryOpen(char const*, char const*, UResOpenType, UErrorCode*)', 'ulocimp_getBaseName_78(std::__1::basic_string_view >, UErrorCode&)', 'icu_78::CharString::data()', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::~CharString()', 'uloc_getDefault_78']

6816 20625 ures_openWithType(UResourceBundle*,charconst*,charconst*,UResOpenType,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:2718
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 01177 /src/icu/icu4c/source/common/uresbund.cpp:2512
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
16 16 5 :

['strcat', 'strchr', 'strlen', 'strcmp', 'strncat']

16 62 uprv_getDefaultLocaleID_78 call site: 00050 /src/icu/icu4c/source/common/putil.cpp:1747
12 16 2 :

['uprv_realloc_78', 'uprv_malloc_78']

16 20 ures_appendResPath(UResourceBundle*,charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1091
10 83 4 :

['strchr', 'strrchr', 'uprv_pathIsAbsolute_78', 'icu_78::CharString::append(char const*, int, UErrorCode&)']

686 4295 doOpenChoice(charconst*,charconst*,charconst*,signedchar(*)(void*,charconst*,charconst*,UDataInfoconst*),void*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:1202
9 9 1 :

['uprv_strdup_78']

6881 14623 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:563
7 188 4 :

['icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'res_getTableItemByIndex_78', 'res_getArrayItem_78', 'icu_78::CharString::clear()']

7 7350 (anonymousnamespace)::getAliasTargetAsResourceBundle(ResourceDataconst&,unsignedint,charconst*,int,UResourceDataEntry*,charconst*,int,UResourceBundle*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1264

Runtime coverage analysis

Covered functions
395
Functions that are reachable but not covered
902
Reachable functions
1727
Percentage of reachable functions covered
47.77%
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/icu/icu4c/source/test/fuzzer/locale_fuzzer.cpp 4
/src/icu/icu4c/source/common/locid.cpp 79
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/uloc.cpp 54
/src/icu/icu4c/source/common/bytesinkutil.h 14
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 86
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresbund.cpp 52
/src/icu/icu4c/source/common/unicode/locid.h 9
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/uresimp.h 2
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 23
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 27
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3

Fuzzer: uloc_get_name_fuzzer

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 2438 68.4%
gold [1:9] 361 10.1%
yellow [10:29] 21 0.58%
greenyellow [30:49] 70 1.96%
lawngreen 50+ 674 18.9%
All colors 3564 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
7056 13927 8 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::CharString::data()', 'icu_78::CharString::CharString()', 'icu_78::Locale::init(char const*, signed char)', 'icu_78::(anonymous namespace)::canonicalizeLocale(icu_78::Locale const&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::~CharString()', 'icu_78::Locale::setToBogus()', 'icu_78::(anonymous namespace)::isKnownCanonicalizedLocale(char const*, UErrorCode&)']

7056 13927 icu_78::Locale::init(icu_78::StringPiece,signedchar) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1967
6816 20488 6 :

['entryOpen(char const*, char const*, UResOpenType, UErrorCode*)', 'ulocimp_getBaseName_78(std::__1::basic_string_view >, UErrorCode&)', 'icu_78::CharString::data()', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::~CharString()', 'uloc_getDefault_78']

6816 20625 ures_openWithType(UResourceBundle*,charconst*,charconst*,UResOpenType,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:2718
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 01168 /src/icu/icu4c/source/common/uresbund.cpp:2512
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
16 16 5 :

['strcat', 'strchr', 'strlen', 'strcmp', 'strncat']

16 62 uprv_getDefaultLocaleID_78 call site: 00044 /src/icu/icu4c/source/common/putil.cpp:1747
12 16 2 :

['uprv_realloc_78', 'uprv_malloc_78']

16 20 ures_appendResPath(UResourceBundle*,charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1091
10 83 4 :

['strchr', 'strrchr', 'uprv_pathIsAbsolute_78', 'icu_78::CharString::append(char const*, int, UErrorCode&)']

686 4295 doOpenChoice(charconst*,charconst*,charconst*,signedchar(*)(void*,charconst*,charconst*,UDataInfoconst*),void*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:1202
9 9 1 :

['uprv_strdup_78']

6881 14623 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:563
7 188 4 :

['icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'res_getTableItemByIndex_78', 'res_getArrayItem_78', 'icu_78::CharString::clear()']

7 7350 (anonymousnamespace)::getAliasTargetAsResourceBundle(ResourceDataconst&,unsignedint,charconst*,int,UResourceDataEntry*,charconst*,int,UResourceBundle*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1264

Runtime coverage analysis

Covered functions
394
Functions that are reachable but not covered
907
Reachable functions
1728
Percentage of reachable functions covered
47.51%
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/icu/icu4c/source/test/fuzzer/uloc_get_name_fuzzer.cpp 1
/src/icu/icu4c/source/test/fuzzer/locale_util.cpp 1
/src/icu/icu4c/source/common/uloc.cpp 56
/src/icu/icu4c/source/common/locid.cpp 79
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 86
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresbund.cpp 52
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/uresimp.h 2
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 23
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 27
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3

Fuzzer: collator_rulebased_fuzzer

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 2866 40.4%
gold [1:9] 589 8.31%
yellow [10:29] 63 0.88%
greenyellow [30:49] 75 1.05%
lawngreen 50+ 3490 49.2%
All colors 7083 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
7056 13927 8 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::CharString::data()', 'icu_78::CharString::CharString()', 'icu_78::Locale::init(char const*, signed char)', 'icu_78::(anonymous namespace)::canonicalizeLocale(icu_78::Locale const&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::~CharString()', 'icu_78::Locale::setToBogus()', 'icu_78::(anonymous namespace)::isKnownCanonicalizedLocale(char const*, UErrorCode&)']

7056 13927 icu_78::Locale::init(icu_78::StringPiece,signedchar) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1967
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
1089 1091 3 :

['icu_78::EmojiProps::addStrings(USetAdder const*, UProperty, UErrorCode&) const', 'icu_78::LocalPointerBase ::getAlias() const', 'icu_78::EmojiProps::getSingleton(UErrorCode&)']

1089 5306 (anonymousnamespace)::makeSet(UProperty,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/characterproperties.cpp:291
1028 1028 3 :

['icu_78::UnicodeSetStringSpan::~UnicodeSetStringSpan()', 'icu_78::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_78::UnicodeSet const&, icu_78::UVector const&, unsigned int)', 'icu_78::UnicodeSetStringSpan::needsStringSpanUTF16()']

1028 1197 icu_78::UnicodeSet::freeze() call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2177
241 1896 16 :

['icu_78::internal::USetCodePoints::begin() const', 'icu_78::CollationData::getCE32(int) const', 'icu_78::UCharsTrieBuilder::add(icu_78::UnicodeString const&, int, UErrorCode&)', 'icu_78::UCharsTrieBuilder::~UCharsTrieBuilder()', 'icu_78::CollationDataBuilder::addContextTrie(unsigned int, icu_78::UCharsTrieBuilder&, UErrorCode&)', 'icu_78::internal::USetCodePointIterator::operator*() const', 'icu_78::Collation::hasCE32Tag(unsigned int, int)', 'icu_78::UCharsTrieBuilder::clear()', 'icu_78::UCharsTrieBuilder::UCharsTrieBuilder(UErrorCode&)', 'icu_78::internal::USetCodePoints::end() const', 'icu_78::CollationDataBuilder::copyFromBaseCE32(int, unsigned int, signed char, UErrorCode&)', 'icu_78::internal::USetCodePointIterator::operator++()', 'icu_78::internal::USetCodePointIterator::operator!=(icu_78::internal::USetCodePointIterator const&) const', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeSet::codePoints() const', 'icu_78::UnicodeString::UnicodeString(int)']

241 3227 icu_78::CollationDataBuilder::buildMappings(icu_78::CollationData&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/collationdatabuilder.cpp:1422
162 162 2 :

['std::__1::basic_string_view >::remove_prefix[abi:ne180100](unsigned long)', 'ulocimp_getKeywords_78(std::__1::basic_string_view >, char, icu_78::ByteSink&, bool, UErrorCode&)']

162 378 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1970
161 161 1 :

['icu_78::UnicodeSet::cloneAsThawed() const']

317 1693 icu_78::CollationDataReader::read(icu_78::CollationTailoringconst*,unsignedcharconst*,int,icu_78::CollationTailoring&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/collationdatareader.cpp:267
161 161 1 :

['icu_78::RuleBasedCollator::setAttribute(UColAttribute, UColAttributeValue, UErrorCode&)']

169 217 icu_78::RuleBasedCollator::internalBuildTailoring(icu_78::UnicodeStringconst&,int,UColAttributeValue,UParseError*,icu_78::UnicodeString*,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/collationbuilder.cpp:187
152 152 1 :

['icu_78::CollationSettings::aliasReordering(icu_78::CollationData const&, int const*, int, unsigned int const*, int, unsigned char const*, UErrorCode&)']

152 195 icu_78::CollationDataReader::read(icu_78::CollationTailoringconst*,unsignedcharconst*,int,icu_78::CollationTailoring&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/collationdatareader.cpp:445
144 593 8 :

['icu_78::Normalizer2Impl::singleLeadMightHaveNonZeroFCD16(int) const', 'U_FAILURE(UErrorCode) [clone .7900]', 'icu_78::ReorderingBuffer::appendZeroCC(char16_t const*, char16_t const*, UErrorCode&)', 'icu_78::Normalizer2Impl::findNextFCDBoundary(char16_t const*, char16_t const*) const', 'icu_78::Normalizer2Impl::decomposeShort(char16_t const*, char16_t const*, signed char, signed char, icu_78::ReorderingBuffer&, UErrorCode&) const', 'icu_78::Normalizer2Impl::getFCD16FromNormData(int) const', 'icu_78::ReorderingBuffer::removeSuffix(int)', 'icu_78::ReorderingBuffer::appendZeroCC(int, UErrorCode&)']

144 593 icu_78::Normalizer2Impl::makeFCD(char16_tconst*,char16_tconst*,icu_78::ReorderingBuffer*,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:2416
108 725 7 :

['icu_78::Normalizer2::getNFDInstance(UErrorCode&)', 'u_getCombiningClass_78', 'icu_78::UnicodeString::charAt(int) const', 'icu_78::UnicodeString::operator!=(icu_78::UnicodeString const&) const', 'icu_78::UnicodeString::toUTF32(int*, int, UErrorCode&) const', 'icu_78::UnicodeString::countChar32(int, int) const', 'icu_78::UnicodeString::UnicodeString()']

108 2910 icu_78::CollationDataBuilder::addCE32(icu_78::UnicodeStringconst&,icu_78::UnicodeStringconst&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/collationdatabuilder.cpp:578
55 202 3 :

['icu_78::Normalizer2Impl::copyLowPrefixFromNulTerminated(char16_t const*, int, icu_78::ReorderingBuffer*, UErrorCode&) const', 'u_strchr_78', 'icu_78::Normalizer2Impl::getFCD16(int) const']

199 795 icu_78::Normalizer2Impl::makeFCD(char16_tconst*,char16_tconst*,icu_78::ReorderingBuffer*,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:2312

Runtime coverage analysis

Covered functions
1629
Functions that are reachable but not covered
969
Reachable functions
3540
Percentage of reachable functions covered
72.63%
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/icu/icu4c/source/test/fuzzer/collator_rulebased_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/char16ptr.h 12
/src/icu/icu4c/source/common/unistr.cpp 55
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/unicode/unistr.h 53
/src/icu/icu4c/source/common/uobject.cpp 6
/src/icu/icu4c/source/common/umutex.h 14
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/ustring.cpp 19
/src/icu/icu4c/source/i18n/collationbuilder.cpp 16
/src/icu/icu4c/source/i18n/coll.cpp 3
/src/icu/icu4c/source/common/locid.cpp 84
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/putil.cpp 13
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 120
/src/icu/icu4c/source/common/uloc.cpp 54
/src/icu/icu4c/source/common/bytesinkutil.h 14
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 13
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 127
/src/icu/icu4c/source/common/cstring.cpp 9
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/uresbund.cpp 52
/src/icu/icu4c/source/common/unicode/locid.h 9
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/udatamem.cpp 9
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/uresimp.h 2
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/uvector.cpp 24
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/uvector.h 4
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/propname.cpp 14
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 5
/src/icu/icu4c/source/common/utf_impl.cpp 4
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/i18n/collationroot.cpp 3
/src/icu/icu4c/source/i18n/collationtailoring.cpp 4
/src/icu/icu4c/source/common/sharedobject.h 5
/src/icu/icu4c/source/i18n/collationsettings.h 12
/src/icu/icu4c/source/common/sharedobject.cpp 5
/src/icu/icu4c/source/i18n/collationtailoring.h 2
/src/icu/icu4c/source/i18n/collationdatareader.cpp 3
/src/icu/icu4c/source/common/normalizer2.cpp 16
/src/icu/icu4c/source/common/normalizer2impl.h 29
/src/icu/icu4c/source/common/normalizer2impl.cpp 24
/src/icu/icu4c/source/common/norm2allmodes.h 5
/src/icu/icu4c/source/common/unicode/normalizer2.h 1
/src/icu/icu4c/source/i18n/collationdata.h 8
/src/icu/icu4c/source/common/utrie2.cpp 6
/src/icu/icu4c/source/common/uniset.cpp 60
/src/icu/icu4c/source/common/unicode/unifilt.h 2
/src/icu/icu4c/source/common/unicode/unifunct.h 2
/src/icu/icu4c/source/common/unicode/unimatch.h 2
/src/icu/icu4c/source/common/unicode/uniset.h 5
/src/icu/icu4c/source/common/unifilt.cpp 2
/src/icu/icu4c/source/common/unifunct.cpp 1
/src/icu/icu4c/source/common/uset.cpp 3
/src/icu/icu4c/source/common/unisetspan.cpp 30
/src/icu/icu4c/source/common/bmpset.cpp 10
/src/icu/icu4c/source/common/bmpset.h 1
/src/icu/icu4c/source/common/unisetspan.h 3
/src/icu/icu4c/source/i18n/collationfastlatin.cpp 1
/src/icu/icu4c/source/i18n/collationdata.cpp 9
/src/icu/icu4c/source/i18n/collationsettings.cpp 13
/src/icu/icu4c/source/common/uvectr32.cpp 6
/src/icu/icu4c/source/common/uvectr32.h 6
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/i18n/collationruleparser.h 5
/src/icu/icu4c/source/i18n/collationrootelements.h 6
/src/icu/icu4c/source/i18n/collationdatabuilder.cpp 28
/src/icu/icu4c/source/common/uvectr64.cpp 4
/src/icu/icu4c/source/common/umutablecptrie.cpp 55
/src/icu/icu4c/source/common/ucptrie.cpp 8
/src/icu/icu4c/source/common/utrie2_builder.cpp 14
/src/icu/icu4c/source/i18n/collation.h 25
/src/icu/icu4c/source/i18n/collationruleparser.cpp 25
/src/icu/icu4c/source/common/patternprops.cpp 2
/src/icu/icu4c/source/common/uniset_props.cpp 22
/src/icu/icu4c/source/common/unicode/parsepos.h 3
/src/icu/icu4c/source/common/ruleiter.cpp 10
/src/icu/icu4c/source/common/util.cpp 4
/src/icu/icu4c/source/common/characterproperties.cpp 7
/src/icu/icu4c/source/common/uprops.cpp 9
/src/icu/icu4c/source/common/uchar.cpp 7
/src/icu/icu4c/source/common/ucase.cpp 2
/src/icu/icu4c/source/common/loadednormalizer2impl.cpp 10
/src/icu/icu4c/source/common/ubidi_props.cpp 2
/src/icu/icu4c/source/common/emojiprops.cpp 9
/src/icu/icu4c/source/common/emojiprops.h 2
/src/icu/icu4c/source/common/unames.cpp 17
/src/icu/icu4c/source/common/ucharstrieiterator.cpp 4
/src/icu/icu4c/source/common/unicode/ucharstrie.h 19
/src/icu/icu4c/source/common/parsepos.cpp 1
/src/icu/icu4c/source/common/ruleiter.h 1
/src/icu/icu4c/source/i18n/collationdatabuilder.h 8
/src/icu/icu4c/source/i18n/collationweights.cpp 20
/src/icu/icu4c/source/common/uvectr64.h 5
/src/icu/icu4c/source/i18n/collationbuilder.h 6
/src/icu/icu4c/source/i18n/collationrootelements.cpp 6
/src/icu/icu4c/source/i18n/collationweights.h 2
/src/icu/icu4c/source/i18n/collation.cpp 4
/src/icu/icu4c/source/common/usetiter.cpp 7
/src/icu/icu4c/source/common/unicode/usetiter.h 2
/src/icu/icu4c/source/i18n/collationiterator.h 12
/src/icu/icu4c/source/i18n/collationiterator.cpp 27
/src/icu/icu4c/source/common/ucharstrie.cpp 6
/src/icu/icu4c/source/i18n/collationfcd.h 1
/src/icu/icu4c/source/i18n/rulebasedcollator.cpp 20
/src/icu/icu4c/source/i18n/unicode/tblcoll.h 2
/src/icu/icu4c/source/i18n/sortkey.cpp 5
/src/icu/icu4c/source/i18n/unicode/sortkey.h 3
/src/icu/icu4c/source/i18n/collationkeys.h 6
/src/icu/icu4c/source/i18n/utf16collationiterator.h 2
/src/icu/icu4c/source/i18n/collationkeys.cpp 16
/src/icu/icu4c/source/i18n/utf16collationiterator.cpp 2
/src/icu/icu4c/source/i18n/bocsu.cpp 2
/src/icu/icu4c/source/i18n/collationsets.h 4
/src/icu/icu4c/source/i18n/collationsets.cpp 11

Fuzzer: normalizer2_fuzzer

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 298 55.4%
gold [1:9] 146 27.1%
yellow [10:29] 23 4.28%
greenyellow [30:49] 2 0.37%
lawngreen 50+ 68 12.6%
All colors 537 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
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
55 191 4 :

['icu_78::Normalizer2Impl::copyLowPrefixFromNulTerminated(char16_t const*, int, icu_78::ReorderingBuffer*, UErrorCode&) const', 'icu_78::Normalizer2Impl::hasCompBoundaryAfter(int, signed char) const', 'icu_78::ReorderingBuffer::removeSuffix(int)', 'u_strchr_78']

102 2309 icu_78::Normalizer2Impl::compose(char16_tconst*,char16_tconst*,signedchar,signedchar,icu_78::ReorderingBuffer&,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:1458
55 186 3 :

['icu_78::Normalizer2Impl::copyLowPrefixFromNulTerminated(char16_t const*, int, icu_78::ReorderingBuffer*, UErrorCode&) const', 'icu_78::Normalizer2Impl::hasCompBoundaryAfter(int, signed char) const', 'u_strchr_78']

60 241 icu_78::Normalizer2Impl::composeQuickCheck(char16_tconst*,char16_tconst*,signedchar,UNormalizationCheckResult*)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:1727
55 161 3 :

['icu_78::Normalizer2Impl::copyLowPrefixFromNulTerminated(char16_t const*, int, icu_78::ReorderingBuffer*, UErrorCode&) const', 'U_FAILURE(UErrorCode) [clone .7900]', 'u_strchr_78']

55 487 icu_78::Normalizer2Impl::decompose(char16_tconst*,char16_tconst*,icu_78::ReorderingBuffer*,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:589
55 55 1 :

['u_strchr_78']

55 335 icu_78::Normalizer2Impl::decomposeAndAppend(char16_tconst*,char16_tconst*,signedchar,icu_78::UnicodeString&,icu_78::ReorderingBuffer&,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:1052
55 55 1 :

['u_strchr_78']

55 155 icu_78::Normalizer2Impl::composeAndAppend(char16_tconst*,char16_tconst*,signedchar,signedchar,icu_78::UnicodeString&,icu_78::ReorderingBuffer&,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:1874
36 38 2 :

['icu_78::MaybeStackArray ::getCapacity() const', 'icu_78::MaybeStackArray ::resize(int, int)']

36 38 icu_78::CharString::ensureCapacity(int,int,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/charstr.cpp:234
14 14 1 :

['icu_78::UnicodeString::setToBogus()']

14 16 icu_78::UnicodeString::UnicodeString(signedchar,icu_78::ConstChar16Ptr,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:247
14 14 1 :

['icu_78::UnicodeString::setToBogus()']

14 14 icu_78::Normalizer2WithImpl::normalize(icu_78::UnicodeStringconst&,icu_78::UnicodeString&,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/norm2allmodes.h:47
14 14 1 :

['icu_78::UnicodeString::setToBogus()']

14 14 icu_78::UnicodeString::copyFrom(icu_78::UnicodeStringconst&,signedchar) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:544
14 14 1 :

['icu_78::UnicodeString::setToBogus()']

14 14 icu_78::UnicodeString::setTo(signedchar,icu_78::ConstChar16Ptr,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1356
14 14 1 :

['icu_78::UnicodeString::setToBogus()']

14 14 icu_78::UnicodeString::cloneArrayIfNeeded(int,int,signedchar,int**,signedchar) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1979

Runtime coverage analysis

Covered functions
255
Functions that are reachable but not covered
132
Reachable functions
335
Percentage of reachable functions covered
60.6%
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/icu/icu4c/source/test/fuzzer/normalizer2_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/stringpiece.h 7
/src/icu/icu4c/source/common/unicode/char16ptr.h 4
/src/icu/icu4c/source/common/unistr.cpp 6
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 5
/src/icu/icu4c/source/common/uobject.cpp 3
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/cmemory.cpp 2
/src/icu/icu4c/source/common/ustring.cpp 2
/src/icu/icu4c/source/common/normalizer2.cpp 13
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/normalizer2impl.h 1
/src/icu/icu4c/source/common/normalizer2impl.cpp 1
/src/icu/icu4c/source/common/norm2allmodes.h 5
/src/icu/icu4c/source/common/unicode/normalizer2.h 2
/src/icu/icu4c/source/common/loadednormalizer2impl.cpp 13
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 1
/src/icu/icu4c/source/common/charstr.h 11
/src/icu/icu4c/source/common/cmemory.h 8
/src/icu/icu4c/source/common/stringpiece.cpp 1
/src/icu/icu4c/source/common/charstr.cpp 6
/src/icu/icu4c/source/common/putil.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uhash.cpp 18
/src/icu/icu4c/source/common/ucptrie.cpp 1

Fuzzer: break_iterator_fuzzer

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 1866 46.0%
gold [1:9] 458 11.3%
yellow [10:29] 37 0.91%
greenyellow [30:49] 78 1.92%
lawngreen 50+ 1612 39.7%
All colors 4051 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
6972 6974 2 :

['CreateLSTMData_78', 'icu_78::LocalPointerBase ::orphan()']

6972 7208 CreateLSTMDataForScript_78 call site: 00000 /src/icu/icu4c/source/common/lstmbe.cpp:805
6964 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

6964 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380
6919 13899 7 :

['icu_78::LocaleBased::LocaleBased(icu_78::CharString*&, icu_78::CharString*&)', 'icu_78::LocaleBased::setLocaleIDs(char const*, char const*, UErrorCode&)', 'U_SUCCESS(UErrorCode) [clone .5607]', 'icu_78::Locale::getName() const', 'icu_78::ICULocaleService::get(icu_78::Locale const&, int, icu_78::Locale*, UErrorCode&) const', 'icu_78::Locale::Locale(char const*, char const*, char const*, char const*)', 'icu_78::Locale::~Locale()']

6919 13899 icu_78::BreakIterator::createInstance(icu_78::Localeconst&,int,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/brkiter.cpp:387
6836 13695 4 :

['icu_78::CharString::data()', 'icu_78::Locale::getRoot()', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::Locale(char const*, char const*, char const*, char const*)']

6836 13695 icu_78::BreakIterator::getLocale(ULocDataLocaleType,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/brkiter.cpp:508
6826 6923 3 :

['ures_getString_78', 'ures_close_78', 'ures_getByIndex_78']

6826 6923 ures_getStringWithAlias(UResourceBundleconst*,unsignedint,int,int*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1710
6816 13747 7 :

['ures_getByKey_78', 'ures_getString_78', 'ures_close_78', 'U_SUCCESS(UErrorCode) [clone .2765]', 'getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'icu_78::res_getString(icu_78::ResourceTracer const&, ResourceData const*, unsigned int, int*)', 'icu_78::ResourceTracer::ResourceTracer(void const*, char const*)']

6816 13747 ures_getStringByKey_78 call site: 01267 /src/icu/icu4c/source/common/uresbund.cpp:2567
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 00488 /src/icu/icu4c/source/common/uresbund.cpp:2512
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
4668 4668 3 :

['U_SUCCESS(UErrorCode) [clone .10186]', 'DeleteLSTMData_78', 'CreateLSTMBreakEngine_78']

4668 43583 icu_78::ICULanguageBreakFactory::loadEngineFor(int,charconst*) call site: 00000 /src/icu/icu4c/source/common/brkeng.cpp:172
1089 1091 3 :

['icu_78::EmojiProps::addStrings(USetAdder const*, UProperty, UErrorCode&) const', 'icu_78::LocalPointerBase ::getAlias() const', 'icu_78::EmojiProps::getSingleton(UErrorCode&)']

1089 5306 (anonymousnamespace)::makeSet(UProperty,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/characterproperties.cpp:291
1048 21814 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::clear()', 'icu_78::LocalPointer ::LocalPointer(icu_78::StringEnumeration*)', 'icu_78::LocalPointer ::~LocalPointer()', 'strcmp', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::CharString::toStringPiece() const', 'locale_getKeywordsStart_78', 'icu_78::(anonymous namespace)::AliasReplacer::replaceSubdivision(icu_78::StringPiece, icu_78::CharString&, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::replaceTransformedExtensions(icu_78::CharString&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'icu_78::CharString::data()', 'icu_78::LocalPointerBase ::operator->() const', 'icu_78::CharString icu_78::Locale::getKeywordValue (icu_78::StringPiece, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::CharString::CharString()', 'icu_78::Locale::setKeywordValue(char const*, char const*, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::outputToString(icu_78::CharString&, UErrorCode&)', 'strlen', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::getName() const', 'icu_78::Locale::createKeywords(UErrorCode&) const', 'icu_78::Locale::~Locale()']

1048 21962 icu_78::(anonymousnamespace)::AliasReplacer::replace(icu_78::Localeconst&,icu_78::CharString&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1716
1028 1028 3 :

['icu_78::UnicodeSetStringSpan::~UnicodeSetStringSpan()', 'icu_78::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_78::UnicodeSet const&, icu_78::UVector const&, unsigned int)', 'icu_78::UnicodeSetStringSpan::needsStringSpanUTF16()']

1028 1197 icu_78::UnicodeSet::freeze() call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2177

Runtime coverage analysis

Covered functions
1216
Functions that are reachable but not covered
562
Reachable functions
1964
Percentage of reachable functions covered
71.38%
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/icu/icu4c/source/test/fuzzer/break_iterator_fuzzer.cpp 1
/src/icu/icu4c/source/common/utext.cpp 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 1
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/umutex.h 10
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/uresbund.cpp 58
/src/icu/icu4c/source/common/uloc.cpp 56
/src/icu/icu4c/source/common/locid.cpp 82
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uobject.cpp 6
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 12
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 101
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 29
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 33
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 22
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/common/brkiter.cpp 16
/src/icu/icu4c/source/common/servls.cpp 3
/src/icu/icu4c/source/common/serv.cpp 5
/src/icu/icu4c/source/common/servnotf.cpp 2
/src/icu/icu4c/source/common/servrbf.cpp 1
/src/icu/icu4c/source/common/servlkf.cpp 2
/src/icu/icu4c/source/common/serv.h 1
/src/icu/icu4c/source/common/locutil.cpp 1
/src/icu/icu4c/source/common/locbased.h 3
/src/icu/icu4c/source/common/locbased.cpp 2
/src/icu/icu4c/source/common/rbbi.cpp 4
/src/icu/icu4c/source/common/uchriter.cpp 2
/src/icu/icu4c/source/common/chariter.cpp 4
/src/icu/icu4c/source/common/rbbi_cache.cpp 4
/src/icu/icu4c/source/common/uvectr32.cpp 3
/src/icu/icu4c/source/common/rbbidata.cpp 6
/src/icu/icu4c/source/common/ucptrie.cpp 3
/src/icu/icu4c/source/common/filteredbrk.cpp 6

Fuzzer: plurrule_fuzzer

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 2086 48.9%
gold [1:9] 482 11.3%
yellow [10:29] 36 0.84%
greenyellow [30:49] 63 1.47%
lawngreen 50+ 1596 37.4%
All colors 4263 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
7864 21814 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::clear()', 'icu_78::LocalPointer ::LocalPointer(icu_78::StringEnumeration*)', 'icu_78::LocalPointer ::~LocalPointer()', 'strcmp', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::CharString::toStringPiece() const', 'locale_getKeywordsStart_78', 'icu_78::(anonymous namespace)::AliasReplacer::replaceSubdivision(icu_78::StringPiece, icu_78::CharString&, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::replaceTransformedExtensions(icu_78::CharString&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'icu_78::CharString::data()', 'icu_78::LocalPointerBase ::operator->() const', 'icu_78::CharString icu_78::Locale::getKeywordValue (icu_78::StringPiece, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::CharString::CharString()', 'icu_78::Locale::setKeywordValue(char const*, char const*, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::outputToString(icu_78::CharString&, UErrorCode&)', 'strlen', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::getName() const', 'icu_78::Locale::createKeywords(UErrorCode&) const', 'icu_78::Locale::~Locale()']

7864 21962 icu_78::(anonymousnamespace)::AliasReplacer::replace(icu_78::Localeconst&,icu_78::CharString&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1716
7051 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

7051 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380
6826 6923 3 :

['ures_getString_78', 'ures_close_78', 'ures_getByIndex_78']

6826 6923 ures_getStringWithAlias(UResourceBundleconst*,unsignedint,int,int*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1710
6816 20488 6 :

['entryOpen(char const*, char const*, UResOpenType, UErrorCode*)', 'ulocimp_getBaseName_78(std::__1::basic_string_view >, UErrorCode&)', 'icu_78::CharString::data()', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::~CharString()', 'uloc_getDefault_78']

6816 20625 ures_openWithType(UResourceBundle*,charconst*,charconst*,UResOpenType,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:2718
6816 13747 7 :

['ures_getByKey_78', 'ures_getString_78', 'ures_close_78', 'U_SUCCESS(UErrorCode) [clone .2765]', 'getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'icu_78::res_getString(icu_78::ResourceTracer const&, ResourceData const*, unsigned int, int*)', 'icu_78::ResourceTracer::ResourceTracer(void const*, char const*)']

6816 13747 ures_getStringByKey_78 call site: 01260 /src/icu/icu4c/source/common/uresbund.cpp:2567
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 00481 /src/icu/icu4c/source/common/uresbund.cpp:2512
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
132 482 15 :

['icu_78::UnicodeString::UnicodeString(char16_t const*, int)', 'icu_78::UnicodeString::setToBogus()', 'us_arrayCopy(char16_t const*, int, char16_t*, int, int)', 'u_memcpy_78', 'uprv_free_78', 'icu_78::UnicodeString::isBogus() const', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeString::doReplace(int, int, char16_t const*, int, int)', 'u_strlen_78', 'icu_78::UnicodeString::getArrayStart()', 'icu_78::UnicodeString::isBufferWritable() const', 'icu_78::UnicodeString::setLength(int)', 'icu_78::UnicodeString::pinIndices(int&, int&) const', 'icu_78::UnicodeString::cloneArrayIfNeeded(int, int, signed char, int**, signed char)', 'icu_78::(anonymous namespace)::getGrowCapacity(int)']

132 482 icu_78::UnicodeString::doReplace(int,int,char16_tconst*,int,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1526
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
22 22 1 :

['icu_78::UnicodeString::pinIndex(int&) const']

154 644 icu_78::UnicodeString::doReplace(int,int,char16_tconst*,int,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1507

Runtime coverage analysis

Covered functions
771
Functions that are reachable but not covered
663
Reachable functions
2094
Percentage of reachable functions covered
68.34%
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/icu/icu4c/source/test/fuzzer/plurrule_fuzzer.cpp 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 9
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 1
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uresbund.cpp 58
/src/icu/icu4c/source/common/uloc.cpp 57
/src/icu/icu4c/source/common/locid.cpp 81
/src/icu/icu4c/source/common/putil.cpp 16
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 113
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 104
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 28
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/restrace.h 10
/src/icu/icu4c/source/common/unicode/ures.h 2
/src/icu/icu4c/source/common/unicode/unistr.h 29
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/char16ptr.h 12
/src/icu/icu4c/source/common/unistr.cpp 37
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/i18n/plurrule.cpp 38
/src/icu/icu4c/source/i18n/plurrule_impl.h 4
/src/icu/icu4c/source/common/uvectr32.cpp 6
/src/icu/icu4c/source/common/uvectr32.h 4
/src/icu/icu4c/source/common/util_props.cpp 1
/src/icu/icu4c/source/common/uchar.cpp 2
/src/icu/icu4c/source/i18n/number_decimalquantity.cpp 1
/src/icu/icu4c/source/i18n/pluralranges.cpp 6
/src/icu/icu4c/source/i18n/pluralranges.h 3
/src/icu/icu4c/source/common/unifiedcache.h 8
/src/icu/icu4c/source/common/unifiedcache.cpp 23
/src/icu/icu4c/source/common/sharedobject.h 7
/src/icu/icu4c/source/common/sharedobject.cpp 4
/src/icu/icu4c/source/i18n/sharedpluralrules.h 1

Fuzzer: rule_based_break_iterator_fuzzer

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 928 29.9%
gold [1:9] 200 6.45%
yellow [10:29] 35 1.12%
greenyellow [30:49] 12 0.38%
lawngreen 50+ 1924 62.0%
All colors 3099 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
1028 1028 3 :

['icu_78::UnicodeSetStringSpan::~UnicodeSetStringSpan()', 'icu_78::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_78::UnicodeSet const&, icu_78::UVector const&, unsigned int)', 'icu_78::UnicodeSetStringSpan::needsStringSpanUTF16()']

1068 1197 icu_78::UnicodeSet::freeze() call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2177
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
796 855 2 :

['ucptrie_getRange_78', '(anonymous namespace)::ulayout_ensureData(UErrorCode&)']

796 855 uprops_addPropertyStarts_78 call site: 01286 /src/icu/icu4c/source/common/uprops.cpp:871
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
52 52 2 :

['icu_78::expandName(icu_78::UCharNames*, unsigned char const*, unsigned short, UCharNameChoice, char*, unsigned short)', 'icu_78::getExtName(unsigned int, char*, unsigned short)']

52 52 icu_78::enumGroupNames(icu_78::UCharNames*,unsignedshortconst*,int,int,signedchar(*)(void*,int,UCharNameChoice,charconst*,int),void*,UCharNameChoice) call site: 00000 /src/icu/icu4c/source/common/unames.cpp:607
28 28 1 :

['icu_78::getExtName(unsigned int, char*, unsigned short)']

28 28 icu_78::enumExtNames(int,int,signedchar(*)(void*,int,UCharNameChoice,charconst*,int),void*) call site: 00000 /src/icu/icu4c/source/common/unames.cpp:647
27 27 1 :

['icu_78::UVector32::expandCapacity(int, UErrorCode&)']

27 27 icu_78::UVector32::ensureCapacity(int,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uvectr32.h:216
20 20 1 :

['icu_78::UnicodeSet::setToBogus()']

20 30 icu_78::UnicodeSet::_add(icu_78::UnicodeStringconst&) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:983
20 20 1 :

['icu_78::UnicodeSet::setToBogus()']

20 20 icu_78::UnicodeSet::ensureCapacity(int) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:1648
20 20 1 :

['icu_78::UnicodeSet::setToBogus()']

20 20 icu_78::UnicodeSet::ensureBufferCapacity(int) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:1671
20 20 1 :

['icu_78::UnicodeSet::setToBogus()']

20 20 icu_78::UnicodeSet::freeze() call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2195
17 17 1 :

['udata_close_78']

19 38 icu_78::RBBIDataWrapper::~RBBIDataWrapper() call site: 00000 /src/icu/icu4c/source/common/rbbidata.cpp:154

Runtime coverage analysis

Covered functions
739
Functions that are reachable but not covered
354
Reachable functions
1615
Percentage of reachable functions covered
78.08%
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/icu/icu4c/source/test/fuzzer/rule_based_break_iterator_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/char16ptr.h 10
/src/icu/icu4c/source/common/unistr.cpp 43
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/unicode/unistr.h 41
/src/icu/icu4c/source/common/uobject.cpp 4
/src/icu/icu4c/source/common/umutex.h 13
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/ustring.cpp 12
/src/icu/icu4c/source/common/rbbi.cpp 5
/src/icu/icu4c/source/common/brkiter.cpp 3
/src/icu/icu4c/source/common/uchriter.cpp 3
/src/icu/icu4c/source/common/chariter.cpp 5
/src/icu/icu4c/source/common/utext.cpp 5
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/rbbi_cache.cpp 5
/src/icu/icu4c/source/common/uvectr32.cpp 9
/src/icu/icu4c/source/common/umath.cpp 1
/src/icu/icu4c/source/common/unicode/localpointer.h 47
/src/icu/icu4c/source/common/charstr.h 12
/src/icu/icu4c/source/common/cmemory.h 16
/src/icu/icu4c/source/common/rbbidata.cpp 7
/src/icu/icu4c/source/common/ucptrie.cpp 10
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/rbbirb.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 25
/src/icu/icu4c/source/common/rbbiscan.cpp 12
/src/icu/icu4c/source/common/rbbiscan.h 1
/src/icu/icu4c/source/common/uniset.cpp 57
/src/icu/icu4c/source/common/unicode/unifilt.h 2
/src/icu/icu4c/source/common/unicode/unifunct.h 2
/src/icu/icu4c/source/common/unicode/unimatch.h 2
/src/icu/icu4c/source/common/unisetspan.cpp 30
/src/icu/icu4c/source/common/unifilt.cpp 2
/src/icu/icu4c/source/common/unifunct.cpp 1
/src/icu/icu4c/source/common/putil.cpp 10
/src/icu/icu4c/source/common/uniset_props.cpp 22
/src/icu/icu4c/source/common/unicode/parsepos.h 4
/src/icu/icu4c/source/common/unicode/uniset.h 5
/src/icu/icu4c/source/common/ruleiter.cpp 10
/src/icu/icu4c/source/common/patternprops.cpp 2
/src/icu/icu4c/source/common/util.cpp 4
/src/icu/icu4c/source/common/uinvchar.cpp 2
/src/icu/icu4c/source/common/charstr.cpp 9
/src/icu/icu4c/source/common/propname.cpp 9
/src/icu/icu4c/source/common/unicode/bytestrie.h 7
/src/icu/icu4c/source/common/cstring.cpp 2
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/characterproperties.cpp 7
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/uprops.cpp 9
/src/icu/icu4c/source/common/uchar.cpp 8
/src/icu/icu4c/source/common/utrie2.cpp 2
/src/icu/icu4c/source/common/normalizer2.cpp 12
/src/icu/icu4c/source/common/normalizer2impl.h 15
/src/icu/icu4c/source/common/normalizer2impl.cpp 12
/src/icu/icu4c/source/common/norm2allmodes.h 5
/src/icu/icu4c/source/common/unicode/normalizer2.h 1
/src/icu/icu4c/source/common/ucase.cpp 2
/src/icu/icu4c/source/common/loadednormalizer2impl.cpp 10
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 1
/src/icu/icu4c/source/common/stringpiece.cpp 1
/src/icu/icu4c/source/common/unicode/stringpiece.h 5
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uhash.cpp 18
/src/icu/icu4c/source/common/umutablecptrie.cpp 58
/src/icu/icu4c/source/common/uvector.h 4
/src/icu/icu4c/source/common/ubidi_props.cpp 2
/src/icu/icu4c/source/common/emojiprops.cpp 9
/src/icu/icu4c/source/common/emojiprops.h 2
/src/icu/icu4c/source/common/unames.cpp 17
/src/icu/icu4c/source/common/ucharstrieiterator.cpp 4
/src/icu/icu4c/source/common/uvectr32.h 5
/src/icu/icu4c/source/common/unicode/ucharstrie.h 8
/src/icu/icu4c/source/common/bmpset.cpp 10
/src/icu/icu4c/source/common/bmpset.h 1
/src/icu/icu4c/source/common/ustrtrns.cpp 4
/src/icu/icu4c/source/common/unisetspan.h 3
/src/icu/icu4c/source/common/utf_impl.cpp 4
/src/icu/icu4c/source/common/parsepos.cpp 1
/src/icu/icu4c/source/common/ruleiter.h 1
/src/icu/icu4c/source/common/rbbistbl.cpp 1
/src/icu/icu4c/source/common/unicode/symtable.h 1
/src/icu/icu4c/source/common/rbbisetb.cpp 17
/src/icu/icu4c/source/common/rbbinode.cpp 8
/src/icu/icu4c/source/common/rbbitblb.cpp 35
/src/icu/icu4c/source/common/locbased.h 3
/src/icu/icu4c/source/common/locbased.cpp 2
/src/icu/icu4c/source/common/unicode/chariter.h 1

Fuzzer: date_time_pattern_generator_fuzzer

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 1417 24.6%
gold [1:9] 707 12.3%
yellow [10:29] 97 1.68%
greenyellow [30:49] 102 1.77%
lawngreen 50+ 3423 59.5%
All colors 5746 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
20687 48436 13 :

['__dynamic_cast', 'icu_78::Locale::Locale()', 'icu_78::Calendar::setFirstDayOfWeek(UCalendarDaysOfWeek)', 'strcmp', 'icu_78::Calendar::setMinimalDaysInFirstWeek(unsigned char)', 'icu_78::getCalendarService(UErrorCode&)', 'icu_78::Locale::getKeywordValue(char const*, char*, int, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .1545]', 'icu_78::LocaleUtility::initLocaleFromName(icu_78::UnicodeString const&, icu_78::Locale&)', 'icu_78::ICULocaleService::get(icu_78::Locale const&, int, icu_78::Locale*, UErrorCode&) const', 'U_FAILURE(UErrorCode) [clone .1544]', 'icu_78::Locale::Locale(char const*, char const*, char const*, char const*)', 'icu_78::Calendar::setWeekData(icu_78::Locale const&, char const*, UErrorCode&)']

20687 48550 icu_78::Calendar::makeInstance(icu_78::Localeconst&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/calendar.cpp:883
7864 21814 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::clear()', 'icu_78::LocalPointer ::LocalPointer(icu_78::StringEnumeration*)', 'icu_78::LocalPointer ::~LocalPointer()', 'strcmp', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::CharString::toStringPiece() const', 'locale_getKeywordsStart_78', 'icu_78::(anonymous namespace)::AliasReplacer::replaceSubdivision(icu_78::StringPiece, icu_78::CharString&, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::replaceTransformedExtensions(icu_78::CharString&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'icu_78::CharString::data()', 'icu_78::LocalPointerBase ::operator->() const', 'icu_78::CharString icu_78::Locale::getKeywordValue (icu_78::StringPiece, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::CharString::CharString()', 'icu_78::Locale::setKeywordValue(char const*, char const*, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::outputToString(icu_78::CharString&, UErrorCode&)', 'strlen', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::getName() const', 'icu_78::Locale::createKeywords(UErrorCode&) const', 'icu_78::Locale::~Locale()']

7864 21962 icu_78::(anonymousnamespace)::AliasReplacer::replace(icu_78::Localeconst&,icu_78::CharString&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1716
6845 6845 3 :

['uenum_close_78', 'isLocaleInList(UEnumeration*, char const*, UErrorCode*)', 'ures_openAvailableLocales_78']

6849 105537 ures_getFunctionalEquivalent_78 call site: 03912 /src/icu/icu4c/source/common/uresbund.cpp:3100
260 272 4 :

['uprv_free_78', 'searchForTZFile(char const*, DefaultTZInfo*)', 'fclose', 'uprv_malloc_78']

273 303 uprv_tzname_78 call site: 00000 /src/icu/icu4c/source/common/putil.cpp:1170
148 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

148 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380
140 157 2 :

['icu_78::UMemory::operator delete(void*)', 'icu_78::LikelySubtags::~LikelySubtags()']

140 312 icu_78::LikelySubtags::initLikelySubtags(UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/loclikelysubtags.cpp:464
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
20 20 5 :

['icu_78::OlsonTimeZone::transitionTimeInSeconds(short) const', 'uprv_floor_78', 'icu_78::OlsonTimeZone::zoneOffsetAt(short) const', 'icu_78::OlsonTimeZone::dstOffsetAt(short) const', 'icu_78::OlsonTimeZone::rawOffsetAt(short) const']

20 24 icu_78::OlsonTimeZone::getHistoricalOffset(double,signedchar,int,int,int&,int&)const call site: 00000 /src/icu/icu4c/source/i18n/olsontz.cpp:484
16 16 1 :

['void icu_78::SharedObject::copyPtr (icu_78::SharedObject const*, icu_78::SharedObject const*&)']

26 185 icu_78::UnifiedCache::_get(icu_78::CacheKeyBaseconst&,icu_78::SharedObjectconst*&,voidconst*,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/unifiedcache.cpp:397
16 16 5 :

['strcat', 'strchr', 'strlen', 'strcmp', 'strncat']

16 62 uprv_getDefaultLocaleID_78 call site: 00072 /src/icu/icu4c/source/common/putil.cpp:1747
12 111 6 :

['icu_78::UnicodeString::countChar32(int, int) const', 'u_charDigitValue_78', 'icu_78::UnicodeString::operator=(icu_78::UnicodeString&&)', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeString::char32At(int) const', 'icu_78::UnicodeString::UnicodeString(int)']

12 111 icu_78::DecimalFormatSymbols::setSymbol(icu_78::DecimalFormatSymbols::ENumberFormatSymbol,icu_78::UnicodeStringconst&,signedchar) call site: 00000 /src/icu/icu4c/source/i18n/unicode/dcfmtsym.h:574

Runtime coverage analysis

Covered functions
1276
Functions that are reachable but not covered
398
Reachable functions
2478
Percentage of reachable functions covered
83.94%
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/icu/icu4c/source/test/fuzzer/date_time_pattern_generator_fuzzer.cpp 1
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 1
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uresbund.cpp 70
/src/icu/icu4c/source/common/uloc.cpp 59
/src/icu/icu4c/source/common/locid.cpp 82
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/charstr.h 18
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uobject.cpp 6
/src/icu/icu4c/source/common/bytesinkutil.h 16
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 14
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 145
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 29
/src/icu/icu4c/source/common/ustring.cpp 14
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uresdata.cpp 26
/src/icu/icu4c/source/common/uinvchar.cpp 5
/src/icu/icu4c/source/common/restrace.h 10
/src/icu/icu4c/source/common/unicode/ures.h 4
/src/icu/icu4c/source/common/unicode/unistr.h 45
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uresdata.h 9
/src/icu/icu4c/source/common/unicode/char16ptr.h 13
/src/icu/icu4c/source/common/unistr.cpp 49
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 12
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/i18n/dtptngen.cpp 99
/src/icu/icu4c/source/i18n/dtptngen_impl.h 6
/src/icu/icu4c/source/common/hash.h 3
/src/icu/icu4c/source/i18n/calendar.cpp 1
/src/icu/icu4c/source/common/unifiedcache.h 8
/src/icu/icu4c/source/common/unifiedcache.cpp 23
/src/icu/icu4c/source/common/sharedobject.h 7
/src/icu/icu4c/source/common/sharedobject.cpp 4
/src/icu/icu4c/source/i18n/sharedcalendar.h 1
/src/icu/icu4c/source/i18n/dcfmtsym.cpp 13
/src/icu/icu4c/source/i18n/numsys.cpp 11
/src/icu/icu4c/source/common/locbased.h 3
/src/icu/icu4c/source/common/locbased.cpp 2
/src/icu/icu4c/source/i18n/unicode/dcfmtsym.h 3
/src/icu/icu4c/source/common/uchar.cpp 1
/src/icu/icu4c/source/common/ucurr.cpp 13
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/i18n/region.cpp 6
/src/icu/icu4c/source/common/util.cpp 1
/src/icu/icu4c/source/common/unicode/simpleformatter.h 3
/src/icu/icu4c/source/common/simpleformatter.cpp 7

Fuzzer: unicodeset_fuzzer

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 1013 48.2%
gold [1:9] 177 8.42%
yellow [10:29] 62 2.95%
greenyellow [30:49] 6 0.28%
lawngreen 50+ 843 40.1%
All colors 2101 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
1028 1028 3 :

['icu_78::UnicodeSetStringSpan::~UnicodeSetStringSpan()', 'icu_78::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_78::UnicodeSet const&, icu_78::UVector const&, unsigned int)', 'icu_78::UnicodeSetStringSpan::needsStringSpanUTF16()']

1068 1197 icu_78::UnicodeSet::freeze() call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2177
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
67 67 1 :

['icu_78::Edits::addReplace(int, int)']

67 67 icu_78::(anonymousnamespace)::appendResult(char16_t*,int,int,int,char16_tconst*,int,unsignedint,icu_78::Edits*) call site: 00000 /src/icu/icu4c/source/common/ustrcase.cpp:90
52 52 2 :

['icu_78::expandName(icu_78::UCharNames*, unsigned char const*, unsigned short, UCharNameChoice, char*, unsigned short)', 'icu_78::getExtName(unsigned int, char*, unsigned short)']

52 52 icu_78::enumGroupNames(icu_78::UCharNames*,unsignedshortconst*,int,int,signedchar(*)(void*,int,UCharNameChoice,charconst*,int),void*,UCharNameChoice) call site: 00000 /src/icu/icu4c/source/common/unames.cpp:607
47 47 1 :

['icu_78::Edits::addUnchanged(int)']

47 49 icu_78::(anonymousnamespace)::appendNonEmptyUnchanged(char16_t*,int,int,char16_tconst*,int,unsignedint,icu_78::Edits*) call site: 00000 /src/icu/icu4c/source/common/ustrcase.cpp:148
47 47 1 :

['icu_78::Edits::addUnchanged(int)']

47 47 icu_78::(anonymousnamespace)::appendResult(char16_t*,int,int,int,char16_tconst*,int,unsignedint,icu_78::Edits*) call site: 00000 /src/icu/icu4c/source/common/ustrcase.cpp:70
46 87 3 :

['U_FAILURE(UErrorCode) [clone .4105]', 'icu_78::UnicodeSet::allocateStrings(UErrorCode&)', 'icu_78::UVector::assign(icu_78::UVector const&, void (*)(UElement*, UElement*), UErrorCode&)']

86 443 icu_78::UnicodeSet::copyFrom(icu_78::UnicodeSetconst&,signedchar) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:234
28 28 1 :

['icu_78::getExtName(unsigned int, char*, unsigned short)']

28 28 icu_78::enumExtNames(int,int,signedchar(*)(void*,int,UCharNameChoice,charconst*,int),void*) call site: 00000 /src/icu/icu4c/source/common/unames.cpp:647
22 225 4 :

['icu_78::UnicodeSet::_add(icu_78::UnicodeString const&)', 'icu_78::UVector::removeElement(void*)', 'icu_78::UVector::size() const', 'icu_78::UVector::elementAt(int) const']

22 225 icu_78::UnicodeSet::complementAll(icu_78::UnicodeSetconst&) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:1347
22 22 1 :

['icu_78::UVector::removeElement(void*)']

22 29 icu_78::UnicodeSet::complement(icu_78::UnicodeStringconst&) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:1250
20 20 1 :

['icu_78::UnicodeSet::setToBogus()']

20 30 icu_78::UnicodeSet::_add(icu_78::UnicodeStringconst&) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:983
20 20 1 :

['icu_78::UnicodeSet::setToBogus()']

20 20 icu_78::UnicodeSet::ensureCapacity(int) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:1648

Runtime coverage analysis

Covered functions
459
Functions that are reachable but not covered
494
Reachable functions
1234
Percentage of reachable functions covered
59.97%
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/icu/icu4c/source/test/fuzzer/unicodeset_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/char16ptr.h 5
/src/icu/icu4c/source/common/unistr.cpp 28
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/unicode/unistr.h 32
/src/icu/icu4c/source/common/uobject.cpp 4
/src/icu/icu4c/source/common/umutex.h 13
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/ustring.cpp 11
/src/icu/icu4c/source/common/uniset_props.cpp 22
/src/icu/icu4c/source/common/unicode/unifilt.h 2
/src/icu/icu4c/source/common/unicode/unifunct.h 2
/src/icu/icu4c/source/common/unicode/unimatch.h 2
/src/icu/icu4c/source/common/unicode/parsepos.h 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/unicode/uniset.h 5
/src/icu/icu4c/source/common/ruleiter.cpp 10
/src/icu/icu4c/source/common/uniset.cpp 68
/src/icu/icu4c/source/common/uvector.cpp 18
/src/icu/icu4c/source/common/patternprops.cpp 2
/src/icu/icu4c/source/common/putil.cpp 10
/src/icu/icu4c/source/common/util.cpp 4
/src/icu/icu4c/source/common/uinvchar.cpp 2
/src/icu/icu4c/source/common/charstr.h 11
/src/icu/icu4c/source/common/cmemory.h 8
/src/icu/icu4c/source/common/charstr.cpp 8
/src/icu/icu4c/source/common/propname.cpp 9
/src/icu/icu4c/source/common/unicode/bytestrie.h 7
/src/icu/icu4c/source/common/cstring.cpp 2
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/characterproperties.cpp 7
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/uprops.cpp 9
/src/icu/icu4c/source/common/unicode/localpointer.h 21
/src/icu/icu4c/source/common/unisetspan.cpp 30
/src/icu/icu4c/source/common/unifilt.cpp 2
/src/icu/icu4c/source/common/unifunct.cpp 1
/src/icu/icu4c/source/common/uchar.cpp 7
/src/icu/icu4c/source/common/utrie2.cpp 2
/src/icu/icu4c/source/common/normalizer2.cpp 12
/src/icu/icu4c/source/common/normalizer2impl.h 15
/src/icu/icu4c/source/common/normalizer2impl.cpp 12
/src/icu/icu4c/source/common/norm2allmodes.h 5
/src/icu/icu4c/source/common/unicode/normalizer2.h 1
/src/icu/icu4c/source/common/ucptrie.cpp 8
/src/icu/icu4c/source/common/ucase.cpp 2
/src/icu/icu4c/source/common/loadednormalizer2impl.cpp 10
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 1
/src/icu/icu4c/source/common/stringpiece.cpp 1
/src/icu/icu4c/source/common/unicode/stringpiece.h 4
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uhash.cpp 18
/src/icu/icu4c/source/common/umutablecptrie.cpp 55
/src/icu/icu4c/source/common/uvector.h 4
/src/icu/icu4c/source/common/ubidi_props.cpp 2
/src/icu/icu4c/source/common/emojiprops.cpp 9
/src/icu/icu4c/source/common/emojiprops.h 2
/src/icu/icu4c/source/common/unames.cpp 17
/src/icu/icu4c/source/common/ucharstrieiterator.cpp 4
/src/icu/icu4c/source/common/uvectr32.cpp 4
/src/icu/icu4c/source/common/umath.cpp 1
/src/icu/icu4c/source/common/uvectr32.h 5
/src/icu/icu4c/source/common/unicode/ucharstrie.h 8
/src/icu/icu4c/source/common/bmpset.cpp 10
/src/icu/icu4c/source/common/bmpset.h 1
/src/icu/icu4c/source/common/ustrtrns.cpp 3
/src/icu/icu4c/source/common/unisetspan.h 3
/src/icu/icu4c/source/common/utf_impl.cpp 3
/src/icu/icu4c/source/common/parsepos.cpp 1
/src/icu/icu4c/source/common/ruleiter.h 1

Fuzzer: locale_morph_fuzzer

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 746 20.0%
gold [1:9] 643 17.2%
yellow [10:29] 116 3.11%
greenyellow [30:49] 90 2.42%
lawngreen 50+ 2124 57.1%
All colors 3719 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
6816 20488 6 :

['entryOpen(char const*, char const*, UResOpenType, UErrorCode*)', 'ulocimp_getBaseName_78(std::__1::basic_string_view >, UErrorCode&)', 'icu_78::CharString::data()', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::~CharString()', 'uloc_getDefault_78']

6816 20625 ures_openWithType(UResourceBundle*,charconst*,charconst*,UResOpenType,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:2718
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 01176 /src/icu/icu4c/source/common/uresbund.cpp:2512
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
6816 6816 2 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]']

6816 13747 ures_getStringByKey_78 call site: 01751 /src/icu/icu4c/source/common/uresbund.cpp:2565
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
444 7424 13 :

['icu_78::CharString::length() const', 'strchr', 'icu_78::CharString::data()', 'icu_78::CharString::CharString()', 'strcmp', 'createPath(char const*, int, char const*, int, char const*, icu_78::CharString&, UErrorCode*)', 'strlen', 'res_findResource_78', 'icu_78::CharString::~CharString()', 'ures_appendResPath(UResourceBundle*, char const*, int, UErrorCode*)', 'uloc_getDefault_78', 'U_FAILURE(UErrorCode) [clone .2757]', 'ures_freeResPath(UResourceBundle*)']

444 21194 ures_getByKeyWithFallback_78 call site: 02358 /src/icu/icu4c/source/common/uresbund.cpp:2183
140 157 2 :

['icu_78::UMemory::operator delete(void*)', 'icu_78::LikelySubtags::~LikelySubtags()']

140 312 icu_78::LikelySubtags::initLikelySubtags(UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/loclikelysubtags.cpp:464
134 416 9 :

['icu_78::UnicodeString::UnicodeString(char16_t const*, int)', 'icu_78::UnicodeString::setToBogus()', 'uprv_add32_overflow_78', 'icu_78::UnicodeString::isBogus() const', 'icu_78::UnicodeString::isBufferWritable() const', 'icu_78::UnicodeString::doAppend(char16_t const*, int, int)', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeString::cloneArrayIfNeeded(int, int, signed char, int**, signed char)', 'icu_78::(anonymous namespace)::getGrowCapacity(int)']

134 429 icu_78::UnicodeString::doAppend(char16_tconst*,int,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1662
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
16 16 5 :

['strcat', 'strchr', 'strlen', 'strcmp', 'strncat']

16 62 uprv_getDefaultLocaleID_78 call site: 00049 /src/icu/icu4c/source/common/putil.cpp:1747
10 83 4 :

['strchr', 'strrchr', 'uprv_pathIsAbsolute_78', 'icu_78::CharString::append(char const*, int, UErrorCode&)']

686 4295 doOpenChoice(charconst*,charconst*,charconst*,signedchar(*)(void*,charconst*,charconst*,UDataInfoconst*),void*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:1202

Runtime coverage analysis

Covered functions
837
Functions that are reachable but not covered
228
Reachable functions
1755
Percentage of reachable functions covered
87.01%
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/icu/icu4c/source/test/fuzzer/locale_morph_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/stringpiece.h 9
/src/icu/icu4c/source/test/fuzzer/locale_util.cpp 1
/src/icu/icu4c/source/common/locid.cpp 84
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/uloc.cpp 54
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 87
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresbund.cpp 52
/src/icu/icu4c/source/common/unicode/locid.h 11
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/uresimp.h 2
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 23
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 27
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 10
/src/icu/icu4c/source/common/loclikelysubtags.cpp 26
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 7
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3

Fuzzer: uprop_fuzzer

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 595 41.5%
gold [1:9] 279 19.4%
yellow [10:29] 150 10.4%
greenyellow [30:49] 23 1.60%
lawngreen 50+ 385 26.8%
All colors 1432 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
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
191 191 4 :

['icu_78::Normalizer2Impl::copyLowPrefixFromNulTerminated(char16_t const*, int, icu_78::ReorderingBuffer*, UErrorCode&) const', 'icu_78::Normalizer2Impl::hasCompBoundaryAfter(int, signed char) const', 'icu_78::ReorderingBuffer::removeSuffix(int)', 'u_strchr_78']

287 2309 icu_78::Normalizer2Impl::compose(char16_tconst*,char16_tconst*,signedchar,signedchar,icu_78::ReorderingBuffer&,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:1458
162 482 15 :

['icu_78::UnicodeString::UnicodeString(char16_t const*, int)', 'icu_78::UnicodeString::setToBogus()', 'us_arrayCopy(char16_t const*, int, char16_t*, int, int)', 'u_memcpy_78', 'uprv_free_78', 'icu_78::UnicodeString::isBogus() const', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeString::doReplace(int, int, char16_t const*, int, int)', 'u_strlen_78', 'icu_78::UnicodeString::getArrayStart()', 'icu_78::UnicodeString::isBufferWritable() const', 'icu_78::UnicodeString::setLength(int)', 'icu_78::UnicodeString::pinIndices(int&, int&) const', 'icu_78::UnicodeString::cloneArrayIfNeeded(int, int, signed char, int**, signed char)', 'icu_78::(anonymous namespace)::getGrowCapacity(int)']

162 482 icu_78::UnicodeString::doReplace(int,int,char16_tconst*,int,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1526
162 416 9 :

['icu_78::UnicodeString::UnicodeString(char16_t const*, int)', 'icu_78::UnicodeString::setToBogus()', 'uprv_add32_overflow_78', 'icu_78::UnicodeString::isBogus() const', 'icu_78::UnicodeString::isBufferWritable() const', 'icu_78::UnicodeString::doAppend(char16_t const*, int, int)', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeString::cloneArrayIfNeeded(int, int, signed char, int**, signed char)', 'icu_78::(anonymous namespace)::getGrowCapacity(int)']

162 429 icu_78::UnicodeString::doAppend(char16_tconst*,int,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1662
96 1218 21 :

['icu_78::Normalizer2Impl::norm16HasCompBoundaryBefore(unsigned short) const', 'icu_78::Normalizer2Impl::isCompYesAndZeroCC(unsigned short) const', 'icu_78::Normalizer2Impl::decomposeShort(char16_t const*, char16_t const*, signed char, signed char, icu_78::ReorderingBuffer&, UErrorCode&) const', 'icu_78::Normalizer2Impl::hasCompBoundaryBefore(char16_t const*, char16_t const*) const', 'icu_78::ReorderingBuffer::append(int, unsigned char, UErrorCode&)', 'icu_78::ReorderingBuffer::length() const', 'icu_78::Normalizer2Impl::getPreviousTrailCC(char16_t const*, char16_t const*) const', 'icu_78::Normalizer2Impl::hasCompBoundaryAfter(char16_t const*, char16_t const*, signed char) const', 'U_FAILURE(UErrorCode) [clone .7900]', 'icu_78::Normalizer2Impl::recompose(icu_78::ReorderingBuffer&, int, signed char) const', 'icu_78::Hangul::isHangulLV(int)', 'icu_78::Normalizer2Impl::norm16HasCompBoundaryAfter(unsigned short, signed char) const', 'ucptrie_internalSmallIndex_78', 'icu_78::Normalizer2Impl::mapAlgorithmic(int, unsigned short) const', 'icu_78::Normalizer2Impl::isDecompNoAlgorithmic(unsigned short) const', 'icu_78::ReorderingBuffer::equals(char16_t const*, char16_t const*) const', 'icu_78::ReorderingBuffer::appendBMP(char16_t, unsigned char, UErrorCode&)', 'icu_78::Normalizer2Impl::isJamoVT(unsigned short)', 'icu_78::Normalizer2Impl::getCCFromNormalYesOrMaybe(unsigned short)', 'icu_78::Normalizer2Impl::getDataForYesOrNo(unsigned short) const', 'icu_78::ReorderingBuffer::remove()']

96 2118 icu_78::Normalizer2Impl::compose(char16_tconst*,char16_tconst*,signedchar,signedchar,icu_78::ReorderingBuffer&,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:1646
72 3102 8 :

['icu_78::UnicodeSetStringSpan::spanBackUTF8(unsigned char const*, int, USetSpanCondition) const', 'icu_78::UnicodeSetStringSpan::needsStringSpanUTF8()', 'utf8_prevCharSafeBody_78', 'strlen', 'icu_78::UnicodeSet::hasStrings() const', 'icu_78::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_78::UnicodeSet const&, icu_78::UVector const&, unsigned int)', 'icu_78::UnicodeSet::contains(int) const', 'icu_78::UnicodeSetStringSpan::~UnicodeSetStringSpan()']

72 3102 icu_78::UnicodeSet::spanBackUTF8(charconst*,int,USetSpanCondition)const call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2316
72 3066 7 :

['icu_78::UnicodeSetStringSpan::needsStringSpanUTF8()', 'strlen', 'icu_78::UnicodeSet::hasStrings() const', 'icu_78::UnicodeSet::contains(int) const', 'icu_78::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_78::UnicodeSet const&, icu_78::UVector const&, unsigned int)', 'icu_78::UnicodeSetStringSpan::spanUTF8(unsigned char const*, int, USetSpanCondition) const', 'icu_78::UnicodeSetStringSpan::~UnicodeSetStringSpan()']

72 3066 icu_78::UnicodeSet::spanUTF8(charconst*,int,USetSpanCondition)const call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2278
70 3066 7 :

['icu_78::UnicodeSet::hasStrings() const', 'u_strlen_78', 'icu_78::UnicodeSet::contains(int) const', 'icu_78::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_78::UnicodeSet const&, icu_78::UVector const&, unsigned int)', 'icu_78::UnicodeSetStringSpan::spanBack(char16_t const*, int, USetSpanCondition) const', 'icu_78::UnicodeSetStringSpan::needsStringSpanUTF16()', 'icu_78::UnicodeSetStringSpan::~UnicodeSetStringSpan()']

70 3066 icu_78::UnicodeSet::spanBack(char16_tconst*,int,USetSpanCondition)const call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2241
67 67 1 :

['icu_78::Edits::addReplace(int, int)']

67 67 icu_78::(anonymousnamespace)::appendResult(char16_t*,int,int,int,char16_tconst*,int,unsignedint,icu_78::Edits*) call site: 00000 /src/icu/icu4c/source/common/ustrcase.cpp:90
66 107 4 :

['U_FAILURE(UErrorCode) [clone .4105]', 'icu_78::UnicodeSet::allocateStrings(UErrorCode&)', 'icu_78::UnicodeSet::setToBogus()', 'icu_78::UVector::assign(icu_78::UVector const&, void (*)(UElement*, UElement*), UErrorCode&)']

88 129 icu_78::UnicodeSet::UnicodeSet(icu_78::UnicodeSetconst&,signedchar) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:171
48 48 2 :

['icu_78::ReorderingBuffer::setIterator()', 'icu_78::ReorderingBuffer::previousCC()']

48 48 icu_78::ReorderingBuffer::init(int,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/normalizer2impl.cpp:193
47 47 1 :

['icu_78::Edits::addUnchanged(int)']

47 49 icu_78::(anonymousnamespace)::appendNonEmptyUnchanged(char16_t*,int,int,char16_tconst*,int,unsignedint,icu_78::Edits*) call site: 00000 /src/icu/icu4c/source/common/ustrcase.cpp:148

Runtime coverage analysis

Covered functions
553
Functions that are reachable but not covered
251
Reachable functions
926
Percentage of reachable functions covered
72.89%
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/icu/icu4c/source/test/fuzzer/uprop_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/stringpiece.h 6
/src/icu/icu4c/source/common/uprops.cpp 11
/src/icu/icu4c/source/common/characterproperties.cpp 9
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/umutex.h 12
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/uobject.cpp 4
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uniset.cpp 33
/src/icu/icu4c/source/common/unicode/unifilt.h 2
/src/icu/icu4c/source/common/unicode/unifunct.h 2
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/unicode/unimatch.h 2
/src/icu/icu4c/source/common/unicode/localpointer.h 19
/src/icu/icu4c/source/common/emojiprops.cpp 11
/src/icu/icu4c/source/common/emojiprops.h 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 1
/src/icu/icu4c/source/common/charstr.h 11
/src/icu/icu4c/source/common/cmemory.h 8
/src/icu/icu4c/source/common/stringpiece.cpp 1
/src/icu/icu4c/source/common/charstr.cpp 6
/src/icu/icu4c/source/common/putil.cpp 9
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uhash.cpp 18
/src/icu/icu4c/source/common/ustring.cpp 4
/src/icu/icu4c/source/common/ucptrie.cpp 8
/src/icu/icu4c/source/common/unisetspan.cpp 29
/src/icu/icu4c/source/common/unifilt.cpp 2
/src/icu/icu4c/source/common/unifunct.cpp 1
/src/icu/icu4c/source/common/unicode/char16ptr.h 4
/src/icu/icu4c/source/common/ucharstrieiterator.cpp 4
/src/icu/icu4c/source/common/unicode/unistr.h 17
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/uvectr32.cpp 4
/src/icu/icu4c/source/common/umath.cpp 1
/src/icu/icu4c/source/common/unistr.cpp 13
/src/icu/icu4c/source/common/uvectr32.h 5
/src/icu/icu4c/source/common/unicode/ucharstrie.h 12
/src/icu/icu4c/source/common/unicode/uniset.h 3
/src/icu/icu4c/source/common/uvector.h 3
/src/icu/icu4c/source/common/uvector.cpp 13
/src/icu/icu4c/source/common/bmpset.cpp 9
/src/icu/icu4c/source/common/bmpset.h 1
/src/icu/icu4c/source/common/ustrtrns.cpp 3
/src/icu/icu4c/source/common/unisetspan.h 3
/src/icu/icu4c/source/common/utf_impl.cpp 3
/src/icu/icu4c/source/common/uchar.cpp 5
/src/icu/icu4c/source/common/utrie2.cpp 2
/src/icu/icu4c/source/common/normalizer2.cpp 12
/src/icu/icu4c/source/common/normalizer2impl.h 15
/src/icu/icu4c/source/common/normalizer2impl.cpp 12
/src/icu/icu4c/source/common/norm2allmodes.h 5
/src/icu/icu4c/source/common/unicode/normalizer2.h 1
/src/icu/icu4c/source/common/ucase.cpp 2
/src/icu/icu4c/source/common/loadednormalizer2impl.cpp 10
/src/icu/icu4c/source/common/umutablecptrie.cpp 58
/src/icu/icu4c/source/common/ubidi_props.cpp 2
/src/icu/icu4c/source/common/ucharstrie.cpp 4

Fuzzer: decimal_format_symbols_fuzzer

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 2525 59.0%
gold [1:9] 365 8.54%
yellow [10:29] 49 1.14%
greenyellow [30:49] 10 0.23%
lawngreen 50+ 1324 30.9%
All colors 4273 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
7868 21814 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::clear()', 'icu_78::LocalPointer ::LocalPointer(icu_78::StringEnumeration*)', 'icu_78::LocalPointer ::~LocalPointer()', 'strcmp', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::CharString::toStringPiece() const', 'locale_getKeywordsStart_78', 'icu_78::(anonymous namespace)::AliasReplacer::replaceSubdivision(icu_78::StringPiece, icu_78::CharString&, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::replaceTransformedExtensions(icu_78::CharString&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'icu_78::CharString::data()', 'icu_78::LocalPointerBase ::operator->() const', 'icu_78::CharString icu_78::Locale::getKeywordValue (icu_78::StringPiece, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::CharString::CharString()', 'icu_78::Locale::setKeywordValue(char const*, char const*, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::outputToString(icu_78::CharString&, UErrorCode&)', 'strlen', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::getName() const', 'icu_78::Locale::createKeywords(UErrorCode&) const', 'icu_78::Locale::~Locale()']

7868 21962 icu_78::(anonymousnamespace)::AliasReplacer::replace(icu_78::Localeconst&,icu_78::CharString&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1716
7027 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

7027 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380
6828 6871 7 :

['std::__1::basic_string_view >::size[abi:ne180100]() const', 'U_SUCCESS(UErrorCode)', 'icu_78::CharString::toStringPiece() const', 'icu_78::CharString::operator=(icu_78::CharString&&)', 'std::__1::basic_string_view >::operator[][abi:ne180100](unsigned long) const', 'ulocimp_forLanguageTag_78(char const*, int, int*, UErrorCode&)', 'icu_78::StringPiece::operator std::__1::basic_string_view >() const']

6994 15258 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1819
162 162 2 :

['std::__1::basic_string_view >::remove_prefix[abi:ne180100](unsigned long)', 'ulocimp_getKeywords_78(std::__1::basic_string_view >, char, icu_78::ByteSink&, bool, UErrorCode&)']

162 378 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1970
132 416 9 :

['icu_78::UnicodeString::UnicodeString(char16_t const*, int)', 'icu_78::UnicodeString::setToBogus()', 'uprv_add32_overflow_78', 'icu_78::UnicodeString::isBogus() const', 'icu_78::UnicodeString::isBufferWritable() const', 'icu_78::UnicodeString::doAppend(char16_t const*, int, int)', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeString::cloneArrayIfNeeded(int, int, signed char, int**, signed char)', 'icu_78::(anonymous namespace)::getGrowCapacity(int)']

132 429 icu_78::UnicodeString::doAppend(char16_tconst*,int,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1662
72 6890 3 :

['icu_78::LocalPointerBase ::operator->() const', 'icu_78::internal::LocalOpenPointer ::adoptInstead(UResourceBundle*)', 'ures_openDirect_78']

78 21308 (anonymousnamespace)::getAliasTargetAsResourceBundle(ResourceDataconst&,unsignedint,charconst*,int,UResourceDataEntry*,charconst*,int,UResourceBundle*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1247
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
46 111 6 :

['icu_78::UnicodeString::countChar32(int, int) const', 'u_charDigitValue_78', 'icu_78::UnicodeString::operator=(icu_78::UnicodeString&&)', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeString::char32At(int) const', 'icu_78::UnicodeString::UnicodeString(int)']

46 111 icu_78::DecimalFormatSymbols::setSymbol(icu_78::DecimalFormatSymbols::ENumberFormatSymbol,icu_78::UnicodeStringconst&,signedchar) call site: 00000 /src/icu/icu4c/source/i18n/unicode/dcfmtsym.h:574
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
16 16 5 :

['strcat', 'strchr', 'strlen', 'strcmp', 'strncat']

16 62 uprv_getDefaultLocaleID_78 call site: 00072 /src/icu/icu4c/source/common/putil.cpp:1747
10 86 9 :

['strchr', '(anonymous namespace)::UPRV_OK_VALUE_PUNCTUATION(char)', 'uprv_asciitolower_78', 'icu_78::CharString::CharString()', 'U_FAILURE(UErrorCode)', 'icu_78::CharString::operator==(icu_78::CharString const&) const', 'strlen', 'icu_78::CharString::append(char, UErrorCode&)', '(anonymous namespace)::UPRV_ISALPHANUM(char)']

10 194 ulocimp_getKeywordValue_78(charconst*,std::__1::basic_string_view >,icu_78::ByteSink&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:791
6 6 1 :

['icu_78::CharString::truncate(int)']

6854 55366 ucurr_forLocale_78 call site: 04056 /src/icu/icu4c/source/common/ucurr.cpp:542

Runtime coverage analysis

Covered functions
558
Functions that are reachable but not covered
866
Reachable functions
1986
Percentage of reachable functions covered
56.39%
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/icu/icu4c/source/test/fuzzer/decimal_format_symbols_fuzzer.cpp 2
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 2
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uresbund.cpp 61
/src/icu/icu4c/source/common/uloc.cpp 59
/src/icu/icu4c/source/common/locid.cpp 81
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/bytesinkutil.h 16
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 12
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 98
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/ustring.cpp 13
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uinvchar.cpp 5
/src/icu/icu4c/source/common/restrace.h 10
/src/icu/icu4c/source/common/unicode/ures.h 3
/src/icu/icu4c/source/common/unicode/unistr.h 29
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uresdata.h 9
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 35
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 12
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/i18n/numsys.cpp 15
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/i18n/dcfmtsym.cpp 15
/src/icu/icu4c/source/common/locbased.h 3
/src/icu/icu4c/source/common/locbased.cpp 2
/src/icu/icu4c/source/i18n/unicode/dcfmtsym.h 10
/src/icu/icu4c/source/common/uchar.cpp 1
/src/icu/icu4c/source/common/ucurr.cpp 13
/src/icu/icu4c/source/common/hash.h 1

Fuzzer: uloc_is_right_to_left_fuzzer

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 1777 49.4%
gold [1:9] 558 15.5%
yellow [10:29] 99 2.75%
greenyellow [30:49] 82 2.28%
lawngreen 50+ 1075 29.9%
All colors 3591 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
7056 13927 8 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::CharString::data()', 'icu_78::CharString::CharString()', 'icu_78::Locale::init(char const*, signed char)', 'icu_78::(anonymous namespace)::canonicalizeLocale(icu_78::Locale const&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::~CharString()', 'icu_78::Locale::setToBogus()', 'icu_78::(anonymous namespace)::isKnownCanonicalizedLocale(char const*, UErrorCode&)']

7056 13927 icu_78::Locale::init(icu_78::StringPiece,signedchar) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1967
6816 20488 6 :

['entryOpen(char const*, char const*, UResOpenType, UErrorCode*)', 'ulocimp_getBaseName_78(std::__1::basic_string_view >, UErrorCode&)', 'icu_78::CharString::data()', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::~CharString()', 'uloc_getDefault_78']

6816 20625 ures_openWithType(UResourceBundle*,charconst*,charconst*,UResOpenType,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:2718
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 01170 /src/icu/icu4c/source/common/uresbund.cpp:2512
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
444 7424 13 :

['icu_78::CharString::length() const', 'strchr', 'icu_78::CharString::data()', 'icu_78::CharString::CharString()', 'strcmp', 'createPath(char const*, int, char const*, int, char const*, icu_78::CharString&, UErrorCode*)', 'strlen', 'res_findResource_78', 'icu_78::CharString::~CharString()', 'ures_appendResPath(UResourceBundle*, char const*, int, UErrorCode*)', 'uloc_getDefault_78', 'U_FAILURE(UErrorCode) [clone .2757]', 'ures_freeResPath(UResourceBundle*)']

444 21194 ures_getByKeyWithFallback_78 call site: 02355 /src/icu/icu4c/source/common/uresbund.cpp:2183
140 157 2 :

['icu_78::UMemory::operator delete(void*)', 'icu_78::LikelySubtags::~LikelySubtags()']

140 312 icu_78::LikelySubtags::initLikelySubtags(UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/loclikelysubtags.cpp:464
134 416 9 :

['icu_78::UnicodeString::UnicodeString(char16_t const*, int)', 'icu_78::UnicodeString::setToBogus()', 'uprv_add32_overflow_78', 'icu_78::UnicodeString::isBogus() const', 'icu_78::UnicodeString::isBufferWritable() const', 'icu_78::UnicodeString::doAppend(char16_t const*, int, int)', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeString::cloneArrayIfNeeded(int, int, signed char, int**, signed char)', 'icu_78::(anonymous namespace)::getGrowCapacity(int)']

134 429 icu_78::UnicodeString::doAppend(char16_tconst*,int,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1662
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
39 6855 2 :

['icu_78::Locale::getDefault()', 'icu_78::Locale::Locale(icu_78::Locale const&)']

39 6855 icu_78::Locale::createFromName(charconst*) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:2205
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
16 16 5 :

['strcat', 'strchr', 'strlen', 'strcmp', 'strncat']

16 62 uprv_getDefaultLocaleID_78 call site: 00048 /src/icu/icu4c/source/common/putil.cpp:1747

Runtime coverage analysis

Covered functions
615
Functions that are reachable but not covered
519
Reachable functions
1734
Percentage of reachable functions covered
70.07%
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/icu/icu4c/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp 1
/src/icu/icu4c/source/test/fuzzer/locale_util.cpp 1
/src/icu/icu4c/source/common/loclikely.cpp 7
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uloc.cpp 54
/src/icu/icu4c/source/common/locid.cpp 79
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/ucln_cmn.cpp 1
/src/icu/icu4c/source/common/putil.cpp 12
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/bytesinkutil.h 14
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 86
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 25
/src/icu/icu4c/source/common/ustring.cpp 10
/src/icu/icu4c/source/common/uresbund.cpp 52
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/uresimp.h 2
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 23
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 27
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/propname.cpp 10
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/uscript_props.cpp 2

Fuzzer: uregex_open_fuzzer

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 4547 64.5%
gold [1:9] 297 4.21%
yellow [10:29] 71 1.00%
greenyellow [30:49] 13 0.18%
lawngreen 50+ 2121 30.0%
All colors 7049 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
13509 13509 1 :

['icu_78::RegexPattern::compile(UText*, unsigned int, UErrorCode&)']

13509 13698 uregex_open_78 call site: 00078 /src/icu/icu4c/source/i18n/uregex.cpp:156
1028 1028 3 :

['icu_78::UnicodeSetStringSpan::~UnicodeSetStringSpan()', 'icu_78::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_78::UnicodeSet const&, icu_78::UVector const&, unsigned int)', 'icu_78::UnicodeSetStringSpan::needsStringSpanUTF16()']

1068 1197 icu_78::UnicodeSet::freeze() call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2177
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
52 52 2 :

['icu_78::expandName(icu_78::UCharNames*, unsigned char const*, unsigned short, UCharNameChoice, char*, unsigned short)', 'icu_78::getExtName(unsigned int, char*, unsigned short)']

52 52 icu_78::enumGroupNames(icu_78::UCharNames*,unsignedshortconst*,int,int,signedchar(*)(void*,int,UCharNameChoice,charconst*,int),void*,UCharNameChoice) call site: 00000 /src/icu/icu4c/source/common/unames.cpp:607
44 61 2 :

['icu_78::RegexStaticSets::~RegexStaticSets()', 'icu_78::UMemory::operator delete(void*)']

44 61 icu_78::initStaticSets(UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/regexst.cpp:157
28 28 1 :

['icu_78::getExtName(unsigned int, char*, unsigned short)']

28 28 icu_78::enumExtNames(int,int,signedchar(*)(void*,int,UCharNameChoice,charconst*,int),void*) call site: 00000 /src/icu/icu4c/source/common/unames.cpp:647
20 107 4 :

['U_FAILURE(UErrorCode) [clone .4105]', 'icu_78::UnicodeSet::allocateStrings(UErrorCode&)', 'icu_78::UnicodeSet::setToBogus()', 'icu_78::UVector::assign(icu_78::UVector const&, void (*)(UElement*, UElement*), UErrorCode&)']

20 129 icu_78::UnicodeSet::UnicodeSet(icu_78::UnicodeSetconst&,signedchar) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:171
20 20 1 :

['icu_78::UnicodeSet::setToBogus()']

20 30 icu_78::UnicodeSet::_add(icu_78::UnicodeStringconst&) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:983
20 20 1 :

['icu_78::UnicodeSet::setToBogus()']

20 20 icu_78::UnicodeSet::ensureCapacity(int) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:1648
20 20 1 :

['icu_78::UnicodeSet::setToBogus()']

20 20 icu_78::UnicodeSet::ensureBufferCapacity(int) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:1671
20 20 1 :

['icu_78::UnicodeSet::setToBogus()']

20 20 icu_78::UnicodeSet::freeze() call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2195

Runtime coverage analysis

Covered functions
693
Functions that are reachable but not covered
1821
Reachable functions
3111
Percentage of reachable functions covered
41.47%
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/icu/icu4c/source/test/fuzzer/uregex_open_fuzzer.cpp 1
/src/icu/icu4c/source/i18n/uregex.cpp 5
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/ustring.cpp 15
/src/icu/icu4c/source/common/uobject.cpp 6
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/i18n/rematch.cpp 8
/src/icu/icu4c/source/i18n/repattrn.cpp 8
/src/icu/icu4c/source/common/uvector.h 11
/src/icu/icu4c/source/common/uvector.cpp 26
/src/icu/icu4c/source/common/uniset.cpp 62
/src/icu/icu4c/source/common/unisetspan.cpp 30
/src/icu/icu4c/source/common/unifilt.cpp 2
/src/icu/icu4c/source/common/unifunct.cpp 1
/src/icu/icu4c/source/common/utext.cpp 12
/src/icu/icu4c/source/common/uhash.cpp 27
/src/icu/icu4c/source/common/unistr.cpp 49
/src/icu/icu4c/source/common/umutex.h 14
/src/icu/icu4c/source/common/unicode/uobject.h 2
/src/icu/icu4c/source/common/unicode/unistr.h 46
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/uvectr64.cpp 7
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uvectr32.cpp 7
/src/icu/icu4c/source/common/unicode/unifilt.h 2
/src/icu/icu4c/source/common/unicode/unifunct.h 2
/src/icu/icu4c/source/common/unicode/unimatch.h 2
/src/icu/icu4c/source/i18n/regeximp.h 3
/src/icu/icu4c/source/i18n/regexcmp.cpp 35
/src/icu/icu4c/source/common/ustack.cpp 5
/src/icu/icu4c/source/i18n/regexst.cpp 5
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/common/unicode/char16ptr.h 12
/src/icu/icu4c/source/common/unicode/uniset.h 6
/src/icu/icu4c/source/common/bmpset.cpp 10
/src/icu/icu4c/source/common/bmpset.h 1
/src/icu/icu4c/source/common/ustrtrns.cpp 4
/src/icu/icu4c/source/common/unisetspan.h 3
/src/icu/icu4c/source/common/utf_impl.cpp 4
/src/icu/icu4c/source/common/uniset_props.cpp 22
/src/icu/icu4c/source/common/unicode/parsepos.h 3
/src/icu/icu4c/source/common/ruleiter.cpp 10
/src/icu/icu4c/source/common/patternprops.cpp 2
/src/icu/icu4c/source/common/putil.cpp 13
/src/icu/icu4c/source/common/util.cpp 4
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/charstr.cpp 12
/src/icu/icu4c/source/common/propname.cpp 14
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/characterproperties.cpp 7
/src/icu/icu4c/source/common/uprops.cpp 9
/src/icu/icu4c/source/common/unicode/localpointer.h 123
/src/icu/icu4c/source/common/uchar.cpp 8
/src/icu/icu4c/source/common/utrie2.cpp 2
/src/icu/icu4c/source/common/normalizer2.cpp 12
/src/icu/icu4c/source/common/normalizer2impl.h 15
/src/icu/icu4c/source/common/normalizer2impl.cpp 12
/src/icu/icu4c/source/common/norm2allmodes.h 5
/src/icu/icu4c/source/common/unicode/normalizer2.h 1
/src/icu/icu4c/source/common/ucptrie.cpp 9
/src/icu/icu4c/source/common/ucase.cpp 22
/src/icu/icu4c/source/common/loadednormalizer2impl.cpp 10
/src/icu/icu4c/source/common/udata.cpp 22
/src/icu/icu4c/source/common/restrace.h 9
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/umutablecptrie.cpp 55
/src/icu/icu4c/source/common/ubidi_props.cpp 2
/src/icu/icu4c/source/common/emojiprops.cpp 9
/src/icu/icu4c/source/common/emojiprops.h 2
/src/icu/icu4c/source/common/unames.cpp 17
/src/icu/icu4c/source/common/ucharstrieiterator.cpp 4
/src/icu/icu4c/source/common/uvectr32.h 7
/src/icu/icu4c/source/common/unicode/ucharstrie.h 8
/src/icu/icu4c/source/common/parsepos.cpp 1
/src/icu/icu4c/source/common/ruleiter.h 1
/src/icu/icu4c/source/i18n/regextxt.cpp 2
/src/icu/icu4c/source/common/uvectr64.h 6
/src/icu/icu4c/source/common/unistr_case.cpp 3
/src/icu/icu4c/source/common/unicode/edits.h 10
/src/icu/icu4c/source/common/edits.cpp 12
/src/icu/icu4c/source/common/ustrcase.cpp 17
/src/icu/icu4c/source/common/uniset_closure.cpp 9
/src/icu/icu4c/source/common/locid.cpp 81
/src/icu/icu4c/source/common/uloc.cpp 56
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uresbund.cpp 56
/src/icu/icu4c/source/common/unicode/locid.h 9
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uresimp.h 2
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/uresdata.h 8
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/brkiter.cpp 13
/src/icu/icu4c/source/common/servls.cpp 3
/src/icu/icu4c/source/common/serv.cpp 5
/src/icu/icu4c/source/common/servnotf.cpp 2
/src/icu/icu4c/source/common/servrbf.cpp 1
/src/icu/icu4c/source/common/servlkf.cpp 2
/src/icu/icu4c/source/common/serv.h 1
/src/icu/icu4c/source/common/locutil.cpp 1
/src/icu/icu4c/source/common/locbased.h 3
/src/icu/icu4c/source/common/locbased.cpp 2
/src/icu/icu4c/source/common/rbbi.cpp 4
/src/icu/icu4c/source/common/uchriter.cpp 2
/src/icu/icu4c/source/common/chariter.cpp 4
/src/icu/icu4c/source/common/rbbi_cache.cpp 4
/src/icu/icu4c/source/common/rbbidata.cpp 6
/src/icu/icu4c/source/common/filteredbrk.cpp 6
/src/icu/icu4c/source/common/unistr_case_locale.cpp 2
/src/icu/icu4c/source/common/ustrcase_locale.cpp 1
/src/icu/icu4c/source/common/unistr_titlecase_brkiter.cpp 2
/src/icu/icu4c/source/common/ustr_titlecase_brkiter.cpp 2

Fuzzer: timezone_create_fuzzer

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 3652 77.5%
gold [1:9] 177 3.75%
yellow [10:29] 29 0.61%
greenyellow [30:49] 1 0.02%
lawngreen 50+ 853 18.1%
All colors 4712 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
20448 20488 6 :

['entryOpen(char const*, char const*, UResOpenType, UErrorCode*)', 'ulocimp_getBaseName_78(std::__1::basic_string_view >, UErrorCode&)', 'icu_78::CharString::data()', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::~CharString()', 'uloc_getDefault_78']

20448 20625 ures_openWithType(UResourceBundle*,charconst*,charconst*,UResOpenType,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:2718
6816 13747 7 :

['ures_getByKey_78', 'ures_getString_78', 'ures_close_78', 'U_SUCCESS(UErrorCode) [clone .2765]', 'getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'icu_78::res_getString(icu_78::ResourceTracer const&, ResourceData const*, unsigned int, int*)', 'icu_78::ResourceTracer::ResourceTracer(void const*, char const*)']

6816 13747 ures_getStringByKey_78 call site: 01260 /src/icu/icu4c/source/common/uresbund.cpp:2567
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 00490 /src/icu/icu4c/source/common/uresbund.cpp:2512
6816 6816 1 :

['uloc_getDefault_78']

20463 27349 entryOpenDirect(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:974
6816 6816 1 :

['uloc_getDefault_78']

13697 21479 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:529
6816 6816 1 :

['getPoolEntry(char const*, UErrorCode*)']

6872 13815 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:586
850 1018 12 :

['icu_78::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)', 'icu_78::UDataPathIterator::next(UErrorCode*)', 'UDataMemory_isLoaded_78', 'udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)', 'findBasename(char const*)', 'U_FAILURE(UErrorCode) [clone .5661]', 'U_SUCCESS(UErrorCode) [clone .5663]', 'uprv_mapFile_78', 'udata_checkCommonData_78', 'icu_78::UDataPathIterator::~UDataPathIterator()', 'udata_findCachedData(char const*, UErrorCode&)', 'u_getDataDirectory_78']

850 1018 openCommonData(charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:685
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
22 22 1 :

['icu_78::UnicodeString::pinIndex(int&) const']

152 644 icu_78::UnicodeString::doReplace(int,int,char16_tconst*,int,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1507
12 16 2 :

['uprv_realloc_78', 'uprv_malloc_78']

16 20 ures_appendResPath(UResourceBundle*,charconst*,int,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1091
10 83 4 :

['strchr', 'strrchr', 'uprv_pathIsAbsolute_78', 'icu_78::CharString::append(char const*, int, UErrorCode&)']

686 4295 doOpenChoice(charconst*,charconst*,charconst*,signedchar(*)(void*,charconst*,charconst*,UDataInfoconst*),void*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/udata.cpp:1202

Runtime coverage analysis

Covered functions
351
Functions that are reachable but not covered
1377
Reachable functions
2108
Percentage of reachable functions covered
34.68%
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/icu/icu4c/source/test/fuzzer/timezone_create_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/char16ptr.h 12
/src/icu/icu4c/source/common/unistr.cpp 44
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 4
/src/icu/icu4c/source/common/unicode/unistr.h 43
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/ustring.cpp 12
/src/icu/icu4c/source/i18n/timezone.cpp 24
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/uresbund.cpp 60
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uloc.cpp 54
/src/icu/icu4c/source/common/locid.cpp 79
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/putil.cpp 13
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 108
/src/icu/icu4c/source/common/bytesinkutil.h 14
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 8
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 122
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 27
/src/icu/icu4c/source/common/uresdata.cpp 26
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/restrace.h 10
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/uresdata.h 9
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 3
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 7
/src/icu/icu4c/source/common/resource.cpp 1
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/i18n/olsontz.cpp 3
/src/icu/icu4c/source/i18n/basictz.cpp 3
/src/icu/icu4c/source/i18n/olsontz.h 1
/src/icu/icu4c/source/i18n/simpletz.cpp 7
/src/icu/icu4c/source/i18n/gregoimp.cpp 12
/src/icu/icu4c/source/i18n/gregoimp.h 3
/src/icu/icu4c/source/i18n/zonemeta.cpp 6
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/common/ustrcase.cpp 3
/src/icu/icu4c/source/common/ucase.cpp 1
/src/icu/icu4c/source/common/util_props.cpp 1
/src/icu/icu4c/source/common/uchar.cpp 2
/src/icu/icu4c/source/i18n/vtzone.cpp 15
/src/icu/icu4c/source/i18n/unicode/timezone.h 2
/src/icu/icu4c/source/i18n/dtrule.cpp 4
/src/icu/icu4c/source/i18n/tzrule.cpp 14
/src/icu/icu4c/source/i18n/rbtz.cpp 4

Fuzzer: calendar_fuzzer

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 1811 39.3%
gold [1:9] 615 13.3%
yellow [10:29] 123 2.66%
greenyellow [30:49] 88 1.90%
lawngreen 50+ 1971 42.7%
All colors 4608 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
20679 48436 13 :

['__dynamic_cast', 'icu_78::Locale::Locale()', 'icu_78::Calendar::setFirstDayOfWeek(UCalendarDaysOfWeek)', 'strcmp', 'icu_78::Calendar::setMinimalDaysInFirstWeek(unsigned char)', 'icu_78::getCalendarService(UErrorCode&)', 'icu_78::Locale::getKeywordValue(char const*, char*, int, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .1545]', 'icu_78::LocaleUtility::initLocaleFromName(icu_78::UnicodeString const&, icu_78::Locale&)', 'icu_78::ICULocaleService::get(icu_78::Locale const&, int, icu_78::Locale*, UErrorCode&) const', 'U_FAILURE(UErrorCode) [clone .1544]', 'icu_78::Locale::Locale(char const*, char const*, char const*, char const*)', 'icu_78::Calendar::setWeekData(icu_78::Locale const&, char const*, UErrorCode&)']

20679 48550 icu_78::Calendar::makeInstance(icu_78::Localeconst&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/calendar.cpp:883
6871 34686 11 :

['ures_getByKey_78', 'uprv_stricmp_78', 'icu_78::(anonymous namespace)::createSystemTimeZone(icu_78::UnicodeString const&, UErrorCode&)', 'U_FAILURE(UErrorCode) [clone .3543]', 'uprv_realloc_78', 'icu_78::TimeZone::getRegion(icu_78::UnicodeString const&, char*, int, UErrorCode&)', 'icu_78::ures_getUnicodeStringByIndex(UResourceBundle const*, int, UErrorCode*)', 'ures_close_78', 'uprv_malloc_78', 'icu_78::UnicodeString::~UnicodeString()', 'ures_openDirect_78']

6871 34788 icu_78::TZEnumeration::create(USystemTimeZoneType,charconst*,intconst*,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/timezone.cpp:844
6836 6895 2 :

['icu_78::Locale::getRoot()', 'icu_78::Locale::clone() const']

6836 13717 icu_78::LocaleBuilder::setUnicodeLocaleKeyword(icu_78::StringPiece,icu_78::StringPiece) call site: 00000 /src/icu/icu4c/source/common/localebuilder.cpp:282
6816 6871 7 :

['std::__1::basic_string_view >::size[abi:ne180100]() const', 'U_SUCCESS(UErrorCode)', 'icu_78::CharString::toStringPiece() const', 'icu_78::CharString::operator=(icu_78::CharString&&)', 'std::__1::basic_string_view >::operator[][abi:ne180100](unsigned long) const', 'ulocimp_forLanguageTag_78(char const*, int, int*, UErrorCode&)', 'icu_78::StringPiece::operator std::__1::basic_string_view >() const']

6818 15258 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1819
6816 6816 1 :

['icu_78::makeBogusLocale()']

6816 6890 icu_78::LocaleBuilder::build(UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/localebuilder.cpp:470
1028 1028 3 :

['icu_78::UnicodeSetStringSpan::~UnicodeSetStringSpan()', 'icu_78::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_78::UnicodeSet const&, icu_78::UVector const&, unsigned int)', 'icu_78::UnicodeSetStringSpan::needsStringSpanUTF16()']

1028 1197 icu_78::UnicodeSet::freeze() call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:2177
260 272 4 :

['uprv_free_78', 'searchForTZFile(char const*, DefaultTZInfo*)', 'fclose', 'uprv_malloc_78']

273 303 uprv_tzname_78 call site: 04370 /src/icu/icu4c/source/common/putil.cpp:1170
140 157 2 :

['icu_78::UMemory::operator delete(void*)', 'icu_78::LikelySubtags::~LikelySubtags()']

140 312 icu_78::LikelySubtags::initLikelySubtags(UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/loclikelysubtags.cpp:464
132 416 9 :

['icu_78::UnicodeString::UnicodeString(char16_t const*, int)', 'icu_78::UnicodeString::setToBogus()', 'uprv_add32_overflow_78', 'icu_78::UnicodeString::isBogus() const', 'icu_78::UnicodeString::isBufferWritable() const', 'icu_78::UnicodeString::doAppend(char16_t const*, int, int)', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::UnicodeString::cloneArrayIfNeeded(int, int, signed char, int**, signed char)', 'icu_78::(anonymous namespace)::getGrowCapacity(int)']

132 429 icu_78::UnicodeString::doAppend(char16_tconst*,int,int) call site: 00000 /src/icu/icu4c/source/common/unistr.cpp:1662
131 134 3 :

['(anonymous namespace)::UPRV_ISALPHANUM(char) [clone .6579]', 'uprv_asciitolower_78', '(anonymous namespace)::_isExtensionSubtags(char, char const*, int)']

131 134 icu_78::(anonymousnamespace)::_isKeywordValue(charconst*,charconst*,int) call site: 00000 /src/icu/icu4c/source/common/localebuilder.cpp:156
87 107 4 :

['U_FAILURE(UErrorCode) [clone .4105]', 'icu_78::UnicodeSet::allocateStrings(UErrorCode&)', 'icu_78::UnicodeSet::setToBogus()', 'icu_78::UVector::assign(icu_78::UVector const&, void (*)(UElement*, UElement*), UErrorCode&)']

103 129 icu_78::UnicodeSet::UnicodeSet(icu_78::UnicodeSetconst&,signedchar) call site: 00000 /src/icu/icu4c/source/common/uniset.cpp:171
78 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

78 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380

Runtime coverage analysis

Covered functions
1366
Functions that are reachable but not covered
534
Reachable functions
2151
Percentage of reachable functions covered
75.17%
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/icu/icu4c/source/test/fuzzer/calendar_fuzzer.cpp 3
/src/icu/icu4c/source/common/unicode/stringpiece.h 9
/src/icu/icu4c/source/common/locid.cpp 87
/src/icu/icu4c/source/common/unicode/uobject.h 4
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/umutex.h 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/putil.cpp 24
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 105
/src/icu/icu4c/source/common/uobject.cpp 5
/src/icu/icu4c/source/common/uloc.cpp 57
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 91
/src/icu/icu4c/source/common/cstring.cpp 9
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 30
/src/icu/icu4c/source/common/ustring.cpp 12
/src/icu/icu4c/source/common/uresbund.cpp 61
/src/icu/icu4c/source/common/unicode/locid.h 9
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/bytestream.cpp 3
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uresdata.cpp 26
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/restrace.h 10
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/unicode/ures.h 2
/src/icu/icu4c/source/common/unicode/unistr.h 33
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/uresdata.h 9
/src/icu/icu4c/source/common/unicode/char16ptr.h 11
/src/icu/icu4c/source/common/unistr.cpp 34
/src/icu/icu4c/source/common/uvector.cpp 17
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 20
/src/icu/icu4c/source/common/ustrenum.cpp 3
/src/icu/icu4c/source/common/loclikely.cpp 12
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/i18n/timezone.cpp 30
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/i18n/zonemeta.cpp 5
/src/icu/icu4c/source/i18n/olsontz.cpp 3
/src/icu/icu4c/source/i18n/basictz.cpp 2
/src/icu/icu4c/source/i18n/olsontz.h 1
/src/icu/icu4c/source/i18n/simpletz.cpp 7
/src/icu/icu4c/source/i18n/gregoimp.cpp 2
/src/icu/icu4c/source/i18n/gregoimp.h 1
/src/icu/icu4c/source/common/ustrcase.cpp 3
/src/icu/icu4c/source/common/ucase.cpp 1
/src/icu/icu4c/source/common/util_props.cpp 1
/src/icu/icu4c/source/common/uchar.cpp 2
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 1
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/i18n/calendar.cpp 16
/src/icu/icu4c/source/i18n/ucal.cpp 1
/src/icu/icu4c/source/common/ulist.cpp 6
/src/icu/icu4c/source/common/unifiedcache.h 8
/src/icu/icu4c/source/common/unifiedcache.cpp 23
/src/icu/icu4c/source/common/sharedobject.h 7
/src/icu/icu4c/source/common/sharedobject.cpp 4
/src/icu/icu4c/source/i18n/sharedcalendar.h 1
/src/icu/icu4c/source/i18n/unicode/calendar.h 2

Fuzzer: time_zone_names_fuzzer

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 2083 47.2%
gold [1:9] 652 14.8%
yellow [10:29] 91 2.06%
greenyellow [30:49] 21 0.47%
lawngreen 50+ 1557 35.3%
All colors 4404 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
7860 21814 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::clear()', 'icu_78::LocalPointer ::LocalPointer(icu_78::StringEnumeration*)', 'icu_78::LocalPointer ::~LocalPointer()', 'strcmp', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::CharString::toStringPiece() const', 'locale_getKeywordsStart_78', 'icu_78::(anonymous namespace)::AliasReplacer::replaceSubdivision(icu_78::StringPiece, icu_78::CharString&, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::replaceTransformedExtensions(icu_78::CharString&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'icu_78::CharString::data()', 'icu_78::LocalPointerBase ::operator->() const', 'icu_78::CharString icu_78::Locale::getKeywordValue (icu_78::StringPiece, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::CharString::CharString()', 'icu_78::Locale::setKeywordValue(char const*, char const*, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::outputToString(icu_78::CharString&, UErrorCode&)', 'strlen', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::getName() const', 'icu_78::Locale::createKeywords(UErrorCode&) const', 'icu_78::Locale::~Locale()']

7860 21962 icu_78::(anonymousnamespace)::AliasReplacer::replace(icu_78::Localeconst&,icu_78::CharString&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1716
6964 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

6964 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380
6844 13747 7 :

['ures_getByKey_78', 'ures_getString_78', 'ures_close_78', 'U_SUCCESS(UErrorCode) [clone .2765]', 'getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'icu_78::res_getString(icu_78::ResourceTracer const&, ResourceData const*, unsigned int, int*)', 'icu_78::ResourceTracer::ResourceTracer(void const*, char const*)']

6844 13747 ures_getStringByKey_78 call site: 01260 /src/icu/icu4c/source/common/uresbund.cpp:2567
6843 6871 7 :

['std::__1::basic_string_view >::size[abi:ne180100]() const', 'U_SUCCESS(UErrorCode)', 'icu_78::CharString::toStringPiece() const', 'icu_78::CharString::operator=(icu_78::CharString&&)', 'std::__1::basic_string_view >::operator[][abi:ne180100](unsigned long) const', 'ulocimp_forLanguageTag_78(char const*, int, int*, UErrorCode&)', 'icu_78::StringPiece::operator std::__1::basic_string_view >() const']

7007 15258 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1819
6816 13632 3 :

['getFallbackData(UResourceBundle const*, char const**, unsigned int*, UErrorCode*)', 'U_SUCCESS(UErrorCode) [clone .2765]', '(anonymous namespace)::init_resb_result(UResourceDataEntry*, unsigned int, char const*, int, UResourceBundle const*, UResourceBundle*, UErrorCode*)']

6816 13632 ures_getByKey_78 call site: 00481 /src/icu/icu4c/source/common/uresbund.cpp:2512
260 272 4 :

['uprv_free_78', 'searchForTZFile(char const*, DefaultTZInfo*)', 'fclose', 'uprv_malloc_78']

273 303 uprv_tzname_78 call site: 03730 /src/icu/icu4c/source/common/putil.cpp:1170
162 162 2 :

['std::__1::basic_string_view >::remove_prefix[abi:ne180100](unsigned long)', 'ulocimp_getKeywords_78(std::__1::basic_string_view >, char, icu_78::ByteSink&, bool, UErrorCode&)']

162 378 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1970
142 7220 13 :

['icu_78::UMemory::operator new(unsigned long)', 'icu_78::ConstChar16Ptr::~ConstChar16Ptr()', 'icu_78::UMemory::operator delete(void*)', 'icu_78::ConstChar16Ptr::ConstChar16Ptr(char16_t const*)', 'icu_78::UnicodeString::UnicodeString()', 'ures_close_78', 'icu_78::TimeZone::loadRule(UResourceBundle const*, icu_78::UnicodeString const&, UResourceBundle*, UErrorCode&)', 'icu_78::UnicodeString::UnicodeString(signed char, icu_78::ConstChar16Ptr, int)', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::SimpleTimeZone::SimpleTimeZone(int, icu_78::UnicodeString const&, signed char, signed char, signed char, int, icu_78::SimpleTimeZone::TimeMode, signed char, signed char, signed char, int, icu_78::SimpleTimeZone::TimeMode, int, UErrorCode&)', 'ures_getIntVector_78', 'U_SUCCESS(UErrorCode) [clone .2885]', 'icu_78::Grego::fieldsToDay(int, int, int)']

144 14310 icu_78::OlsonTimeZone::OlsonTimeZone(UResourceBundleconst*,UResourceBundleconst*,icu_78::UnicodeStringconst&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/olsontz.cpp:206
140 157 2 :

['icu_78::UMemory::operator delete(void*)', 'icu_78::LikelySubtags::~LikelySubtags()']

140 312 icu_78::LikelySubtags::initLikelySubtags(UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/loclikelysubtags.cpp:464
89 89 1 :

['icu_78::TimeZoneNamesImpl::cleanup()']

89 89 icu_78::TimeZoneNamesImpl::initialize(icu_78::Localeconst&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/tznames_impl.cpp:1055
52 52 1 :

['_uhash_remove(UHashtable*, UElement)']

52 52 _uhash_put(UHashtable*,UElement,UElement,signedchar,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uhash.cpp:486
28 6923 3 :

['ures_getString_78', 'ures_close_78', 'ures_getByIndex_78']

28 6923 ures_getStringWithAlias(UResourceBundleconst*,unsignedint,int,int*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:1710

Runtime coverage analysis

Covered functions
758
Functions that are reachable but not covered
677
Reachable functions
2049
Percentage of reachable functions covered
66.96%
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/icu/icu4c/source/test/fuzzer/time_zone_names_fuzzer.cpp 2
/src/icu/icu4c/source/common/unicode/stringpiece.h 9
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 1
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/umutex.h 9
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uresbund.cpp 62
/src/icu/icu4c/source/common/uloc.cpp 54
/src/icu/icu4c/source/common/locid.cpp 80
/src/icu/icu4c/source/common/putil.cpp 23
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 108
/src/icu/icu4c/source/common/uobject.cpp 6
/src/icu/icu4c/source/common/bytesinkutil.h 14
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/charstr.cpp 11
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 92
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 28
/src/icu/icu4c/source/common/ustring.cpp 15
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uresdata.cpp 26
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/restrace.h 10
/src/icu/icu4c/source/common/unicode/ures.h 1
/src/icu/icu4c/source/common/unicode/unistr.h 37
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 4
/src/icu/icu4c/source/common/uresdata.h 9
/src/icu/icu4c/source/common/unicode/char16ptr.h 13
/src/icu/icu4c/source/common/unistr.cpp 44
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 18
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/i18n/tznames.cpp 5
/src/icu/icu4c/source/i18n/unicode/tznames.h 1
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/i18n/tznames_impl.cpp 24
/src/icu/icu4c/source/i18n/timezone.cpp 16
/src/icu/icu4c/source/i18n/olsontz.cpp 3
/src/icu/icu4c/source/i18n/basictz.cpp 2
/src/icu/icu4c/source/i18n/olsontz.h 2
/src/icu/icu4c/source/i18n/simpletz.cpp 7
/src/icu/icu4c/source/i18n/gregoimp.cpp 2
/src/icu/icu4c/source/i18n/gregoimp.h 1
/src/icu/icu4c/source/i18n/zonemeta.cpp 7
/src/icu/icu4c/source/i18n/unicode/timezone.h 1

Fuzzer: dtfmtsym_fuzzer

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 2619 52.0%
gold [1:9] 471 9.36%
yellow [10:29] 31 0.61%
greenyellow [30:49] 20 0.39%
lawngreen 50+ 1889 37.5%
All colors 5030 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
7866 21814 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::clear()', 'icu_78::LocalPointer ::LocalPointer(icu_78::StringEnumeration*)', 'icu_78::LocalPointer ::~LocalPointer()', 'strcmp', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::CharString::toStringPiece() const', 'locale_getKeywordsStart_78', 'icu_78::(anonymous namespace)::AliasReplacer::replaceSubdivision(icu_78::StringPiece, icu_78::CharString&, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::replaceTransformedExtensions(icu_78::CharString&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'icu_78::CharString::data()', 'icu_78::LocalPointerBase ::operator->() const', 'icu_78::CharString icu_78::Locale::getKeywordValue (icu_78::StringPiece, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::CharString::CharString()', 'icu_78::Locale::setKeywordValue(char const*, char const*, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::outputToString(icu_78::CharString&, UErrorCode&)', 'strlen', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::getName() const', 'icu_78::Locale::createKeywords(UErrorCode&) const', 'icu_78::Locale::~Locale()']

7866 21962 icu_78::(anonymousnamespace)::AliasReplacer::replace(icu_78::Localeconst&,icu_78::CharString&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1716
7025 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

7025 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380
6883 34686 11 :

['ures_getByKey_78', 'uprv_stricmp_78', 'icu_78::(anonymous namespace)::createSystemTimeZone(icu_78::UnicodeString const&, UErrorCode&)', 'U_FAILURE(UErrorCode) [clone .3543]', 'uprv_realloc_78', 'icu_78::TimeZone::getRegion(icu_78::UnicodeString const&, char*, int, UErrorCode&)', 'icu_78::ures_getUnicodeStringByIndex(UResourceBundle const*, int, UErrorCode*)', 'ures_close_78', 'uprv_malloc_78', 'icu_78::UnicodeString::~UnicodeString()', 'ures_openDirect_78']

6883 34788 icu_78::TZEnumeration::create(USystemTimeZoneType,charconst*,intconst*,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/timezone.cpp:844
6828 6871 7 :

['std::__1::basic_string_view >::size[abi:ne180100]() const', 'U_SUCCESS(UErrorCode)', 'icu_78::CharString::toStringPiece() const', 'icu_78::CharString::operator=(icu_78::CharString&&)', 'std::__1::basic_string_view >::operator[][abi:ne180100](unsigned long) const', 'ulocimp_forLanguageTag_78(char const*, int, int*, UErrorCode&)', 'icu_78::StringPiece::operator std::__1::basic_string_view >() const']

6994 15258 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1819
2425 2472 4 :

['icu_78::ConstChar16Ptr::ConstChar16Ptr(char16_t const*)', 'icu_78::initField(icu_78::UnicodeString**, int&, char16_t const*, LastResortSize, LastResortSize, UErrorCode&)', 'icu_78::ConstChar16Ptr::~ConstChar16Ptr()', 'icu_78::UnicodeString::setTo(signed char, icu_78::ConstChar16Ptr, int)']

2425 3064 icu_78::DateFormatSymbols::initializeData(icu_78::Localeconst&,charconst*,UErrorCode&,signedchar) call site: 00000 /src/icu/icu4c/source/i18n/dtfmtsym.cpp:2493
260 272 4 :

['uprv_free_78', 'searchForTZFile(char const*, DefaultTZInfo*)', 'fclose', 'uprv_malloc_78']

273 303 uprv_tzname_78 call site: 04659 /src/icu/icu4c/source/common/putil.cpp:1170
162 162 2 :

['std::__1::basic_string_view >::remove_prefix[abi:ne180100](unsigned long)', 'ulocimp_getKeywords_78(std::__1::basic_string_view >, char, icu_78::ByteSink&, bool, UErrorCode&)']

162 378 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1970
142 7220 13 :

['icu_78::UMemory::operator new(unsigned long)', 'icu_78::ConstChar16Ptr::~ConstChar16Ptr()', 'icu_78::UMemory::operator delete(void*)', 'icu_78::ConstChar16Ptr::ConstChar16Ptr(char16_t const*)', 'icu_78::UnicodeString::UnicodeString()', 'ures_close_78', 'icu_78::TimeZone::loadRule(UResourceBundle const*, icu_78::UnicodeString const&, UResourceBundle*, UErrorCode&)', 'icu_78::UnicodeString::UnicodeString(signed char, icu_78::ConstChar16Ptr, int)', 'icu_78::UnicodeString::~UnicodeString()', 'icu_78::SimpleTimeZone::SimpleTimeZone(int, icu_78::UnicodeString const&, signed char, signed char, signed char, int, icu_78::SimpleTimeZone::TimeMode, signed char, signed char, signed char, int, icu_78::SimpleTimeZone::TimeMode, int, UErrorCode&)', 'ures_getIntVector_78', 'U_SUCCESS(UErrorCode) [clone .2885]', 'icu_78::Grego::fieldsToDay(int, int, int)']

144 14310 icu_78::OlsonTimeZone::OlsonTimeZone(UResourceBundleconst*,UResourceBundleconst*,icu_78::UnicodeStringconst&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/olsontz.cpp:206
89 89 1 :

['icu_78::TimeZoneNamesImpl::cleanup()']

89 89 icu_78::TimeZoneNamesImpl::initialize(icu_78::Localeconst&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/tznames_impl.cpp:1055
28 28 1 :

['free_entry(UResourceDataEntry*)']

28 28 init_entry(charconst*,charconst*,UErrorCode*) call site: 00000 /src/icu/icu4c/source/common/uresbund.cpp:621
20 22 2 :

['ures_getBinary_78', 'icu_78::OlsonTimeZone::transitionCount() const']

164 41636 icu_78::OlsonTimeZone::OlsonTimeZone(UResourceBundleconst*,UResourceBundleconst*,icu_78::UnicodeStringconst&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/olsontz.cpp:188
20 20 5 :

['icu_78::OlsonTimeZone::transitionTimeInSeconds(short) const', 'uprv_floor_78', 'icu_78::OlsonTimeZone::zoneOffsetAt(short) const', 'icu_78::OlsonTimeZone::dstOffsetAt(short) const', 'icu_78::OlsonTimeZone::rawOffsetAt(short) const']

20 24 icu_78::OlsonTimeZone::getHistoricalOffset(double,signedchar,int,int,int&,int&)const call site: 00000 /src/icu/icu4c/source/i18n/olsontz.cpp:484

Runtime coverage analysis

Covered functions
801
Functions that are reachable but not covered
818
Reachable functions
2242
Percentage of reachable functions covered
63.51%
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/icu/icu4c/source/test/fuzzer/dtfmtsym_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/stringpiece.h 9
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 1
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/umutex.h 10
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uresbund.cpp 64
/src/icu/icu4c/source/common/uloc.cpp 56
/src/icu/icu4c/source/common/locid.cpp 82
/src/icu/icu4c/source/common/putil.cpp 23
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 114
/src/icu/icu4c/source/common/uobject.cpp 6
/src/icu/icu4c/source/common/bytesinkutil.h 15
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/charstr.cpp 12
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 100
/src/icu/icu4c/source/common/cstring.cpp 9
/src/icu/icu4c/source/common/stringpiece.cpp 2
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 29
/src/icu/icu4c/source/common/ustring.cpp 17
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uresdata.cpp 26
/src/icu/icu4c/source/common/uinvchar.cpp 4
/src/icu/icu4c/source/common/restrace.h 10
/src/icu/icu4c/source/common/unicode/ures.h 3
/src/icu/icu4c/source/common/unicode/unistr.h 42
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 4
/src/icu/icu4c/source/common/uresdata.h 9
/src/icu/icu4c/source/common/unicode/char16ptr.h 13
/src/icu/icu4c/source/common/unistr.cpp 46
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 18
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 2
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 6
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 6
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 6
/src/icu/icu4c/source/common/ustrtrns.cpp 1
/src/icu/icu4c/source/common/utf_impl.cpp 2
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/i18n/dtfmtsym.cpp 35
/src/icu/icu4c/source/common/hash.h 7
/src/icu/icu4c/source/i18n/numsys.cpp 9
/src/icu/icu4c/source/common/locbased.h 3
/src/icu/icu4c/source/common/locbased.cpp 2
/src/icu/icu4c/source/common/cpputils.h 2
/src/icu/icu4c/source/i18n/timezone.cpp 24
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/i18n/zonemeta.cpp 8
/src/icu/icu4c/source/i18n/olsontz.cpp 3
/src/icu/icu4c/source/i18n/basictz.cpp 2
/src/icu/icu4c/source/i18n/olsontz.h 2
/src/icu/icu4c/source/i18n/simpletz.cpp 7
/src/icu/icu4c/source/i18n/gregoimp.cpp 2
/src/icu/icu4c/source/i18n/gregoimp.h 1
/src/icu/icu4c/source/i18n/tznames.cpp 4
/src/icu/icu4c/source/i18n/unicode/tznames.h 1
/src/icu/icu4c/source/i18n/tznames_impl.cpp 23
/src/icu/icu4c/source/i18n/unicode/timezone.h 1
/src/icu/icu4c/source/i18n/calendar.cpp 1

Fuzzer: number_formatter_fuzzer

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 6994 63.2%
gold [1:9] 687 6.21%
yellow [10:29] 51 0.46%
greenyellow [30:49] 18 0.16%
lawngreen 50+ 3304 29.8%
All colors 11054 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
19459 19491 4 :

['icu_78::number::impl::NumberFormatterImpl::NumberFormatterImpl(icu_78::number::impl::MacroProps const&, UErrorCode&)', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::umtx_storeRelease(std::__1::atomic &, int)', 'icu_78::UMemory::operator delete(void*)']

19459 19491 icu_78::number::LocalizedNumberFormatter::computeCompiled(UErrorCode&)const call site: 00000 /src/icu/icu4c/source/i18n/number_fluent.cpp:704
15981 15985 4 :

['icu_78::LocalPointerBase ::getAlias() const', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::number::impl::MixedUnitLongNameHandler*, UErrorCode&)', 'icu_78::number::impl::MixedUnitLongNameHandler::forMeasureUnit(icu_78::Locale const&, icu_78::MeasureUnit const&, UNumberUnitWidth const&, char const*, icu_78::PluralRules const*, icu_78::number::impl::MicroPropsGenerator const*, icu_78::number::impl::MixedUnitLongNameHandler*, UErrorCode&)', 'icu_78::number::impl::MixedUnitLongNameHandler::MixedUnitLongNameHandler()']

15981 42657 icu_78::number::impl::NumberFormatterImpl::macrosToMicroGenerator(icu_78::number::impl::MacroPropsconst&,bool,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/number_formatimpl.cpp:400
9259 9380 8 :

['icu_78::FormattedStringBuilder::insert(int, icu_78::UnicodeString const&, icu_78::FormattedStringBuilder::Field, UErrorCode&)', 'icu_78::number::impl::CurrencySpacingEnabledModifier::getInsertString(icu_78::DecimalFormatSymbols const&, icu_78::number::impl::CurrencySpacingEnabledModifier::EAffix, UErrorCode&)', 'icu_78::FormattedStringBuilder::codePointAt(int) const', 'icu_78::FormattedStringBuilder::codePointBefore(int) const', 'icu_78::number::impl::CurrencySpacingEnabledModifier::getUnicodeSet(icu_78::DecimalFormatSymbols const&, icu_78::number::impl::CurrencySpacingEnabledModifier::EPosition, icu_78::number::impl::CurrencySpacingEnabledModifier::EAffix, UErrorCode&)', 'icu_78::UnicodeSet::~UnicodeSet()', 'icu_78::UnicodeSet::contains(int) const', 'icu_78::UnicodeString::~UnicodeString()']

9259 9380 icu_78::number::impl::CurrencySpacingEnabledModifier::applyCurrencySpacingAffix(icu_78::FormattedStringBuilder&,int,icu_78::number::impl::CurrencySpacingEnabledModifier::EAffix,icu_78::DecimalFormatSymbolsconst&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/number_modifiers.cpp:471
7870 21814 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'std::__1::basic_string_view >::basic_string_view[abi:ne180100](char const*)', 'icu_78::CharString::clear()', 'icu_78::LocalPointer ::LocalPointer(icu_78::StringEnumeration*)', 'icu_78::LocalPointer ::~LocalPointer()', 'strcmp', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::CharString::toStringPiece() const', 'locale_getKeywordsStart_78', 'icu_78::(anonymous namespace)::AliasReplacer::replaceSubdivision(icu_78::StringPiece, icu_78::CharString&, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::replaceTransformedExtensions(icu_78::CharString&, icu_78::CharString&, UErrorCode&)', 'icu_78::CharString::append(icu_78::StringPiece, UErrorCode&)', 'icu_78::CharString::data()', 'icu_78::LocalPointerBase ::operator->() const', 'icu_78::CharString icu_78::Locale::getKeywordValue (icu_78::StringPiece, UErrorCode&) const', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::CharString::CharString()', 'icu_78::Locale::setKeywordValue(char const*, char const*, UErrorCode&)', 'icu_78::(anonymous namespace)::AliasReplacer::outputToString(icu_78::CharString&, UErrorCode&)', 'strlen', 'icu_78::Locale::Locale(icu_78::Locale const&)', 'icu_78::Locale::getName() const', 'icu_78::Locale::createKeywords(UErrorCode&) const', 'icu_78::Locale::~Locale()']

7870 21962 icu_78::(anonymousnamespace)::AliasReplacer::replace(icu_78::Localeconst&,icu_78::CharString&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1716
6990 14201 25 :

['U_FAILURE(UErrorCode) [clone .3848]', 'icu_78::LocaleBuilder::LocaleBuilder()', 'strstr', 'icu_78::StringPiece::StringPiece(char const*)', 'icu_78::LocalPointerBase ::isNull() const', 'icu_78::LocalPointer ::~LocalPointer()', 'icu_78::Locale::getCountry() const', 'icu_78::CharString::CharString(char const*, int, UErrorCode&)', 'icu_78::LocalPointer ::LocalPointer(icu_78::CharString*)', 'icu_78::LocaleBuilder::setLanguage(icu_78::StringPiece)', 'icu_78::LocaleBuilder::~LocaleBuilder()', 'icu_78::LocaleBuilder::setScript(icu_78::StringPiece)', 'strchr', 'icu_78::UMemory::operator new(unsigned long)', 'icu_78::CharString::data()', 'icu_78::UVector::adoptElement(void*, UErrorCode&)', 'icu_78::LocalPointerBase ::orphan()', 'U_SUCCESS(UErrorCode) [clone .3847]', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::CharString*, UErrorCode&)', 'icu_78::LocalPointerBase ::operator->() const', 'strlen', 'icu_78::UMemory::operator delete(void*)', 'icu_78::Locale::addLikelySubtags(UErrorCode&)', 'icu_78::LocaleBuilder::build(UErrorCode&)', 'icu_78::Locale::~Locale()']

6990 14201 icu_78::(anonymousnamespace)::AliasReplacer::replaceTerritory(icu_78::UVector&,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/locid.cpp:1380
6966 7013 3 :

['icu_78::UnicodeString::~UnicodeString()', 'icu_78::number::impl::MutablePatternModifier::getCurrencySymbolForUnitWidth(UErrorCode&) const', 'icu_78::UnicodeString::operator=(icu_78::UnicodeString&&)']

39324 118585 icu_78::number::impl::NumberFormatterImpl::macrosToMicroGenerator(icu_78::number::impl::MacroPropsconst&,bool,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/number_formatimpl.cpp:383
6828 6871 7 :

['std::__1::basic_string_view >::size[abi:ne180100]() const', 'U_SUCCESS(UErrorCode)', 'icu_78::CharString::toStringPiece() const', 'icu_78::CharString::operator=(icu_78::CharString&&)', 'std::__1::basic_string_view >::operator[][abi:ne180100](unsigned long) const', 'ulocimp_forLanguageTag_78(char const*, int, int*, UErrorCode&)', 'icu_78::StringPiece::operator std::__1::basic_string_view >() const']

6994 15258 (anonymousnamespace)::_canonicalize(std::__1::basic_string_view >,icu_78::ByteSink&,unsignedint,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/uloc.cpp:1819
5097 5142 5 :

['icu_78::number::impl::CompactData::~CompactData()', 'icu_78::number::impl::ParsedPatternInfo::~ParsedPatternInfo()', 'icu_78::number::impl::MicroPropsGenerator::~MicroPropsGenerator()', 'icu_78::number::impl::CompactHandler::precomputeAllModifiers(icu_78::number::impl::MutablePatternModifier&, UErrorCode&)', 'icu_78::MaybeStackArray ::~MaybeStackArray()']

5097 5142 icu_78::number::impl::CompactHandler::CompactHandler(UNumberCompactStyle,icu_78::Localeconst&,charconst*,icu_78::number::impl::CompactType,icu_78::PluralRulesconst*,icu_78::number::impl::MutablePatternModifier*,bool,icu_78::number::impl::MicroPropsGeneratorconst*,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/number_compact.cpp:249
4874 4874 2 :

['icu_78::number::impl::MutablePatternModifier::createImmutable(UErrorCode&)', 'icu_78::LocalPointer ::adoptInsteadAndCheckErrorCode(icu_78::number::impl::ImmutablePatternModifier*, UErrorCode&)']

44198 123459 icu_78::number::impl::NumberFormatterImpl::macrosToMicroGenerator(icu_78::number::impl::MacroPropsconst&,bool,UErrorCode&) call site: 00000 /src/icu/icu4c/source/i18n/number_formatimpl.cpp:374
1493 1498 3 :

['icu_78::number::impl::ImmutablePatternModifier::applyToMicros(icu_78::number::impl::MicroProps&, icu_78::number::impl::DecimalQuantity const&, UErrorCode&) const', 'icu_78::MaybeStackArray ::operator[](long) const', 'u_strcmp_78']

1493 1506 icu_78::number::impl::CompactHandler::processQuantity(icu_78::number::impl::DecimalQuantity&,icu_78::number::impl::MicroProps&,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/i18n/number_compact.cpp:317
320 320 1 :

['icu_78::number::impl::MicroProps::operator=(icu_78::number::impl::MicroProps const&)']

320 320 icu_78::number::impl::MicroProps::processQuantity(icu_78::number::impl::DecimalQuantity&,icu_78::number::impl::MicroProps&,UErrorCode&)const call site: 00000 /src/icu/icu4c/source/i18n/number_microprops.h:174
211 232 4 :

['icu_78::StringTrieBuilder::createCompactBuilder(int, UErrorCode&)', 'icu_78::StringTrieBuilder::makeNode(int, int, int, UErrorCode&)', 'icu_78::StringTrieBuilder::deleteCompactBuilder()', 'U_SUCCESS(UErrorCode) [clone .11996]']

211 232 icu_78::StringTrieBuilder::build(UStringTrieBuildOption,int,UErrorCode&) call site: 00000 /src/icu/icu4c/source/common/stringtriebuilder.cpp:70

Runtime coverage analysis

Covered functions
1458
Functions that are reachable but not covered
2712
Reachable functions
5651
Percentage of reachable functions covered
52.01%
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/icu/icu4c/source/test/fuzzer/number_formatter_fuzzer.cpp 1
/src/icu/icu4c/source/common/unicode/stringpiece.h 11
/src/icu/icu4c/source/test/fuzzer/fuzzer_utils.h 1
/src/icu/icu4c/source/common/locavailable.cpp 10
/src/icu/icu4c/source/common/umutex.h 13
/src/icu/icu4c/source/common/umutex.cpp 10
/src/icu/icu4c/source/common/ucln_cmn.cpp 2
/src/icu/icu4c/source/common/mutex.h 2
/src/icu/icu4c/source/common/unicode/errorcode.h 3
/src/icu/icu4c/source/common/unicode/utypes.h 2
/src/icu/icu4c/source/common/cmemory.cpp 3
/src/icu/icu4c/source/common/uresbund.cpp 67
/src/icu/icu4c/source/common/uloc.cpp 59
/src/icu/icu4c/source/common/locid.cpp 82
/src/icu/icu4c/source/common/putil.cpp 15
/src/icu/icu4c/source/common/charstr.h 16
/src/icu/icu4c/source/common/cmemory.h 306
/src/icu/icu4c/source/common/uobject.cpp 6
/src/icu/icu4c/source/common/bytesinkutil.h 16
/src/icu/icu4c/source/common/bytesinkutil.cpp 2
/src/icu/icu4c/source/common/unicode/bytestream.h 3
/src/icu/icu4c/source/common/charstr.cpp 16
/src/icu/icu4c/source/common/uloc_tag.cpp 61
/src/icu/icu4c/source/common/unicode/localpointer.h 256
/src/icu/icu4c/source/common/cstring.cpp 8
/src/icu/icu4c/source/common/stringpiece.cpp 6
/src/icu/icu4c/source/common/uloc_keytype.cpp 13
/src/icu/icu4c/source/common/uhash.cpp 28
/src/icu/icu4c/source/common/ustring.cpp 19
/src/icu/icu4c/source/common/uresimp.h 3
/src/icu/icu4c/source/common/uresdata.cpp 25
/src/icu/icu4c/source/common/uinvchar.cpp 5
/src/icu/icu4c/source/common/restrace.h 10
/src/icu/icu4c/source/common/unicode/ures.h 4
/src/icu/icu4c/source/common/unicode/unistr.h 80
/src/icu/icu4c/source/common/unicode/rep.h 1
/src/icu/icu4c/source/common/unicode/uobject.h 3
/src/icu/icu4c/source/common/uresdata.h 9
/src/icu/icu4c/source/common/unicode/char16ptr.h 37
/src/icu/icu4c/source/common/unistr.cpp 57
/src/icu/icu4c/source/common/bytestream.cpp 3
/usr/local/bin/../include/c++/v1/optional 6
/src/icu/icu4c/source/common/ulocimp.h 2
/src/icu/icu4c/source/common/umath.cpp 2
/src/icu/icu4c/source/common/uarrsort.cpp 7
/src/icu/icu4c/source/common/uvector.cpp 25
/src/icu/icu4c/source/common/charstrmap.h 7
/src/icu/icu4c/source/common/uniquecharstr.h 7
/src/icu/icu4c/source/common/unicode/locid.h 9
/src/icu/icu4c/source/common/uvector.h 4
/src/icu/icu4c/source/common/localebuilder.cpp 19
/src/icu/icu4c/source/common/ustrenum.cpp 2
/src/icu/icu4c/source/common/loclikely.cpp 12
/src/icu/icu4c/source/common/loclikelysubtags.cpp 25
/src/icu/icu4c/source/common/loclikelysubtags.h 1
/src/icu/icu4c/source/common/resource.h 8
/src/icu/icu4c/source/common/resource.cpp 2
/src/icu/icu4c/source/common/propname.cpp 14
/src/icu/icu4c/source/common/lsr.h 3
/src/icu/icu4c/source/common/lsr.cpp 6
/src/icu/icu4c/source/common/uinvchar.h 2
/src/icu/icu4c/source/common/unicode/bytestrie.h 11
/src/icu/icu4c/source/common/bytestrie.cpp 8
/src/icu/icu4c/source/common/ustrtrns.cpp 4
/src/icu/icu4c/source/common/utf_impl.cpp 4
/src/icu/icu4c/source/common/uenum.cpp 3
/src/icu/icu4c/source/common/udatamem.cpp 8
/src/icu/icu4c/source/common/umapfile.cpp 2
/src/icu/icu4c/source/common/udata.cpp 21
/src/icu/icu4c/source/common/ucmndata.cpp 2
/src/icu/icu4c/source/common/errorcode.cpp 1
/src/icu/icu4c/source/i18n/number_skeletons.cpp 32
/src/icu/icu4c/source/i18n/ucln_in.cpp 1
/src/icu/icu4c/source/common/ucharstriebuilder.cpp 9
/src/icu/icu4c/source/common/stringtriebuilder.cpp 15
/src/icu/icu4c/source/common/unicode/stringtriebuilder.h 15
/src/icu/icu4c/source/i18n/unicode/numberformatter.h 51
/src/icu/icu4c/source/i18n/measunit.cpp 21
/src/icu/icu4c/source/i18n/number_usageprefs.cpp 7
/src/icu/icu4c/source/i18n/number_multiplier.cpp 7
/src/icu/icu4c/source/i18n/number_decnum.h 2
/src/icu/icu4c/source/i18n/number_symbolswrapper.cpp 12
/src/icu/icu4c/source/i18n/measunit_impl.h 12
/src/icu/icu4c/source/i18n/number_skeletons.h 2
/src/icu/icu4c/source/i18n/string_segment.cpp 10
/src/icu/icu4c/source/common/unicode/ucharstrie.h 14
/src/icu/icu4c/source/common/patternprops.cpp 2
/src/icu/icu4c/source/common/ucharstrie.cpp 7
/src/icu/icu4c/source/i18n/number_rounding.cpp 24
/src/icu/icu4c/source/i18n/number_notation.cpp 7
/src/icu/icu4c/source/i18n/number_integerwidth.cpp 4
/src/icu/icu4c/source/i18n/number_utils.cpp 13
/src/icu/icu4c/source/i18n/decNumber.cpp 22
/src/icu/icu4c/source/i18n/decContext.cpp 3
/src/icu/icu4c/source/i18n/unicode/nounit.h 1
/src/icu/icu4c/source/i18n/number_grouping.cpp 4
/src/icu/icu4c/source/i18n/numsys.cpp 12
/src/icu/icu4c/source/i18n/currunit.cpp 6
/src/icu/icu4c/source/i18n/measunit_extra.cpp 56
/src/icu/icu4c/source/common/bytestriebuilder.cpp 9
/src/icu/icu4c/source/i18n/double-conversion-string-to-double.h 1
/src/icu/icu4c/source/i18n/double-conversion-string-to-double.cpp 19
/src/icu/icu4c/source/i18n/double-conversion-ieee.h 36
/src/icu/icu4c/source/i18n/double-conversion-utils.h 11
/src/icu/icu4c/source/i18n/double-conversion-diy-fp.h 12
/src/icu/icu4c/source/i18n/double-conversion-strtod.h 1
/src/icu/icu4c/source/i18n/double-conversion-strtod.cpp 10
/src/icu/icu4c/source/i18n/double-conversion-cached-powers.cpp 2
/src/icu/icu4c/source/i18n/double-conversion-bignum.h 8
/src/icu/icu4c/source/i18n/double-conversion-bignum.cpp 24
/usr/local/bin/../include/c++/v1/stdlib.h 1
/src/icu/icu4c/source/i18n/number_decimalquantity.cpp 39
/src/icu/icu4c/source/i18n/plurrule_impl.h 4
/src/icu/icu4c/source/i18n/number_fluent.cpp 16
/src/icu/icu4c/source/i18n/dcfmtsym.cpp 15
/src/icu/icu4c/source/common/locbased.h 5
/src/icu/icu4c/source/common/locbased.cpp 4
/src/icu/icu4c/source/i18n/unicode/numsys.h 1
/src/icu/icu4c/source/i18n/unicode/formattednumber.h