bazelbuild / rules_apple
Conditional Complexity

The distribution of complexity of units (measured with McCabe index).

Intro
  • Conditional complexity (also called cyclomatic complexity) is a term used to measure the complexity of software. The term refers to the number of possible paths through a program function. A higher value ofter means higher maintenance and testing costs (infosecinstitute.com).
  • Conditional complexity is calculated by counting all conditions in the program that can affect the execution path (e.g. if statement, loops, switches, and/or operators, try and catch blocks...).
  • Conditional complexity is measured at the unit level (methods, functions...).
  • Units are classified in four categories based on the measured McCabe index: 1-5 (simple units), 6-10 (medium complex units), 11-25 (complex units), 26+ (very complex units).
Learn more...
Conditional Complexity Overall
  • There are 378 units with 4,701 lines of code in units (15.3% of code).
    • 0 very complex units (0 lines of code)
    • 0 complex units (0 lines of code)
    • 11 medium complex units (475 lines of code)
    • 29 simple units (578 lines of code)
    • 338 very simple units (3,648 lines of code)
0% | 0% | 10% | 12% | 77%
Legend:
51+
26-50
11-25
6-10
1-5
Alternative Visuals
Conditional Complexity per Extension
51+
26-50
11-25
6-10
1-5
py0% | 0% | 10% | 12% | 77%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
tools/plisttool0% | 0% | 6% | 6% | 86%
tools/codesigningtool0% | 0% | 29% | 27% | 43%
tools/xctoolrunner0% | 0% | 37% | 16% | 46%
tools/imported_dynamic_framework_processor0% | 0% | 59% | 0% | 40%
apple/internal0% | 0% | 21% | 5% | 73%
tools/dossier_codesigningtool0% | 0% | 8% | 0% | 91%
tools/wrapper_common0% | 0% | 0% | 87% | 12%
tools/bundletool0% | 0% | 0% | 22% | 77%
tools/swift_stdlib_tool0% | 0% | 0% | 80% | 20%
tools/clangrttool0% | 0% | 0% | 90% | 10%
tools/provisioning_profile_tool0% | 0% | 0% | 21% | 78%
tools/versiontool0% | 0% | 0% | 0% | 100%
tools/alticonstool0% | 0% | 0% | 0% | 100%
tools/bitcode_strip0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
def discover_best_compatible_simulator()
in apple/internal/templates/ios_sim.template.py
56 24 4
def _find_smartcard_identities()
in tools/codesigningtool/codesigningtool.py
38 21 1
def main()
in tools/imported_dynamic_framework_processor/imported_dynamic_framework_processor.py
67 19 0
def _validate_children()
in tools/plisttool/plisttool.py
38 18 4
def _create_dossier()
in tools/dossier_codesigningtool/dossier_codesigningtool.py
44 15 1
def __init__()
in tools/plisttool/plisttool.py
33 13 4
def validate_plist()
in tools/plisttool/plisttool.py
25 13 2
def run()
in tools/plisttool/plisttool.py
57 13 1
def actool_filtering()
in tools/xctoolrunner/xctoolrunner.py
38 12 3
def main()
in tools/codesigningtool/codesigningtool.py
40 12 1
def intentbuilderc()
in tools/xctoolrunner/xctoolrunner.py
39 11 2
def __init__()
in tools/plisttool/plisttool.py
29 9 3
def _check_entitlements_array()
in tools/plisttool/plisttool.py
26 9 7
def _all_paths_to_sign()
in tools/codesigningtool/codesigningtool.py
16 9 2
def _get_xcode_clang_path_and_clang_libs()
in tools/clangrttool/clangrttool.py
21 9 2
def _does_id_match()
in tools/plisttool/plisttool.py
19 8 5
def ibtool_filtering()
in tools/xctoolrunner/xctoolrunner.py
18 8 3
def _invoke_codesign()
in tools/codesigningtool/codesigningtool.py
27 8 7
def run()
in tools/bundletool/bundletool_experimental.py
20 8 1
def _add_files()
in tools/bundletool/bundletool.py
16 8 6