Global Metrics

path: .metrics.nom.total
old: 0.0
new: 13.0

path: .metrics.nom.functions
old: 0.0
new: 7.0

path: .metrics.nom.closures
old: 0.0
new: 6.0

path: .metrics.cyclomatic.sum
old: 11.0
new: 15.0

path: .metrics.cyclomatic.average
old: 1.0
new: 1.875

path: .metrics.loc.lloc
old: 0.0
new: 30.0

path: .metrics.loc.sloc
old: 45.0
new: 177.0

path: .metrics.loc.cloc
old: 13.0
new: 58.0

path: .metrics.loc.blank
old: 13.0
new: 25.0

path: .metrics.loc.ploc
old: 19.0
new: 94.0

path: .metrics.nexits.average
old: null
new: 1.0769230769230769

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

path: .metrics.halstead.n2
old: 16.0
new: 53.0

path: .metrics.halstead.estimated_program_length
old: 68.75488750216347
new: 390.0183459895968

path: .metrics.halstead.purity_ratio
old: 1.8093391447937752
new: 1.1111633788877402

path: .metrics.halstead.length
old: 38.0
new: 351.0

path: .metrics.halstead.volume
old: 161.42124551085624
new: 2172.6284201668864

path: .metrics.halstead.level
old: 0.41025641025641024
new: 0.04015151515151515

path: .metrics.halstead.N1
old: 12.0
new: 219.0

path: .metrics.halstead.difficulty
old: 2.4375
new: 24.90566037735849

path: .metrics.halstead.N2
old: 26.0
new: 132.0

path: .metrics.halstead.time
old: 21.859126996261782
new: 3006.1525310485217

path: .metrics.halstead.bugs
old: 0.01789845829700626
new: 0.4768711955254816

path: .metrics.halstead.vocabulary
old: 19.0
new: 73.0

path: .metrics.halstead.effort
old: 393.4642859327121
new: 54110.745558873394

path: .metrics.halstead.n1
old: 3.0
new: 20.0

path: .metrics.nargs.sum
old: 0.0
new: 14.0

path: .metrics.nargs.average
old: null
new: 1.0769230769230769

path: .metrics.cognitive.average
old: null
new: 0.6923076923076923

path: .metrics.cognitive.sum
old: 0.0
new: 9.0

path: .metrics.mi.mi_sei
old: 78.34802091529889
new: 27.6847698934604

path: .metrics.mi.mi_original
old: 80.36517729060414
new: 43.74117090342614

path: .metrics.mi.mi_visual_studio
old: 46.99717970210768
new: 25.579632107266747

Spaces Data

Minimal test - lines (114, 117)

path: .spaces[1].metrics.loc.sloc
old: 1.0
new: 4.0

path: .spaces[1].metrics.loc.ploc
old: 1.0
new: 4.0

path: .spaces[1].metrics.loc.lloc
old: 0.0
new: 2.0

path: .spaces[1].metrics.mi.mi_original
old: null
new: 127.25548032168658

path: .spaces[1].metrics.mi.mi_visual_studio
old: null
new: 74.41840954484594

path: .spaces[1].metrics.mi.mi_sei
old: null
new: 107.991818253432

path: .spaces[1].metrics.nom.functions
old: 0.0
new: 1.0

path: .spaces[1].metrics.nom.total
old: 0.0
new: 2.0

path: .spaces[1].metrics.nom.closures
old: 0.0
new: 1.0

path: .spaces[1].metrics.nexits.average
old: null
new: 0.5

path: .spaces[1].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[1].metrics.halstead.time
old: 0.0
new: 9.559900001923085

path: .spaces[1].metrics.halstead.difficulty
old: 0.0
new: 3.0

path: .spaces[1].metrics.halstead.estimated_program_length
old: null
new: 31.019550008653873

path: .spaces[1].metrics.halstead.n2
old: 1.0
new: 6.0

path: .spaces[1].metrics.halstead.N1
old: 0.0
new: 10.0

path: .spaces[1].metrics.halstead.n1
old: 0.0
new: 6.0

path: .spaces[1].metrics.halstead.purity_ratio
old: null
new: 1.938721875540867

path: .spaces[1].metrics.halstead.vocabulary
old: 1.0
new: 12.0

path: .spaces[1].metrics.halstead.N2
old: 1.0
new: 6.0

path: .spaces[1].metrics.halstead.bugs
old: 0.0
new: 0.010312468817532576

path: .spaces[1].metrics.halstead.effort
old: 0.0
new: 172.0782000346155

path: .spaces[1].metrics.halstead.volume
old: 0.0
new: 57.3594000115385

path: .spaces[1].metrics.halstead.length
old: 1.0
new: 16.0

path: .spaces[1].metrics.halstead.level
old: null
new: 0.3333333333333333

path: .spaces[1].metrics.cognitive.average
old: null
new: 0.0

path: .spaces[1].metrics.nargs.sum
old: 0.0
new: 2.0

path: .spaces[1].metrics.nargs.average
old: null
new: 1.0

Code

TEST(AllocReplacementDeathTest, malloc_check)
{
  ASSERT_ALLOCATION_HAPPENED([] { return malloc(kAllocAmount); });
}

Minimal test - lines (120, 123)

path: .spaces[2].metrics.halstead.bugs
old: 0.0
new: 0.011393141056223216

path: .spaces[2].metrics.halstead.estimated_program_length
old: null
new: 35.161259458730164

path: .spaces[2].metrics.halstead.purity_ratio
old: null
new: 1.9534033032627869

path: .spaces[2].metrics.halstead.time
old: 0.0
new: 11.101319154423278

path: .spaces[2].metrics.halstead.effort
old: 0.0
new: 199.823744779619

path: .spaces[2].metrics.halstead.length
old: 1.0
new: 18.0

path: .spaces[2].metrics.halstead.level
old: null
new: 0.3333333333333333

path: .spaces[2].metrics.halstead.n1
old: 0.0
new: 6.0

path: .spaces[2].metrics.halstead.n2
old: 1.0
new: 7.0

path: .spaces[2].metrics.halstead.N1
old: 0.0
new: 11.0

path: .spaces[2].metrics.halstead.difficulty
old: 0.0
new: 3.0

path: .spaces[2].metrics.halstead.N2
old: 1.0
new: 7.0

path: .spaces[2].metrics.halstead.vocabulary
old: 1.0
new: 13.0

path: .spaces[2].metrics.halstead.volume
old: 0.0
new: 66.60791492653966

path: .spaces[2].metrics.nexits.average
old: null
new: 0.5

path: .spaces[2].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[2].metrics.nargs.average
old: null
new: 1.0

path: .spaces[2].metrics.nargs.sum
old: 0.0
new: 2.0

path: .spaces[2].metrics.cognitive.average
old: null
new: 0.0

path: .spaces[2].metrics.nom.closures
old: 0.0
new: 1.0

path: .spaces[2].metrics.nom.functions
old: 0.0
new: 1.0

path: .spaces[2].metrics.nom.total
old: 0.0
new: 2.0

path: .spaces[2].metrics.mi.mi_original
old: null
new: 126.47814960108288

path: .spaces[2].metrics.mi.mi_sei
old: null
new: 106.8703670776864

path: .spaces[2].metrics.mi.mi_visual_studio
old: null
new: 73.96383017607187

path: .spaces[2].metrics.loc.ploc
old: 1.0
new: 4.0

path: .spaces[2].metrics.loc.lloc
old: 0.0
new: 2.0

path: .spaces[2].metrics.loc.sloc
old: 1.0
new: 4.0

Code

TEST(AllocReplacementDeathTest, calloc_check)
{
  ASSERT_ALLOCATION_HAPPENED([] { return calloc(1, kAllocAmount); });
}

Minimal test - lines (155, 161)

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

path: .spaces[5].metrics.nom.total
old: 0.0
new: 2.0

path: .spaces[5].metrics.nom.functions
old: 0.0
new: 1.0

path: .spaces[5].metrics.nom.closures
old: 0.0
new: 1.0

path: .spaces[5].metrics.halstead.estimated_program_length
old: 17.509775004326936
new: 52.529325012980806

path: .spaces[5].metrics.halstead.effort
old: 63.0
new: 472.32903943337254

path: .spaces[5].metrics.halstead.level
old: 0.6666666666666666
new: 0.225

path: .spaces[5].metrics.halstead.n2
old: 6.0
new: 9.0

path: .spaces[5].metrics.halstead.N2
old: 9.0
new: 10.0

path: .spaces[5].metrics.halstead.purity_ratio
old: 1.2506982145947811
new: 2.0203586543454155

path: .spaces[5].metrics.halstead.volume
old: 42.0
new: 106.27403387250882

path: .spaces[5].metrics.halstead.n1
old: 2.0
new: 8.0

path: .spaces[5].metrics.halstead.N1
old: 5.0
new: 16.0

path: .spaces[5].metrics.halstead.vocabulary
old: 8.0
new: 17.0

path: .spaces[5].metrics.halstead.difficulty
old: 1.5
new: 4.444444444444445

path: .spaces[5].metrics.halstead.length
old: 14.0
new: 26.0

path: .spaces[5].metrics.halstead.bugs
old: 0.0052776320879040755
new: 0.020216618242020028

path: .spaces[5].metrics.halstead.time
old: 3.5
new: 26.24050219074292

path: .spaces[5].metrics.cognitive.average
old: null
new: 0.0

path: .spaces[5].metrics.nargs.sum
old: 0.0
new: 2.0

path: .spaces[5].metrics.nargs.average
old: null
new: 1.0

path: .spaces[5].metrics.mi.mi_sei
old: 99.9335568898677
new: 90.2862945289703

path: .spaces[5].metrics.mi.mi_visual_studio
old: 70.98690911311813
new: 67.24148916475949

path: .spaces[5].metrics.mi.mi_original
old: 121.387614583432
new: 114.98294647173871

path: .spaces[5].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[5].metrics.nexits.average
old: null
new: 0.5

path: .spaces[5].metrics.loc.ploc
old: 6.0
new: 7.0

path: .spaces[5].metrics.loc.sloc
old: 6.0
new: 7.0

path: .spaces[5].metrics.loc.lloc
old: 0.0
new: 2.0

Code

TEST(AllocReplacementDeathTest, HeapAlloc_check)
{
  ASSERT_ALLOCATION_HAPPENED([] {
    HANDLE h = GetProcessHeap();
    return HeapAlloc(h, 0, kAllocAmount);
  });
}

Minimal test - lines (126, 129)

path: .spaces[3].metrics.nargs.sum
old: 0.0
new: 2.0

path: .spaces[3].metrics.nargs.average
old: null
new: 1.0

path: .spaces[3].metrics.cognitive.average
old: null
new: 0.0

path: .spaces[3].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[3].metrics.nexits.average
old: null
new: 0.5

path: .spaces[3].metrics.nom.closures
old: 0.0
new: 1.0

path: .spaces[3].metrics.nom.functions
old: 0.0
new: 1.0

path: .spaces[3].metrics.nom.total
old: 0.0
new: 2.0

path: .spaces[3].metrics.mi.mi_sei
old: null
new: 106.8703670776864

path: .spaces[3].metrics.mi.mi_original
old: null
new: 126.47814960108288

path: .spaces[3].metrics.mi.mi_visual_studio
old: null
new: 73.96383017607187

path: .spaces[3].metrics.halstead.n1
old: 0.0
new: 6.0

path: .spaces[3].metrics.halstead.estimated_program_length
old: null
new: 35.161259458730164

path: .spaces[3].metrics.halstead.level
old: null
new: 0.3333333333333333

path: .spaces[3].metrics.halstead.time
old: 0.0
new: 11.101319154423278

path: .spaces[3].metrics.halstead.difficulty
old: 0.0
new: 3.0

path: .spaces[3].metrics.halstead.purity_ratio
old: null
new: 1.9534033032627869

path: .spaces[3].metrics.halstead.N1
old: 0.0
new: 11.0

path: .spaces[3].metrics.halstead.N2
old: 1.0
new: 7.0

path: .spaces[3].metrics.halstead.bugs
old: 0.0
new: 0.011393141056223216

path: .spaces[3].metrics.halstead.length
old: 1.0
new: 18.0

path: .spaces[3].metrics.halstead.effort
old: 0.0
new: 199.823744779619

path: .spaces[3].metrics.halstead.n2
old: 1.0
new: 7.0

path: .spaces[3].metrics.halstead.vocabulary
old: 1.0
new: 13.0

path: .spaces[3].metrics.halstead.volume
old: 0.0
new: 66.60791492653966

path: .spaces[3].metrics.loc.sloc
old: 1.0
new: 4.0

path: .spaces[3].metrics.loc.ploc
old: 1.0
new: 4.0

path: .spaces[3].metrics.loc.lloc
old: 0.0
new: 2.0

Code

TEST(AllocReplacementDeathTest, realloc_check)
{
  ASSERT_ALLOCATION_HAPPENED([] { return realloc(nullptr, kAllocAmount); });
}

Minimal test - lines (133, 143)

path: .spaces[4].metrics.mi.mi_original
old: null
new: 103.3037654332062

path: .spaces[4].metrics.mi.mi_sei
old: null
new: 73.53861782243949

path: .spaces[4].metrics.mi.mi_visual_studio
old: null
new: 60.41155873286912

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

path: .spaces[4].metrics.nexits.average
old: null
new: 1.0

path: .spaces[4].metrics.nom.total
old: 0.0
new: 2.0

path: .spaces[4].metrics.nom.closures
old: 0.0
new: 1.0

path: .spaces[4].metrics.nom.functions
old: 0.0
new: 1.0

path: .spaces[4].metrics.halstead.difficulty
old: 0.0
new: 10.227272727272728

path: .spaces[4].metrics.halstead.n1
old: 0.0
new: 15.0

path: .spaces[4].metrics.halstead.effort
old: 0.0
new: 2403.6339467766943

path: .spaces[4].metrics.halstead.level
old: null
new: 0.09777777777777778

path: .spaces[4].metrics.halstead.purity_ratio
old: null
new: 1.9331421347827609

path: .spaces[4].metrics.halstead.estimated_program_length
old: null
new: 96.65710673913804

path: .spaces[4].metrics.halstead.length
old: 1.0
new: 50.0

path: .spaces[4].metrics.halstead.time
old: 0.0
new: 133.5352192653719

path: .spaces[4].metrics.halstead.vocabulary
old: 1.0
new: 26.0

path: .spaces[4].metrics.halstead.N2
old: 1.0
new: 15.0

path: .spaces[4].metrics.halstead.bugs
old: 0.0
new: 0.059812363581538006

path: .spaces[4].metrics.halstead.volume
old: 0.0
new: 235.0219859070546

path: .spaces[4].metrics.halstead.n2
old: 1.0
new: 11.0

path: .spaces[4].metrics.halstead.N1
old: 0.0
new: 35.0

path: .spaces[4].metrics.nargs.average
old: null
new: 1.0

path: .spaces[4].metrics.nargs.sum
old: 0.0
new: 2.0

path: .spaces[4].metrics.cognitive.average
old: null
new: 1.0

path: .spaces[4].metrics.cognitive.sum
old: 0.0
new: 2.0

path: .spaces[4].metrics.loc.sloc
old: 1.0
new: 11.0

path: .spaces[4].metrics.loc.ploc
old: 1.0
new: 11.0

path: .spaces[4].metrics.loc.lloc
old: 0.0
new: 4.0

path: .spaces[4].metrics.cyclomatic.sum
old: 1.0
new: 2.0

path: .spaces[4].metrics.cyclomatic.average
old: 1.0
new: 2.0

Code

TEST(AllocReplacementDeathTest, posix_memalign_check)
{
  ASSERT_ALLOCATION_HAPPENED([] {
    void* p = nullptr;
    int result = posix_memalign(&p, sizeof(void*), kAllocAmount);
    if (result != 0) {
      return static_cast(nullptr);
    }
    return p;
  });
}

Minimal test - lines (60, 104)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Code

static MOZ_NEVER_INLINE bool ValidateHookedAllocation(
    void* (*aAllocator)(void), void (*aFreeFunction)(void*)) {
  nsCOMPtr manager =
      do_GetService("@mozilla.org/memory-reporter-manager;1");

  int64_t before = 0;
  nsresult rv = manager->GetHeapAllocated(&before);
  if (NS_FAILED(rv)) {
    return false;
  }

  {
    void* p = aAllocator();

    if (!p) {
      return false;
    }

    int64_t after = 0;
    rv = manager->GetHeapAllocated(&after);

    // Regardless of whether that call succeeded or failed, we are done with
    // the allocated buffer now.
    aFreeFunction(p);

    if (NS_FAILED(rv)) {
      return false;
    }

    // Verify that our heap stats have changed.
    if ((before + int64_t(kAllocAmount)) != after) {
      return false;
    }
  }

  // Verify that freeing the allocated pointer resets our heap to what it
  // was before.
  int64_t after = 0;
  rv = manager->GetHeapAllocated(&after);
  if (NS_FAILED(rv)) {
    return false;
  }

  return before == after;
}