Global Metrics

path: .metrics.mi.mi_original
old: 59.59067043899064
new: 46.30764898186061

path: .metrics.mi.mi_visual_studio
old: 34.84834528595944
new: 27.08049648062024

path: .metrics.mi.mi_sei
old: 53.88813423513955
new: 34.67949776667975

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

path: .metrics.nexits.average
old: 5.0
new: 1.0

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

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

path: .metrics.loc.blank
old: 0.0
new: 48.0

path: .metrics.loc.sloc
old: 73.0
new: 182.0

path: .metrics.loc.cloc
old: 30.0
new: 78.0

path: .metrics.loc.lloc
old: 36.0
new: 5.0

path: .metrics.loc.ploc
old: 46.0
new: 56.0

path: .metrics.nargs.average
old: 1.0
new: 0.75

path: .metrics.nargs.sum
old: 1.0
new: 3.0

path: .metrics.halstead.N2
old: 103.0
new: 88.0

path: .metrics.halstead.n2
old: 27.0
new: 49.0

path: .metrics.halstead.estimated_program_length
old: 232.42388754772497
new: 339.1207823616452

path: .metrics.halstead.length
old: 264.0
new: 241.0

path: .metrics.halstead.level
old: 0.022794428028704093
new: 0.06960227272727272

path: .metrics.halstead.N1
old: 161.0
new: 153.0

path: .metrics.halstead.time
old: 3631.4382333170265
new: 1158.479606156077

path: .metrics.halstead.difficulty
old: 43.870370370370374
new: 14.36734693877551

path: .metrics.halstead.effort
old: 65365.888199706475
new: 20852.63291080938

path: .metrics.halstead.volume
old: 1489.978034100527
new: 1451.3906429398576

path: .metrics.halstead.n1
old: 23.0
new: 16.0

path: .metrics.halstead.purity_ratio
old: 0.880393513438352
new: 1.4071401757744613

path: .metrics.halstead.vocabulary
old: 50.0
new: 65.0

path: .metrics.halstead.bugs
old: 0.5408948625175058
new: 0.25253370121449004

path: .metrics.cognitive.sum
old: 44.0
new: 4.0

path: .metrics.cognitive.average
old: 44.0
new: 1.0

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

path: .metrics.cyclomatic.average
old: 8.5
new: 1.5714285714285714

Spaces Data

Minimal test - lines (20, 94)

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

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

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

path: .spaces[0].metrics.halstead.purity_ratio
old: 0.853249340053021
new: 1.00983508354153

path: .spaces[0].metrics.halstead.bugs
old: 0.5459387797263592
new: 0.18395305619081004

path: .spaces[0].metrics.halstead.length
old: 258.0
new: 167.0

path: .spaces[0].metrics.halstead.level
old: 0.021739130434782608
new: 0.06808510638297872

path: .spaces[0].metrics.halstead.n2
old: 25.0
new: 24.0

path: .spaces[0].metrics.halstead.N1
old: 158.0
new: 120.0

path: .spaces[0].metrics.halstead.time
old: 3682.3519421421497
new: 720.2278127751699

path: .spaces[0].metrics.halstead.vocabulary
old: 48.0
new: 39.0

path: .spaces[0].metrics.halstead.volume
old: 1440.9203251860583
new: 882.6621705499955

path: .spaces[0].metrics.halstead.N2
old: 100.0
new: 47.0

path: .spaces[0].metrics.halstead.difficulty
old: 46.0
new: 14.6875

path: .spaces[0].metrics.halstead.estimated_program_length
old: 220.13832973367943
new: 168.64245895143551

path: .spaces[0].metrics.halstead.n1
old: 23.0
new: 15.0

path: .spaces[0].metrics.halstead.effort
old: 66282.33495855868
new: 12964.100629953058

path: .spaces[0].metrics.cognitive.sum
old: 44.0
new: 4.0

path: .spaces[0].metrics.cognitive.average
old: 44.0
new: 2.0

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

path: .spaces[0].metrics.cyclomatic.average
old: 16.0
new: 2.3333333333333335

path: .spaces[0].metrics.loc.sloc
old: 43.0
new: 75.0

path: .spaces[0].metrics.loc.ploc
old: 43.0
new: 24.0

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

path: .spaces[0].metrics.loc.lloc
old: 36.0
new: 3.0

path: .spaces[0].metrics.loc.cloc
old: 9.0
new: 40.0

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

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

path: .spaces[0].metrics.mi.mi_original
old: 68.56876414945836
new: 64.17539138085391

path: .spaces[0].metrics.mi.mi_visual_studio
old: 40.09869248506337
new: 37.529468643774216

path: .spaces[0].metrics.mi.mi_sei
old: 57.396320967959014
new: 62.847217213642125

Code

struct nsID {
  /**
   * @name Identifier values
   */

  //@{
  uint32_t m0;
  uint16_t m1;
  uint16_t m2;
  uint8_t m3[8];
  //@}

  /**
   * @name Methods
   */

  //@{
  /**
   * Ensures everything is zeroed out.
   */
  void Clear();

  /**
   * Equivalency method. Compares this nsID with another.
   * @return true if they are the same, false if not.
   */

  inline bool Equals(const nsID& aOther) const {
    // At the time of this writing, modern compilers (namely Clang) inline this
    // memcmp call into a single SIMD operation on x86/x86-64 architectures (as
    // long as we compare to zero rather than returning the full integer return
    // value), which is measurably more efficient to any manual comparisons we
    // can do directly.
#if defined(__x86_64__) || defined(__i386__)
    return !memcmp(this, &aOther, sizeof *this);
#else
    // However, on ARM architectures, compilers still tend to generate a direct
    // memcmp call, which we'd like to avoid.
    return (((uint32_t*)&m0)[0] == ((uint32_t*)&aOther.m0)[0]) &&
           (((uint32_t*)&m0)[1] == ((uint32_t*)&aOther.m0)[1]) &&
           (((uint32_t*)&m0)[2] == ((uint32_t*)&aOther.m0)[2]) &&
           (((uint32_t*)&m0)[3] == ((uint32_t*)&aOther.m0)[3]);
#endif
  }

  inline bool operator==(const nsID& aOther) const { return Equals(aOther); }

  /**
   * nsID Parsing method. Turns a {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
   * string into an nsID
   */
  bool Parse(const char* aIDStr);

#ifndef XPCOM_GLUE_AVOID_NSPR
  /**
   * nsID string encoder. Returns an allocated string in
   * {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} format. Caller should free string.
   * YOU SHOULD ONLY USE THIS IF YOU CANNOT USE ToProvidedString() BELOW.
   */
  char* ToString() const;

  /**
   * nsID string encoder. Builds a string in
   * {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} format, into a char[NSID_LENGTH]
   * buffer provided by the caller (for instance, on the stack).
   */
  void ToProvidedString(char (&aDest)[NSID_LENGTH]) const;

#endif  // XPCOM_GLUE_AVOID_NSPR

  // Infallibly duplicate an nsID. Must be freed with free().
  nsID* Clone() const;

  //@}
};