Global Metrics
path: .metrics.cyclomatic.sum
old: 4.0
new: 26.0
path: .metrics.cyclomatic.average
old: 1.0
new: 1.368421052631579
path: .metrics.loc.lloc
old: 0.0
new: 44.0
path: .metrics.loc.sloc
old: 19.0
new: 137.0
path: .metrics.loc.blank
old: 4.0
new: 19.0
path: .metrics.loc.ploc
old: 8.0
new: 110.0
path: .metrics.loc.cloc
old: 7.0
new: 8.0
path: .metrics.nargs.sum
old: 0.0
new: 14.0
path: .metrics.nargs.average
old: 0.0
new: 0.875
path: .metrics.nexits.sum
old: 0.0
new: 14.0
path: .metrics.nexits.average
old: 0.0
new: 0.875
path: .metrics.nom.total
old: 1.0
new: 16.0
path: .metrics.nom.functions
old: 1.0
new: 16.0
path: .metrics.halstead.difficulty
old: 2.0
new: 29.272727272727273
path: .metrics.halstead.estimated_program_length
old: 16.0
new: 502.97193686696926
path: .metrics.halstead.vocabulary
old: 8.0
new: 89.0
path: .metrics.halstead.length
old: 10.0
new: 449.0
path: .metrics.halstead.n1
old: 4.0
new: 23.0
path: .metrics.halstead.effort
old: 60.0
new: 85113.50799838726
path: .metrics.halstead.time
old: 3.3333333333333335
new: 4728.528222132625
path: .metrics.halstead.N2
old: 4.0
new: 168.0
path: .metrics.halstead.bugs
old: 0.005108729549290353
new: 0.6449772640024174
path: .metrics.halstead.n2
old: 4.0
new: 66.0
path: .metrics.halstead.N1
old: 6.0
new: 281.0
path: .metrics.halstead.volume
old: 30.0
new: 2907.6043105039125
path: .metrics.halstead.level
old: 0.5
new: 0.034161490683229816
path: .metrics.halstead.purity_ratio
old: 1.6
new: 1.1202047591691966
path: .metrics.mi.mi_visual_studio
old: 61.22448079114647
new: 25.640858625169
path: .metrics.mi.mi_original
old: 104.69386215286046
new: 43.845868249038986
path: .metrics.mi.mi_sei
old: 116.135221048307
new: 8.486563289871736
path: .metrics.cognitive.average
old: 0.0
new: 0.8125
path: .metrics.cognitive.sum
old: 0.0
new: 13.0
Spaces Data
Minimal test - lines (22, 24)
path: .spaces[0].spaces[0].spaces[0].metrics.loc.sloc
old: 1.0
new: 3.0
path: .spaces[0].spaces[0].spaces[0].metrics.loc.ploc
old: 1.0
new: 3.0
path: .spaces[0].spaces[0].spaces[0].metrics.nargs.sum
old: 0.0
new: 2.0
path: .spaces[0].spaces[0].spaces[0].metrics.nargs.average
old: 0.0
new: 2.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.n1
old: 4.0
new: 7.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.bugs
old: 0.002712967490108627
new: 0.015295622567773837
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.time
old: 1.289960052715201
new: 17.26871868465843
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.n2
old: 1.0
new: 6.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.N2
old: 1.0
new: 8.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.difficulty
old: 2.0
new: 4.666666666666667
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.effort
old: 23.21928094887362
new: 310.8369363238518
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.volume
old: 11.60964047443681
new: 66.60791492653966
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: 8.0
new: 35.161259458730164
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.purity_ratio
old: 1.6
new: 1.9534033032627869
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.vocabulary
old: 5.0
new: 13.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.length
old: 5.0
new: 18.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.N1
old: 4.0
new: 10.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.level
old: 0.5
new: 0.21428571428571427
path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_sei
old: 152.37629276875444
new: 113.59397456600368
path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: 92.40962204246613
new: 76.68923928350978
path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_original
old: 158.02045369261705
new: 131.13859917480173
Code
TaskbarPreviewButton::TaskbarPreviewButton(TaskbarWindowPreview* preview,
uint32_t index)
: mPreview(preview), mIndex(index) {}
Minimal test - lines (17, 136)
path: .spaces[0].spaces[0].metrics.halstead.N1
old: 5.0
new: 280.0
path: .spaces[0].spaces[0].metrics.halstead.N2
old: 2.0
new: 164.0
path: .spaces[0].spaces[0].metrics.halstead.volume
old: 18.094737505048094
new: 2845.7695756451394
path: .spaces[0].spaces[0].metrics.halstead.vocabulary
old: 6.0
new: 85.0
path: .spaces[0].spaces[0].metrics.halstead.length
old: 7.0
new: 444.0
path: .spaces[0].spaces[0].metrics.halstead.difficulty
old: 2.0
new: 30.419354838709676
path: .spaces[0].spaces[0].metrics.halstead.n2
old: 2.0
new: 62.0
path: .spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: 10.0
new: 473.20209623329754
path: .spaces[0].spaces[0].metrics.halstead.time
old: 2.0105263894497885
new: 4809.248583930765
path: .spaces[0].spaces[0].metrics.halstead.level
old: 0.5
new: 0.032873806998939555
path: .spaces[0].spaces[0].metrics.halstead.purity_ratio
old: 1.4285714285714286
new: 1.0657704870119311
path: .spaces[0].spaces[0].metrics.halstead.effort
old: 36.18947501009619
new: 86566.47451075376
path: .spaces[0].spaces[0].metrics.halstead.bugs
old: 0.003646981838562912
new: 0.6522967767893506
path: .spaces[0].spaces[0].metrics.halstead.n1
old: 4.0
new: 23.0
path: .spaces[0].spaces[0].metrics.loc.lloc
old: 0.0
new: 44.0
path: .spaces[0].spaces[0].metrics.loc.ploc
old: 4.0
new: 102.0
path: .spaces[0].spaces[0].metrics.loc.sloc
old: 6.0
new: 120.0
path: .spaces[0].spaces[0].metrics.loc.blank
old: 2.0
new: 18.0
path: .spaces[0].spaces[0].metrics.nargs.sum
old: 0.0
new: 14.0
path: .spaces[0].spaces[0].metrics.nargs.average
old: 0.0
new: 0.875
path: .spaces[0].spaces[0].metrics.nexits.average
old: 0.0
new: 0.875
path: .spaces[0].spaces[0].metrics.nexits.sum
old: 0.0
new: 14.0
path: .spaces[0].spaces[0].metrics.nom.total
old: 1.0
new: 16.0
path: .spaces[0].spaces[0].metrics.nom.functions
old: 1.0
new: 16.0
path: .spaces[0].spaces[0].metrics.cyclomatic.sum
old: 2.0
new: 24.0
path: .spaces[0].spaces[0].metrics.cyclomatic.average
old: 1.0
new: 1.411764705882353
path: .spaces[0].spaces[0].metrics.cognitive.average
old: 0.0
new: 0.8125
path: .spaces[0].spaces[0].metrics.cognitive.sum
old: 0.0
new: 13.0
path: .spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: 73.95103310896104
new: 27.230392952794126
path: .spaces[0].spaces[0].metrics.mi.mi_original
old: 126.45626661632338
new: 46.56397194927795
path: .spaces[0].spaces[0].metrics.mi.mi_sei
old: 106.94061646349851
new: -6.079563950989581
Code
namespace widget {
NS_IMPL_ISUPPORTS(TaskbarPreviewButton, nsITaskbarPreviewButton,
nsISupportsWeakReference)
TaskbarPreviewButton::TaskbarPreviewButton(TaskbarWindowPreview* preview,
uint32_t index)
: mPreview(preview), mIndex(index) {}
TaskbarPreviewButton::~TaskbarPreviewButton() { SetVisible(false); }
NS_IMETHODIMP
TaskbarPreviewButton::GetTooltip(nsAString& aTooltip) {
aTooltip = mTooltip;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetTooltip(const nsAString& aTooltip) {
mTooltip = aTooltip;
size_t destLength = sizeof Button().szTip / (sizeof Button().szTip[0]);
wchar_t* tooltip = &(Button().szTip[0]);
StringCchCopyNW(tooltip, destLength, mTooltip.get(), mTooltip.Length());
return Update();
}
NS_IMETHODIMP
TaskbarPreviewButton::GetDismissOnClick(bool* dismiss) {
*dismiss = (Button().dwFlags & THBF_DISMISSONCLICK) == THBF_DISMISSONCLICK;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetDismissOnClick(bool dismiss) {
if (dismiss)
Button().dwFlags |= THBF_DISMISSONCLICK;
else
Button().dwFlags &= ~THBF_DISMISSONCLICK;
return Update();
}
NS_IMETHODIMP
TaskbarPreviewButton::GetHasBorder(bool* hasBorder) {
*hasBorder = (Button().dwFlags & THBF_NOBACKGROUND) != THBF_NOBACKGROUND;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetHasBorder(bool hasBorder) {
if (hasBorder)
Button().dwFlags &= ~THBF_NOBACKGROUND;
else
Button().dwFlags |= THBF_NOBACKGROUND;
return Update();
}
NS_IMETHODIMP
TaskbarPreviewButton::GetDisabled(bool* disabled) {
*disabled = (Button().dwFlags & THBF_DISABLED) == THBF_DISABLED;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetDisabled(bool disabled) {
if (disabled)
Button().dwFlags |= THBF_DISABLED;
else
Button().dwFlags &= ~THBF_DISABLED;
return Update();
}
NS_IMETHODIMP
TaskbarPreviewButton::GetImage(imgIContainer** img) {
if (mImage)
NS_ADDREF(*img = mImage);
else
*img = nullptr;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetImage(imgIContainer* img) {
if (Button().hIcon) ::DestroyIcon(Button().hIcon);
if (img) {
nsresult rv;
rv = nsWindowGfx::CreateIcon(
img, false, LayoutDeviceIntPoint(),
nsWindowGfx::GetIconMetrics(nsWindowGfx::kRegularIcon),
&Button().hIcon);
NS_ENSURE_SUCCESS(rv, rv);
} else {
Button().hIcon = nullptr;
}
return Update();
}
NS_IMETHODIMP
TaskbarPreviewButton::GetVisible(bool* visible) {
*visible = (Button().dwFlags & THBF_HIDDEN) != THBF_HIDDEN;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetVisible(bool visible) {
if (visible)
Button().dwFlags &= ~THBF_HIDDEN;
else
Button().dwFlags |= THBF_HIDDEN;
return Update();
}
THUMBBUTTON& TaskbarPreviewButton::Button() {
return mPreview->mThumbButtons[mIndex];
}
nsresult TaskbarPreviewButton::Update() {
return mPreview->UpdateButton(mIndex);
}
} // namespace widget
Minimal test - lines (16, 137)
path: .spaces[0].metrics.cognitive.average
old: 0.0
new: 0.8125
path: .spaces[0].metrics.cognitive.sum
old: 0.0
new: 13.0
path: .spaces[0].metrics.cyclomatic.average
old: 1.0
new: 1.3888888888888888
path: .spaces[0].metrics.cyclomatic.sum
old: 3.0
new: 25.0
path: .spaces[0].metrics.nexits.sum
old: 0.0
new: 14.0
path: .spaces[0].metrics.nexits.average
old: 0.0
new: 0.875
path: .spaces[0].metrics.nom.total
old: 1.0
new: 16.0
path: .spaces[0].metrics.nom.functions
old: 1.0
new: 16.0
path: .spaces[0].metrics.nargs.sum
old: 0.0
new: 14.0
path: .spaces[0].metrics.nargs.average
old: 0.0
new: 0.875
path: .spaces[0].metrics.loc.blank
old: 3.0
new: 17.0
path: .spaces[0].metrics.loc.ploc
old: 7.0
new: 104.0
path: .spaces[0].metrics.loc.lloc
old: 0.0
new: 44.0
path: .spaces[0].metrics.loc.sloc
old: 11.0
new: 122.0
path: .spaces[0].metrics.mi.mi_original
old: 114.67086657648636
new: 46.02915453078924
path: .spaces[0].metrics.mi.mi_visual_studio
old: 67.05898630203882
new: 26.91763422853172
path: .spaces[0].metrics.mi.mi_sei
old: 112.55461167758156
new: 0.24057579741051335
path: .spaces[0].metrics.halstead.vocabulary
old: 7.0
new: 86.0
path: .spaces[0].metrics.halstead.N2
old: 3.0
new: 165.0
path: .spaces[0].metrics.halstead.n1
old: 4.0
new: 23.0
path: .spaces[0].metrics.halstead.volume
old: 25.26619429851844
new: 2866.114080597136
path: .spaces[0].metrics.halstead.time
old: 2.807354922057604
new: 4795.812581951557
path: .spaces[0].metrics.halstead.n2
old: 3.0
new: 63.0
path: .spaces[0].metrics.halstead.bugs
old: 0.004556086527391188
new: 0.6510812928296323
path: .spaces[0].metrics.halstead.difficulty
old: 2.0
new: 30.11904761904762
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.4172097224626077
new: 1.0776021528470987
path: .spaces[0].metrics.halstead.N1
old: 6.0
new: 281.0
path: .spaces[0].metrics.halstead.estimated_program_length
old: 12.754887502163468
new: 480.6105601698061
path: .spaces[0].metrics.halstead.effort
old: 50.53238859703688
new: 86324.62647512803
path: .spaces[0].metrics.halstead.length
old: 9.0
new: 446.0
path: .spaces[0].metrics.halstead.level
old: 0.5
new: 0.03320158102766798
Code
namespace mozilla {
namespace widget {
NS_IMPL_ISUPPORTS(TaskbarPreviewButton, nsITaskbarPreviewButton,
nsISupportsWeakReference)
TaskbarPreviewButton::TaskbarPreviewButton(TaskbarWindowPreview* preview,
uint32_t index)
: mPreview(preview), mIndex(index) {}
TaskbarPreviewButton::~TaskbarPreviewButton() { SetVisible(false); }
NS_IMETHODIMP
TaskbarPreviewButton::GetTooltip(nsAString& aTooltip) {
aTooltip = mTooltip;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetTooltip(const nsAString& aTooltip) {
mTooltip = aTooltip;
size_t destLength = sizeof Button().szTip / (sizeof Button().szTip[0]);
wchar_t* tooltip = &(Button().szTip[0]);
StringCchCopyNW(tooltip, destLength, mTooltip.get(), mTooltip.Length());
return Update();
}
NS_IMETHODIMP
TaskbarPreviewButton::GetDismissOnClick(bool* dismiss) {
*dismiss = (Button().dwFlags & THBF_DISMISSONCLICK) == THBF_DISMISSONCLICK;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetDismissOnClick(bool dismiss) {
if (dismiss)
Button().dwFlags |= THBF_DISMISSONCLICK;
else
Button().dwFlags &= ~THBF_DISMISSONCLICK;
return Update();
}
NS_IMETHODIMP
TaskbarPreviewButton::GetHasBorder(bool* hasBorder) {
*hasBorder = (Button().dwFlags & THBF_NOBACKGROUND) != THBF_NOBACKGROUND;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetHasBorder(bool hasBorder) {
if (hasBorder)
Button().dwFlags &= ~THBF_NOBACKGROUND;
else
Button().dwFlags |= THBF_NOBACKGROUND;
return Update();
}
NS_IMETHODIMP
TaskbarPreviewButton::GetDisabled(bool* disabled) {
*disabled = (Button().dwFlags & THBF_DISABLED) == THBF_DISABLED;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetDisabled(bool disabled) {
if (disabled)
Button().dwFlags |= THBF_DISABLED;
else
Button().dwFlags &= ~THBF_DISABLED;
return Update();
}
NS_IMETHODIMP
TaskbarPreviewButton::GetImage(imgIContainer** img) {
if (mImage)
NS_ADDREF(*img = mImage);
else
*img = nullptr;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetImage(imgIContainer* img) {
if (Button().hIcon) ::DestroyIcon(Button().hIcon);
if (img) {
nsresult rv;
rv = nsWindowGfx::CreateIcon(
img, false, LayoutDeviceIntPoint(),
nsWindowGfx::GetIconMetrics(nsWindowGfx::kRegularIcon),
&Button().hIcon);
NS_ENSURE_SUCCESS(rv, rv);
} else {
Button().hIcon = nullptr;
}
return Update();
}
NS_IMETHODIMP
TaskbarPreviewButton::GetVisible(bool* visible) {
*visible = (Button().dwFlags & THBF_HIDDEN) != THBF_HIDDEN;
return NS_OK;
}
NS_IMETHODIMP
TaskbarPreviewButton::SetVisible(bool visible) {
if (visible)
Button().dwFlags &= ~THBF_HIDDEN;
else
Button().dwFlags |= THBF_HIDDEN;
return Update();
}
THUMBBUTTON& TaskbarPreviewButton::Button() {
return mPreview->mThumbButtons[mIndex];
}
nsresult TaskbarPreviewButton::Update() {
return mPreview->UpdateButton(mIndex);
}
} // namespace widget
} // namespace mozilla