Serial utility for flashing, provisioning, and interacting with Espressif SoCs
This report presents the forensic synthetic code analysis of espressif/esptool, a Python project with 6,410 GitHub stars. SynthScan v2.0 examined 54,205 lines of code across 222 source files, recording 673 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 18.8 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 673 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | espefuse/efuse/base_fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32c2/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32c5/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32c3/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32h21/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32c6/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32e22/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32h4/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32h2/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32c61/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32s3/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32s2/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32s31/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32p4/fields.py | 0 | wrapper object to manage the efuse fields in a connected esp bootloader | STRING |
| HIGH | espefuse/efuse/esp32c2/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32c5/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32c3/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32h21/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32c6/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32e22/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32h4/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32h2/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32c61/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32s3/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32s2/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32s31/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32p4/fields.py | 0 | check if the coding scheme has detected any errors. | STRING |
| HIGH | espefuse/efuse/esp32c2/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32c5/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32c3/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32h21/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32c6/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32e22/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32h4/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32h2/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32c61/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32s3/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32s2/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32s31/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32p4/emulate_efuse_controller.py | 0 | the class for virtual efuse operation. using for host_test. | STRING |
| HIGH | espefuse/efuse/esp32c2/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32c3/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32c5/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32h21/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32c6/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32h4/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32h2/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32c61/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32s3/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32s2/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32s31/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32p4/operations.py | 0 | burn the key block with the specified name. arguments are groups of block name, key file (containing 256 bits of binary | STRING |
| HIGH | espefuse/efuse/esp32c5/operations.py | 0 | parse a rsa public key and burn the digest to key efuse block. args: blocks: list of efuse block names to burn keys to. | STRING |
| HIGH | espefuse/efuse/esp32c3/operations.py | 0 | parse a rsa public key and burn the digest to key efuse block. args: blocks: list of efuse block names to burn keys to. | STRING |
| HIGH | espefuse/efuse/esp32h21/operations.py | 0 | parse a rsa public key and burn the digest to key efuse block. args: blocks: list of efuse block names to burn keys to. | STRING |
| HIGH | espefuse/efuse/esp32c6/operations.py | 0 | parse a rsa public key and burn the digest to key efuse block. args: blocks: list of efuse block names to burn keys to. | STRING |
| HIGH | espefuse/efuse/esp32h4/operations.py | 0 | parse a rsa public key and burn the digest to key efuse block. args: blocks: list of efuse block names to burn keys to. | STRING |
| HIGH | espefuse/efuse/esp32h2/operations.py | 0 | parse a rsa public key and burn the digest to key efuse block. args: blocks: list of efuse block names to burn keys to. | STRING |
| HIGH | espefuse/efuse/esp32c61/operations.py | 0 | parse a rsa public key and burn the digest to key efuse block. args: blocks: list of efuse block names to burn keys to. | STRING |
| 7 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | espefuse/cli_util.py | 42 | def _process_args_for_options(self, state: Any) -> None: | CODE |
| LOW | espefuse/efuse/emulate_efuse_controller_base.py | 168 | def copy_blocks_wr_regs_to_rd_regs(self, updated_block: int | None = None) -> None: | CODE |
| LOW | espefuse/efuse/base_fields.py | 119 | def get_count_read_disable_bits(self) -> int: | CODE |
| LOW | espefuse/efuse/base_fields.py | 770 | def is_efuses_incompatible_for_burn(self) -> bool: | CODE |
| LOW | espefuse/efuse/base_fields.py | 816 | def get_coding_scheme_warnings(self, silent: bool = False) -> bool: | CODE |
| LOW | espefuse/efuse/util.py | 39 | def check_duplicate_name_in_list(name_list): | CODE |
| LOW | espefuse/efuse/base_operations.py | 188 | def add_show_sensitive_info_option(function: Callable): | CODE |
| LOW | espefuse/efuse/base_operations.py | 556 | def _adjust_key_data_for_blocks( | CODE |
| LOW | espefuse/efuse/mem_definition_base.py | 120 | def set_category_and_class_type(efuse, name): | CODE |
| LOW | espefuse/efuse/esp32c2/fields.py | 227 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32c2/mem_definition.py | 88 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32c5/fields.py | 226 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32c5/mem_definition.py | 113 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32c3/fields.py | 226 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32c3/mem_definition.py | 129 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32h21/fields.py | 216 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32h21/mem_definition.py | 113 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32/fields.py | 178 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32/mem_definition.py | 88 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32c6/fields.py | 226 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32c6/mem_definition.py | 113 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32e22/fields.py | 234 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32e22/mem_definition.py | 112 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32h4/fields.py | 214 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32h4/mem_definition.py | 113 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32h2/fields.py | 231 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32h2/mem_definition.py | 113 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32c61/fields.py | 226 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32c61/mem_definition.py | 112 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32s3/fields.py | 226 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32s3/fields.py | 278 | def is_efuses_incompatible_for_burn(self): | CODE |
| LOW | espefuse/efuse/esp32s3/emulate_efuse_controller.py | 75 | def get_raw_minor_chip_version(self): | CODE |
| LOW | espefuse/efuse/esp32s3/emulate_efuse_controller.py | 86 | def get_raw_major_chip_version(self): | CODE |
| LOW | espefuse/efuse/esp32s3/mem_definition.py | 114 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32s2/fields.py | 265 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32s2/mem_definition.py | 152 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32s31/fields.py | 212 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32s31/mem_definition.py | 116 | def get_burn_block_data_names(self): | CODE |
| LOW | espefuse/efuse/esp32p4/fields.py | 219 | def get_coding_scheme_warnings(self, silent=False): | CODE |
| LOW | espefuse/efuse/esp32p4/mem_definition.py | 113 | def get_burn_block_data_names(self): | CODE |
| LOW | esp_rfc2217_server/esp_port_manager.py | 44 | def _telnet_process_subnegotiation(self, suboption): | CODE |
| LOW⚡ | test/test_nand_hw.py | 189 | def test_jedec_manufacturer_id(self): | CODE |
| LOW⚡ | test/test_nand_hw.py | 234 | def test_read_spare_after_erase_is_ff(self): | CODE |
| LOW⚡ | test/test_nand_hw.py | 301 | def test_erase_single_block_reads_ff(self): | CODE |
| LOW⚡ | test/test_nand_hw.py | 346 | def test_incrementing_pattern(self): | CODE |
| LOW⚡ | test/test_nand_hw.py | 566 | def test_write_read_near_end_of_device(self): | CODE |
| LOW⚡ | test/test_nand_hw.py | 574 | def test_spare_read_near_end_of_device(self): | CODE |
| LOW⚡ | test/test_nand_hw.py | 592 | def test_erase_flash_clears_chip(self): | CODE |
| LOW⚡ | test/test_nand_hw.py | 756 | def test_end_address_sufficient_succeeds(self): | CODE |
| LOW⚡ | test/test_nand_hw.py | 773 | def test_write_flash_warns_experimental(self): | CODE |
| LOW | test/test_nand_hw.py | 203 | def test_status_register_clear_after_attach(self): | CODE |
| LOW | test/test_nand_hw.py | 214 | def test_protect_register_cleared(self): | CODE |
| LOW | test/test_nand_hw.py | 260 | def test_erase_resets_bad_marker(self): | CODE |
| LOW | test/test_nand_hw.py | 270 | def test_multiple_pages_in_block_independent(self): | CODE |
| LOW | test/test_nand_hw.py | 282 | def test_last_page_of_block_spare(self): | CODE |
| LOW | test/test_nand_hw.py | 319 | def test_erase_does_not_affect_adjacent_block(self): | CODE |
| LOW | test/test_nand_hw.py | 424 | def test_non_page_aligned_size(self): | CODE |
| LOW | test/test_nand_hw.py | 472 | def test_block_boundary_data_integrity(self): | CODE |
| LOW | test/test_nand_hw.py | 491 | def test_write_second_block_independent(self): | CODE |
| LOW | test/test_nand_hw.py | 542 | def test_repeated_write_erase_cycles(self): | CODE |
| 299 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | test/test_nand_hw.py | 20 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 32 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 181 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 183 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 226 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 228 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 293 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 295 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 335 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 337 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 554 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 556 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 584 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 586 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 765 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_nand_hw.py | 767 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 384 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 386 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 436 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 438 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 510 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 512 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 622 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 624 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 685 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 687 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 718 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_nand_hw.py | 720 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | esptool/logger.py | 248 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | esptool/logger.py | 250 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | esptool/logger.py | 260 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | esptool/logger.py | 262 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | esptool/logger.py | 303 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | esptool/logger.py | 305 | # ------------------------------------------------------------------ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | espefuse/cli_util.py | 42 | CODE | |
| LOW | espefuse/cli_util.py | 99 | CODE | |
| LOW | espefuse/efuse/emulate_efuse_controller_base.py | 188 | CODE | |
| LOW | espefuse/efuse/emulate_efuse_controller_base.py | 239 | CODE | |
| LOW | espefuse/efuse/emulate_efuse_controller_base.py | 283 | CODE | |
| LOW | espefuse/efuse/base_fields.py | 36 | CODE | |
| LOW | espefuse/efuse/base_fields.py | 289 | CODE | |
| LOW | espefuse/efuse/base_fields.py | 386 | CODE | |
| LOW | espefuse/efuse/base_fields.py | 432 | CODE | |
| LOW | espefuse/efuse/base_fields.py | 899 | CODE | |
| LOW | espefuse/efuse/csv_table_parser.py | 16 | CODE | |
| LOW | espefuse/efuse/csv_table_parser.py | 106 | CODE | |
| LOW | espefuse/efuse/csv_table_parser.py | 124 | CODE | |
| LOW | espefuse/efuse/base_operations.py | 556 | CODE | |
| LOW | espefuse/efuse/base_operations.py | 693 | CODE | |
| LOW | espefuse/efuse/base_operations.py | 849 | CODE | |
| LOW | espefuse/efuse/base_operations.py | 926 | CODE | |
| LOW | espefuse/efuse/base_operations.py | 1058 | CODE | |
| LOW | espefuse/efuse/base_operations.py | 1284 | CODE | |
| LOW | espefuse/efuse/base_operations.py | 1316 | CODE | |
| LOW | espefuse/efuse/mem_definition_base.py | 51 | CODE | |
| LOW | espefuse/efuse/mem_definition_base.py | 86 | CODE | |
| LOW | espefuse/efuse/mem_definition_base.py | 117 | CODE | |
| LOW | espefuse/efuse/mem_definition_base.py | 256 | CODE | |
| LOW | espefuse/efuse/mem_definition_base.py | 120 | CODE | |
| LOW | espefuse/efuse/esp32c2/operations.py | 114 | CODE | |
| LOW | espefuse/efuse/esp32c3/mem_definition.py | 142 | CODE | |
| LOW | espefuse/efuse/esp32/fields.py | 267 | CODE | |
| LOW | espefuse/efuse/esp32/emulate_efuse_controller.py | 137 | CODE | |
| LOW | espefuse/efuse/esp32/mem_definition.py | 98 | CODE | |
| LOW | espefuse/efuse/esp32h2/operations.py | 128 | CODE | |
| LOW | espefuse/efuse/esp32p4/fields.py | 382 | CODE | |
| LOW | esp_rfc2217_server/__init__.py | 59 | CODE | |
| LOW | esp_rfc2217_server/esp_port_manager.py | 44 | CODE | |
| LOW | test/test_espefuse.py | 321 | CODE | |
| LOW | test/test_espefuse.py | 339 | CODE | |
| LOW | test/test_espefuse.py | 546 | CODE | |
| LOW | test/test_esptool.py | 109 | CODE | |
| LOW | test/test_esptool.py | 1863 | CODE | |
| LOW | test/test_esptool.py | 1998 | CODE | |
| LOW | test/test_esptool.py | 2360 | CODE | |
| LOW | esptool/bin_image.py | 783 | CODE | |
| LOW | esptool/bin_image.py | 1070 | CODE | |
| LOW | esptool/reset.py | 59 | CODE | |
| LOW | esptool/__init__.py | 1346 | CODE | |
| LOW | esptool/logger.py | 264 | CODE | |
| LOW | esptool/loader.py | 2207 | CODE | |
| LOW | esptool/loader.py | 415 | CODE | |
| LOW | esptool/loader.py | 852 | CODE | |
| LOW | esptool/cmds.py | 753 | CODE | |
| LOW | esptool/cmds.py | 971 | CODE | |
| LOW | esptool/cmds.py | 1757 | CODE | |
| LOW | esptool/cmds.py | 1978 | CODE | |
| LOW | esptool/cmds.py | 2037 | CODE | |
| LOW | esptool/cmds.py | 2291 | CODE | |
| LOW | esptool/cmds.py | 2528 | CODE | |
| LOW | esptool/cmds.py | 2568 | CODE | |
| LOW | esptool/cmds.py | 2762 | CODE | |
| LOW | esptool/cmds.py | 2802 | CODE | |
| LOW | esptool/cmds.py | 2976 | CODE | |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | espefuse/__init__.py | 14 | CODE | |
| LOW | espefuse/__init__.py | 15 | CODE | |
| LOW | espefuse/__init__.py | 15 | CODE | |
| LOW | espefuse/efuse/esp32c2/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32c2/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32c5/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32c5/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32c3/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32c3/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32h21/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32h21/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32c6/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32c6/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32e22/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32e22/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32h4/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32h4/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32h2/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32h2/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32c61/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32c61/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32s3/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32s3/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32s2/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32s2/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32s31/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32s31/__init__.py | 3 | CODE | |
| LOW | espefuse/efuse/esp32p4/__init__.py | 2 | CODE | |
| LOW | espefuse/efuse/esp32p4/__init__.py | 3 | CODE | |
| LOW | test/test_image_info.py | 11 | CODE | |
| LOW | esptool/util.py | 5 | CODE | |
| LOW | esptool/logger.py | 31 | CODE | |
| LOW | esptool/loader.py | 78 | CODE | |
| LOW | docs/conf_common.py | 1 | CODE | |
| LOW | docs/en/conf.py | 12 | CODE | |
| LOW | docs/en/conf.py | 18 | CODE | |
| LOW | espsecure/__init__.py | 4 | CODE | |
| LOW | espsecure/__init__.py | 7 | CODE | |
| LOW | espsecure/__init__.py | 11 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | espefuse/efuse/base_fields.py | 94 | # This class is used by EfuseBlockBase and EfuseFieldBase | COMMENT |
| MEDIUM | espefuse/efuse/base_fields.py | 1064 | # The following methods are used for type checking. | COMMENT |
| MEDIUM | test/test_espefuse.py | 2195 | # Create a mock ESP object with a mock port | COMMENT |
| MEDIUM | test/test_esptool.py | 1073 | # Create a 16KB old file (4 sectors) with pattern | COMMENT |
| MEDIUM | test/test_esptool.py | 1111 | # Create a 16KB old file (4 sectors) with pattern | COMMENT |
| MEDIUM | test/test_esptool.py | 1146 | # Create a 16KB old file | COMMENT |
| MEDIUM | test/test_esptool.py | 2368 | # Create a 16KB old file (4 sectors) with pattern | COMMENT |
| MEDIUM | test/test_espsecure.py | 278 | # Create a test file that is NOT sector-aligned (e.g., 100 bytes) | COMMENT |
| MEDIUM | test/test_espsecure.py | 321 | # Create a file smaller than 4096 bytes | COMMENT |
| MEDIUM | esptool/util.py | 14 | # Define a custom type for the input | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | espefuse/efuse/base_operations.py | 123 | # Check if we have more values than allowed by max_arity | COMMENT |
| LOW | espefuse/efuse/esp32p4/fields.py | 384 | # Check if _H field exists (5-bit key purpose split into lo/hi) | COMMENT |
| LOW | esptool/__init__.py | 344 | # Check if we are writing/erasing/reading past 16MB boundary | COMMENT |
| LOW | esptool/__init__.py | 357 | # Check if we are writing/reading past detected flash size | COMMENT |
| LOW | esptool/__init__.py | 865 | # Check if this entry is a HEX file that was split | COMMENT |
| LOW | esptool/loader.py | 673 | # Check if we have enough data, | COMMENT |
| LOW | esptool/loader.py | 908 | # Check if chip supports reading chip ID from the get-security-info command | COMMENT |
| LOW | esptool/cli_util.py | 215 | # Check if a file with this name actually exists | COMMENT |
| LOW | esptool/cli_util.py | 229 | # Open file and store handle in context for cleanup | COMMENT |
| LOW | esptool/cmds.py | 1019 | # Check if NAND flash mode is requested | COMMENT |
| LOW | esptool/cmds.py | 1082 | # Check if Secure Boot V1 is active (ESP32 only) | COMMENT |
| LOW | esptool/cmds.py | 1094 | # Check if flash encryption with key manager is active | COMMENT |
| LOW | esptool/cmds.py | 1109 | # Check if chip_id and min_rev in image are valid for the target in use | COMMENT |
| LOW | esptool/cmds.py | 1437 | # Verify if the new binary is already in flash | COMMENT |
| LOW | esptool/cmds.py | 1874 | # Check if XMC SPI flash chip booted-up successfully, fix if not | COMMENT |
| LOW | esptool/cmds.py | 1960 | # Check if stub/ROM supports chosen flash size | COMMENT |
| LOW | espsecure/esp_sdc/__init__.py | 321 | # Check if it looks like a file path | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | espefuse/efuse_interface.py | 152 | except Exception: | CODE |
| LOW | espefuse/efuse/token.py | 158 | except Exception as e: | CODE |
| LOW | espefuse/efuse/csv_table_parser.py | 35 | except Exception: | CODE |
| MEDIUM | test/test_esptool.py | 367 | def valid_key_present(self): | CODE |
| LOW⚡ | test/test_esptool.py | 803 | except Exception: | CODE |
| LOW⚡ | test/test_esptool.py | 809 | except Exception: | CODE |
| LOW⚡ | test/test_esptool.py | 817 | except Exception: | CODE |
| LOW | test/test_esptool.py | 142 | except Exception as e: | CODE |
| LOW | test/test_espsecure_hsm.py | 168 | except Exception: | CODE |
| LOW | esptool/cmds.py | 532 | except Exception: | CODE |
| LOW | esptool/cmds.py | 2609 | except Exception: | CODE |
| LOW | esptool/cmds.py | 2739 | except Exception as e: | CODE |
| LOW | esptool/targets/esp32s3.py | 353 | except Exception: | CODE |
| MEDIUM | esptool/targets/esp32s3.py | 345 | def hard_reset(self): | CODE |
| LOW | espsecure/__init__.py | 256 | except Exception as e: | CODE |
| LOW | espsecure/__init__.py | 656 | except Exception as e: | CODE |
| LOW | espsecure/__init__.py | 1047 | except Exception as e: | CODE |
| LOW | espsecure/esp_sdc/__init__.py | 633 | except Exception as e: | CODE |
| LOW | espsecure/esp_sdc/__init__.py | 643 | except Exception as e: | CODE |
| LOW | espsecure/esp_sdc/__init__.py | 663 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | esp_rfc2217_server.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | esp_rfc2217_server.py | 21 | # Run the following command on the server side to make | COMMENT |
| LOW | espsecure.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | esptool.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | espefuse.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | espefuse/efuse/token.py | 1 | # SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD | COMMENT |
| LOW | esp_rfc2217_server/__init__.py | 1 | # SPDX-FileCopyrightText: 2009-2015 Chris Liechti | COMMENT |
| LOW | .gitlab/canary.yml | 1 | # Canary pipeline — runs only when $CI_PIPELINE_SOURCE == "schedule" && | COMMENT |
| LOW | .gitlab/canary.yml | 21 | # | COMMENT |
| LOW | test/test_esptool_sdm.py | 1 | # Unit tests (really integration tests) for esptool using the pytest framework | COMMENT |
| LOW | test/test_esptool_sdc.py | 1 | # Host-only unit tests for the esptool-side Secure Debug Controller (SDC) support. | COMMENT |
| LOW | test/test_espefuse.py | 1 | # HOST_TEST for espefuse using the pytest framework | COMMENT |
| LOW | test/test_esptool.py | 1 | # Unit tests (really integration tests) for esptool using the pytest framework | COMMENT |
| LOW | esptool/config.py | 21 | "write_block_attempts", | COMMENT |
| LOW | esptool/bin_image.py | 461 | elem.include_in_checksum == next_elem.include_in_checksum, | COMMENT |
| LOW | esptool/logger.py | 321 | super().print(*args, **kwargs) | COMMENT |
| LOW | esptool/targets/esp32p4.py | 301 | # revisions do not need this sequence. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | espefuse/__init__.py | 28 | __all__ = [ | CODE |
| LOW | espefuse/efuse/emulate_efuse_controller_base.py | 99 | def set_major_chip_version(self, version) -> None: | CODE |
| LOW | espefuse/efuse/emulate_efuse_controller_base.py | 103 | def set_minor_chip_version(self, version) -> None: | CODE |
| LOW | espefuse/efuse/emulate_efuse_controller_base.py | 143 | def update_reg(self, addr: int, mask: int, new_val: int) -> None: | CODE |
| LOW | espefuse/efuse/emulate_efuse_controller_base.py | 227 | def update_block(self, blk: BlockDefinition, wr_data: BitStream) -> None: | CODE |
| LOW | espefuse/efuse/base_fields.py | 602 | def update_efuses(self) -> None: | CODE |
| LOW | esptool/reset.py | 24 | __all__ = [ | CODE |
| LOW | esptool/__init__.py | 6 | __all__ = [ | CODE |
| LOW | esptool/logger.py | 33 | __all__ = [ | CODE |
| LOW | esptool/logger.py | 193 | def set_verbosity(self, mode: int | str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ci/sync_to_internal.py | 365 | "`git checkout internal/dev_release && git merge origin/master`, " | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_esptool_sdm.py | 6 | # How to use: | COMMENT |
| LOW | test/test_espefuse.py | 7 | # How to use: | COMMENT |
| LOW | test/test_esptool.py | 6 | # How to use: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | esptool/cmds.py | 1741 | # Step 1: SFDP (Serial Flash Discoverable Parameters) - JEDEC standard for SPI NOR. | COMMENT |
| LOW⚡ | esptool/cmds.py | 1748 | # Step 2: Fallback to flash_id check. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | esptool/cmds.py | 1741 | # Step 1: SFDP (Serial Flash Discoverable Parameters) - JEDEC standard for SPI NOR. | COMMENT |
| LOW⚡ | esptool/cmds.py | 1748 | # Step 2: Fallback to flash_id check. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | espefuse/efuse_interface.py | 161 | CODE | |
| LOW | esptool/loader.py | 1867 | CODE | |
| LOW | esptool/loader.py | 1881 | CODE | |
| LOW | espsecure/esp_sdc/__init__.py | 731 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | esptool/__init__.py | 514 | # ``set_logger`` or test harness resets. | COMMENT |
| MEDIUM | espsecure/esp_sdc/__init__.py | 138 | """Generate ECDSA signature {r, s} with comprehensive validation""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ci/sync_to_internal.py | 392 | # Side-effecting orchestration built on the pure helpers above | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/test_esptool.py | 2508 | CODE |