H3
Conditional Complexity

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 254 units with 4,620 lines of code in units (42.5% of code).
    • 0 very complex units (0 lines of code)
    • 3 complex units (369 lines of code)
    • 22 medium complex units (1,147 lines of code)
    • 35 simple units (1,157 lines of code)
    • 194 very simple units (1,947 lines of code)
0% | 7% | 24% | 25% | 42%
Legend:
51+
26-50
11-25
6-10
1-5
Alternative Visuals
Conditional Complexity per Extension
c0% | 8% | 24% | 24% | 42%
h0% | 0% | 33% | 33% | 33%
Legend:
51+
26-50
11-25
6-10
1-5
Conditional Complexity per Logical Component
primary logical decomposition
src/h3lib0% | 9% | 30% | 21% | 38%
src/apps0% | 6% | 19% | 30% | 44%
examples0% | 0% | 0% | 0% | 100%
Legend:
51+
26-50
11-25
6-10
1-5
Most Complex Units
Top 50 most complex units
Unit# linesMcCabe index# params
static void generate()
in src/apps/miscapps/generateBaseCellNeighbors.c
122 32 0
int localIjkToH3()
in src/h3lib/lib/localij.c
110 27 3
int H3_EXPORT()
in src/h3lib/lib/h3Index.c
137 27 1
H3Index h3NeighborRotations()
in src/h3lib/lib/algos.c
84 23 3
int h3ToLocalIjk()
in src/h3lib/lib/localij.c
90 23 3
int _parseArgsList()
in src/apps/applib/lib/args.c
57 17 7
void doCell()
in src/apps/testapps/testH3NeighborRotations.c
56 15 3
int _polyfillInternal()
in src/h3lib/lib/algos.c
82 15 3
void _hex2dToCoordIJK()
in src/h3lib/lib/coordijk.c
75 15 2
H3Index _faceIjkToH3()
in src/h3lib/lib/h3Index.c
54 15 2
void _geoAzDistanceRads()
in src/h3lib/lib/geoCoord.c
50 15 4
int H3_EXPORT()
in src/h3lib/lib/h3Index.c
25 14 1
void _faceIjkToGeoBoundary()
in src/h3lib/lib/faceijk.c
68 14 4
static void auditBaseCellNeighbors()
in src/apps/miscapps/generateBaseCellNeighbors.c
35 13 2
int H3_EXPORT()
in src/h3lib/lib/algos.c
50 13 1
int H3_EXPORT()
in src/h3lib/lib/algos.c
44 13 1
int H3_EXPORT()
in src/h3lib/lib/h3UniEdge.c
42 13 1
void GENERIC_LOOP_ALGO()
in src/h3lib/include/polygonAlgos.h
36 12 1
Overage _adjustOverageClassII()
in src/h3lib/lib/faceijk.c
42 12 4
int main()
in src/apps/filters/h3ToGeo.c
36 11 2
int main()
in src/apps/filters/h3ToGeoBoundary.c
36 11 2
int main()
in src/apps/testapps/testH3NeighborRotations.c
35 11 2
int main()
in src/apps/miscapps/h3ToGeoBoundaryHier.c
62 11 2
int main()
in src/apps/miscapps/h3ToGeoHier.c
63 11 2
void _h3ToFaceIjk()
in src/h3lib/lib/h3Index.c
25 11 2
int main()
in src/apps/filters/localIjToH3.c
58 10 2
void localIjToH3_traverse_assertions()
in src/apps/testapps/testH3ToLocalIjExhaustive.c
48 10 1
int main()
in src/apps/miscapps/h3ToHier.c
54 10 2
int readBoundary()
in src/apps/applib/lib/utility.c
42 10 2
int main()
in src/apps/filters/geoToH3.c
52 9 2
void printHelp()
in src/apps/applib/lib/args.c
30 9 7
void H3_EXPORT()
in src/h3lib/lib/h3Index.c
36 9 1
void _faceIjkPentToGeoBoundary()
in src/h3lib/lib/faceijk.c
64 9 3
int main()
in src/apps/filters/h3ToLocalIj.c
39 8 2
void doCell()
in src/apps/filters/h3ToComponents.c
58 8 2
bool GENERIC_LOOP_ALGO()
in src/h3lib/include/polygonAlgos.h
36 8 1
void _kRingInternal()
in src/h3lib/lib/algos.c
17 8 6
int _getEdgeHexagons()
in src/h3lib/lib/algos.c
37 8 6
int _h3ToFaceIjkWithInitializedFijk()
in src/h3lib/lib/h3Index.c
18 8 2
int normalizeMultiPolygon()
in src/h3lib/lib/linkedGeo.c
49 8 1
int main()
in src/apps/filters/h3ToComponents.c
27 7 2
int main()
in src/apps/filters/kRing.c
41 7 2
int main()
in src/apps/filters/hexRange.c
39 7 2
static void fillIndex_assertions()
in src/apps/testapps/testPolyfill.c
38 7 1
void _ijkNormalize()
in src/h3lib/lib/coordijk.c
25 7 1
Direction _rotate60ccw()
in src/h3lib/lib/coordijk.c
18 7 1
Direction _rotate60cw()
in src/h3lib/lib/coordijk.c
18 7 1
void H3_EXPORT()
in src/h3lib/lib/h3Index.c
24 7 1
int H3_EXPORT()
in src/h3lib/lib/h3Index.c
27 7 1
int removeVertexNode()
in src/h3lib/lib/vertexGraph.c
24 7 2