Global Metrics

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

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

path: .metrics.cyclomatic.sum
old: 15.0
new: 8.0

path: .metrics.loc.blank
old: 23.0
new: 10.0

path: .metrics.loc.cloc
old: 46.0
new: 24.0

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

path: .metrics.loc.sloc
old: 164.0
new: 80.0

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

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

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

path: .metrics.mi.mi_visual_studio
old: 25.923729224540494
new: 36.72439517485188

path: .metrics.mi.mi_sei
old: 26.35382040190209
new: 53.228512029428735

path: .metrics.mi.mi_original
old: 44.32957697396425
new: 62.79871574899671

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

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

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

path: .metrics.halstead.N1
old: 215.0
new: 87.0

path: .metrics.halstead.vocabulary
old: 98.0
new: 64.0

path: .metrics.halstead.time
old: 1641.2521825373074
new: 441.0

path: .metrics.halstead.level
old: 0.08329250367466928
new: 0.11337868480725624

path: .metrics.halstead.n2
old: 85.0
new: 50.0

path: .metrics.halstead.bugs
old: 0.3185497679827561
new: 0.13264355155078392

path: .metrics.halstead.purity_ratio
old: 1.5938278115794056
new: 2.2366385226502845

path: .metrics.halstead.N2
old: 157.0
new: 63.0

path: .metrics.halstead.difficulty
old: 12.005882352941176
new: 8.82

path: .metrics.halstead.effort
old: 29542.539285671533
new: 7938.0

path: .metrics.halstead.volume
old: 2460.6720620108576
new: 900.0

path: .metrics.halstead.length
old: 372.0
new: 150.0

path: .metrics.halstead.estimated_program_length
old: 592.9039459075389
new: 335.49577839754267

Spaces Data

Minimal test - lines (23, 25)

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

path: .spaces[0].spaces[0].metrics.mi.mi_sei
old: null
new: 129.26360748831726

path: .spaces[0].spaces[0].metrics.mi.mi_original
old: null
new: 141.92938490684145

path: .spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: null
new: 82.99964029639851

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

path: .spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: null
new: 4.0

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

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

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

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

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

path: .spaces[0].spaces[0].metrics.halstead.purity_ratio
old: null
new: 1.0

path: .spaces[0].spaces[0].metrics.halstead.effort
old: 0.0
new: 8.0

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

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

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

path: .spaces[0].spaces[0].metrics.halstead.bugs
old: 0.0
new: 0.0013333333333333333

path: .spaces[0].spaces[0].metrics.halstead.time
old: 0.0
new: 0.4444444444444444

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

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

Code

namespace plugins {
class PluginWidgetChild;
}  // namespace plugins

Minimal test - lines (22, 78)

path: .spaces[0].metrics.halstead.difficulty
old: 12.493506493506494
new: 8.826086956521738

path: .spaces[0].metrics.halstead.volume
old: 2356.542673967672
new: 856.4991363632353

path: .spaces[0].metrics.halstead.bugs
old: 0.31782289723474494
new: 0.12839324228534998

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

path: .spaces[0].metrics.halstead.time
old: 1635.637844413348
new: 419.9742142070935

path: .spaces[0].metrics.halstead.effort
old: 29441.481199440263
new: 7559.535855727684

path: .spaces[0].metrics.halstead.length
old: 363.0
new: 145.0

path: .spaces[0].metrics.halstead.level
old: 0.08004158004158003
new: 0.11330049261083744

path: .spaces[0].metrics.halstead.purity_ratio
old: 1.4618409916510788
new: 2.119909095775373

path: .spaces[0].metrics.halstead.estimated_program_length
old: 530.6482799693416
new: 307.38681888742906

path: .spaces[0].metrics.halstead.n2
old: 77.0
new: 46.0

path: .spaces[0].metrics.halstead.vocabulary
old: 90.0
new: 60.0

path: .spaces[0].metrics.halstead.N2
old: 148.0
new: 58.0

path: .spaces[0].metrics.halstead.N1
old: 215.0
new: 87.0

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

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

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

path: .spaces[0].metrics.loc.sloc
old: 138.0
new: 57.0

path: .spaces[0].metrics.loc.cloc
old: 35.0
new: 14.0

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

path: .spaces[0].metrics.loc.ploc
old: 83.0
new: 38.0

path: .spaces[0].metrics.loc.blank
old: 20.0
new: 5.0

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

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

path: .spaces[0].metrics.mi.mi_original
old: 47.580745853173326
new: 68.77773225203806

path: .spaces[0].metrics.mi.mi_sei
old: 29.539838273101974
new: 58.96387688329972

path: .spaces[0].metrics.mi.mi_visual_studio
old: 27.82499757495516
new: 40.22089605382343

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

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

Code

namespace mozilla {
namespace plugins {
class PluginWidgetChild;
}  // namespace plugins
namespace widget {

class PluginWidgetProxy final : public PuppetWidget {
 public:
  explicit PluginWidgetProxy(dom::BrowserChild* aBrowserChild,
                             mozilla::plugins::PluginWidgetChild* aChannel);

 protected:
  virtual ~PluginWidgetProxy();

 public:
  NS_DECL_ISUPPORTS_INHERITED

  // nsIWidget
  using PuppetWidget::Create;  // for Create signature not overridden here
  [[nodiscard]] virtual nsresult Create(
      nsIWidget* aParent, nsNativeWidget aNativeParent,
      const LayoutDeviceIntRect& aRect,
      nsWidgetInitData* aInitData = nullptr) override;
  virtual void Destroy() override;
  virtual void SetFocus(Raise, mozilla::dom::CallerType aCallerType) override;
  virtual void SetParent(nsIWidget* aNewParent) override;

  virtual nsIWidget* GetParent(void) override;
  virtual void* GetNativeData(uint32_t aDataType) override;
  void SetNativeData(uint32_t aDataType, uintptr_t aVal) override;
  virtual nsTransparencyMode GetTransparencyMode() override {
    return eTransparencyOpaque;
  }
  virtual void GetWindowClipRegion(
      nsTArray* aRects) override;

 public:
  /**
   * When tabs are closed PPluginWidget can terminate before plugin code is
   * finished tearing us down. When this happens plugin calls over mActor
   * fail triggering an abort in the content process. To protect against this
   * the connection tells us when it is torn down here so we can avoid making
   * calls while content finishes tearing us down.
   */
  void ChannelDestroyed() { mActor = nullptr; }

 private:
  // Our connection with the chrome widget, created on PBrowser.
  mozilla::plugins::PluginWidgetChild* mActor;
  // PuppetWidget does not implement parent apis, but we need
  // them for plugin widgets.
  nsCOMPtr mParent;
  uintptr_t mCachedPluginPort;
};

}  // namespace widget
}  // namespace mozilla

Minimal test - lines (26, 77)

path: .spaces[0].spaces[1].metrics.nexits.average
old: null
new: 0.5

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

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

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

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

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

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

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

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

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

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

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

path: .spaces[0].spaces[1].metrics.halstead.vocabulary
old: 1.0
new: 58.0

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

path: .spaces[0].spaces[1].metrics.halstead.n1
old: 0.0
new: 14.0

path: .spaces[0].spaces[1].metrics.halstead.N1
old: 0.0
new: 84.0

path: .spaces[0].spaces[1].metrics.halstead.difficulty
old: 0.0
new: 8.75

path: .spaces[0].spaces[1].metrics.halstead.volume
old: 0.0
new: 814.2593583227325

path: .spaces[0].spaces[1].metrics.halstead.level
old: null
new: 0.11428571428571428

path: .spaces[0].spaces[1].metrics.halstead.bugs
old: 0.0
new: 0.12342201137562418

path: .spaces[0].spaces[1].metrics.halstead.effort
old: 0.0
new: 7124.76938532391

path: .spaces[0].spaces[1].metrics.halstead.estimated_program_length
old: null
new: 293.5179601288475

path: .spaces[0].spaces[1].metrics.halstead.length
old: 1.0
new: 139.0

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

path: .spaces[0].spaces[1].metrics.halstead.purity_ratio
old: null
new: 2.1116400009269607

path: .spaces[0].spaces[1].metrics.halstead.time
old: 0.0
new: 395.8205214068838

path: .spaces[0].spaces[1].metrics.mi.mi_sei
old: null
new: 61.32177012460091

path: .spaces[0].spaces[1].metrics.mi.mi_visual_studio
old: null
new: 41.64795396793538

path: .spaces[0].spaces[1].metrics.mi.mi_original
old: null
new: 71.21800128516949

Code

namespace widget {

class PluginWidgetProxy final : public PuppetWidget {
 public:
  explicit PluginWidgetProxy(dom::BrowserChild* aBrowserChild,
                             mozilla::plugins::PluginWidgetChild* aChannel);

 protected:
  virtual ~PluginWidgetProxy();

 public:
  NS_DECL_ISUPPORTS_INHERITED

  // nsIWidget
  using PuppetWidget::Create;  // for Create signature not overridden here
  [[nodiscard]] virtual nsresult Create(
      nsIWidget* aParent, nsNativeWidget aNativeParent,
      const LayoutDeviceIntRect& aRect,
      nsWidgetInitData* aInitData = nullptr) override;
  virtual void Destroy() override;
  virtual void SetFocus(Raise, mozilla::dom::CallerType aCallerType) override;
  virtual void SetParent(nsIWidget* aNewParent) override;

  virtual nsIWidget* GetParent(void) override;
  virtual void* GetNativeData(uint32_t aDataType) override;
  void SetNativeData(uint32_t aDataType, uintptr_t aVal) override;
  virtual nsTransparencyMode GetTransparencyMode() override {
    return eTransparencyOpaque;
  }
  virtual void GetWindowClipRegion(
      nsTArray* aRects) override;

 public:
  /**
   * When tabs are closed PPluginWidget can terminate before plugin code is
   * finished tearing us down. When this happens plugin calls over mActor
   * fail triggering an abort in the content process. To protect against this
   * the connection tells us when it is torn down here so we can avoid making
   * calls while content finishes tearing us down.
   */
  void ChannelDestroyed() { mActor = nullptr; }

 private:
  // Our connection with the chrome widget, created on PBrowser.
  mozilla::plugins::PluginWidgetChild* mActor;
  // PuppetWidget does not implement parent apis, but we need
  // them for plugin widgets.
  nsCOMPtr mParent;
  uintptr_t mCachedPluginPort;
};

}  // namespace widget