C2LC-221: Report on (and potentially improve) flow type coverage.

Metadata

Source
C2LC-221
Type
Task
Priority
N/A
Status
Done
Resolution
N/A
Assignee
N/A
Reporter
Created
2020-09-09T07:58:22.229-0400
Updated
2020-09-22T09:03:19.826-0400
Versions
N/A
Fixed Versions
  1. Coding Env 0.4
Component
  1. Coding Environment

Description

In learning to work with Flow, I noticed that the coding environment has some type coverage gaps.  These gaps occur where we pass around or receive undocumented objects without describing their deeper structure using Flow type annotations.  This ticket covers reporting on type coverage (perhaps by logging warnings when running npx flow check).

We could also choose to close some of the gaps as part of this issue, for example by:

  1. Installing additional flow-typed definitions for the packages we use.
  2. Adding a configuration option to let us opt a particular line out of coverage reporting.
  3. Adding type annotations as required.

Comments

  • Tony Atkins [RtF] commented 2020-09-09T08:15:46.409-0400

    I was able to check our current coverage level using the command: npx flow batch-coverage . --quiet --show-all --strip-root

    This returns:

    Coverage results from 56 file(s):
    
    src/types.js: 100.00% (4 of 4 expressions)
    src/WebSpeechInput.js: 65.49% (93 of 142 expressions)
    src/WebSpeechEventProcessor.test.js: 93.71% (268 of 286 expressions)
    src/WebSpeechEventProcessor.js: 65.79% (50 of 76 expressions)
    src/Utils.js: 100.00% (12 of 12 expressions)
    src/ToggleSwitch.test.js: 75.96% (297 of 391 expressions)
    src/ToggleSwitch.js: 87.69% (57 of 65 expressions)
    src/TextSyntax.test.js: 100.00% (87 of 87 expressions)
    src/TextSyntax.js: 100.00% (21 of 21 expressions)
    src/SoundexTable.test.js: 100.00% (238 of 238 expressions)
    src/SoundexTable.js: 89.74% (70 of 78 expressions)
    src/Scene.test.js: 67.58% (713 of 1055 expressions)
    src/Scene.js: 98.80% (248 of 251 expressions)
    src/RobotCharacter.js: 94.12% (32 of 34 expressions)
    src/ProgramUtils.test.js: 84.71% (421 of 497 expressions)
    src/ProgramUtils.js: 100.00% (152 of 152 expressions)
    src/ProgramTextEditor.test.js: 61.82% (68 of 110 expressions)
    src/ProgramTextEditor.js: 100.00% (90 of 90 expressions)
    src/ProgramBlockEditor.test.js: 69.31% (1084 of 1564 expressions)
    src/ProgramBlockEditor.js: 94.46% (836 of 885 expressions)
    src/MicMonitor.js: 78.43% (40 of 51 expressions)
    src/Interpreter.test.js: 96.92% (1039 of 1072 expressions)
    src/Interpreter.js: 94.38% (235 of 249 expressions)
    src/FocusTrapManager.test.js: 92.91% (131 of 141 expressions)
    src/FocusTrapManager.js: 90.91% (140 of 154 expressions)
    src/FeatureDetection.js: 25.00% (3 of 12 expressions)
    src/FakeRobotDriver.js: 100.00% (38 of 38 expressions)
    src/DeviceConnectControl.test.js: 61.44% (145 of 236 expressions)
    src/DeviceConnectControl.js: 84.38% (54 of 64 expressions)
    src/DeleteModeImage.js: 72.73% (16 of 22 expressions)
    src/DashDriver.js: 70.00% (91 of 130 expressions)
    src/DashConnectionErrorModal.js: 71.05% (27 of 38 expressions)
    src/ConfirmDeleteAllModal.test.js: 59.14% (55 of 93 expressions)
    src/ConfirmDeleteAllModal.js: 71.05% (27 of 38 expressions)
    src/CommandPaletteCommand.test.js: 64.55% (173 of 268 expressions)
    src/CommandPaletteCommand.js: 94.44% (85 of 90 expressions)
    src/CommandPaletteCategory.test.js: 66.00% (66 of 100 expressions)
    src/CommandPaletteCategory.js: 75.00% (15 of 20 expressions)
    src/CommandPalette.test.js: 51.37% (75 of 146 expressions)
    src/CommandPalette.js: 48.98% (24 of 49 expressions)
    src/CommandBlock.js: 75.32% (58 of 77 expressions)
    src/CharacterState.test.js: 88.57% (581 of 656 expressions)
    src/CharacterState.js: 100.00% (191 of 191 expressions)
    src/C2lcMath.test.js: 100.00% (274 of 274 expressions)
    src/C2lcMath.js: 100.00% (40 of 40 expressions)
    src/BluetoothApiWarning.js: 90.48% (19 of 21 expressions)
    src/AudioManager.js: 90.20% (46 of 51 expressions)
    src/AudioFeedbackToggleSwitch.js: 76.67% (23 of 30 expressions)
    src/AriaDisablingButton.test.js: 62.84% (230 of 366 expressions)
    src/AriaDisablingButton.js: 85.42% (41 of 48 expressions)
    src/App.js: 96.43% (594 of 616 expressions)
    src/AddNode.test.js: 73.97% (287 of 388 expressions)
    src/AddNode.js: 93.04% (107 of 115 expressions)
    src/AddModeImage.js: 72.73% (16 of 22 expressions)
    src/ActionPanel.test.js: 75.78% (363 of 479 expressions)
    src/ActionPanel.js: 85.35% (233 of 273 expressions)
    
    -----------------------------------
    Aggregate coverage statistics
    -----------------------------------
    Files                : 56
    Expressions          :
      Covered            : 10423
      Total              : 12696
      Covered Percentage : 82.10%