# Global Metrics

path: .metrics.cognitive.average
old: 0.0
new: 0.06666666666666667
path: .metrics.cognitive.sum
old: 0.0
new: 1.0
path: .metrics.nargs.sum
old: 0.0
new: 13.0
path: .metrics.nargs.average
old: 0.0
new: 0.8666666666666667
path: .metrics.cyclomatic.sum
old: 6.0
new: 19.0
path: .metrics.cyclomatic.average
old: 1.0
new: 1.0555555555555556
path: .metrics.loc.cloc
old: 36.0
new: 38.0
path: .metrics.loc.ploc
old: 29.0
new: 62.0
path: .metrics.loc.sloc
old: 75.0
new: 112.0
path: .metrics.loc.blank
old: 10.0
new: 12.0
path: .metrics.loc.lloc
old: 1.0
new: 15.0
path: .metrics.halstead.volume
old: 699.9881533565706
new: 1401.3429553541876
path: .metrics.halstead.length
old: 129.0
new: 269.0
path: .metrics.halstead.level
old: 0.07397959183673469
new: 0.02154195011337869
path: .metrics.halstead.time
old: 525.6616017543596
new: 3613.989726966063
path: .metrics.halstead.N1
old: 73.0
new: 171.0
path: .metrics.halstead.n2
old: 29.0
new: 19.0
path: .metrics.halstead.effort
old: 9461.908831578472
new: 65051.81508538913
path: .metrics.halstead.vocabulary
old: 43.0
new: 37.0
path: .metrics.halstead.n1
old: 14.0
new: 18.0
path: .metrics.halstead.bugs
old: 0.14911840556974285
new: 0.5391608605614807
path: .metrics.halstead.N2
old: 56.0
new: 98.0
path: .metrics.halstead.difficulty
old: 13.517241379310343
new: 46.421052631578945
path: .metrics.halstead.estimated_program_length
old: 194.18441776750603
new: 155.76927278138973
path: .metrics.halstead.purity_ratio
old: 1.505305564089194
new: 0.5790679285553522
path: .metrics.mi.mi_sei
old: 63.50627449220713
new: 41.23749784308964
path: .metrics.mi.mi_visual_studio
old: 38.36910106600449
new: 30.710730687077632
path: .metrics.mi.mi_original
old: 65.61116282286767
new: 52.51534947490275
path: .metrics.nexits.sum
old: 1.0
new: 13.0
path: .metrics.nexits.average
old: 0.3333333333333333
new: 0.8666666666666667
path: .metrics.nom.functions
old: 3.0
new: 15.0
path: .metrics.nom.total
old: 3.0
new: 15.0

# Spaces Data

## Minimal test - lines (61, 63)

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.n1
old: 4.0
new: 6.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.level
old: 0.4
new: 0.26666666666666666
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.time
old: 4.583333333333333
new: 8.304820237218406
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.volume
old: 33.0
new: 39.86313713864835
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.length
old: 11.0
new: 12.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: 16.0
new: 23.509775004326936
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.vocabulary
old: 8.0
new: 10.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.N1
old: 6.0
new: 7.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.difficulty
old: 2.5
new: 3.75
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.bugs
old: 0.006317055768674653
new: 0.009388882548620756
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.effort
old: 82.5
new: 149.4867642699313
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.purity_ratio
old: 1.4545454545454546
new: 1.9591479170272448
path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_original
old: 152.5881606803743
new: 133.808130442365
path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_sei
old: 144.53915057933605
new: 117.44529408721525
path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: 89.23284250314286
new: 78.25036867974562
path: .spaces[0].spaces[0].spaces[0].metrics.loc.ploc
old: 1.0
new: 3.0
path: .spaces[0].spaces[0].spaces[0].metrics.loc.lloc
old: 0.0
new: 1.0
path: .spaces[0].spaces[0].spaces[0].metrics.loc.sloc
old: 1.0
new: 3.0
path: .spaces[0].spaces[0].spaces[0].metrics.nargs.average
old: 0.0
new: 1.0
path: .spaces[0].spaces[0].spaces[0].metrics.nargs.sum
old: 0.0
new: 1.0

### Code

      explicit Version(const char* aVersionString) {
        versionContent = strdup(aVersionString);
      }

## Minimal test - lines (67, 67)

path: .spaces[0].spaces[0].spaces[2].metrics.mi.mi_original
old: 155.2836050228807
new: 154.58924178123317
path: .spaces[0].spaces[0].spaces[2].metrics.mi.mi_visual_studio
old: 90.80912574437468
new: 90.4030653691422
path: .spaces[0].spaces[0].spaces[2].metrics.mi.mi_sei
old: 148.4278547652622
new: 147.42610035996177
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.purity_ratio
old: 1.944234353490973
new: 1.5943609377704335
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.level
old: 0.4
new: 0.5
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.bugs
old: 0.004471319041702271
new: 0.00421201861424495
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.N2
old: 2.0
new: 3.0
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.n1
old: 5.0
new: 4.0
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.n2
old: 2.0
new: 3.0
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.length
old: 7.0
new: 8.0
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.effort
old: 49.12871113600807
new: 44.91767875292167
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.estimated_program_length
old: 13.60964047443681
new: 12.754887502163468
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.difficulty
old: 2.5
new: 2.0
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.time
old: 2.7293728408893374
new: 2.495426597384537
path: .spaces[0].spaces[0].spaces[2].metrics.halstead.volume
old: 19.651484454403228
new: 22.458839376460833
path: .spaces[0].spaces[0].spaces[2].metrics.nexits.average
old: 1.0
new: 0.0
path: .spaces[0].spaces[0].spaces[2].metrics.nexits.sum
old: 1.0
new: 0.0

### Code

      ~Version() { free(versionContent); }

## Minimal test - lines (43, 110)

path: .spaces[0].metrics.loc.lloc
old: 1.0
new: 15.0
path: .spaces[0].metrics.loc.sloc
old: 61.0
new: 68.0
path: .spaces[0].metrics.loc.ploc
old: 23.0
new: 51.0
path: .spaces[0].metrics.loc.cloc
old: 31.0
new: 9.0
path: .spaces[0].metrics.loc.blank
old: 7.0
new: 8.0
path: .spaces[0].metrics.nargs.sum
old: 0.0
new: 13.0
path: .spaces[0].metrics.nargs.average
old: 0.0
new: 0.8666666666666667
path: .spaces[0].metrics.nom.total
old: 3.0
new: 15.0
path: .spaces[0].metrics.nom.functions
old: 3.0
new: 15.0
path: .spaces[0].metrics.halstead.vocabulary
old: 39.0
new: 31.0
path: .spaces[0].metrics.halstead.volume
old: 655.3898751389188
new: 1283.1368443902006
path: .spaces[0].metrics.halstead.level
old: 0.0700280112044818
new: 0.020380434782608696
path: .spaces[0].metrics.halstead.N2
old: 51.0
new: 92.0
path: .spaces[0].metrics.halstead.n1
old: 14.0
new: 16.0
path: .spaces[0].metrics.halstead.effort
old: 9358.96741698376
new: 62959.24783141252
path: .spaces[0].metrics.halstead.time
old: 519.9426342768755
new: 3497.735990634029
path: .spaces[0].metrics.halstead.difficulty
old: 14.28
new: 49.06666666666667
path: .spaces[0].metrics.halstead.bugs
old: 0.14803487301044838
new: 0.5275355917041833
path: .spaces[0].metrics.halstead.length
old: 124.0
new: 259.0
path: .spaces[0].metrics.halstead.n2
old: 25.0
new: 15.0
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.3661239810739885
new: 0.4733720422167096
path: .spaces[0].metrics.halstead.estimated_program_length
old: 169.39937365317456
new: 122.60335893412778
path: .spaces[0].metrics.halstead.N1
old: 73.0
new: 167.0
path: .spaces[0].metrics.cyclomatic.sum
old: 5.0
new: 17.0
path: .spaces[0].metrics.nexits.average
old: 0.3333333333333333
new: 0.8666666666666667
path: .spaces[0].metrics.nexits.sum
old: 1.0
new: 13.0
path: .spaces[0].metrics.mi.mi_sei
old: 69.77921565534564
new: 41.49243556773659
path: .spaces[0].metrics.mi.mi_visual_studio
old: 40.66119643506166
new: 35.97499852590752
path: .spaces[0].metrics.mi.mi_original
old: 69.53064590395545
new: 61.51724747930187

### Code

    namespace mozilla {

    /**
     * Compares the version strings provided.
     *
     * Returns 0 if the versions match, < 0 if aStrB > aStrA and > 0 if
     * aStrA > aStrB.
     */
    int32_t CompareVersions(const char* aStrA, const char* aStrB);

    #ifdef XP_WIN
    /**
     * As above but for wide character strings.
     */
    int32_t CompareVersions(const char16_t* aStrA, const char16_t* aStrB);
    #endif

    struct Version {
      explicit Version(const char* aVersionString) {
        versionContent = strdup(aVersionString);
      }

      const char* ReadContent() const { return versionContent; }

      ~Version() { free(versionContent); }

      bool operator<(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) < 0;
      }
      bool operator<=(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) < 1;
      }
      bool operator>(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) > 0;
      }
      bool operator>=(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) > -1;
      }
      bool operator==(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) == 0;
      }
      bool operator!=(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) != 0;
      }
      bool operator<(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) < 0;
      }
      bool operator<=(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) < 1;
      }
      bool operator>(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) > 0;
      }
      bool operator>=(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) > -1;
      }
      bool operator==(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) == 0;
      }
      bool operator!=(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) != 0;
      }

     private:
      char* versionContent;
    };

    }  // namespace mozilla

## Minimal test - lines (65, 65)

path: .spaces[0].spaces[0].spaces[1].metrics.mi.mi_visual_studio
old: 93.54204911302038
new: 90.2012398141466
path: .spaces[0].spaces[0].spaces[1].metrics.mi.mi_sei
old: 155.17000000000002
new: 146.92819499625
path: .spaces[0].spaces[0].spaces[1].metrics.mi.mi_original
old: 159.95690398326485
new: 154.24412008219068
path: .spaces[0].spaces[0].spaces[1].metrics.loc.lloc
old: 0.0
new: 1.0
path: .spaces[0].spaces[0].spaces[1].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[0].spaces[0].spaces[1].metrics.nexits.average
old: 0.0
new: 1.0
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.n2
old: 1.0
new: 2.0
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.purity_ratio
old: 1.188721875540867
new: 2.188721875540867
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.vocabulary
old: 4.0
new: 8.0
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.level
old: 0.6666666666666666
new: 0.3333333333333333
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.time
old: 0.6666666666666666
new: 4.0
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.bugs
old: 0.0017471609294725976
new: 0.0057689982812296325
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.effort
old: 12.0
new: 72.0
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.N2
old: 1.0
new: 2.0
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.length
old: 4.0
new: 8.0
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.n1
old: 3.0
new: 6.0
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.volume
old: 8.0
new: 24.0
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.estimated_program_length
old: 4.754887502163468
new: 17.509775004326936
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.N1
old: 3.0
new: 6.0
path: .spaces[0].spaces[0].spaces[1].metrics.halstead.difficulty
old: 1.5
new: 3.0

### Code

      const char* ReadContent() const { return versionContent; }

## Minimal test - lines (60, 108)

path: .spaces[0].spaces[0].metrics.nargs.average
old: 0.0
new: 0.8666666666666667
path: .spaces[0].spaces[0].metrics.nargs.sum
old: 0.0
new: 13.0
path: .spaces[0].spaces[0].metrics.halstead.N1
old: 71.0
new: 149.0
path: .spaces[0].spaces[0].metrics.halstead.level
old: 0.06857142857142857
new: 0.01636904761904762
path: .spaces[0].spaces[0].metrics.halstead.difficulty
old: 14.583333333333334
new: 61.09090909090909
path: .spaces[0].spaces[0].metrics.halstead.N2
old: 50.0
new: 84.0
path: .spaces[0].spaces[0].metrics.halstead.length
old: 121.0
new: 233.0
path: .spaces[0].spaces[0].metrics.halstead.n1
old: 14.0
new: 16.0
path: .spaces[0].spaces[0].metrics.halstead.vocabulary
old: 38.0
new: 27.0
path: .spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: 163.3420689261142
new: 102.05374780501026
path: .spaces[0].spaces[0].metrics.halstead.time
old: 514.466968042444
new: 3760.107401710846
path: .spaces[0].spaces[0].metrics.halstead.bugs
old: 0.14699370813123436
new: 0.5535972389082837
path: .spaces[0].spaces[0].metrics.halstead.purity_ratio
old: 1.349934453934828
new: 0.4379989176180698
path: .spaces[0].spaces[0].metrics.halstead.effort
old: 9260.405424763992
new: 67681.93323079521
path: .spaces[0].spaces[0].metrics.halstead.volume
old: 634.9992291266738
new: 1107.8887880040882
path: .spaces[0].spaces[0].metrics.halstead.n2
old: 24.0
new: 11.0
path: .spaces[0].spaces[0].metrics.nexits.sum
old: 1.0
new: 13.0
path: .spaces[0].spaces[0].metrics.nexits.average
old: 0.3333333333333333
new: 0.8666666666666667
path: .spaces[0].spaces[0].metrics.loc.sloc
old: 55.0
new: 49.0
path: .spaces[0].spaces[0].metrics.loc.cloc
old: 28.0
new: 0.0
path: .spaces[0].spaces[0].metrics.loc.lloc
old: 1.0
new: 15.0
path: .spaces[0].spaces[0].metrics.loc.ploc
old: 21.0
new: 45.0
path: .spaces[0].spaces[0].metrics.loc.blank
old: 6.0
new: 4.0
path: .spaces[0].spaces[0].metrics.mi.mi_original
old: 71.60235871765929
new: 67.81941142036055
path: .spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: 41.87272439629198
new: 39.66047451483073
path: .spaces[0].spaces[0].metrics.mi.mi_sei
old: 72.68806050368045
new: 23.770994290621132
path: .spaces[0].spaces[0].metrics.cyclomatic.sum
old: 4.0
new: 16.0
path: .spaces[0].spaces[0].metrics.nom.total
old: 3.0
new: 15.0
path: .spaces[0].spaces[0].metrics.nom.functions
old: 3.0
new: 15.0

### Code

    struct Version {
      explicit Version(const char* aVersionString) {
        versionContent = strdup(aVersionString);
      }

      const char* ReadContent() const { return versionContent; }

      ~Version() { free(versionContent); }

      bool operator<(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) < 0;
      }
      bool operator<=(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) < 1;
      }
      bool operator>(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) > 0;
      }
      bool operator>=(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) > -1;
      }
      bool operator==(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) == 0;
      }
      bool operator!=(const Version& aRhs) const {
        return CompareVersions(versionContent, aRhs.ReadContent()) != 0;
      }
      bool operator<(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) < 0;
      }
      bool operator<=(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) < 1;
      }
      bool operator>(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) > 0;
      }
      bool operator>=(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) > -1;
      }
      bool operator==(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) == 0;
      }
      bool operator!=(const char* aRhs) const {
        return CompareVersions(versionContent, aRhs) != 0;
      }

     private:
      char* versionContent;
    };