# Global Metrics

path: .metrics.nexits.sum
old: 14.0
new: 1.0
path: .metrics.nexits.average
old: 1.0769230769230769
new: 0.25
path: .metrics.halstead.bugs
old: 0.6899285773195479
new: 0.29954937302158313
path: .metrics.halstead.n2
old: 84.0
new: 40.0
path: .metrics.halstead.difficulty
old: 29.160714285714285
new: 22.05
path: .metrics.halstead.purity_ratio
old: 1.338197470778136
new: 1.4811446100672254
path: .metrics.halstead.N2
old: 213.0
new: 84.0
path: .metrics.halstead.time
old: 5231.371693484009
new: 1496.6215671339946
path: .metrics.halstead.volume
old: 3229.162686486149
new: 1221.7318915379549
path: .metrics.halstead.N1
old: 266.0
new: 122.0
path: .metrics.halstead.effort
old: 94164.69048271216
new: 26939.188208411902
path: .metrics.halstead.level
old: 0.034292712798530314
new: 0.045351473922902494
path: .metrics.halstead.estimated_program_length
old: 640.9965885027271
new: 305.11578967384844
path: .metrics.halstead.length
old: 479.0
new: 206.0
path: .metrics.halstead.vocabulary
old: 107.0
new: 61.0
path: .metrics.halstead.n1
old: 23.0
new: 21.0
path: .metrics.cognitive.average
old: 0.4615384615384616
new: 1.75
path: .metrics.cognitive.sum
old: 6.0
new: 7.0
path: .metrics.nom.closures
old: 1.0
new: 0.0
path: .metrics.nom.functions
old: 12.0
new: 4.0
path: .metrics.nom.total
old: 13.0
new: 4.0
path: .metrics.mi.mi_visual_studio
old: 26.564416758335245
new: 37.35859515399626
path: .metrics.mi.mi_original
old: 45.42515265675327
new: 63.883197713333615
path: .metrics.mi.mi_sei
old: 9.626774106171348
new: 44.83616731496888
path: .metrics.loc.cloc
old: 7.0
new: 9.0
path: .metrics.loc.ploc
old: 101.0
new: 46.0
path: .metrics.loc.blank
old: 21.0
new: 10.0
path: .metrics.loc.sloc
old: 129.0
new: 65.0
path: .metrics.loc.lloc
old: 40.0
new: 12.0
path: .metrics.cyclomatic.average
old: 1.6153846153846154
new: 1.8333333333333333
path: .metrics.cyclomatic.sum
old: 21.0
new: 11.0
path: .metrics.nargs.sum
old: 29.0
new: 2.0
path: .metrics.nargs.average
old: 2.230769230769231
new: 0.5

# Spaces Data

## Minimal test - lines (49, 65)

path: .spaces[1].metrics.nargs.average
old: 13.0
new: 2.0
path: .spaces[1].metrics.nargs.sum
old: 13.0
new: 2.0
path: .spaces[1].metrics.nexits.sum
old: 1.0
new: 0.0
path: .spaces[1].metrics.nexits.average
old: 1.0
new: 0.0
path: .spaces[1].metrics.loc.lloc
old: 3.0
new: 6.0
path: .spaces[1].metrics.cyclomatic.sum
old: 1.0
new: 3.0
path: .spaces[1].metrics.cyclomatic.average
old: 1.0
new: 3.0
path: .spaces[1].metrics.halstead.time
old: 405.9398711631074
new: 316.3334084492383
path: .spaces[1].metrics.halstead.level
old: 0.08391608391608392
new: 0.08571428571428572
path: .spaces[1].metrics.halstead.N2
old: 55.0
new: 40.0
path: .spaces[1].metrics.halstead.estimated_program_length
old: 195.31243420408975
new: 163.3420689261142
path: .spaces[1].metrics.halstead.effort
old: 7306.917680935933
new: 5694.001352086289
path: .spaces[1].metrics.halstead.n1
old: 13.0
new: 14.0
path: .spaces[1].metrics.halstead.vocabulary
old: 43.0
new: 38.0
path: .spaces[1].metrics.halstead.n2
old: 30.0
new: 24.0
path: .spaces[1].metrics.halstead.difficulty
old: 11.916666666666666
new: 11.666666666666666
path: .spaces[1].metrics.halstead.bugs
old: 0.12551671228155722
new: 0.10628952247380592
path: .spaces[1].metrics.halstead.volume
old: 613.167917281337
new: 488.0572587502534
path: .spaces[1].metrics.halstead.length
old: 113.0
new: 93.0
path: .spaces[1].metrics.halstead.purity_ratio
old: 1.7284286212751303
new: 1.7563663325388623
path: .spaces[1].metrics.halstead.N1
old: 58.0
new: 53.0
path: .spaces[1].metrics.cognitive.average
old: 0.0
new: 2.0
path: .spaces[1].metrics.cognitive.sum
old: 0.0
new: 2.0
path: .spaces[1].metrics.mi.mi_original
old: 91.49502193382172
new: 92.22169361742073
path: .spaces[1].metrics.mi.mi_sei
old: 56.40038227734324
new: 57.6523876304349
path: .spaces[1].metrics.mi.mi_visual_studio
old: 53.50586078001271
new: 53.930814980947794

### Code

    TEST(AutoRefCnt, ThreadSafeAutoRefCntBalance)
    {
      static const size_t kThreadCount = 4;
      nsCOMPtr threads[kThreadCount];
      for (size_t i = 0; i < kThreadCount; i++) {
        nsresult rv =
            NS_NewNamedThread("AutoRefCnt Test", getter_AddRefs(threads[i]),
                              new nsThreadSafeAutoRefCntRunner);
        EXPECT_TRUE(NS_SUCCEEDED(rv));
      }
      for (size_t i = 0; i < kThreadCount; i++) {
        threads[i]->Shutdown();
      }
      EXPECT_EQ(nsThreadSafeAutoRefCntRunner::sRefCnt, nsrefcnt(0));
      EXPECT_EQ(nsThreadSafeAutoRefCntRunner::sIncToOne,
                nsThreadSafeAutoRefCntRunner::sDecToZero);
    }

## Minimal test - lines (17, 39)

path: .spaces[0].metrics.nom.functions
old: 1.0
new: 3.0
path: .spaces[0].metrics.nom.total
old: 1.0
new: 3.0
path: .spaces[0].metrics.halstead.difficulty
old: 2.5
new: 14.875
path: .spaces[0].metrics.halstead.level
old: 0.4
new: 0.06722689075630252
path: .spaces[0].metrics.halstead.n1
old: 5.0
new: 17.0
path: .spaces[0].metrics.halstead.purity_ratio
old: 2.045565997075035
new: 1.6897071936867818
path: .spaces[0].metrics.halstead.vocabulary
old: 8.0
new: 33.0
path: .spaces[0].metrics.halstead.bugs
old: 0.005108729549290353
new: 0.1091794233628996
path: .spaces[0].metrics.halstead.length
old: 8.0
new: 79.0
path: .spaces[0].metrics.halstead.N1
old: 5.0
new: 51.0
path: .spaces[0].metrics.halstead.N2
old: 3.0
new: 28.0
path: .spaces[0].metrics.halstead.effort
old: 60.0
new: 5927.793639511103
path: .spaces[0].metrics.halstead.estimated_program_length
old: 16.36452797660028
new: 133.48686830125575
path: .spaces[0].metrics.halstead.time
old: 3.3333333333333335
new: 329.3218688617279
path: .spaces[0].metrics.halstead.n2
old: 3.0
new: 16.0
path: .spaces[0].metrics.halstead.volume
old: 24.0
new: 398.5071354293178
path: .spaces[0].metrics.cognitive.average
old: 0.0
new: 1.6666666666666667
path: .spaces[0].metrics.cognitive.sum
old: 0.0
new: 5.0
path: .spaces[0].metrics.cyclomatic.sum
old: 1.0
new: 7.0
path: .spaces[0].metrics.cyclomatic.average
old: 1.0
new: 1.75
path: .spaces[0].metrics.loc.sloc
old: 1.0
new: 23.0
path: .spaces[0].metrics.loc.ploc
old: 1.0
new: 20.0
path: .spaces[0].metrics.loc.blank
old: 0.0
new: 3.0
path: .spaces[0].metrics.loc.lloc
old: 1.0
new: 6.0
path: .spaces[0].metrics.mi.mi_original
old: 154.24412008219068
new: 87.4588216022413
path: .spaces[0].metrics.mi.mi_visual_studio
old: 90.2012398141466
new: 51.14550970891304
path: .spaces[0].metrics.mi.mi_sei
old: 146.92819499625
new: 51.18829523136455
path: .spaces[0].metrics.nexits.average
old: 1.0
new: 0.3333333333333333

### Code

    class nsThreadSafeAutoRefCntRunner final : public Runnable {
     public:
      NS_IMETHOD Run() final {
        for (int i = 0; i < 10000; i++) {
          if (++sRefCnt == 1) {
            sIncToOne++;
          }
          if (--sRefCnt == 0) {
            sDecToZero++;
          }
        }
        return NS_OK;
      }

      static ThreadSafeAutoRefCnt sRefCnt;
      static Atomic sIncToOne;
      static Atomic sDecToZero;

      nsThreadSafeAutoRefCntRunner() : Runnable("nsThreadSafeAutoRefCntRunner") {}

     private:
      ~nsThreadSafeAutoRefCntRunner() = default;
    };