Global Metrics

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

path: .metrics.cognitive.average
old: 0.7777777777777778
new: 0.0

path: .metrics.halstead.time
old: 8125.608625804592
new: 619.0426347378798

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

path: .metrics.halstead.effort
old: 146260.95526448265
new: 11142.767425281836

path: .metrics.halstead.difficulty
old: 28.00751879699248
new: 9.425

path: .metrics.halstead.volume
old: 5222.203234946629
new: 1182.2564907460833

path: .metrics.halstead.N1
old: 417.0
new: 104.0

path: .metrics.halstead.N2
old: 298.0
new: 87.0

path: .metrics.halstead.bugs
old: 0.9253322153092284
new: 0.16629305908288375

path: .metrics.halstead.estimated_program_length
old: 1054.4489686660263
new: 402.5191520723453

path: .metrics.halstead.purity_ratio
old: 1.4747538023301068
new: 2.107430115562017

path: .metrics.halstead.length
old: 715.0
new: 191.0

path: .metrics.halstead.n2
old: 133.0
new: 60.0

path: .metrics.halstead.level
old: 0.03570469798657718
new: 0.10610079575596816

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

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

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

path: .metrics.nom.functions
old: 9.0
new: 2.0

path: .metrics.nom.total
old: 9.0
new: 2.0

path: .metrics.cyclomatic.sum
old: 27.0
new: 4.0

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

path: .metrics.loc.cloc
old: 10.0
new: 25.0

path: .metrics.loc.ploc
old: 109.0
new: 60.0

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

path: .metrics.loc.sloc
old: 132.0
new: 105.0

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

path: .metrics.mi.mi_original
old: 41.17310058316278
new: 57.89490543475034

path: .metrics.mi.mi_sei
old: 7.128369036523772
new: 42.52936530049615

path: .metrics.mi.mi_visual_studio
old: 24.07783659834081
new: 33.85666984488324

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

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

Spaces Data

Minimal test - lines (60, 60)

path: .spaces[0].spaces[1].metrics.mi.mi_original
old: 98.54504994353468
new: 159.95690398326485

path: .spaces[0].spaces[1].metrics.mi.mi_sei
old: 66.77506244389335
new: 155.17000000000002

path: .spaces[0].spaces[1].metrics.mi.mi_visual_studio
old: 57.62868417750566
new: 93.54204911302038

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

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

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

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

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

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

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

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

path: .spaces[0].spaces[1].metrics.halstead.estimated_program_length
old: 118.76437056043838
new: 4.754887502163468

path: .spaces[0].spaces[1].metrics.halstead.time
old: 155.61443099406432
new: 0.6666666666666666

path: .spaces[0].spaces[1].metrics.halstead.vocabulary
old: 30.0
new: 4.0

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

path: .spaces[0].spaces[1].metrics.halstead.effort
old: 2801.059757893158
new: 12.0

path: .spaces[0].spaces[1].metrics.halstead.difficulty
old: 8.394736842105264
new: 1.5

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

path: .spaces[0].spaces[1].metrics.halstead.N1
old: 39.0
new: 3.0

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

path: .spaces[0].spaces[1].metrics.halstead.purity_ratio
old: 1.7465348611829177
new: 1.188721875540867

path: .spaces[0].spaces[1].metrics.halstead.length
old: 68.0
new: 4.0

path: .spaces[0].spaces[1].metrics.halstead.bugs
old: 0.06623593349225605
new: 0.0017471609294725976

path: .spaces[0].spaces[1].metrics.halstead.level
old: 0.11912225705329152
new: 0.6666666666666666

path: .spaces[0].spaces[1].metrics.halstead.volume
old: 333.66856050137926
new: 8.0

Code

  ~nsMacUtilsImpl() {}

Minimal test - lines (26, 26)

path: .spaces[0].spaces[0].metrics.halstead.level
old: 0.16666666666666666
new: 1.0

path: .spaces[0].spaces[0].metrics.halstead.purity_ratio
old: 1.723308333814104
new: 0.6666666666666666

path: .spaces[0].spaces[0].metrics.halstead.effort
old: 151.59716579111063
new: 4.754887502163468

path: .spaces[0].spaces[0].metrics.halstead.N1
old: 7.0
new: 2.0

path: .spaces[0].spaces[0].metrics.halstead.volume
old: 25.26619429851844
new: 4.754887502163468

path: .spaces[0].spaces[0].metrics.halstead.difficulty
old: 6.0
new: 1.0

path: .spaces[0].spaces[0].metrics.halstead.n1
old: 6.0
new: 2.0

path: .spaces[0].spaces[0].metrics.halstead.time
old: 8.422064766172813
new: 0.26416041678685936

path: .spaces[0].spaces[0].metrics.halstead.length
old: 9.0
new: 3.0

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

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

path: .spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: 15.509775004326936
new: 2.0

path: .spaces[0].spaces[0].metrics.halstead.bugs
old: 0.009477041882051136
new: 0.0009425525573729414

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

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

path: .spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: 90.04489473439764
new: 95.12415216859318

path: .spaces[0].spaces[0].metrics.mi.mi_sei
old: 146.54249035246173
new: 159.07306171748976

path: .spaces[0].spaces[0].metrics.mi.mi_original
old: 153.97676999581998
new: 162.66230020829434

Code

  nsMacUtilsImpl() {}

Minimal test - lines (21, 93)

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

path: .spaces[0].metrics.cyclomatic.sum
old: 26.0
new: 3.0

path: .spaces[0].metrics.nom.total
old: 9.0
new: 2.0

path: .spaces[0].metrics.nom.functions
old: 9.0
new: 2.0

path: .spaces[0].metrics.halstead.time
old: 8138.061272982221
new: 537.5882352941176

path: .spaces[0].metrics.halstead.volume
old: 5208.359214708622
new: 1026.0

path: .spaces[0].metrics.halstead.length
old: 714.0
new: 171.0

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

path: .spaces[0].metrics.halstead.N1
old: 417.0
new: 97.0

path: .spaces[0].metrics.halstead.level
old: 0.035555555555555556
new: 0.10602910602910602

path: .spaces[0].metrics.halstead.purity_ratio
old: 1.4649249698875126
new: 1.9730959577566107

path: .spaces[0].metrics.halstead.effort
old: 146485.10291368
new: 9676.588235294115

path: .spaces[0].metrics.halstead.n2
old: 132.0
new: 51.0

path: .spaces[0].metrics.halstead.vocabulary
old: 157.0
new: 64.0

path: .spaces[0].metrics.halstead.estimated_program_length
old: 1045.956428499684
new: 337.3994087763804

path: .spaces[0].metrics.halstead.N2
old: 297.0
new: 74.0

path: .spaces[0].metrics.halstead.bugs
old: 0.9262773666180946
new: 0.15136550679438876

path: .spaces[0].metrics.halstead.difficulty
old: 28.125
new: 9.431372549019608

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

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

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

path: .spaces[0].metrics.loc.ploc
old: 108.0
new: 45.0

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

path: .spaces[0].metrics.loc.sloc
old: 120.0
new: 73.0

path: .spaces[0].metrics.loc.blank
old: 12.0
new: 11.0

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

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

path: .spaces[0].metrics.mi.mi_visual_studio
old: 25.123350269099543
new: 37.86593995298031

path: .spaces[0].metrics.mi.mi_sei
old: -11.07401648469056
new: 52.01420085788949

path: .spaces[0].metrics.mi.mi_original
old: 42.96092896016022
new: 64.75075731959633

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

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

Code

class nsMacUtilsImpl final : public nsIMacUtils {
 public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMACUTILS

  nsMacUtilsImpl() {}

  // Return the repo directory and the repo object directory respectively.
  // These should only be used on Mac developer builds to determine the path
  // to the repo or object directory.
  static nsresult GetRepoDir(nsIFile** aRepoDir);
  static nsresult GetObjDir(nsIFile** aObjDir);

#if defined(MOZ_SANDBOX)
  static bool GetAppPath(nsCString& aAppPath);
#  ifdef DEBUG
  static nsresult GetBloatLogDir(nsCString& aDirectoryPath);
  static nsresult GetDirectoryPath(const char* aPath,
                                   nsCString& aDirectoryPath);
#  endif /* DEBUG */
#endif   /* MOZ_SANDBOX */

  static void EnableTCSMIfAvailable();
  static bool IsTCSMAvailable();
  static uint32_t GetPhysicalCPUCount();
  static nsresult GetArchitecturesForBundle(uint32_t* aArchMask);
  static nsresult GetArchitecturesForBinary(const char* aPath,
                                            uint32_t* aArchMask);

#if defined(__aarch64__)
  // Pre-translate binaries to avoid translation delays when launching
  // x64 child process instances for the first time. i.e. on first launch
  // after installation or after an update. Translations are cached so
  // repeated launches of the binaries do not encounter delays.
  static int PreTranslateXUL();
  static int PreTranslateBinary(nsCString aBinaryPath);
#endif

 private:
  ~nsMacUtilsImpl() {}

  nsresult GetArchString(nsAString& aArchString);

  // A string containing a "-" delimited list of architectures
  // in our binary.
  nsString mBinaryArchs;

#if defined(MOZ_SANDBOX)
  // Cache the appDir returned from GetAppPath to avoid doing I/O
  static StaticAutoPtr sCachedAppPath;
  // For thread safe setting/checking of sCachedAppPath
  static StaticMutex sCachedAppPathMutex;
  // Utility method to call ClearOnShutdown() on the main thread
  static nsresult ClearCachedAppPathOnShutdown();
#endif

  // The cached machine architectures of the .app bundle which can
  // be multiple architectures for universal binaries.
  static std::atomic sBundleArchMaskAtomic;

#if defined(__aarch64__)
  // Limit XUL translation to one attempt
  static std::atomic sIsXULTranslated;
#endif

  enum TCSMStatus { TCSM_Unknown = 0, TCSM_Available, TCSM_Unavailable };
  static mozilla::Atomic sTCSMStatus;

  static nsresult EnableTCSM();
#if defined(DEBUG)
  static bool IsTCSMEnabled();
#endif
};