# Global Metrics

path: .metrics.nargs.average
old: 0.8333333333333334
new: 3.0
path: .metrics.nargs.sum
old: 5.0
new: 3.0
path: .metrics.nexits.average
old: 1.0
new: 0.0
path: .metrics.nexits.sum
old: 6.0
new: 0.0
path: .metrics.nom.functions
old: 4.0
new: 1.0
path: .metrics.nom.total
old: 6.0
new: 1.0
path: .metrics.nom.closures
old: 2.0
new: 0.0
path: .metrics.cognitive.average
old: 1.3333333333333333
new: 0.0
path: .metrics.cognitive.sum
old: 8.0
new: 0.0
path: .metrics.mi.mi_sei
old: 34.27060747259293
new: 59.61713975886081
path: .metrics.mi.mi_visual_studio
old: 34.03322622278962
new: 42.24250595268885
path: .metrics.mi.mi_original
old: 58.19681684097026
new: 72.23468517909794
path: .metrics.loc.sloc
old: 81.0
new: 51.0
path: .metrics.loc.lloc
old: 28.0
new: 0.0
path: .metrics.loc.ploc
old: 62.0
new: 38.0
path: .metrics.loc.blank
old: 10.0
new: 4.0
path: .metrics.halstead.N1
old: 165.0
new: 63.0
path: .metrics.halstead.length
old: 266.0
new: 112.0
path: .metrics.halstead.bugs
old: 0.32344862686717735
new: 0.08731751390208892
path: .metrics.halstead.vocabulary
old: 80.0
new: 40.0
path: .metrics.halstead.level
old: 0.055634134842055635
new: 0.1405895691609977
path: .metrics.halstead.n2
old: 59.0
new: 31.0
path: .metrics.halstead.n1
old: 21.0
new: 9.0
path: .metrics.halstead.difficulty
old: 17.97457627118644
new: 7.112903225806452
path: .metrics.halstead.effort
old: 30226.638340187463
new: 4239.688265527043
path: .metrics.halstead.time
old: 1679.2576855659704
new: 235.5382369737246
path: .metrics.halstead.N2
old: 101.0
new: 49.0
path: .metrics.halstead.volume
old: 1681.6328732400384
new: 596.0559466273846
path: .metrics.halstead.purity_ratio
old: 1.6515586683861
new: 1.6259768806694104
path: .metrics.halstead.estimated_program_length
old: 439.3146057907026
new: 182.10941063497395
path: .metrics.cyclomatic.average
old: 2.1666666666666665
new: 1.0
path: .metrics.cyclomatic.sum
old: 13.0
new: 8.0

# Spaces Data

## Minimal test - lines (17, 20)

path: .spaces[0].spaces[0].metrics.loc.ploc
old: 30.0
new: 4.0
path: .spaces[0].spaces[0].metrics.loc.sloc
old: 37.0
new: 4.0
path: .spaces[0].spaces[0].metrics.loc.cloc
old: 3.0
new: 0.0
path: .spaces[0].spaces[0].metrics.loc.lloc
old: 17.0
new: 0.0
path: .spaces[0].spaces[0].metrics.loc.blank
old: 4.0
new: 0.0
path: .spaces[0].spaces[0].metrics.mi.mi_original
old: 75.89867759391058
new: 134.15441294714626
path: .spaces[0].spaces[0].metrics.mi.mi_sei
old: 55.65491572873739
new: 118.14851385841868
path: .spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: 44.3851915753863
new: 78.45287306850658
path: .spaces[0].spaces[0].metrics.nargs.sum
old: 2.0
new: 0.0
path: .spaces[0].spaces[0].metrics.nargs.average
old: 0.6666666666666666
new: null
path: .spaces[0].spaces[0].metrics.nom.closures
old: 2.0
new: 0.0
path: .spaces[0].spaces[0].metrics.nom.functions
old: 1.0
new: 0.0
path: .spaces[0].spaces[0].metrics.nom.total
old: 3.0
new: 0.0
path: .spaces[0].spaces[0].metrics.nexits.average
old: 1.6666666666666667
new: null
path: .spaces[0].spaces[0].metrics.nexits.sum
old: 5.0
new: 0.0
path: .spaces[0].spaces[0].metrics.cognitive.sum
old: 5.0
new: 0.0
path: .spaces[0].spaces[0].metrics.cognitive.average
old: 1.6666666666666667
new: null
path: .spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: 234.29070837742125
new: 6.754887502163468
path: .spaces[0].spaces[0].metrics.halstead.effort
old: 16811.409050445098
new: 13.931568569324174
path: .spaces[0].spaces[0].metrics.halstead.length
old: 162.0
new: 6.0
path: .spaces[0].spaces[0].metrics.halstead.time
old: 933.967169469172
new: 0.7739760316291208
path: .spaces[0].spaces[0].metrics.halstead.N2
old: 60.0
new: 3.0
path: .spaces[0].spaces[0].metrics.halstead.bugs
old: 0.21875004727730407
new: 0.0019299471801733172
path: .spaces[0].spaces[0].metrics.halstead.purity_ratio
old: 1.4462389406013658
new: 1.1258145836939113
path: .spaces[0].spaces[0].metrics.halstead.N1
old: 102.0
new: 3.0
path: .spaces[0].spaces[0].metrics.halstead.difficulty
old: 18.387096774193548
new: 1.0
path: .spaces[0].spaces[0].metrics.halstead.n1
old: 19.0
new: 2.0
path: .spaces[0].spaces[0].metrics.halstead.level
old: 0.054385964912280704
new: 1.0
path: .spaces[0].spaces[0].metrics.halstead.volume
old: 914.3047027435052
new: 13.931568569324174
path: .spaces[0].spaces[0].metrics.halstead.vocabulary
old: 50.0
new: 5.0
path: .spaces[0].spaces[0].metrics.halstead.n2
old: 31.0
new: 3.0
path: .spaces[0].spaces[0].metrics.cyclomatic.average
old: 5.0
new: 1.0
path: .spaces[0].spaces[0].metrics.cyclomatic.sum
old: 5.0
new: 3.0

### Code

    namespace layers {
    class APZEventState;
    class IAPZCTreeManager;
    }  // namespace layers

## Minimal test - lines (16, 49)

path: .spaces[0].metrics.mi.mi_visual_studio
old: 35.61158176632545
new: 46.60648161333631
path: .spaces[0].metrics.mi.mi_original
old: 60.895804820416515
new: 79.69708355880508
path: .spaces[0].metrics.mi.mi_sei
old: 29.13724948365276
new: 62.19589861011875
path: .spaces[0].metrics.halstead.volume
old: 1648.164860202759
new: 524.6169884132792
path: .spaces[0].metrics.halstead.N2
old: 98.0
new: 41.0
path: .spaces[0].metrics.halstead.time
old: 1682.50162812365
new: 224.055172134838
path: .spaces[0].metrics.halstead.n1
old: 21.0
new: 9.0
path: .spaces[0].metrics.halstead.length
old: 263.0
new: 104.0
path: .spaces[0].metrics.halstead.n2
old: 56.0
new: 24.0
path: .spaces[0].metrics.halstead.N1
old: 165.0
new: 63.0
path: .spaces[0].metrics.halstead.estimated_program_length
old: 417.45054151357976
new: 138.56842503028855
path: .spaces[0].metrics.halstead.bugs
old: 0.3238650454813696
new: 0.08445597846729465
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.587264416401444
new: 1.332388702214313
path: .spaces[0].metrics.halstead.effort
old: 30285.029306225697
new: 4032.993098427083
path: .spaces[0].metrics.halstead.vocabulary
old: 77.0
new: 33.0
path: .spaces[0].metrics.halstead.difficulty
old: 18.375
new: 7.6875
path: .spaces[0].metrics.halstead.level
old: 0.05442176870748299
new: 0.13008130081300814
path: .spaces[0].metrics.cognitive.average
old: 1.3333333333333333
new: 0.0
path: .spaces[0].metrics.cognitive.sum
old: 8.0
new: 0.0
path: .spaces[0].metrics.nom.closures
old: 2.0
new: 0.0
path: .spaces[0].metrics.nom.total
old: 6.0
new: 1.0
path: .spaces[0].metrics.nom.functions
old: 4.0
new: 1.0
path: .spaces[0].metrics.loc.lloc
old: 28.0
new: 0.0
path: .spaces[0].metrics.loc.blank
old: 9.0
new: 2.0
path: .spaces[0].metrics.loc.ploc
old: 58.0
new: 29.0
path: .spaces[0].metrics.loc.sloc
old: 70.0
new: 34.0
path: .spaces[0].metrics.nargs.sum
old: 5.0
new: 3.0
path: .spaces[0].metrics.nargs.average
old: 0.8333333333333334
new: 3.0
path: .spaces[0].metrics.cyclomatic.average
old: 2.4
new: 1.0
path: .spaces[0].metrics.cyclomatic.sum
old: 12.0
new: 7.0
path: .spaces[0].metrics.nexits.average
old: 1.0
new: 0.0
path: .spaces[0].metrics.nexits.sum
old: 6.0
new: 0.0

### Code

    namespace mozilla {
    namespace layers {
    class APZEventState;
    class IAPZCTreeManager;
    }  // namespace layers
    namespace widget {

    class AndroidContentController final
        : public mozilla::layers::ChromeProcessController {
     public:
      AndroidContentController(nsWindow* aWindow,
                               mozilla::layers::APZEventState* aAPZEventState,
                               mozilla::layers::IAPZCTreeManager* aAPZCTreeManager)
          : mozilla::layers::ChromeProcessController(aWindow, aAPZEventState,
                                                     aAPZCTreeManager),
            mAndroidWindow(aWindow) {}

      // ChromeProcessController methods
      virtual void Destroy() override;
      void UpdateOverscrollVelocity(const ScrollableLayerGuid& aGuid,
                                    const float aX, const float aY,
                                    const bool aIsRootContent) override;
      void UpdateOverscrollOffset(const ScrollableLayerGuid& aGuid, const float aX,
                                  const float aY,
                                  const bool aIsRootContent) override;
      void NotifyAPZStateChange(const ScrollableLayerGuid& aGuid,
                                APZStateChange aChange, int aArg) override;

     private:
      nsWindow* mAndroidWindow;
    };

    }  // namespace widget
    }  // namespace mozilla

## Minimal test - lines (21, 48)

path: .spaces[0].spaces[1].metrics.cyclomatic.sum
old: 1.0
new: 3.0
path: .spaces[0].spaces[1].metrics.halstead.level
old: 0.18803418803418803
new: 0.13213213213213212
path: .spaces[0].spaces[1].metrics.halstead.purity_ratio
old: 1.9023735090854592
new: 1.319133548156264
path: .spaces[0].spaces[1].metrics.halstead.volume
old: 151.26748332105768
new: 475.60284579714
path: .spaces[0].spaces[1].metrics.halstead.bugs
old: 0.028832651778453993
new: 0.07828936063806968
path: .spaces[0].spaces[1].metrics.halstead.effort
old: 804.4679794801705
new: 3599.4488102374457
path: .spaces[0].spaces[1].metrics.halstead.vocabulary
old: 20.0
new: 31.0
path: .spaces[0].spaces[1].metrics.halstead.estimated_program_length
old: 66.58307281799108
new: 126.63682062300134
path: .spaces[0].spaces[1].metrics.halstead.N1
old: 22.0
new: 59.0
path: .spaces[0].spaces[1].metrics.halstead.N2
old: 13.0
new: 37.0
path: .spaces[0].spaces[1].metrics.halstead.length
old: 35.0
new: 96.0
path: .spaces[0].spaces[1].metrics.halstead.difficulty
old: 5.318181818181818
new: 7.568181818181818
path: .spaces[0].spaces[1].metrics.halstead.n2
old: 11.0
new: 22.0
path: .spaces[0].spaces[1].metrics.halstead.time
old: 44.69266552667614
new: 199.96937834652476
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.mi.mi_original
old: 115.64443824983816
new: 84.27245456352135
path: .spaces[0].spaces[1].metrics.mi.mi_visual_studio
old: 67.62832646189366
new: 49.282137171649914
path: .spaces[0].spaces[1].metrics.mi.mi_sei
old: 91.24062543682322
new: 60.6143339264442
path: .spaces[0].spaces[1].metrics.nargs.sum
old: 2.0
new: 3.0
path: .spaces[0].spaces[1].metrics.nargs.average
old: 2.0
new: 3.0
path: .spaces[0].spaces[1].metrics.loc.lloc
old: 1.0
new: 0.0
path: .spaces[0].spaces[1].metrics.loc.sloc
old: 6.0
new: 28.0
path: .spaces[0].spaces[1].metrics.loc.cloc
old: 0.0
new: 1.0
path: .spaces[0].spaces[1].metrics.loc.blank
old: 0.0
new: 4.0
path: .spaces[0].spaces[1].metrics.loc.ploc
old: 6.0
new: 23.0

### Code

    namespace widget {

    class AndroidContentController final
        : public mozilla::layers::ChromeProcessController {
     public:
      AndroidContentController(nsWindow* aWindow,
                               mozilla::layers::APZEventState* aAPZEventState,
                               mozilla::layers::IAPZCTreeManager* aAPZCTreeManager)
          : mozilla::layers::ChromeProcessController(aWindow, aAPZEventState,
                                                     aAPZCTreeManager),
            mAndroidWindow(aWindow) {}

      // ChromeProcessController methods
      virtual void Destroy() override;
      void UpdateOverscrollVelocity(const ScrollableLayerGuid& aGuid,
                                    const float aX, const float aY,
                                    const bool aIsRootContent) override;
      void UpdateOverscrollOffset(const ScrollableLayerGuid& aGuid, const float aX,
                                  const float aY,
                                  const bool aIsRootContent) override;
      void NotifyAPZStateChange(const ScrollableLayerGuid& aGuid,
                                APZStateChange aChange, int aArg) override;

     private:
      nsWindow* mAndroidWindow;
    };

    }  // namespace widget