Global Metrics

path: .metrics.mi.mi_original
old: -42.67378945671357
new: -42.67533500584071

path: .metrics.mi.mi_sei
old: -82.15638267111012
new: -82.15861242717133

path: .metrics.halstead.effort
old: 2133962.075241476
new: 2136197.7754781027

path: .metrics.halstead.level
old: 0.013580318156462191
new: 0.013570138007919116

path: .metrics.halstead.N2
old: 1333.0
new: 1334.0

path: .metrics.halstead.volume
old: 28979.883915603557
new: 28988.49862544767

path: .metrics.halstead.purity_ratio
old: 0.9493920304103314
new: 0.9491098931056032

path: .metrics.halstead.difficulty
old: 73.63597733711048
new: 73.69121813031161

path: .metrics.halstead.time
old: 118553.44862452644
new: 118677.65419322794

path: .metrics.halstead.length
old: 3364.0
new: 3365.0

path: .metrics.halstead.bugs
old: 5.525054205775383
new: 5.528912508995615

Spaces Data

Minimal test - lines (201, 217)

path: .spaces[7].metrics.halstead.length
old: 54.0
new: 55.0

path: .spaces[7].metrics.halstead.volume
old: 256.7639251168273
new: 261.51881261899075

path: .spaces[7].metrics.halstead.effort
old: 2384.2364475133963
new: 2549.8084230351596

path: .spaces[7].metrics.halstead.purity_ratio
old: 1.8779386156414937
new: 1.8437942771752849

path: .spaces[7].metrics.halstead.time
old: 132.4575804174109
new: 141.6560235019533

path: .spaces[7].metrics.halstead.N2
old: 20.0
new: 21.0

path: .spaces[7].metrics.halstead.bugs
old: 0.059490135814602906
new: 0.06221337752716842

path: .spaces[7].metrics.halstead.level
old: 0.10769230769230768
new: 0.10256410256410256

path: .spaces[7].metrics.halstead.difficulty
old: 9.285714285714286
new: 9.75

path: .spaces[7].metrics.mi.mi_sei
old: 80.35854655378269
new: 80.2208910547045

path: .spaces[7].metrics.mi.mi_visual_studio
old: 55.61492806575989
new: 55.559129515423855

path: .spaces[7].metrics.mi.mi_original
old: 95.1015269924494
new: 95.0061114713748

Code

  async waitForAnalysisSuccess(
    analysisFunction,
    cancel = wait(60000, new Error("Audio analysis timed out"))
  ) {
    let aborted = false;
    cancel.then(() => (aborted = true));

    // We need to give the Analyser some time to start gathering data.
    await wait(200);

    do {
      await new Promise(resolve => requestAnimationFrame(resolve));
      if (aborted) {
        throw await cancel;
      }
    } while (!analysisFunction(this.getByteFrequencyData()));
  },