Global Metrics

path: .metrics.loc.cloc
old: 108.0
new: 27.0

path: .metrics.loc.blank
old: 88.0
new: 24.0

path: .metrics.loc.ploc
old: 746.0
new: 113.0

path: .metrics.loc.lloc
old: 163.0
new: 42.0

path: .metrics.loc.sloc
old: 942.0
new: 164.0

path: .metrics.cognitive.average
old: 5.25
new: 3.5

path: .metrics.cognitive.sum
old: 105.0
new: 14.0

path: .metrics.nom.functions
old: 20.0
new: 4.0

path: .metrics.nom.total
old: 20.0
new: 4.0

path: .metrics.halstead.bugs
old: 23.10923456423668
new: 0.7224453812545265

path: .metrics.halstead.length
old: 9973.0
new: 448.0

path: .metrics.halstead.level
old: 0.004648176323613573
new: 0.03016759776536313

path: .metrics.halstead.purity_ratio
old: 0.29518831664060197
new: 1.4748539466560493

path: .metrics.halstead.difficulty
old: 215.13813813813815
new: 33.148148148148145

path: .metrics.halstead.effort
old: 18254091.505878825
new: 100899.59206561992

path: .metrics.halstead.n2
old: 333.0
new: 81.0

path: .metrics.halstead.time
old: 1014116.1947710458
new: 5605.53289253444

path: .metrics.halstead.N1
old: 5351.0
new: 269.0

path: .metrics.halstead.volume
old: 84848.23594670159
new: 3043.8983081248475

path: .metrics.halstead.n1
old: 31.0
new: 30.0

path: .metrics.halstead.N2
old: 4622.0
new: 179.0

path: .metrics.halstead.vocabulary
old: 364.0
new: 111.0

path: .metrics.halstead.estimated_program_length
old: 2943.9130818567232
new: 660.7345681019101

path: .metrics.nargs.sum
old: 207.0
new: 2.0

path: .metrics.nargs.average
old: 10.35
new: 0.5

path: .metrics.cyclomatic.average
old: 3.5714285714285716
new: 3.8

path: .metrics.cyclomatic.sum
old: 75.0
new: 19.0

path: .metrics.mi.mi_sei
old: -66.39530586531004
new: 16.664926536891855

path: .metrics.mi.mi_original
old: -16.200506745121686
new: 42.303513451497736

path: .metrics.mi.mi_visual_studio
old: 0.0
new: 24.73889675526183

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

path: .metrics.nexits.average
old: 0.0
new: 2.0

Spaces Data

Minimal test - lines (27, 27)

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

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

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

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

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

path: .spaces[0].metrics.nargs.average
old: 6.0
new: 0.0

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

path: .spaces[0].metrics.mi.mi_sei
old: 68.88515497410243
new: 147.42610035996177

path: .spaces[0].metrics.mi.mi_original
old: 73.6069815524406
new: 154.58924178123317

path: .spaces[0].metrics.mi.mi_visual_studio
old: 43.04501845171965
new: 90.4030653691422

path: .spaces[0].metrics.halstead.n2
old: 42.0
new: 3.0

path: .spaces[0].metrics.halstead.N1
old: 103.0
new: 5.0

path: .spaces[0].metrics.halstead.bugs
old: 0.22946862774480312
new: 0.00421201861424495

path: .spaces[0].metrics.halstead.difficulty
old: 14.666666666666666
new: 2.0

path: .spaces[0].metrics.halstead.time
old: 1003.4468055586642
new: 2.495426597384537

path: .spaces[0].metrics.halstead.volume
old: 1231.5028977310878
new: 22.458839376460833

path: .spaces[0].metrics.halstead.N2
old: 112.0
new: 3.0

path: .spaces[0].metrics.halstead.length
old: 215.0
new: 8.0

path: .spaces[0].metrics.halstead.estimated_program_length
old: 264.53107956171823
new: 12.754887502163468

path: .spaces[0].metrics.halstead.purity_ratio
old: 1.23037711424055
new: 1.5943609377704335

path: .spaces[0].metrics.halstead.n1
old: 11.0
new: 4.0

path: .spaces[0].metrics.halstead.vocabulary
old: 53.0
new: 7.0

path: .spaces[0].metrics.halstead.level
old: 0.06818181818181819
new: 0.5

path: .spaces[0].metrics.halstead.effort
old: 18062.042500055955
new: 44.91767875292167

Code

nsUUIDGenerator::nsUUIDGenerator() : mLock("nsUUIDGenerator.mLock") {}

Minimal test - lines (92, 164)

path: .spaces[3].metrics.nexits.average
old: 0.0
new: 3.0

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

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

path: .spaces[3].metrics.loc.ploc
old: 8.0
new: 52.0

path: .spaces[3].metrics.loc.cloc
old: 0.0
new: 14.0

path: .spaces[3].metrics.loc.sloc
old: 8.0
new: 73.0

path: .spaces[3].metrics.loc.blank
old: 0.0
new: 7.0

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

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

path: .spaces[3].metrics.mi.mi_original
old: 108.66341821996988
new: 62.47841867424482

path: .spaces[3].metrics.mi.mi_visual_studio
old: 63.54585860816952
new: 36.53708694400282

path: .spaces[3].metrics.mi.mi_sei
old: 81.16914245938571
new: 46.426137409220665

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

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

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

path: .spaces[3].metrics.nargs.sum
old: 7.0
new: 1.0

path: .spaces[3].metrics.halstead.vocabulary
old: 22.0
new: 74.0

path: .spaces[3].metrics.halstead.volume
old: 236.34987578777677
new: 1390.9175539008847

path: .spaces[3].metrics.halstead.difficulty
old: 6.066666666666666
new: 26.71276595744681

path: .spaces[3].metrics.halstead.length
old: 53.0
new: 224.0

path: .spaces[3].metrics.halstead.n2
old: 15.0
new: 47.0

path: .spaces[3].metrics.halstead.purity_ratio
old: 1.476506479028887
new: 1.7386055294074223

path: .spaces[3].metrics.halstead.n1
old: 7.0
new: 27.0

path: .spaces[3].metrics.halstead.estimated_program_length
old: 78.25484338853101
new: 389.4476385872626

path: .spaces[3].metrics.halstead.time
old: 79.65866183958401
new: 2064.18083796993

path: .spaces[3].metrics.halstead.N2
old: 26.0
new: 93.0

path: .spaces[3].metrics.halstead.bugs
old: 0.04238534798277174
new: 0.3711580720083247

path: .spaces[3].metrics.halstead.level
old: 0.16483516483516483
new: 0.037435284747112704

path: .spaces[3].metrics.halstead.effort
old: 1433.8559131125123
new: 37155.25508345874

path: .spaces[3].metrics.halstead.N1
old: 27.0
new: 131.0

Code

nsUUIDGenerator::GenerateUUIDInPlace(nsID* aId) {
  // The various code in this method is probably not threadsafe, so lock
  // across the whole method.
  MutexAutoLock lock(mLock);

#if defined(XP_WIN)
  HRESULT hr = CoCreateGuid((GUID*)aId);
  if (FAILED(hr)) {
    return NS_ERROR_FAILURE;
  }
#elif defined(XP_MACOSX)
  CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
  if (!uuid) {
    return NS_ERROR_FAILURE;
  }

  CFUUIDBytes bytes = CFUUIDGetUUIDBytes(uuid);
  memcpy(aId, &bytes, sizeof(nsID));

  CFRelease(uuid);
#else /* not windows or OS X; generate randomness using random(). */
  /* XXX we should be saving the return of setstate here and switching
   * back to it; instead, we use the value returned when we called
   * initstate, since older glibc's have broken setstate() return values
   */
#  ifndef HAVE_ARC4RANDOM
  setstate(mState);
#  endif

#  ifdef HAVE_ARC4RANDOM_BUF
  arc4random_buf(aId, sizeof(nsID));
#  else /* HAVE_ARC4RANDOM_BUF */
  size_t bytesLeft = sizeof(nsID);
  while (bytesLeft > 0) {
#    ifdef HAVE_ARC4RANDOM
    long rval = arc4random();
    const size_t mRBytes = 4;
#    else
    long rval = random();
#    endif

    uint8_t* src = (uint8_t*)&rval;
    // We want to grab the mRBytes least significant bytes of rval, since
    // mRBytes less than sizeof(rval) means the high bytes are 0.
#    ifdef IS_BIG_ENDIAN
    src += sizeof(rval) - mRBytes;
#    endif
    uint8_t* dst = ((uint8_t*)aId) + (sizeof(nsID) - bytesLeft);
    size_t toWrite = (bytesLeft < mRBytes ? bytesLeft : mRBytes);
    for (size_t i = 0; i < toWrite; i++) {
      dst[i] = src[i];
    }

    bytesLeft -= toWrite;
  }
#  endif /* HAVE_ARC4RANDOM_BUF */

  /* Put in the version */
  aId->m2 &= 0x0fff;
  aId->m2 |= 0x4000;

  /* Put in the variant */
  aId->m3[0] &= 0x3f;
  aId->m3[0] |= 0x80;

#  ifndef HAVE_ARC4RANDOM
  /* Restore the previous RNG state */
  setstate(mSavedState);
#  endif
#endif

  return NS_OK;
}

Minimal test - lines (31, 75)

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

path: .spaces[1].metrics.nexits.average
old: 0.0
new: 3.0

path: .spaces[1].metrics.mi.mi_sei
old: 61.74955004761341
new: 60.89644601781448

path: .spaces[1].metrics.mi.mi_visual_studio
old: 40.928362665490795
new: 42.68104000646974

path: .spaces[1].metrics.mi.mi_original
old: 69.98750015798926
new: 72.98457841106325

path: .spaces[1].metrics.cognitive.sum
old: 0.0
new: 8.0

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

path: .spaces[1].metrics.loc.blank
old: 3.0
new: 5.0

path: .spaces[1].metrics.loc.cloc
old: 13.0
new: 8.0

path: .spaces[1].metrics.loc.ploc
old: 31.0
new: 32.0

path: .spaces[1].metrics.loc.lloc
old: 4.0
new: 16.0

path: .spaces[1].metrics.loc.sloc
old: 47.0
new: 45.0

path: .spaces[1].metrics.halstead.vocabulary
old: 50.0
new: 46.0

path: .spaces[1].metrics.halstead.n2
old: 39.0
new: 26.0

path: .spaces[1].metrics.halstead.level
old: 0.05101373446697187
new: 0.055319148936170216

path: .spaces[1].metrics.halstead.volume
old: 1614.142870275571
new: 729.1101781995258

path: .spaces[1].metrics.halstead.effort
old: 31641.339085273696
new: 13180.068605914505

path: .spaces[1].metrics.halstead.time
old: 1757.8521714040942
new: 732.226033661917

path: .spaces[1].metrics.halstead.estimated_program_length
old: 244.18443434063795
new: 208.64999456941564

path: .spaces[1].metrics.halstead.N2
old: 139.0
new: 47.0

path: .spaces[1].metrics.halstead.n1
old: 11.0
new: 20.0

path: .spaces[1].metrics.halstead.bugs
old: 0.33346376441312875
new: 0.18599039889997843

path: .spaces[1].metrics.halstead.difficulty
old: 19.602564102564106
new: 18.076923076923077

path: .spaces[1].metrics.halstead.N1
old: 147.0
new: 85.0

path: .spaces[1].metrics.halstead.purity_ratio
old: 0.853791728463769
new: 1.5806817770410275

path: .spaces[1].metrics.halstead.length
old: 286.0
new: 132.0

path: .spaces[1].metrics.nargs.average
old: 3.0
new: 0.0

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

path: .spaces[1].metrics.cyclomatic.sum
old: 1.0
new: 9.0

path: .spaces[1].metrics.cyclomatic.average
old: 1.0
new: 9.0

Code

nsresult nsUUIDGenerator::Init() {
  // We're a service, so we're guaranteed that Init() is not going
  // to be reentered while we're inside Init().

#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(HAVE_ARC4RANDOM)
  /* initialize random number generator using NSPR random noise */
  unsigned int seed;

  size_t bytes = 0;
  while (bytes < sizeof(seed)) {
    size_t nbytes = PR_GetRandomNoise(((unsigned char*)&seed) + bytes,
                                      sizeof(seed) - bytes);
    if (nbytes == 0) {
      return NS_ERROR_FAILURE;
    }
    bytes += nbytes;
  }

  /* Initialize a new RNG state, and immediately switch
   * back to the previous one -- we want to use mState
   * only for our own calls to random().
   */
  mSavedState = initstate(seed, mState, sizeof(mState));
  setstate(mSavedState);

  mRBytes = 4;
#  ifdef RAND_MAX
  if ((unsigned long)RAND_MAX < 0xffffffffUL) {
    mRBytes = 3;
  }
  if ((unsigned long)RAND_MAX < 0x00ffffffUL) {
    mRBytes = 2;
  }
  if ((unsigned long)RAND_MAX < 0x0000ffffUL) {
    mRBytes = 1;
  }
  if ((unsigned long)RAND_MAX < 0x000000ffUL) {
    return NS_ERROR_FAILURE;
  }
#  endif

#endif /* non XP_WIN and non XP_MACOSX and non ARC4RANDOM */

  return NS_OK;
}

Minimal test - lines (78, 89)

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

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

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

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

path: .spaces[2].metrics.halstead.estimated_program_length
old: 119.65784284662088
new: 76.10749561002054

path: .spaces[2].metrics.halstead.vocabulary
old: 30.0
new: 22.0

path: .spaces[2].metrics.halstead.length
old: 86.0
new: 52.0

path: .spaces[2].metrics.halstead.n2
old: 20.0
new: 11.0

path: .spaces[2].metrics.halstead.N1
old: 45.0
new: 31.0

path: .spaces[2].metrics.halstead.n1
old: 10.0
new: 11.0

path: .spaces[2].metrics.halstead.time
old: 240.3013366682727
new: 135.26942576533136

path: .spaces[2].metrics.halstead.volume
old: 421.99259122233263
new: 231.89044416913947

path: .spaces[2].metrics.halstead.N2
old: 41.0
new: 21.0

path: .spaces[2].metrics.halstead.effort
old: 4325.4240600289095
new: 2434.8496637759645

path: .spaces[2].metrics.halstead.level
old: 0.0975609756097561
new: 0.09523809523809525

path: .spaces[2].metrics.halstead.difficulty
old: 10.25
new: 10.5

path: .spaces[2].metrics.halstead.purity_ratio
old: 1.3913702656583822
new: 1.4636056848080872

path: .spaces[2].metrics.halstead.bugs
old: 0.08849074940728989
new: 0.060329099971885056

path: .spaces[2].metrics.nexits.average
old: 0.0
new: 2.0

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

path: .spaces[2].metrics.loc.lloc
old: 4.0
new: 5.0

path: .spaces[2].metrics.loc.sloc
old: 19.0
new: 12.0

path: .spaces[2].metrics.loc.blank
old: 1.0
new: 2.0

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

path: .spaces[2].metrics.loc.ploc
old: 13.0
new: 10.0

path: .spaces[2].metrics.mi.mi_visual_studio
old: 53.58839309842851
new: 59.628031627172646

path: .spaces[2].metrics.mi.mi_sei
old: 92.28734455519276
new: 71.60564977709792

path: .spaces[2].metrics.mi.mi_original
old: 91.63615219831276
new: 101.96393408246522

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

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

Code

nsUUIDGenerator::GenerateUUID(nsID** aRet) {
  nsID* id = static_cast(moz_xmalloc(sizeof(nsID)));

  nsresult rv = GenerateUUIDInPlace(id);
  if (NS_FAILED(rv)) {
    free(id);
    return rv;
  }

  *aRet = id;
  return rv;
}