Global Metrics

path: .metrics.nargs.sum
old: 6.0
new: 7.0

path: .metrics.nargs.average
old: 0.3333333333333333
new: 2.3333333333333335

path: .metrics.nom.functions
old: 18.0
new: 3.0

path: .metrics.nom.total
old: 18.0
new: 3.0

path: .metrics.cyclomatic.sum
old: 39.0
new: 6.0

path: .metrics.cyclomatic.average
old: 1.3928571428571428
new: 1.2

path: .metrics.halstead.vocabulary
old: 118.0
new: 44.0

path: .metrics.halstead.length
old: 563.0
new: 88.0

path: .metrics.halstead.effort
old: 121872.73664099837
new: 4029.412755949076

path: .metrics.halstead.N1
old: 329.0
new: 48.0

path: .metrics.halstead.bugs
old: 0.8193757768759209
new: 0.08440598646747269

path: .metrics.halstead.estimated_program_length
old: 724.238174177415
new: 201.68580195782732

path: .metrics.halstead.n2
old: 93.0
new: 31.0

path: .metrics.halstead.n1
old: 25.0
new: 13.0

path: .metrics.halstead.time
old: 6770.707591166575
new: 223.8562642193931

path: .metrics.halstead.volume
old: 3874.9280367907168
new: 480.42998244008214

path: .metrics.halstead.level
old: 0.031794871794871796
new: 0.11923076923076924

path: .metrics.halstead.N2
old: 234.0
new: 40.0

path: .metrics.halstead.difficulty
old: 31.451612903225808
new: 8.387096774193548

path: .metrics.halstead.purity_ratio
old: 1.2863910731392807
new: 2.2918841131571286

path: .metrics.loc.lloc
old: 16.0
new: 6.0

path: .metrics.loc.sloc
old: 218.0
new: 34.0

path: .metrics.loc.blank
old: 42.0
new: 4.0

path: .metrics.loc.cloc
old: 52.0
new: 7.0

path: .metrics.loc.ploc
old: 124.0
new: 23.0

path: .metrics.mi.mi_sei
old: 8.525110448672365
new: 73.20354054968149

path: .metrics.mi.mi_original
old: 31.837311656402814
new: 80.38461570295681

path: .metrics.mi.mi_visual_studio
old: 18.618310910177087
new: 47.00854719471158

path: .metrics.cognitive.sum
old: 6.0
new: 1.0

path: .metrics.nexits.sum
old: 14.0
new: 2.0

path: .metrics.nexits.average
old: 0.7777777777777778
new: 0.6666666666666666

Spaces Data

Minimal test - lines (12, 32)

path: .spaces[0].metrics.cyclomatic.average
old: 1.0
new: 1.25

path: .spaces[0].metrics.cyclomatic.sum
old: 1.0
new: 5.0

path: .spaces[0].metrics.mi.mi_sei
old: null
new: 69.4952286206923

path: .spaces[0].metrics.mi.mi_visual_studio
old: null
new: 51.926867669509846

path: .spaces[0].metrics.mi.mi_original
old: null
new: 88.79494371486183

path: .spaces[0].metrics.loc.lloc
old: 0.0
new: 6.0

path: .spaces[0].metrics.loc.blank
old: 0.0
new: 2.0

path: .spaces[0].metrics.loc.ploc
old: 1.0
new: 18.0

path: .spaces[0].metrics.loc.cloc
old: 0.0
new: 1.0

path: .spaces[0].metrics.loc.sloc
old: 1.0
new: 21.0

path: .spaces[0].metrics.nargs.average
old: null
new: 2.3333333333333335

path: .spaces[0].metrics.nargs.sum
old: 0.0
new: 7.0

path: .spaces[0].metrics.cognitive.sum
old: 0.0
new: 1.0

path: .spaces[0].metrics.cognitive.average
old: null
new: 0.3333333333333333

path: .spaces[0].metrics.halstead.vocabulary
old: 1.0
new: 40.0

path: .spaces[0].metrics.halstead.n2
old: 1.0
new: 27.0

path: .spaces[0].metrics.halstead.effort
old: 0.0
new: 3874.363653078

path: .spaces[0].metrics.halstead.level
old: null
new: 0.1153846153846154

path: .spaces[0].metrics.halstead.bugs
old: 0.0
new: 0.08222660003879012

path: .spaces[0].metrics.halstead.difficulty
old: 0.0
new: 8.666666666666666

path: .spaces[0].metrics.halstead.n1
old: 0.0
new: 13.0

path: .spaces[0].metrics.halstead.N2
old: 1.0
new: 36.0

path: .spaces[0].metrics.halstead.length
old: 1.0
new: 84.0

path: .spaces[0].metrics.halstead.volume
old: 0.0
new: 447.04195997053847

path: .spaces[0].metrics.halstead.N1
old: 0.0
new: 48.0

path: .spaces[0].metrics.halstead.purity_ratio
old: null
new: 2.101043796360093

path: .spaces[0].metrics.halstead.time
old: 0.0
new: 215.242425171

path: .spaces[0].metrics.halstead.estimated_program_length
old: null
new: 176.48767889424784

path: .spaces[0].metrics.nexits.sum
old: 0.0
new: 2.0

path: .spaces[0].metrics.nexits.average
old: null
new: 0.6666666666666666

path: .spaces[0].metrics.nom.functions
old: 0.0
new: 3.0

path: .spaces[0].metrics.nom.total
old: 0.0
new: 3.0

Code

namespace mozilla {

static int ReportException(EXCEPTION_POINTERS* aExceptionInfo) {
  nsCOMPtr cr =
      do_GetService("@mozilla.org/toolkit/crash-reporter;1");
  if (cr) {
    cr->WriteMinidumpForException(aExceptionInfo);
  }

  return EXCEPTION_EXECUTE_HANDLER;
}

XPCOM_API(LRESULT)
CallWindowProcCrashProtected(WNDPROC aWndProc, HWND aHWnd, UINT aMsg,
                             WPARAM aWParam, LPARAM aLParam) {
  MOZ_SEH_TRY { return aWndProc(aHWnd, aMsg, aWParam, aLParam); }
  MOZ_SEH_EXCEPT(ReportException(GetExceptionInformation())) {
    ::TerminateProcess(::GetCurrentProcess(), 253);
  }
  return 0;  // not reached
}