Open-source keyboard firmware for Atmel AVR and Arm USB families
This report summarizes scanner evidence for qmk/qmk_firmware, a C project with 20,753 GitHub stars. SynthScan examined 1,811,649 lines of code across 20663 source files, recording 6144 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 5.0 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 5242 finding(s).
Are imports declared and package/API names verified? 19 finding(s).
Are wrappers, guards, and repeated structures necessary? 963 finding(s).
Which changes need focused human review? 6144 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 6144 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.cfg | 21 | COMMENT | |
| LOW | setup.cfg | 41 | # | COMMENT |
| LOW | setup.cfg | 61 | # definitions. | COMMENT |
| LOW | setup.cfg | 81 | # | COMMENT |
| LOW | setup.cfg | 101 | # | COMMENT |
| LOW | setup.cfg | 121 | # config = { | COMMENT |
| LOW | setup.cfg | 141 | COMMENT | |
| LOW | setup.cfg | 161 | # 'key2': value1 + | COMMENT |
| LOW | setup.cfg | 181 | # Use spaces around default or named assigns. | COMMENT |
| LOW | setup.cfg | 201 | # | COMMENT |
| LOW | setup.cfg | 241 | # Set to True to prefer splitting before '&', '|' or '^' rather than | COMMENT |
| LOW | setup.cfg | 261 | # | COMMENT |
| LOW | setup.cfg | 281 | split_before_named_assigns=True | COMMENT |
| LOW | setup.cfg | 321 | split_penalty_excess_character=7000 | COMMENT |
| LOW | platforms/pin_defs.h | 21 | #if __has_include("_pin_defs.h") | COMMENT |
| LOW | platforms/progmem.h | 1 | #pragma once | COMMENT |
| LOW | platforms/eeprom.h | 21 | void eeprom_update_dword(uint32_t *__p, uint32_t __value); | COMMENT |
| LOW | platforms/eeprom.h | 41 | # define TOTAL_EEPROM_BYTE_COUNT (WEAR_LEVELING_LOGICAL_SIZE) | COMMENT |
| LOW | platforms/eeprom.h | 61 | # include "eeprom_samd.h" | COMMENT |
| LOW | platforms/eeprom.h | 81 | # error Unknown EEPROM driver. | COMMENT |
| LOW | platforms/wait.h | 21 | extern "C" { | COMMENT |
| LOW | platforms/synchronization_util.c | 1 | // Copyright 2023 Sergey Vlasov (@sigprof) | COMMENT |
| LOW | platforms/atomic_util.h | 21 | COMMENT | |
| LOW | platforms/gpio.h | 21 | # include_next "gpio.h" /* Include the platforms gpio.h */ | COMMENT |
| LOW | platforms/lv_conf.h | 221 | *LV_LOG_LEVEL_USER Only logs added by the user | COMMENT |
| LOW | platforms/lv_conf.h | 261 | /*1: Show CPU usage and FPS count*/ | COMMENT |
| LOW | platforms/lv_conf.h | 281 | /*Change the built in (v)snprintf functions*/ | COMMENT |
| LOW | platforms/lv_conf.h | 341 | #define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning /*The default value just prevents GCC warning*/ | COMMENT |
| LOW | platforms/lv_conf.h | 361 | #define LV_FONT_MONTSERRAT_26 0 | COMMENT |
| LOW | platforms/lv_conf.h | 481 | #ifndef LV_USE_LABEL | COMMENT |
| LOW | platforms/lv_conf.h | 521 | #if LV_USE_CALENDAR | COMMENT |
| LOW | platforms/lv_conf.h | 621 | COMMENT | |
| LOW | platforms/lv_conf.h | 681 | #define LV_FREETYPE_CACHE_FT_FACES 0 | COMMENT |
| LOW | platforms/lv_conf.h | 741 | #ifndef LV_USE_DEMO_MUSIC | COMMENT |
| LOW | platforms/suspend.h | 21 | #ifndef USB_SUSPEND_WAKEUP_DELAY | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 21 | # include <hal.h> | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 41 | # define A13 PAL_LINE(GPIOA, 13) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 61 | # define B0 PAL_LINE(GPIOB, 0) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 81 | # define B20 PAL_LINE(GPIOB, 20) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 101 | # define C7 PAL_LINE(GPIOC, 7) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 121 | # define C27 PAL_LINE(GPIOC, 27) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 141 | # define D14 PAL_LINE(GPIOD, 14) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 161 | # define E1 PAL_LINE(GPIOE, 1) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 181 | # define E21 PAL_LINE(GPIOE, 21) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 201 | # define F8 PAL_LINE(GPIOF, 8) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 221 | # define G12 PAL_LINE(GPIOG, 12) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 241 | # define I0 PAL_LINE(GPIOI, 0) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 261 | # define J4 PAL_LINE(GPIOJ, 4) | COMMENT |
| LOW | platforms/chibios/_pin_defs.h | 281 | # define K3 PAL_LINE(GPIOK, 3) | COMMENT |
| LOW | platforms/chibios/gd32v_compatibility.h | 21 | * we just redefine the GD32 names. */ | COMMENT |
| LOW | platforms/chibios/gd32v_compatibility.h | 41 | #define STM32_DMA_CR_MINC GD32_DMA_CTL_MNAGA | COMMENT |
| LOW | platforms/chibios/gd32v_compatibility.h | 61 | # define ADC_SMPR2_SMP_AN1 ADC_SAMPT1_SMP_SPT1 | COMMENT |
| LOW | platforms/chibios/gd32v_compatibility.h | 81 | /* FLASH redefines */ | COMMENT |
| LOW | platforms/chibios/gd32v_compatibility.h | 101 | # if !defined(SERIAL_USART_CR1) | COMMENT |
| LOW | platforms/chibios/gd32v_compatibility.h | 121 | # define SPI_CR1_BR_2 SPI_CTL0_PSC_2 | COMMENT |
| LOW | platforms/chibios/config.h | 1 | // Copyright 2023 Nick Brassel (@tzarc) | COMMENT |
| LOW | platforms/chibios/suspend.c | 1 | /* TODO */ | COMMENT |
| LOW | platforms/chibios/interrupt_handlers.c | 1 | // Copyright 2023 Nick Brassel (@tzarc) | COMMENT |
| LOW | platforms/chibios/interrupt_handlers.c | 41 | #endif // ECC_ERRORS_TRIGGER_NMI_INTERRUPT | COMMENT |
| LOW | platforms/chibios/atomic_util.h | 41 | } | COMMENT |
| 4998 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 15 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 17 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 19 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 21 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 23 | //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 25 | // └────────┴────────┴────────┘ └────────┴────────┴────────┘ | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 29 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 31 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 33 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 35 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 37 | //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 39 | // └────────┴────────┴────────┘ └────────┴────────┴────────┘ | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 43 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 45 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 47 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 49 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 51 | //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_lm/keymaps/default/keymap.c | 53 | // └────────┴────────┴────────┘ └────────┴────────┴────────┘ | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 15 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 17 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 19 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 21 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 23 | //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 25 | // └────────┴────────┴────────┘ └────────┴────────┴────────┘ | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 29 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 31 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 33 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 35 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 37 | //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 39 | // └────────┴────────┴────────┘ └────────┴────────┴────────┘ | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 43 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 45 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 47 | //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 49 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 51 | //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/iris_ce/keymaps/default/keymap.c | 53 | // └────────┴────────┴────────┘ └────────┴────────┴────────┘ | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 11 | //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 13 | //├────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬─── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 15 | //├────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬─ | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 17 | //├──────────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴─ | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 19 | //├──────────┬───────┴──┬─────┴────┬───┴────────┴────────┴────────┴────────┴────────┴──────┬─┴────────┼────────┴─┬──── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 21 | //└──────────┴──────────┴──────────┴───────────────────────────────────────────────────────┴──────────┴──────────┴──── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 25 | //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬─────── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 27 | //├────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬─── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 29 | //├────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬─ | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 31 | //├──────────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴─ | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 33 | //├──────────┬───────┴──┬─────┴────┬───┴────────┴────────┴────────┴────────┴────────┴──────┬─┴────────┼────────┴─┬──── | COMMENT |
| MEDIUM⚡ | keyboards/keebio/tragicforce68/keymaps/default/keymap.c | 35 | //└──────────┴──────────┴──────────┴───────────────────────────────────────────────────────┴──────────┴──────────┴──── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 42 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬──────── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 44 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼──────── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 46 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼──────── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 48 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼──────── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 50 | //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬──── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 52 | //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 56 | //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬──────── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 58 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼──────── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 60 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼──────── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 62 | //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼──────── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 64 | //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬──── | COMMENT |
| MEDIUM⚡ | keyboards/redox/keymaps/default/keymap.c | 66 | //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ | COMMENT |
| 805 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | util/polling_rate.py | 26 | def usb_hid_interface_subclass(subclass): | CODE |
| LOW | util/polling_rate.py | 34 | def usb_hid_interface_protocol(subclass, protocol): | CODE |
| LOW | util/polling_rate.py | 47 | def usb_interface_polling_rate(speed, interval): | CODE |
| LOW | …/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py | 107 | def index_conversion_map_reversed(self, conversion_map): | STRING |
| LOW | …/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py | 192 | def calculate_column_max_widths(self, key_symbols): | STRING |
| LOW | lib/python/qmk/painter_qff.py | 163 | def _generate_font_glyphs_list(use_ascii, unicode_glyphs): | CODE |
| LOW | lib/python/qmk/community_modules.py | 45 | def find_available_module_paths(): | CODE |
| LOW | lib/python/qmk/build_targets.py | 148 | def generate_compilation_database(self, build_target: str = None, skip_clean: bool = False, **env_vars) -> None: | CODE |
| LOW | lib/python/qmk/keymap.py | 56 | def _generate_encodermap_table(keymap_json): | STRING |
| LOW | lib/python/qmk/keymap.py | 70 | def _generate_dipswitchmap_table(keymap_json): | STRING |
| LOW | lib/python/qmk/keymap.py | 83 | def _generate_macros_function(keymap_json): | STRING |
| LOW | lib/python/qmk/keymap.py | 156 | def _impl_find_keymap_from_dir(relative_path): | STRING |
| LOW | lib/python/qmk/importers.py | 40 | def _extract_kbfirmware_layout(kbf_data): | CODE |
| LOW | lib/python/qmk/importers.py | 57 | def _extract_kbfirmware_keymap(kbf_data): | CODE |
| LOW | lib/python/qmk/compilation_database.py | 105 | def write_compilation_database(keyboard: str = None, keymap: str = None, output_path: Path = QMK_FIRMWARE / 'compile_com | CODE |
| LOW | lib/python/qmk/json_schema.py | 17 | def _dict_raise_on_duplicates(ordered_pairs): | CODE |
| LOW | lib/python/qmk/keycodes.py | 19 | def _potential_search_versions(version, lang=None): | CODE |
| LOW | lib/python/qmk/info.py | 70 | def _find_invalid_encoder_index(info_data): | CODE |
| LOW | lib/python/qmk/info.py | 504 | def _extract_split_handedness(info_data, config_c): | CODE |
| LOW | lib/python/qmk/info.py | 558 | def _extract_split_right_pins(info_data, config_c): | CODE |
| LOW | lib/python/qmk/flashers.py | 46 | def _check_dfu_programmer_version(): | CODE |
| LOW | lib/python/qmk/keyboard.py | 74 | def keyboard_alias_definitions(): | CODE |
| LOW | lib/python/qmk/keyboard.py | 145 | def _resolve_recursive_aliases(kb): | CODE |
| LOW | lib/python/qmk/tests/test_qmk_keymap.py | 4 | def test_generate_c_pytest_basic(): | CODE |
| LOW | lib/python/qmk/tests/test_qmk_keymap.py | 37 | def test_generate_json_pytest_basic(): | STRING |
| LOW⚡ | lib/python/qmk/tests/test_cli_commands.py | 113 | def test_list_keymaps_community(): | CODE |
| LOW⚡ | lib/python/qmk/tests/test_cli_commands.py | 119 | def test_list_keymaps_kb_only(): | CODE |
| LOW⚡ | lib/python/qmk/tests/test_cli_commands.py | 125 | def test_list_keymaps_vendor_kb(): | CODE |
| LOW⚡ | lib/python/qmk/tests/test_cli_commands.py | 131 | def test_list_keymaps_vendor_kb_rev(): | CODE |
| LOW⚡ | lib/python/qmk/tests/test_cli_commands.py | 137 | def test_list_keymaps_no_keyboard_found(): | CODE |
| LOW | lib/python/qmk/tests/test_cli_commands.py | 226 | def test_info_keyboard_render(): | STRING |
| LOW | lib/python/qmk/tests/test_cli_commands.py | 289 | def test_generate_rgb_breathe_table(): | STRING |
| LOW | lib/python/qmk/tests/test_cli_commands.py | 324 | def test_format_json_keyboard(): | STRING |
| LOW | lib/python/qmk/tests/test_cli_commands.py | 336 | def test_format_json_keyboard_auto(): | STRING |
| LOW | lib/python/qmk/tests/test_cli_commands.py | 342 | def test_format_json_keymap_auto(): | STRING |
| LOW | lib/python/qmk/tests/test_cli_commands.py | 386 | def test_find_multiple_conditions(): | STRING |
| LOW | lib/python/qmk/cli/__init__.py | 18 | def _get_default_distrib_path(): | CODE |
| LOW | lib/python/qmk/cli/__init__.py | 153 | def _find_broken_requirements(requirements): | CODE |
| LOW⚡ | lib/python/qmk/cli/license_check.py | 37 | def _determine_suffix_condition(extensions): | CODE |
| LOW⚡ | lib/python/qmk/cli/license_check.py | 38 | def _default_suffix_condition(s): | CODE |
| LOW⚡ | lib/python/qmk/cli/license_check.py | 46 | def _specific_suffix_condition(s): | CODE |
| LOW | lib/python/qmk/cli/license_check.py | 68 | def _detect_license_from_file_contents(filename, absolute=False, short=False): | CODE |
| LOW | lib/python/qmk/cli/lint.py | 171 | def _chibios_conf_includenext_check(target): | CODE |
| LOW | lib/python/qmk/cli/lint.py | 180 | def _rules_mk_assignment_only(rules_mk): | CODE |
| LOW | lib/python/qmk/cli/lint.py | 206 | def _handle_duplicating_code_defaults(kb, info): | CODE |
| LOW | lib/python/qmk/cli/painter/make_font.py | 36 | def painter_convert_font_image(cli): | CODE |
| LOW | lib/python/qmk/cli/ci/validate_keyboard_targets.py | 9 | def ci_validate_keyboard_targets(cli): | CODE |
| LOW | lib/python/qmk/cli/doctor/check.py | 84 | def _check_arm_gcc_installation(): | CODE |
| LOW | lib/python/qmk/cli/doctor/check.py | 124 | def _check_avr_gcc_installation(): | CODE |
| LOW | lib/python/qmk/cli/doctor/check.py | 172 | def _check_dfu_programmer_version(): | CODE |
| LOW⚡ | lib/python/qmk/cli/doctor/main.py | 30 | def _parse_toolchain_release_file(file): | CODE |
| LOW⚡ | lib/python/qmk/cli/doctor/main.py | 40 | def _parse_flashutils_release_file(file): | CODE |
| LOW | lib/python/qmk/cli/new/keymap.py | 23 | def _list_available_converters(kb_name): | CODE |
| LOW | lib/python/qmk/cli/new/keyboard.py | 73 | def select_default_bootloader(mcu): | CODE |
| LOW | lib/python/qmk/cli/new/keyboard.py | 146 | def prompt_heading_subheading(heading, subheading): | CODE |
| LOW | lib/python/qmk/cli/generate/keymap_h.py | 11 | def _generate_keycodes_function(keymap_json): | CODE |
| LOW | lib/python/qmk/cli/generate/keyboard_c.py | 73 | def _gen_led_duplicate_config(info_data, config_type): | CODE |
| LOW | lib/python/qmk/cli/generate/rgb_breathe_table.py | 68 | def generate_rgb_breathe_table(cli): | STRING |
| LOW | lib/python/qmk/cli/generate/config_h.py | 165 | def generate_led_animations_config(feature, led_feature_json, config_h_lines, enable_prefix, animation_prefix): | CODE |
| LOW | lib/python/qmk/cli/generate/config_h.py | 173 | def generate_stenography_config(kb_info_json, config_h_lines): | CODE |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | util/polling_rate.py | 12 | CODE | |
| LOW | util/polling_rate.py | 34 | CODE | |
| LOW | util/uf2conv.py | 37 | CODE | |
| LOW | util/uf2conv.py | 168 | CODE | |
| LOW | util/uf2conv.py | 210 | CODE | |
| LOW | util/uf2conv.py | 278 | CODE | |
| LOW | util/stm32eeprom_parser.py | 105 | CODE | |
| LOW | keyboards/signum/3_0/keymaps/default/generate_km.py | 20 | CODE | |
| LOW | keyboards/signum/3_0/keymaps/default/generate_km.py | 81 | CODE | |
| LOW | keyboards/ferris/keymaps/json2crab.py | 22 | CODE | |
| LOW | keyboards/ergodox_ez/util/compile_keymap.py | 157 | CODE | |
| LOW | keyboards/ergodox_ez/util/compile_keymap.py | 569 | CODE | |
| LOW | …/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py | 364 | CODE | |
| LOW | lib/python/kle2xy.py | 49 | CODE | |
| LOW | lib/python/qmk/submodules.py | 6 | CODE | |
| LOW | lib/python/qmk/painter.py | 326 | CODE | |
| LOW | lib/python/qmk/painter.py | 409 | CODE | |
| LOW | lib/python/qmk/userspace.py | 130 | CODE | |
| LOW | lib/python/qmk/userspace.py | 154 | CODE | |
| LOW | lib/python/qmk/json_encoders.py | 104 | CODE | |
| LOW | lib/python/qmk/json_encoders.py | 132 | CODE | |
| LOW | lib/python/qmk/json_encoders.py | 165 | CODE | |
| LOW | lib/python/qmk/json_encoders.py | 199 | CODE | |
| LOW | lib/python/qmk/keymap.py | 83 | CODE | |
| LOW | lib/python/qmk/keymap.py | 153 | CODE | |
| LOW | lib/python/qmk/keymap.py | 209 | CODE | |
| LOW | lib/python/qmk/keymap.py | 330 | CODE | |
| LOW | lib/python/qmk/keymap.py | 392 | CODE | |
| LOW | lib/python/qmk/keymap.py | 479 | CODE | |
| LOW | lib/python/qmk/keymap.py | 156 | CODE | |
| LOW | lib/python/qmk/compilation_database.py | 39 | CODE | |
| LOW | lib/python/qmk/compilation_database.py | 69 | CODE | |
| LOW | lib/python/qmk/c_parse.py | 61 | CODE | |
| LOW | lib/python/qmk/c_parse.py | 114 | CODE | |
| LOW | lib/python/qmk/c_parse.py | 178 | CODE | |
| LOW | lib/python/qmk/c_parse.py | 237 | CODE | |
| LOW | lib/python/qmk/makefile.py | 6 | CODE | |
| LOW | lib/python/qmk/search.py | 229 | CODE | |
| LOW | lib/python/qmk/search.py | 268 | CODE | |
| LOW | lib/python/qmk/search.py | 272 | CODE | |
| LOW | lib/python/qmk/info.py | 70 | CODE | |
| LOW | lib/python/qmk/info.py | 625 | CODE | |
| LOW | lib/python/qmk/info.py | 671 | CODE | |
| LOW | lib/python/qmk/info.py | 719 | CODE | |
| LOW | lib/python/qmk/info.py | 739 | CODE | |
| LOW | lib/python/qmk/info.py | 809 | CODE | |
| LOW | lib/python/qmk/info.py | 906 | CODE | |
| LOW | lib/python/qmk/info.py | 933 | CODE | |
| LOW | lib/python/qmk/info.py | 1009 | CODE | |
| LOW | lib/python/qmk/commands.py | 102 | CODE | |
| LOW | lib/python/qmk/flashers.py | 78 | CODE | |
| LOW | lib/python/qmk/flashers.py | 108 | CODE | |
| LOW | lib/python/qmk/flashers.py | 215 | CODE | |
| LOW | lib/python/qmk/keyboard.py | 240 | CODE | |
| LOW | lib/python/qmk/cli/via2json.py | 23 | CODE | |
| LOW | lib/python/qmk/cli/mass_compile.py | 20 | CODE | |
| LOW | lib/python/qmk/cli/license_check.py | 54 | CODE | |
| LOW | lib/python/qmk/cli/license_check.py | 68 | CODE | |
| LOW | lib/python/qmk/cli/info.py | 184 | CODE | |
| LOW | lib/python/qmk/cli/migrate.py | 31 | CODE | |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | lib/python/qmk/path.py | 44 | except ValueError: | CODE |
| HIGH | lib/python/qmk/cli/__init__.py | 24 | except Exception: | CODE |
| HIGH | lib/python/qmk/cli/doctor/check.py | 282 | except (PermissionError, FileNotFoundError): | CODE |
| HIGH | lib/python/qmk/cli/format/json.py | 23 | except ValidationError: | CODE |
| HIGH | lib/python/qmk/cli/format/json.py | 30 | except ValidationError: | CODE |
| HIGH | lib/python/qmk/cli/format/json.py | 37 | except ValidationError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | lib/python/qmk/cli/mass_compile.py | 88 | @{{ grep '\\[ERRORS\\]' "{build_log}" >/dev/null 2>&1 && printf "Build %-64s \\e[1;31m[ERRORS]\\e[0m\\n" "{keyboard_nam | CODE |
| HIGH⚡ | lib/python/qmk/cli/mass_compile.py | 89 | || {{ grep '\\[WARNINGS\\]' "{build_log}" >/dev/null 2>&1 && printf "Build %-64s \\e[1;33m[WARNINGS]\\e[0m\\n" "{keybo | CODE |
| HIGH⚡ | lib/python/qmk/cli/mass_compile.py | 98 | @rm -rf "{builddir}/{target_filename}.elf" 2>/dev/null || true | CODE |
| HIGH⚡ | lib/python/qmk/cli/mass_compile.py | 99 | @rm -rf "{builddir}/{target_filename}.map" 2>/dev/null || true | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | util/install_udev.sh | 77 | # Create a temporary directory for downloads | COMMENT |
| MEDIUM | .github/workflows/bootstrap_testing.yml | 136 | # Create a test user for the bootstrap script | COMMENT |
| MEDIUM | lib/python/qmk/painter_qff.py | 272 | # Create the output image | COMMENT |
| MEDIUM | lib/python/qmk/cli/mass_compile.py | 43 | # This file is auto-generated by qmk mass-compile | COMMENT |
| MEDIUM | lib/python/qmk/cli/painter/make_font.py | 19 | # Create the font object | COMMENT |
| MEDIUM | lib/python/qmk/cli/painter/make_font.py | 40 | # Create the font object | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | keyboards/acheron/apollo/readme.md | 21 | ### Step 1: enter bootloader | COMMENT |
| LOW⚡ | keyboards/acheron/apollo/readme.md | 29 | ### Step 2: compile firmware | COMMENT |
| LOW⚡ | keyboards/acheron/apollo/readme.md | 38 | ### Step 3: flashing | COMMENT |
| LOW | docs/configurator_step_by_step.md | 5 | ## Step 1: Select Your Keyboard | COMMENT |
| LOW⚡ | docs/configurator_step_by_step.md | 23 | ## Step 2: Select Your Keyboard Layout | COMMENT |
| LOW⚡ | docs/configurator_step_by_step.md | 31 | ## Step 3: Name Your Keymap | COMMENT |
| LOW⚡ | docs/configurator_step_by_step.md | 39 | ## Step 4: Define Your Keymap | COMMENT |
| LOW | docs/configurator_step_by_step.md | 58 | ## Step 5: Save Your Keymap for Future Changes | COMMENT |
| LOW | docs/configurator_step_by_step.md | 66 | ## Step 6: Compile Your Firmware File | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/python/qmk/keymap.py | 202 | except Exception as e: | STRING |
| LOW | lib/python/qmk/json_schema.py | 44 | except Exception as e: | CODE |
| LOW | lib/python/qmk/info.py | 701 | except Exception as e: | CODE |
| LOW | lib/python/qmk/info.py | 781 | except Exception as e: | CODE |
| LOW | lib/python/qmk/info.py | 826 | except Exception as e: | CODE |
| LOW | lib/python/qmk/cli/__init__.py | 24 | except Exception: | CODE |
| MEDIUM | lib/python/qmk/cli/__init__.py | 237 | _eprint('Error: Your Python is too old! Please upgrade to Python 3.9 or later.') | CODE |
| LOW | lib/python/qmk/cli/kle2json.py | 39 | except Exception as e: | CODE |
| LOW | lib/python/qmk/cli/ci/validate_aliases.py | 11 | except Exception: | CODE |
| MEDIUM | lib/python/qmk/cli/ci/validate_aliases.py | 8 | def _safe_keyboard_folder(target): | CODE |
| LOW⚡ | lib/python/qmk/cli/doctor/main.py | 36 | except Exception as e: | CODE |
| LOW⚡ | lib/python/qmk/cli/doctor/main.py | 46 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | util/stm32eeprom_parser.py | 19 | CODE | |
| LOW | keyboards/ergodox_ez/util/compile_keymap.py | 11 | CODE | |
| LOW | keyboards/ergodox_ez/util/compile_keymap.py | 12 | CODE | |
| LOW | keyboards/ergodox_ez/util/compile_keymap.py | 13 | CODE | |
| LOW | keyboards/ergodox_ez/util/compile_keymap.py | 14 | CODE | |
| LOW | lib/python/qmk/cli/painter/__init__.py | 1 | CODE | |
| LOW | lib/python/qmk/cli/painter/__init__.py | 2 | CODE | |
| LOW | lib/python/qmk/cli/doctor/__init__.py | 5 | CODE | |
| LOW | lib/python/qmk/cli/userspace/__init__.py | 1 | CODE | |
| LOW | lib/python/qmk/cli/userspace/__init__.py | 2 | CODE | |
| LOW | lib/python/qmk/cli/userspace/__init__.py | 3 | CODE | |
| LOW | lib/python/qmk/cli/userspace/__init__.py | 4 | CODE | |
| LOW | lib/python/qmk/cli/userspace/__init__.py | 5 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/python/qmk/painter_qff.py | 352 | # Check if we have all the ASCII glyphs present | COMMENT |
| LOW | lib/python/qmk/flashers.py | 198 | # Check if the provided mcu has an avrdude-specific name, otherwise pass on what the user provided | COMMENT |
| LOW | lib/python/qmk/cli/via2json.py | 80 | # Check if passed LAYOUT is correct | COMMENT |
| LOW | lib/python/qmk/cli/kle2json.py | 32 | # Check if info.json exists, allow overwrite with force | COMMENT |
| LOW | lib/python/qmk/cli/generate/info_json.py | 82 | # Display the results | COMMENT |
| LOW | lib/python/qmk/cli/format/json.py | 114 | # Display the results if print was set | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/coding_conventions_python.md | 120 | Return the number of seconds since 1970 Jan 1 00:00 UTC. This function always returns an integer number of seconds. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | drivers/sensors/adns5050.c | 142 | // Don't forget to use the register map (as defined in the header file). | COMMENT |
| LOW | drivers/sensors/adns5050.c | 213 | // Don't forget to use the definitions for CPI in the header file. | COMMENT |
| LOW | tmk_core/protocol/vusb/usbconfig.h | 244 | * Don't forget to keep the array and this define in sync! | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | quantum/quantum_keycodes.h | 84 | #define RAG(kc) (QK_RALT | QK_RGUI | (kc)) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/__capabilities_inc.md | 1 | Lorem ipsum dolor sit amet. | CODE |
| LOW | docs/__capabilities_inc.md | 1 | Lorem ipsum dolor sit amet. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | util/env-bootstrap.sh | 24 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/python/qmk/tests/test_cli_commands.py | 14 | CODE |