Global Metrics
path: .metrics.cognitive.average
old: 1.0
new: 1.1428571428571428
path: .metrics.cognitive.sum
old: 1.0
new: 8.0
path: .metrics.cyclomatic.average
old: 1.5
new: 1.7272727272727273
path: .metrics.cyclomatic.sum
old: 6.0
new: 19.0
path: .metrics.mi.mi_sei
old: 70.12200477131533
new: 28.15159128876449
path: .metrics.mi.mi_original
old: 71.94979009038381
new: 50.08312025904432
path: .metrics.mi.mi_visual_studio
old: 42.07590063765135
new: 29.288374420493753
path: .metrics.halstead.N1
old: 36.0
new: 158.0
path: .metrics.halstead.n1
old: 11.0
new: 18.0
path: .metrics.halstead.n2
old: 23.0
new: 71.0
path: .metrics.halstead.N2
old: 34.0
new: 128.0
path: .metrics.halstead.time
old: 160.85721882117616
new: 1669.4623200057597
path: .metrics.halstead.effort
old: 2895.429938781171
new: 30050.32176010367
path: .metrics.halstead.bugs
old: 0.06771540065380008
new: 0.32218958414701826
path: .metrics.halstead.level
old: 0.12299465240641712
new: 0.06163194444444445
path: .metrics.halstead.length
old: 70.0
new: 286.0
path: .metrics.halstead.purity_ratio
old: 2.0299381827760223
new: 1.7891283059817975
path: .metrics.halstead.difficulty
old: 8.130434782608695
new: 16.225352112676056
path: .metrics.halstead.volume
old: 356.12239888752373
new: 1852.0597612563895
path: .metrics.halstead.estimated_program_length
old: 142.09567279432156
new: 511.69069551079406
path: .metrics.halstead.vocabulary
old: 34.0
new: 89.0
path: .metrics.loc.lloc
old: 11.0
new: 28.0
path: .metrics.loc.blank
old: 12.0
new: 25.0
path: .metrics.loc.cloc
old: 25.0
new: 20.0
path: .metrics.loc.sloc
old: 63.0
new: 119.0
path: .metrics.loc.ploc
old: 26.0
new: 74.0
path: .metrics.nexits.average
old: 0.0
new: 1.2857142857142858
path: .metrics.nexits.sum
old: 0.0
new: 9.0
path: .metrics.nom.total
old: 1.0
new: 7.0
path: .metrics.nom.functions
old: 1.0
new: 7.0
Spaces Data
Minimal test - lines (28, 81)
path: .spaces[0].metrics.halstead.N2
old: 27.0
new: 72.0
path: .spaces[0].metrics.halstead.effort
old: 2645.6005278417592
new: 14916.66840560771
path: .spaces[0].metrics.halstead.estimated_program_length
old: 107.54061610626604
new: 263.42124551085624
path: .spaces[0].metrics.halstead.difficulty
old: 8.735294117647058
new: 15.157894736842104
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.7069939064486674
new: 1.5404751199465276
path: .spaces[0].metrics.halstead.time
old: 146.97780710231996
new: 828.7038003115395
path: .spaces[0].metrics.halstead.level
old: 0.11447811447811448
new: 0.06597222222222222
path: .spaces[0].metrics.halstead.N1
old: 36.0
new: 99.0
path: .spaces[0].metrics.halstead.n1
old: 11.0
new: 16.0
path: .spaces[0].metrics.halstead.vocabulary
old: 28.0
new: 54.0
path: .spaces[0].metrics.halstead.n2
old: 17.0
new: 38.0
path: .spaces[0].metrics.halstead.volume
old: 302.86336008962905
new: 984.0857628699532
path: .spaces[0].metrics.halstead.length
old: 63.0
new: 171.0
path: .spaces[0].metrics.halstead.bugs
old: 0.06376195008518422
new: 0.20198849609199251
path: .spaces[0].metrics.loc.ploc
old: 17.0
new: 34.0
path: .spaces[0].metrics.loc.cloc
old: 20.0
new: 6.0
path: .spaces[0].metrics.loc.blank
old: 9.0
new: 14.0
path: .spaces[0].metrics.loc.sloc
old: 46.0
new: 54.0
path: .spaces[0].metrics.loc.lloc
old: 11.0
new: 14.0
path: .spaces[0].metrics.cognitive.average
old: 1.0
new: 1.6666666666666667
path: .spaces[0].metrics.cognitive.sum
old: 1.0
new: 5.0
path: .spaces[0].metrics.cyclomatic.sum
old: 5.0
new: 10.0
path: .spaces[0].metrics.cyclomatic.average
old: 1.6666666666666667
new: 2.0
path: .spaces[0].metrics.mi.mi_original
old: 78.11694429248776
new: 68.24155058231808
path: .spaces[0].metrics.mi.mi_sei
old: 80.15198561942991
new: 48.45663545007211
path: .spaces[0].metrics.mi.mi_visual_studio
old: 45.68242356285834
new: 39.907339521823445
path: .spaces[0].metrics.nexits.average
old: 0.0
new: 2.0
path: .spaces[0].metrics.nexits.sum
old: 0.0
new: 6.0
path: .spaces[0].metrics.nom.total
old: 1.0
new: 3.0
path: .spaces[0].metrics.nom.functions
old: 1.0
new: 3.0
Code
namespace {
// Used for signaling the background thread from the main thread.
HANDLE sEventHandle = nullptr;
// We need a runnable in order to find the hidden window on the main
// thread.
class HWNDGetter : public mozilla::Runnable {
public:
HWNDGetter() : Runnable("HWNDGetter"), hidden_window_hwnd(nullptr) {}
HWND hidden_window_hwnd;
NS_IMETHOD Run() override {
// Jump through some hoops to locate the hidden window.
nsCOMPtr appShell(
do_GetService(NS_APPSHELLSERVICE_CONTRACTID));
nsCOMPtr hiddenWindow;
nsresult rv = appShell->GetHiddenWindow(getter_AddRefs(hiddenWindow));
if (NS_FAILED(rv)) {
return rv;
}
nsCOMPtr docShell;
rv = hiddenWindow->GetDocShell(getter_AddRefs(docShell));
if (NS_FAILED(rv) || !docShell) {
return rv;
}
nsCOMPtr baseWindow(do_QueryInterface(docShell));
if (!baseWindow) return NS_ERROR_FAILURE;
nsCOMPtr widget;
baseWindow->GetMainWidget(getter_AddRefs(widget));
if (!widget) return NS_ERROR_FAILURE;
hidden_window_hwnd = (HWND)widget->GetNativeData(NS_NATIVE_WINDOW);
return NS_OK;
}
};
HWND GetHiddenWindowHWND() {
// Need to dispatch this to the main thread because plenty of
// the things it wants to access are main-thread-only.
RefPtr getter = new HWNDGetter();
NS_DispatchToMainThread(getter, NS_DISPATCH_SYNC);
return getter->hidden_window_hwnd;
}
} // namespace
Minimal test - lines (37, 37)
path: .spaces[0].spaces[0].spaces[0].metrics.cognitive.average
old: null
new: 0.0
path: .spaces[0].spaces[0].spaces[0].metrics.nom.functions
old: 0.0
new: 1.0
path: .spaces[0].spaces[0].spaces[0].metrics.nom.total
old: 0.0
new: 1.0
path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_sei
old: null
new: 144.12582230432585
path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: null
new: 89.06530020579255
path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_original
old: null
new: 152.30166335190526
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.length
old: 1.0
new: 11.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: null
new: 19.60964047443681
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.level
old: null
new: 0.5
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.purity_ratio
old: null
new: 1.7826945885851644
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.N2
old: 1.0
new: 5.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.time
old: 0.0
new: 3.874352779540604
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.bugs
old: 0.0
new: 0.00564754704415116
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.effort
old: 0.0
new: 69.73835003173087
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.vocabulary
old: 1.0
new: 9.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.volume
old: 0.0
new: 34.86917501586544
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.n1
old: 0.0
new: 4.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.difficulty
old: 0.0
new: 2.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.N1
old: 0.0
new: 6.0
path: .spaces[0].spaces[0].spaces[0].metrics.halstead.n2
old: 1.0
new: 5.0
path: .spaces[0].spaces[0].spaces[0].metrics.nexits.average
old: null
new: 0.0
path: .spaces[0].spaces[0].spaces[0].metrics.nargs.average
old: null
new: 0.0
Code
HWNDGetter() : Runnable("HWNDGetter"), hidden_window_hwnd(nullptr) {}
Minimal test - lines (35, 71)
path: .spaces[0].spaces[0].metrics.loc.lloc
old: 10.0
new: 12.0
path: .spaces[0].spaces[0].metrics.loc.cloc
old: 12.0
new: 1.0
path: .spaces[0].spaces[0].metrics.loc.sloc
old: 34.0
new: 37.0
path: .spaces[0].spaces[0].metrics.loc.ploc
old: 15.0
new: 26.0
path: .spaces[0].spaces[0].metrics.loc.blank
old: 7.0
new: 10.0
path: .spaces[0].spaces[0].metrics.nom.total
old: 1.0
new: 2.0
path: .spaces[0].spaces[0].metrics.nom.functions
old: 1.0
new: 2.0
path: .spaces[0].spaces[0].metrics.cyclomatic.sum
old: 4.0
new: 8.0
path: .spaces[0].spaces[0].metrics.cyclomatic.average
old: 2.0
new: 2.6666666666666665
path: .spaces[0].spaces[0].metrics.cognitive.average
old: 1.0
new: 2.5
path: .spaces[0].spaces[0].metrics.cognitive.sum
old: 1.0
new: 5.0
path: .spaces[0].spaces[0].metrics.nexits.sum
old: 0.0
new: 5.0
path: .spaces[0].spaces[0].metrics.nexits.average
old: 0.0
new: 2.5
path: .spaces[0].spaces[0].metrics.halstead.length
old: 60.0
new: 139.0
path: .spaces[0].spaces[0].metrics.halstead.level
old: 0.11188811188811187
new: 0.07111111111111111
path: .spaces[0].spaces[0].metrics.halstead.volume
old: 285.2932501298081
new: 772.0878503831916
path: .spaces[0].spaces[0].metrics.halstead.vocabulary
old: 27.0
new: 47.0
path: .spaces[0].spaces[0].metrics.halstead.N1
old: 34.0
new: 79.0
path: .spaces[0].spaces[0].metrics.halstead.difficulty
old: 8.9375
new: 14.0625
path: .spaces[0].spaces[0].metrics.halstead.effort
old: 2549.8084230351596
new: 10857.485396013632
path: .spaces[0].spaces[0].metrics.halstead.n1
old: 11.0
new: 15.0
path: .spaces[0].spaces[0].metrics.halstead.time
old: 141.6560235019533
new: 603.1936331118684
path: .spaces[0].spaces[0].metrics.halstead.N2
old: 26.0
new: 60.0
path: .spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: 102.05374780501026
new: 218.60335893412775
path: .spaces[0].spaces[0].metrics.halstead.n2
old: 16.0
new: 32.0
path: .spaces[0].spaces[0].metrics.halstead.purity_ratio
old: 1.700895796750171
new: 1.5726860354973222
path: .spaces[0].spaces[0].metrics.halstead.bugs
old: 0.06221337752716842
new: 0.1634424691156756
path: .spaces[0].spaces[0].metrics.mi.mi_sei
old: 85.04125482007478
new: 47.48229382622662
path: .spaces[0].spaces[0].metrics.mi.mi_original
old: 83.55466798595762
new: 76.08781845036847
path: .spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: 48.86237893915651
new: 44.495800263373376
Code
class HWNDGetter : public mozilla::Runnable {
public:
HWNDGetter() : Runnable("HWNDGetter"), hidden_window_hwnd(nullptr) {}
HWND hidden_window_hwnd;
NS_IMETHOD Run() override {
// Jump through some hoops to locate the hidden window.
nsCOMPtr appShell(
do_GetService(NS_APPSHELLSERVICE_CONTRACTID));
nsCOMPtr hiddenWindow;
nsresult rv = appShell->GetHiddenWindow(getter_AddRefs(hiddenWindow));
if (NS_FAILED(rv)) {
return rv;
}
nsCOMPtr docShell;
rv = hiddenWindow->GetDocShell(getter_AddRefs(docShell));
if (NS_FAILED(rv) || !docShell) {
return rv;
}
nsCOMPtr baseWindow(do_QueryInterface(docShell));
if (!baseWindow) return NS_ERROR_FAILURE;
nsCOMPtr widget;
baseWindow->GetMainWidget(getter_AddRefs(widget));
if (!widget) return NS_ERROR_FAILURE;
hidden_window_hwnd = (HWND)widget->GetNativeData(NS_NATIVE_WINDOW);
return NS_OK;
}
};