# Global Metrics

path: .metrics.cyclomatic.sum
old: 13.0
new: 7.0
path: .metrics.cyclomatic.average
old: 2.6
new: 1.75
path: .metrics.halstead.length
old: 347.0
new: 92.0
path: .metrics.halstead.vocabulary
old: 99.0
new: 40.0
path: .metrics.halstead.purity_ratio
old: 1.6842571786851248
new: 1.9183443358070416
path: .metrics.halstead.N2
old: 161.0
new: 40.0
path: .metrics.halstead.estimated_program_length
old: 584.4372410037383
new: 176.48767889424784
path: .metrics.halstead.n2
old: 79.0
new: 27.0
path: .metrics.halstead.effort
old: 46881.29953088449
new: 4714.834075174286
path: .metrics.halstead.time
old: 2604.5166406046937
new: 261.93522639857144
path: .metrics.halstead.difficulty
old: 20.379746835443036
new: 9.62962962962963
path: .metrics.halstead.n1
old: 20.0
new: 13.0
path: .metrics.halstead.bugs
old: 0.4333896209396812
new: 0.09372519536496818
path: .metrics.halstead.level
old: 0.049068322981366465
new: 0.10384615384615384
path: .metrics.halstead.volume
old: 2300.3867471676244
new: 489.61738472963737
path: .metrics.halstead.N1
old: 186.0
new: 52.0
path: .metrics.mi.mi_original
old: 48.41266603943096
new: 73.4875787091774
path: .metrics.mi.mi_sei
old: 23.637942551440982
new: 68.26981623757138
path: .metrics.mi.mi_visual_studio
old: 28.311500607854363
new: 42.97519222758912
path: .metrics.cognitive.average
old: 3.5
new: 3.0
path: .metrics.cognitive.sum
old: 7.0
new: 6.0
path: .metrics.loc.cloc
old: 20.0
new: 15.0
path: .metrics.loc.lloc
old: 30.0
new: 8.0
path: .metrics.loc.sloc
old: 134.0
new: 51.0
path: .metrics.loc.ploc
old: 96.0
new: 30.0
path: .metrics.loc.blank
old: 18.0
new: 6.0
path: .metrics.nargs.sum
old: 5.0
new: 2.0
path: .metrics.nargs.average
old: 2.5
new: 1.0
path: .metrics.nexits.average
old: 3.0
new: 0.5
path: .metrics.nexits.sum
old: 6.0
new: 1.0

# Spaces Data

## Minimal test - lines (23, 36)

path: .spaces[0].metrics.loc.cloc
old: 14.0
new: 1.0
path: .spaces[0].metrics.loc.lloc
old: 30.0
new: 8.0
path: .spaces[0].metrics.loc.ploc
old: 69.0
new: 14.0
path: .spaces[0].metrics.loc.sloc
old: 98.0
new: 14.0
path: .spaces[0].metrics.loc.blank
old: 15.0
new: 0.0
path: .spaces[0].metrics.cognitive.average
old: 3.5
new: 6.0
path: .spaces[0].metrics.cognitive.sum
old: 7.0
new: 6.0
path: .spaces[0].metrics.nom.total
old: 2.0
new: 1.0
path: .spaces[0].metrics.nom.functions
old: 2.0
new: 1.0
path: .spaces[0].metrics.nargs.sum
old: 5.0
new: 2.0
path: .spaces[0].metrics.nargs.average
old: 2.5
new: 2.0
path: .spaces[0].metrics.mi.mi_visual_studio
old: 31.84587958816119
new: 56.932847864148634
path: .spaces[0].metrics.mi.mi_sei
old: 31.71751972927716
new: 85.27577943016038
path: .spaces[0].metrics.mi.mi_original
old: 54.45645409575563
new: 97.35516984769416
path: .spaces[0].metrics.halstead.difficulty
old: 25.0
new: 10.4
path: .spaces[0].metrics.halstead.estimated_program_length
old: 397.20248701457456
new: 101.62290894278166
path: .spaces[0].metrics.halstead.n2
old: 54.0
new: 15.0
path: .spaces[0].metrics.halstead.n1
old: 20.0
new: 12.0
path: .spaces[0].metrics.halstead.time
old: 2768.3812921762405
new: 184.0669784170836
path: .spaces[0].metrics.halstead.N2
old: 135.0
new: 26.0
path: .spaces[0].metrics.halstead.length
old: 321.0
new: 67.0
path: .spaces[0].metrics.halstead.volume
old: 1993.234530366893
new: 318.5774626449524
path: .spaces[0].metrics.halstead.N1
old: 186.0
new: 41.0
path: .spaces[0].metrics.halstead.effort
old: 49830.86325917233
new: 3313.205611507505
path: .spaces[0].metrics.halstead.vocabulary
old: 74.0
new: 27.0
path: .spaces[0].metrics.halstead.bugs
old: 0.4513821205907141
new: 0.07408171096628782
path: .spaces[0].metrics.halstead.level
old: 0.04
new: 0.09615384615384616
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.2373909252790485
new: 1.5167598349668905
path: .spaces[0].metrics.cyclomatic.sum
old: 12.0
new: 4.0
path: .spaces[0].metrics.cyclomatic.average
old: 3.0
new: 4.0
path: .spaces[0].metrics.nexits.average
old: 3.0
new: 1.0
path: .spaces[0].metrics.nexits.sum
old: 6.0
new: 1.0

### Code

    static T GetFnPtr(const char *FnName, bool WarnIfMissing) {
      dlerror(); // Clear any previous errors.
      void *Fn = dlsym(RTLD_DEFAULT, FnName);
      if (Fn == nullptr) {
        if (WarnIfMissing) {
          const char *ErrorMsg = dlerror();
          Printf("WARNING: Failed to find function \"%s\".", FnName);
          if (ErrorMsg)
            Printf(" Reason %s.", ErrorMsg);
          Printf("\n");
        }
      }
      return reinterpret_cast(Fn);
    }