Global Metrics
path: .metrics.mi.mi_original
old: 74.14520364838705
new: -92.65443075836524
path: .metrics.mi.mi_sei
old: 68.2684293298548
new: -143.63161358900285
path: .metrics.mi.mi_visual_studio
old: 43.359768215431025
new: 0.0
path: .metrics.halstead.N1
old: 51.0
new: 3316.0
path: .metrics.halstead.purity_ratio
old: 1.5721850746866102
new: 1.2483726819924748
path: .metrics.halstead.n2
old: 22.0
new: 700.0
path: .metrics.halstead.effort
old: 5919.425750782534
new: 3582812.9849209385
path: .metrics.halstead.N2
old: 42.0
new: 2176.0
path: .metrics.halstead.vocabulary
old: 35.0
new: 744.0
path: .metrics.halstead.length
old: 93.0
new: 5492.0
path: .metrics.halstead.n1
old: 13.0
new: 44.0
path: .metrics.halstead.time
old: 328.85698615458523
new: 199045.16582894104
path: .metrics.halstead.level
old: 0.08058608058608059
new: 0.014622326203208556
path: .metrics.halstead.volume
old: 477.0233205758819
new: 52389.060190605305
path: .metrics.halstead.estimated_program_length
old: 146.21321194585474
new: 6856.0627695026715
path: .metrics.halstead.bugs
old: 0.1090766514152305
new: 7.804795081834566
path: .metrics.halstead.difficulty
old: 12.409090909090908
new: 68.38857142857142
path: .metrics.cognitive.sum
old: 0.0
new: 225.0
path: .metrics.cognitive.average
old: 0.0
new: 4.5
path: .metrics.nexits.average
old: 0.6666666666666666
new: 2.82
path: .metrics.nexits.sum
old: 2.0
new: 141.0
path: .metrics.cyclomatic.sum
old: 9.0
new: 379.0
path: .metrics.cyclomatic.average
old: 1.2857142857142858
new: 8.23913043478261
path: .metrics.loc.cloc
old: 13.0
new: 226.0
path: .metrics.loc.blank
old: 7.0
new: 195.0
path: .metrics.loc.ploc
old: 28.0
new: 1225.0
path: .metrics.loc.sloc
old: 48.0
new: 1646.0
path: .metrics.loc.lloc
old: 3.0
new: 703.0
path: .metrics.nargs.sum
old: 2.0
new: 73.0
path: .metrics.nargs.average
old: 0.6666666666666666
new: 1.46
path: .metrics.nom.closures
old: 0.0
new: 10.0
path: .metrics.nom.functions
old: 3.0
new: 40.0
path: .metrics.nom.total
old: 3.0
new: 50.0
Spaces Data
Minimal test - lines (43, 240)
path: .spaces[0].metrics.cyclomatic.sum
old: 8.0
new: 85.0
path: .spaces[0].metrics.cyclomatic.average
old: 1.3333333333333333
new: 85.0
path: .spaces[0].metrics.cognitive.average
old: 0.0
new: 5.0
path: .spaces[0].metrics.cognitive.sum
old: 0.0
new: 5.0
path: .spaces[0].metrics.halstead.N2
old: 38.0
new: 182.0
path: .spaces[0].metrics.halstead.n2
old: 19.0
new: 160.0
path: .spaces[0].metrics.halstead.bugs
old: 0.10741897091485852
new: 0.3669146186689424
path: .spaces[0].metrics.halstead.level
old: 0.07692307692307693
new: 0.10989010989010987
path: .spaces[0].metrics.halstead.vocabulary
old: 32.0
new: 176.0
path: .spaces[0].metrics.halstead.n1
old: 13.0
new: 16.0
path: .spaces[0].metrics.halstead.time
old: 321.3888888888889
new: 2028.8825176958044
path: .spaces[0].metrics.halstead.effort
old: 5785.0
new: 36519.88531852448
path: .spaces[0].metrics.halstead.N1
old: 51.0
new: 356.0
path: .spaces[0].metrics.halstead.estimated_program_length
old: 128.8163390912623
new: 1235.508495181978
path: .spaces[0].metrics.halstead.length
old: 89.0
new: 538.0
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.4473745965310372
new: 2.296484191788063
path: .spaces[0].metrics.halstead.volume
old: 445.0
new: 4013.174210826866
path: .spaces[0].metrics.halstead.difficulty
old: 13.0
new: 9.1
path: .spaces[0].metrics.nexits.average
old: 0.6666666666666666
new: 83.0
path: .spaces[0].metrics.nexits.sum
old: 2.0
new: 83.0
path: .spaces[0].metrics.nargs.average
old: 0.6666666666666666
new: 1.0
path: .spaces[0].metrics.nargs.sum
old: 2.0
new: 1.0
path: .spaces[0].metrics.nom.functions
old: 3.0
new: 1.0
path: .spaces[0].metrics.nom.total
old: 3.0
new: 1.0
path: .spaces[0].metrics.loc.ploc
old: 23.0
new: 176.0
path: .spaces[0].metrics.loc.lloc
old: 3.0
new: 168.0
path: .spaces[0].metrics.loc.blank
old: 4.0
new: 2.0
path: .spaces[0].metrics.loc.sloc
old: 32.0
new: 198.0
path: .spaces[0].metrics.loc.cloc
old: 5.0
new: 20.0
path: .spaces[0].metrics.mi.mi_original
old: 81.30509210737999
new: 22.633917641841748
path: .spaces[0].metrics.mi.mi_visual_studio
old: 47.546837489695896
new: 13.236209147275876
path: .spaces[0].metrics.mi.mi_sei
old: 71.15268048127867
new: -10.756716369890976
Code
static uint32_t ConvertAndroidKeyCodeToDOMKeyCode(int32_t androidKeyCode) {
// Special-case alphanumeric keycodes because they are most common.
if (androidKeyCode >= AKEYCODE_A && androidKeyCode <= AKEYCODE_Z) {
return androidKeyCode - AKEYCODE_A + NS_VK_A;
}
if (androidKeyCode >= AKEYCODE_0 && androidKeyCode <= AKEYCODE_9) {
return androidKeyCode - AKEYCODE_0 + NS_VK_0;
}
switch (androidKeyCode) {
// KEYCODE_UNKNOWN (0) ... KEYCODE_HOME (3)
case AKEYCODE_BACK:
return NS_VK_ESCAPE;
// KEYCODE_CALL (5) ... KEYCODE_POUND (18)
case AKEYCODE_DPAD_UP:
return NS_VK_UP;
case AKEYCODE_DPAD_DOWN:
return NS_VK_DOWN;
case AKEYCODE_DPAD_LEFT:
return NS_VK_LEFT;
case AKEYCODE_DPAD_RIGHT:
return NS_VK_RIGHT;
case AKEYCODE_DPAD_CENTER:
return NS_VK_RETURN;
case AKEYCODE_VOLUME_UP:
return NS_VK_VOLUME_UP;
case AKEYCODE_VOLUME_DOWN:
return NS_VK_VOLUME_DOWN;
// KEYCODE_VOLUME_POWER (26) ... KEYCODE_Z (54)
case AKEYCODE_COMMA:
return NS_VK_COMMA;
case AKEYCODE_PERIOD:
return NS_VK_PERIOD;
case AKEYCODE_ALT_LEFT:
return NS_VK_ALT;
case AKEYCODE_ALT_RIGHT:
return NS_VK_ALT;
case AKEYCODE_SHIFT_LEFT:
return NS_VK_SHIFT;
case AKEYCODE_SHIFT_RIGHT:
return NS_VK_SHIFT;
case AKEYCODE_TAB:
return NS_VK_TAB;
case AKEYCODE_SPACE:
return NS_VK_SPACE;
// KEYCODE_SYM (63) ... KEYCODE_ENVELOPE (65)
case AKEYCODE_ENTER:
return NS_VK_RETURN;
case AKEYCODE_DEL:
return NS_VK_BACK; // Backspace
case AKEYCODE_GRAVE:
return NS_VK_BACK_QUOTE;
// KEYCODE_MINUS (69)
case AKEYCODE_EQUALS:
return NS_VK_EQUALS;
case AKEYCODE_LEFT_BRACKET:
return NS_VK_OPEN_BRACKET;
case AKEYCODE_RIGHT_BRACKET:
return NS_VK_CLOSE_BRACKET;
case AKEYCODE_BACKSLASH:
return NS_VK_BACK_SLASH;
case AKEYCODE_SEMICOLON:
return NS_VK_SEMICOLON;
// KEYCODE_APOSTROPHE (75)
case AKEYCODE_SLASH:
return NS_VK_SLASH;
// KEYCODE_AT (77) ... KEYCODE_MEDIA_FAST_FORWARD (90)
case AKEYCODE_MUTE:
return NS_VK_VOLUME_MUTE;
case AKEYCODE_PAGE_UP:
return NS_VK_PAGE_UP;
case AKEYCODE_PAGE_DOWN:
return NS_VK_PAGE_DOWN;
// KEYCODE_PICTSYMBOLS (94) ... KEYCODE_BUTTON_MODE (110)
case AKEYCODE_ESCAPE:
return NS_VK_ESCAPE;
case AKEYCODE_FORWARD_DEL:
return NS_VK_DELETE;
case AKEYCODE_CTRL_LEFT:
return NS_VK_CONTROL;
case AKEYCODE_CTRL_RIGHT:
return NS_VK_CONTROL;
case AKEYCODE_CAPS_LOCK:
return NS_VK_CAPS_LOCK;
case AKEYCODE_SCROLL_LOCK:
return NS_VK_SCROLL_LOCK;
// KEYCODE_META_LEFT (117) ... KEYCODE_FUNCTION (119)
case AKEYCODE_SYSRQ:
return NS_VK_PRINTSCREEN;
case AKEYCODE_BREAK:
return NS_VK_PAUSE;
case AKEYCODE_MOVE_HOME:
return NS_VK_HOME;
case AKEYCODE_MOVE_END:
return NS_VK_END;
case AKEYCODE_INSERT:
return NS_VK_INSERT;
// KEYCODE_FORWARD (125) ... KEYCODE_MEDIA_RECORD (130)
case AKEYCODE_F1:
return NS_VK_F1;
case AKEYCODE_F2:
return NS_VK_F2;
case AKEYCODE_F3:
return NS_VK_F3;
case AKEYCODE_F4:
return NS_VK_F4;
case AKEYCODE_F5:
return NS_VK_F5;
case AKEYCODE_F6:
return NS_VK_F6;
case AKEYCODE_F7:
return NS_VK_F7;
case AKEYCODE_F8:
return NS_VK_F8;
case AKEYCODE_F9:
return NS_VK_F9;
case AKEYCODE_F10:
return NS_VK_F10;
case AKEYCODE_F11:
return NS_VK_F11;
case AKEYCODE_F12:
return NS_VK_F12;
case AKEYCODE_NUM_LOCK:
return NS_VK_NUM_LOCK;
case AKEYCODE_NUMPAD_0:
return NS_VK_NUMPAD0;
case AKEYCODE_NUMPAD_1:
return NS_VK_NUMPAD1;
case AKEYCODE_NUMPAD_2:
return NS_VK_NUMPAD2;
case AKEYCODE_NUMPAD_3:
return NS_VK_NUMPAD3;
case AKEYCODE_NUMPAD_4:
return NS_VK_NUMPAD4;
case AKEYCODE_NUMPAD_5:
return NS_VK_NUMPAD5;
case AKEYCODE_NUMPAD_6:
return NS_VK_NUMPAD6;
case AKEYCODE_NUMPAD_7:
return NS_VK_NUMPAD7;
case AKEYCODE_NUMPAD_8:
return NS_VK_NUMPAD8;
case AKEYCODE_NUMPAD_9:
return NS_VK_NUMPAD9;
case AKEYCODE_NUMPAD_DIVIDE:
return NS_VK_DIVIDE;
case AKEYCODE_NUMPAD_MULTIPLY:
return NS_VK_MULTIPLY;
case AKEYCODE_NUMPAD_SUBTRACT:
return NS_VK_SUBTRACT;
case AKEYCODE_NUMPAD_ADD:
return NS_VK_ADD;
case AKEYCODE_NUMPAD_DOT:
return NS_VK_DECIMAL;
case AKEYCODE_NUMPAD_COMMA:
return NS_VK_SEPARATOR;
case AKEYCODE_NUMPAD_ENTER:
return NS_VK_RETURN;
case AKEYCODE_NUMPAD_EQUALS:
return NS_VK_EQUALS;
// KEYCODE_NUMPAD_LEFT_PAREN (162) ... KEYCODE_CALCULATOR (210)
// Needs to confirm the behavior. If the key switches the open state
// of Japanese IME (or switches input character between Hiragana and
// Roman numeric characters), then, it might be better to use
// NS_VK_KANJI which is used for Alt+Zenkaku/Hankaku key on Windows.
case AKEYCODE_ZENKAKU_HANKAKU:
return 0;
case AKEYCODE_EISU:
return NS_VK_EISU;
case AKEYCODE_MUHENKAN:
return NS_VK_NONCONVERT;
case AKEYCODE_HENKAN:
return NS_VK_CONVERT;
case AKEYCODE_KATAKANA_HIRAGANA:
return 0;
case AKEYCODE_YEN:
return NS_VK_BACK_SLASH; // Same as other platforms.
case AKEYCODE_RO:
return NS_VK_BACK_SLASH; // Same as other platforms.
case AKEYCODE_KANA:
return NS_VK_KANA;
case AKEYCODE_ASSIST:
return NS_VK_HELP;
// the A key is the action key for gamepad devices.
case AKEYCODE_BUTTON_A:
return NS_VK_RETURN;
default:
ALOG(
"ConvertAndroidKeyCodeToDOMKeyCode: "
"No DOM keycode for Android keycode %d",
int(androidKeyCode));
return 0;
}
}