Global Metrics

path: .metrics.nom.functions
old: 44.0
new: 8.0

path: .metrics.nom.total
old: 44.0
new: 8.0

path: .metrics.cognitive.average
old: 0.1590909090909091
new: 8.375

path: .metrics.cognitive.sum
old: 7.0
new: 67.0

path: .metrics.halstead.n2
old: 196.0
new: 153.0

path: .metrics.halstead.bugs
old: 3.514604433551867
new: 2.1885182694000376

path: .metrics.halstead.effort
old: 1082671.1416046373
new: 531994.505232786

path: .metrics.halstead.estimated_program_length
old: 1551.0864883807085
new: 1238.7623024903896

path: .metrics.halstead.level
old: 0.020118039517577624
new: 0.019307211811470753

path: .metrics.halstead.N2
old: 1299.0
new: 587.0

path: .metrics.halstead.volume
old: 21781.22081134297
new: 10271.330595067984

path: .metrics.halstead.n1
old: 15.0
new: 27.0

path: .metrics.halstead.vocabulary
old: 211.0
new: 180.0

path: .metrics.halstead.difficulty
old: 49.70663265306123
new: 51.794117647058826

path: .metrics.halstead.purity_ratio
old: 0.5498356924426474
new: 0.903546537192115

path: .metrics.halstead.length
old: 2821.0
new: 1371.0

path: .metrics.halstead.N1
old: 1522.0
new: 784.0

path: .metrics.halstead.time
old: 60148.396755813184
new: 29555.25029071033

path: .metrics.loc.lloc
old: 381.0
new: 137.0

path: .metrics.loc.ploc
old: 770.0
new: 334.0

path: .metrics.loc.sloc
old: 1188.0
new: 431.0

path: .metrics.loc.blank
old: 217.0
new: 49.0

path: .metrics.loc.cloc
old: 201.0
new: 48.0

path: .metrics.nargs.average
old: 0.0
new: 1.375

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

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

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

path: .metrics.mi.mi_original
old: -7.36820722241913
new: 9.286067289740204

path: .metrics.mi.mi_sei
old: -51.38959404382013
new: -30.768387823345194

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

path: .metrics.cyclomatic.sum
old: 51.0
new: 67.0

path: .metrics.cyclomatic.average
old: 1.1333333333333333
new: 6.7

Spaces Data

Minimal test - lines (316, 350)

path: .spaces[2].metrics.loc.sloc
old: 15.0
new: 35.0

path: .spaces[2].metrics.loc.lloc
old: 6.0
new: 15.0

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

path: .spaces[2].metrics.loc.blank
old: 3.0
new: 6.0

path: .spaces[2].metrics.loc.ploc
old: 12.0
new: 28.0

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

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

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

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

path: .spaces[2].metrics.mi.mi_visual_studio
old: 56.99652708262877
new: 45.46520322852135

path: .spaces[2].metrics.mi.mi_sei
old: 65.0118857860952
new: 50.22070109521441

path: .spaces[2].metrics.mi.mi_original
old: 97.4640613112952
new: 77.74549752077151

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

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

path: .spaces[2].metrics.halstead.estimated_program_length
old: 124.49230970275752
new: 191.15505477032977

path: .spaces[2].metrics.halstead.effort
old: 2133.524641068108
new: 12254.025170248651

path: .spaces[2].metrics.halstead.vocabulary
old: 31.0
new: 43.0

path: .spaces[2].metrics.halstead.purity_ratio
old: 2.146419132806164
new: 1.5541061363441442

path: .spaces[2].metrics.halstead.bugs
old: 0.05524299137655787
new: 0.1771731570683446

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

path: .spaces[2].metrics.halstead.N2
old: 27.0
new: 51.0

path: .spaces[2].metrics.halstead.difficulty
old: 7.425
new: 18.36

path: .spaces[2].metrics.halstead.level
old: 0.13468013468013468
new: 0.054466230936819175

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

path: .spaces[2].metrics.halstead.volume
old: 287.34338600243876
new: 667.430564828358

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

path: .spaces[2].metrics.halstead.length
old: 58.0
new: 123.0

path: .spaces[2].metrics.halstead.time
old: 118.529146726006
new: 680.7791761249251

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

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

Code

nsresult nsAppFileLocationProvider::GetDefaultUserProfileRoot(
    nsIFile** aLocalFile, bool aLocal) {
  if (NS_WARN_IF(!aLocalFile)) {
    return NS_ERROR_INVALID_ARG;
  }

  nsresult rv;
  nsCOMPtr localDir;

  rv = GetProductDirectory(getter_AddRefs(localDir), aLocal);
  if (NS_FAILED(rv)) {
    return rv;
  }

#if defined(MOZ_WIDGET_COCOA) || defined(XP_WIN)
  // These 3 platforms share this part of the path - do them as one
  rv = localDir->AppendRelativeNativePath("Profiles"_ns);
  if (NS_FAILED(rv)) {
    return rv;
  }

  bool exists;
  rv = localDir->Exists(&exists);
  if (NS_SUCCEEDED(rv) && !exists) {
    rv = localDir->Create(nsIFile::DIRECTORY_TYPE, 0775);
  }
  if (NS_FAILED(rv)) {
    return rv;
  }
#endif

  localDir.forget(aLocalFile);

  return rv;
}

Minimal test - lines (406, 431)

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

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

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

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

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

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

path: .spaces[4].metrics.mi.mi_visual_studio
old: 57.3011325093952
new: 49.78502353967481

path: .spaces[4].metrics.mi.mi_original
old: 97.9849365910658
new: 85.13239025284392

path: .spaces[4].metrics.mi.mi_sei
old: 65.76334996914186
new: 47.42468482300251

path: .spaces[4].metrics.halstead.bugs
old: 0.04240986217448183
new: 0.1026129329747968

path: .spaces[4].metrics.halstead.time
old: 79.72777947550486
new: 300.0630564912806

path: .spaces[4].metrics.halstead.volume
old: 212.6074119346796
new: 507.79901867755166

path: .spaces[4].metrics.halstead.effort
old: 1435.1000305590874
new: 5401.13501684305

path: .spaces[4].metrics.halstead.length
old: 47.0
new: 99.0

path: .spaces[4].metrics.halstead.n1
old: 9.0
new: 13.0

path: .spaces[4].metrics.halstead.n2
old: 14.0
new: 22.0

path: .spaces[4].metrics.halstead.N2
old: 21.0
new: 36.0

path: .spaces[4].metrics.halstead.vocabulary
old: 23.0
new: 35.0

path: .spaces[4].metrics.halstead.level
old: 0.14814814814814814
new: 0.09401709401709402

path: .spaces[4].metrics.halstead.difficulty
old: 6.75
new: 10.636363636363637

path: .spaces[4].metrics.halstead.purity_ratio
old: 1.7411126366337717
new: 1.4769011307662094

path: .spaces[4].metrics.halstead.N1
old: 26.0
new: 63.0

path: .spaces[4].metrics.halstead.estimated_program_length
old: 81.83229392178727
new: 146.21321194585474

path: .spaces[4].metrics.loc.blank
old: 3.0
new: 1.0

path: .spaces[4].metrics.loc.lloc
old: 7.0
new: 8.0

path: .spaces[4].metrics.loc.ploc
old: 13.0
new: 25.0

path: .spaces[4].metrics.loc.sloc
old: 16.0
new: 26.0

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

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

Code

nsAppFileLocationProvider::GetFiles(const char* aProp,
                                    nsISimpleEnumerator** aResult) {
  if (NS_WARN_IF(!aResult)) {
    return NS_ERROR_INVALID_ARG;
  }
  *aResult = nullptr;
  nsresult rv = NS_ERROR_FAILURE;

  if (!nsCRT::strcmp(aProp, NS_APP_PLUGINS_DIR_LIST)) {
#ifdef MOZ_WIDGET_COCOA
    static const char* keys[] = {NS_MACOSX_USER_PLUGIN_DIR,
                                 NS_MACOSX_LOCAL_PLUGIN_DIR, nullptr};
#else
#  ifdef XP_UNIX
    static const char* keys[] = {NS_USER_PLUGINS_DIR, NS_SYSTEM_PLUGINS_DIR,
                                 nullptr};
#  else
    static const char* keys[] = {NS_USER_PLUGINS_DIR, nullptr};
#  endif
#endif
    *aResult = new nsAppDirectoryEnumerator(this, keys);
    NS_ADDREF(*aResult);
    rv = NS_OK;
  }
  return rv;
}

Minimal test - lines (356, 403)

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

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

path: .spaces[3].metrics.loc.lloc
old: 29.0
new: 16.0

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

path: .spaces[3].metrics.loc.ploc
old: 40.0
new: 37.0

path: .spaces[3].metrics.halstead.purity_ratio
old: 1.377766039383949
new: 1.3876197305776996

path: .spaces[3].metrics.halstead.difficulty
old: 11.916666666666666
new: 23.53448275862069

path: .spaces[3].metrics.halstead.bugs
old: 0.1852880500177585
new: 0.26420355946931096

path: .spaces[3].metrics.halstead.time
old: 728.0823333355888
new: 1239.7022044436203

path: .spaces[3].metrics.halstead.vocabulary
old: 53.0
new: 50.0

path: .spaces[3].metrics.halstead.effort
old: 13105.4820000406
new: 22314.63967998517

path: .spaces[3].metrics.halstead.N2
old: 91.0
new: 65.0

path: .spaces[3].metrics.halstead.length
old: 192.0
new: 168.0

path: .spaces[3].metrics.halstead.level
old: 0.08391608391608392
new: 0.04249084249084249

path: .spaces[3].metrics.halstead.n1
old: 11.0
new: 21.0

path: .spaces[3].metrics.halstead.volume
old: 1099.7607272761345
new: 948.1678398821535

path: .spaces[3].metrics.halstead.N1
old: 101.0
new: 103.0

path: .spaces[3].metrics.halstead.estimated_program_length
old: 264.53107956171823
new: 233.1201147370535

path: .spaces[3].metrics.halstead.n2
old: 42.0
new: 29.0

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

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

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

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

path: .spaces[3].metrics.nom.total
old: 1.0
new: 4.0

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

path: .spaces[3].metrics.mi.mi_original
old: 71.64173446806194
new: 70.34297965235064

path: .spaces[3].metrics.mi.mi_sei
old: 38.84554594023501
new: 48.42355645552492

path: .spaces[3].metrics.mi.mi_visual_studio
old: 41.89575115091341
new: 41.13624541073136

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

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

Code

class nsAppDirectoryEnumerator : public nsSimpleEnumerator {
 public:
  /**
   * aKeyList is a null-terminated list of properties which are provided by
   * aProvider They do not need to be publicly defined keys.
   */
  nsAppDirectoryEnumerator(nsIDirectoryServiceProvider* aProvider,
                           const char* aKeyList[])
      : mProvider(aProvider), mCurrentKey(aKeyList) {}

  const nsID& DefaultInterface() override { return NS_GET_IID(nsIFile); }

  NS_IMETHOD HasMoreElements(bool* aResult) override {
    while (!mNext && *mCurrentKey) {
      bool dontCare;
      nsCOMPtr testFile;
      (void)mProvider->GetFile(*mCurrentKey++, &dontCare,
                               getter_AddRefs(testFile));
      mNext = testFile;
    }
    *aResult = mNext != nullptr;
    return NS_OK;
  }

  NS_IMETHOD GetNext(nsISupports** aResult) override {
    if (NS_WARN_IF(!aResult)) {
      return NS_ERROR_INVALID_ARG;
    }
    *aResult = nullptr;

    bool hasMore;
    HasMoreElements(&hasMore);
    if (!hasMore) {
      return NS_ERROR_FAILURE;
    }

    *aResult = mNext;
    NS_IF_ADDREF(*aResult);
    mNext = nullptr;

    return *aResult ? NS_OK : NS_ERROR_FAILURE;
  }

 protected:
  nsCOMPtr mProvider;
  const char** mCurrentKey;
  nsCOMPtr mNext;
};

Minimal test - lines (240, 306)

path: .spaces[1].metrics.cyclomatic.sum
old: 4.0
new: 14.0

path: .spaces[1].metrics.cyclomatic.average
old: 4.0
new: 14.0

path: .spaces[1].metrics.loc.sloc
old: 113.0
new: 67.0

path: .spaces[1].metrics.loc.ploc
old: 88.0
new: 60.0

path: .spaces[1].metrics.loc.blank
old: 25.0
new: 7.0

path: .spaces[1].metrics.loc.lloc
old: 31.0
new: 28.0

path: .spaces[1].metrics.cognitive.average
old: 3.0
new: 11.0

path: .spaces[1].metrics.cognitive.sum
old: 3.0
new: 11.0

path: .spaces[1].metrics.mi.mi_original
old: 53.75002967574919
new: 61.0052626805674

path: .spaces[1].metrics.mi.mi_sei
old: 2.251328706443033
new: 13.736615977032857

path: .spaces[1].metrics.mi.mi_visual_studio
old: 31.43276589225099
new: 35.67559221085813

path: .spaces[1].metrics.halstead.time
old: 2347.9547136552023
new: 1818.6097158575235

path: .spaces[1].metrics.halstead.volume
old: 2087.070856582402
new: 1693.1883561432116

path: .spaces[1].metrics.halstead.length
old: 361.0
new: 271.0

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

path: .spaces[1].metrics.halstead.purity_ratio
old: 0.7708275319253499
new: 1.5246692013388132

path: .spaces[1].metrics.halstead.N1
old: 199.0
new: 155.0

path: .spaces[1].metrics.halstead.level
old: 0.04938271604938271
new: 0.05172413793103449

path: .spaces[1].metrics.halstead.estimated_program_length
old: 278.26873902505133
new: 413.1853535628184

path: .spaces[1].metrics.halstead.vocabulary
old: 55.0
new: 76.0

path: .spaces[1].metrics.halstead.difficulty
old: 20.25
new: 19.333333333333332

path: .spaces[1].metrics.halstead.n2
old: 44.0
new: 57.0

path: .spaces[1].metrics.halstead.bugs
old: 0.4044394950223365
new: 0.3411039537192685

path: .spaces[1].metrics.halstead.N2
old: 162.0
new: 116.0

path: .spaces[1].metrics.halstead.effort
old: 42263.18484579364
new: 32734.974885435426

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

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

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

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

Code

nsresult nsAppFileLocationProvider::GetProductDirectory(nsIFile** aLocalFile,
                                                        bool aLocal) {
  if (NS_WARN_IF(!aLocalFile)) {
    return NS_ERROR_INVALID_ARG;
  }

  nsresult rv;
  bool exists;
  nsCOMPtr localDir;

#if defined(MOZ_WIDGET_COCOA)
  FSRef fsRef;
  OSType folderType =
      aLocal ? (OSType)kCachedDataFolderType : (OSType)kDomainLibraryFolderType;
  OSErr err = ::FSFindFolder(kUserDomain, folderType, kCreateFolder, &fsRef);
  if (err) {
    return NS_ERROR_FAILURE;
  }
  NS_NewLocalFile(u""_ns, true, getter_AddRefs(localDir));
  if (!localDir) {
    return NS_ERROR_FAILURE;
  }
  nsCOMPtr localDirMac(do_QueryInterface(localDir));
  rv = localDirMac->InitWithFSRef(&fsRef);
  if (NS_FAILED(rv)) {
    return rv;
  }
#elif defined(XP_WIN)
  nsCOMPtr directoryService =
      do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
  if (NS_FAILED(rv)) {
    return rv;
  }
  const char* prop = aLocal ? NS_WIN_LOCAL_APPDATA_DIR : NS_WIN_APPDATA_DIR;
  rv = directoryService->Get(prop, NS_GET_IID(nsIFile),
                             getter_AddRefs(localDir));
  if (NS_FAILED(rv)) {
    return rv;
  }
#elif defined(XP_UNIX)
  rv = NS_NewNativeLocalFile(nsDependentCString(PR_GetEnv("HOME")), true,
                             getter_AddRefs(localDir));
  if (NS_FAILED(rv)) {
    return rv;
  }
#else
#  error dont_know_how_to_get_product_dir_on_your_platform
#endif

  rv = localDir->AppendRelativeNativePath(DEFAULT_PRODUCT_DIR);
  if (NS_FAILED(rv)) {
    return rv;
  }
  rv = localDir->Exists(&exists);

  if (NS_SUCCEEDED(rv) && !exists) {
    rv = localDir->Create(nsIFile::DIRECTORY_TYPE, 0700);
  }

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

  localDir.forget(aLocalFile);

  return rv;
}

Minimal test - lines (193, 230)

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

path: .spaces[0].metrics.nexits.average
old: 0.0
new: 5.0

path: .spaces[0].metrics.cognitive.average
old: 0.0
new: 10.0

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

path: .spaces[0].metrics.loc.lloc
old: 22.0
new: 15.0

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

path: .spaces[0].metrics.loc.sloc
old: 37.0
new: 38.0

path: .spaces[0].metrics.loc.blank
old: 6.0
new: 4.0

path: .spaces[0].metrics.mi.mi_sei
old: 49.154530841432134
new: 59.50425162703069

path: .spaces[0].metrics.mi.mi_original
old: 77.74095786198464
new: 76.52760849559937

path: .spaces[0].metrics.mi.mi_visual_studio
old: 45.46254845730096
new: 44.75298742432712

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

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

path: .spaces[0].metrics.halstead.level
old: 0.106280193236715
new: 0.05974025974025974

path: .spaces[0].metrics.halstead.effort
old: 7204.626287507222
new: 11423.425238934611

path: .spaces[0].metrics.halstead.time
old: 400.25701597262344
new: 634.6347354963674

path: .spaces[0].metrics.halstead.n2
old: 33.0
new: 23.0

path: .spaces[0].metrics.halstead.volume
old: 765.709074034584
new: 682.4383908973924

path: .spaces[0].metrics.halstead.bugs
old: 0.12434253509723003
new: 0.1690737977009159

path: .spaces[0].metrics.halstead.length
old: 142.0
new: 131.0

path: .spaces[0].metrics.halstead.difficulty
old: 9.409090909090908
new: 16.73913043478261

path: .spaces[0].metrics.halstead.N2
old: 69.0
new: 55.0

path: .spaces[0].metrics.halstead.purity_ratio
old: 1.3731995137451394
new: 1.201106060290975

path: .spaces[0].metrics.halstead.n1
old: 9.0
new: 14.0

path: .spaces[0].metrics.halstead.vocabulary
old: 42.0
new: 37.0

path: .spaces[0].metrics.halstead.estimated_program_length
old: 194.9943309518098
new: 157.34489389811776

path: .spaces[0].metrics.halstead.N1
old: 73.0
new: 76.0

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

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

Code

nsresult nsAppFileLocationProvider::CloneMozBinDirectory(nsIFile** aLocalFile) {
  if (NS_WARN_IF(!aLocalFile)) {
    return NS_ERROR_INVALID_ARG;
  }
  nsresult rv;

  if (!mMozBinDirectory) {
    // Get the mozilla bin directory
    // 1. Check the directory service first for NS_XPCOM_CURRENT_PROCESS_DIR
    //    This will be set if a directory was passed to NS_InitXPCOM
    // 2. If that doesn't work, set it to be the current process directory
    nsCOMPtr directoryService(
        do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv));
    if (NS_FAILED(rv)) {
      return rv;
    }

    rv =
        directoryService->Get(NS_XPCOM_CURRENT_PROCESS_DIR, NS_GET_IID(nsIFile),
                              getter_AddRefs(mMozBinDirectory));
    if (NS_FAILED(rv)) {
      rv = directoryService->Get(NS_OS_CURRENT_PROCESS_DIR, NS_GET_IID(nsIFile),
                                 getter_AddRefs(mMozBinDirectory));
      if (NS_FAILED(rv)) {
        return rv;
      }
    }
  }

  nsCOMPtr aFile;
  rv = mMozBinDirectory->Clone(getter_AddRefs(aFile));
  if (NS_FAILED(rv)) {
    return rv;
  }

  NS_IF_ADDREF(*aLocalFile = aFile);
  return NS_OK;
}