🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
This report summarizes scanner evidence for WerWolv/ImHex, a C++ project with 55,672 GitHub stars. SynthScan examined 390,064 lines of code across 1012 source files, recording 1700 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 3.5 (Low 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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 1686 finding(s).
Are imports declared and package/API names verified? 8 finding(s).
Are wrappers, guards, and repeated structures necessary? 9 finding(s).
Which changes need focused human review? 1700 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 1700 distinct pattern matches across 10 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 | cmake/sdk/template/CMakeLists.txt | 1 | # ImHex Plugin Template | COMMENT |
| LOW | cmake/sdk/template/CMakeLists.txt | 21 | # LIBRARY_PLUGIN: If set, turns this plugin into a library plugin. Library plugins can be linked against by other plug | COMMENT |
| LOW | cmake/sdk/template/source/example_plugin.cpp | 1 | #include <hex/plugin.hpp> | COMMENT |
| LOW | plugins/ui/include/ui/text_editor.hpp | 1 | #pragma once | COMMENT |
| LOW | plugins/ui/source/ui/pattern_value_editor.cpp | 1 | #include <ui/pattern_value_editor.hpp> | COMMENT |
| LOW | plugins/ui/source/ui/hex_editor.cpp | 1 | #include <ui/hex_editor.hpp> | COMMENT |
| LOW | plugins/ui/source/ui/markdown.cpp | 1 | #include <ui/markdown.hpp> | COMMENT |
| LOW | plugins/ui/source/ui/pattern_drawer.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | plugins/ui/source/ui/pattern_drawer.cpp | 21 | #include <pl/patterns/pattern_wide_character.hpp> | COMMENT |
| LOW | plugins/ui/source/ui/text_editor/editor.cpp | 1 | #include <ui/text_editor.hpp> | COMMENT |
| LOW | plugins/hashes/source/content/hashes.cpp | 1 | #include <hex/api/content_registry/hashes.hpp> | COMMENT |
| LOW | plugins/script_loader/source/plugin_script_loader.cpp | 1 | #include <fonts/vscode_icons.hpp> | COMMENT |
| LOW | …/script_loader/source/loaders/dotnet/dotnet_loader.cpp | 1 | #include <loaders/dotnet/dotnet_loader.hpp> | COMMENT |
| LOW | …/script_loader/source/loaders/dotnet/dotnet_loader.cpp | 21 | #include <imgui.h> | COMMENT |
| LOW | plugins/script_loader/support/c/include/script_api.hpp | 1 | #pragma once | COMMENT |
| LOW | …ns/script_loader/support/c/source/script_api/v1/ui.cpp | 1 | #include <script_api.hpp> | COMMENT |
| LOW | plugins/diffing/source/content/views/view_diff.cpp | 1 | #include "content/views/view_diff.hpp" | COMMENT |
| LOW | …visualizers/source/content/pl_visualizers/3d_model.cpp | 1 | #include <hex/ui/imgui_imhex_extensions.h> | COMMENT |
| LOW | plugins/yara_rules/source/content/yara_rule.cpp | 1 | #include <content/yara_rule.hpp> | COMMENT |
| LOW | plugins/decompress/source/content/pl_functions.cpp | 1 | #include <hex.hpp> | COMMENT |
| LOW | plugins/decompress/source/content/pl_functions.cpp | 21 | #endif | COMMENT |
| LOW | …gins/disassembler/include/content/helpers/capstone.hpp | 1 | #pragma once | COMMENT |
| LOW | …isassembler/source/content/views/view_disassembler.cpp | 1 | #include <content/views/view_disassembler.hpp> | COMMENT |
| LOW | plugins/windows/source/plugin_windows.cpp | 1 | #include <hex/plugin.hpp> | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 1 | #pragma once | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 21 | #define ICON_VS_SEARCH "\xee\xa9\xad" // U+EA6D | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 41 | #define ICON_VS_TRASH "\xee\xaa\x81" // U+EA81 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 61 | #define ICON_VS_ARCHIVE "\xee\xaa\x98" // U+EA98 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 81 | #define ICON_VS_BRIEFCASE "\xee\xaa\xac" // U+EAAC | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 101 | #define ICON_VS_CLIPPY "\xee\xab\x80" // U+EAC0 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 121 | #define ICON_VS_DEBUG_STOP "\xee\xab\x97" // U+EAD7 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 141 | #define ICON_VS_FILE_PDF "\xee\xab\xab" // U+EAEB | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 161 | #define ICON_VS_GITHUB_ACTION "\xee\xab\xbf" // U+EAFF | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 181 | #define ICON_VS_LINK_EXTERNAL "\xee\xac\x94" // U+EB14 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 201 | #define ICON_VS_OPEN_PREVIEW "\xee\xac\xa8" // U+EB28 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 221 | #define ICON_VS_REPLACE_ALL "\xee\xac\xbc" // U+EB3C | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 241 | #define ICON_VS_SETTINGS_GEAR "\xee\xad\x91" // U+EB51 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 261 | #define ICON_VS_SYMBOL_SNIPPET "\xee\xad\xa6" // U+EB66 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 281 | #define ICON_VS_VM_OUTLINE "\xee\xad\xba" // U+EB7A | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 301 | #define ICON_VS_DEBUG_REVERSE_CONTINUE "\xee\xae\x8e" // U+EB8E | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 321 | #define ICON_VS_SERVER_PROCESS "\xee\xae\xa2" // U+EBA2 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 341 | #define ICON_VS_COMBINE "\xee\xae\xb6" // U+EBB6 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 361 | #define ICON_VS_TERMINAL_BASH "\xee\xaf\x8a" // U+EBCA | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 381 | #define ICON_VS_RUN_ERRORS "\xee\xaf\x9e" // U+EBDE | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 401 | #define ICON_VS_LAYOUT_PANEL "\xee\xaf\xb2" // U+EBF2 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 421 | #define ICON_VS_MAP_FILLED "\xee\xb0\x86" // U+EC06 | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 441 | #define ICON_VS_PIANO "\xee\xb0\x9a" // U+EC1A | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 461 | #define ICON_VS_GITHUB_PROJECT "\xee\xb0\xaf" // U+EC2F | COMMENT |
| LOW | plugins/fonts/include/fonts/vscode_icons.hpp | 481 | #define ICON_VS_REPO_PINNED "\xee\xb1\x83" // U+EC43 | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 1 | #pragma once | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 21 | #define ICON_TA_CASH_BANKNOTE_MOVE "\xf0\x90\x85\x85" // U+10145 | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 41 | #define ICON_TA_FILTER_2_DOLLAR "\xf0\x90\x85\x99" // U+10159 | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 61 | #define ICON_TA_ALIGN_LEFT "\xf3\xb0\x80\x89" // U+F0009 | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 81 | #define ICON_TA_ARROW_NARROW_UP "\xf3\xb0\x80\x9d" // U+F001D | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 101 | #define ICON_TA_BATTERY_3 "\xf3\xb0\x80\xb1" // U+F0031 | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 121 | #define ICON_TA_BOX "\xf3\xb0\x81\x85" // U+F0045 | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 141 | #define ICON_TA_CHART_BAR "\xf3\xb0\x81\x99" // U+F0059 | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 161 | #define ICON_TA_CLIPBOARD_LIST "\xf3\xb0\x81\xad" // U+F006D | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 181 | #define ICON_TA_CORNER_RIGHT_UP "\xf3\xb0\x82\x81" // U+F0081 | COMMENT |
| LOW | plugins/fonts/include/fonts/tabler_icons.hpp | 201 | #define ICON_TA_DOTS "\xf3\xb0\x82\x95" // U+F0095 | COMMENT |
| 1600 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | lib/third_party/imgui/implot/include/implot.h | 1031 | // Turns the current plot's plotting area into a drag and drop target. Don't forget to call EndDragDropTarget! | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot/include/implot.h | 1033 | // Turns the current plot's X-axis into a drag and drop target. Don't forget to call EndDragDropTarget! | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot/include/implot.h | 1035 | // Turns the current plot's legend into a drag and drop target. Don't forget to call EndDragDropTarget! | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot/include/implot.h | 1043 | // Turns the current plot's plotting area into a drag and drop source. You must hold Ctrl. Don't forget to call EndDragD | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot/include/implot.h | 1045 | // Turns the current plot's X-axis into a drag and drop source. You must hold Ctrl. Don't forget to call EndDragDropSour | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot/include/implot.h | 1047 | // Turns an item in the current plot's legend into drag and drop source. Don't forget to call EndDragDropSource! | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot/include/implot.h | 1101 | // Temporarily modify a style color. Don't forget to call PopStyleColor! | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot/include/implot.h | 1107 | // Temporarily modify a style variable of float type. Don't forget to call PopStyleVar! | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot/include/implot.h | 1109 | // Temporarily modify a style variable of int type. Don't forget to call PopStyleVar! | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot/include/implot.h | 1111 | // Temporarily modify a style variable of ImVec2 type. Don't forget to call PopStyleVar! | COMMENT |
| LOW | lib/third_party/imgui/implot/include/implot.h | 1167 | // Temporarily switch to one of the built-in (i.e. ImPlotColormap_XXX) or user-added colormaps (i.e. a return value of A | COMMENT |
| LOW | lib/third_party/imgui/implot/include/implot.h | 1169 | // Push a colormap by string name. Use built-in names such as "Default", "Deep", "Jet", etc. or a string you provided to | COMMENT |
| MEDIUM | lib/third_party/imgui/imgui/source/imgui_widgets.cpp | 7304 | // Tip: pass a non-visible label (e.g. "##hello") then you can use the space to draw other text or image. | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot3d/include/implot3d.h | 520 | // Temporarily modify a style color. Don't forget to call PopStyleColor! | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot3d/include/implot3d.h | 526 | // Temporarily modify a style variable of float type. Don't forget to call PopStyleVar! | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot3d/include/implot3d.h | 528 | // Temporarily modify a style variable of int type. Don't forget to call PopStyleVar! | COMMENT |
| LOW⚡ | lib/third_party/imgui/implot3d/include/implot3d.h | 530 | // Temporarily modify a style variable of ImVec2 type. Don't forget to call PopStyleVar! | COMMENT |
| LOW | lib/third_party/imgui/implot3d/include/implot3d.h | 576 | // Temporarily switch to one of the built-in (i.e. ImPlot3DColormap_XXX) or user-added colormaps (i.e. a return value of | COMMENT |
| LOW | lib/third_party/imgui/implot3d/include/implot3d.h | 579 | // Push a colormap by string name. Use built-in names such as "Default", "Deep", "Jet", etc. or a string you provided to | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/check_langs.py | 70 | print(f"Error: Languages file '{languages_file_path}' does not exist.") | CODE |
| MEDIUM⚡ | tests/check_langs.py | 76 | print(f"Error: Languages file '{languages_file_path}' is not a valid JSON object.") | CODE |
| MEDIUM⚡ | tests/check_langs.py | 81 | print(f"Error: Language file '{lang['path']}' does not exist in '{languages_folder}'.") | CODE |
| MEDIUM⚡ | tests/check_langs.py | 86 | print(f"Error: Languages file '{languages_file_path}' is not a valid JSON file. {e}") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | lib/third_party/imgui/imgui/source/imgui_demo.cpp | 7654 | ImGui::TextWrapped("Lorem ipsum dolor sit amet"); | CODE |
| LOW⚡ | lib/third_party/imgui/imgui/source/imgui_demo.cpp | 7654 | ImGui::TextWrapped("Lorem ipsum dolor sit amet"); | CODE |
| LOW⚡ | lib/third_party/imgui/imgui/source/imgui_demo.cpp | 7656 | ImGui::Text("Lorem ipsum dolor sit amet"); | CODE |
| LOW⚡ | lib/third_party/imgui/imgui/source/imgui_demo.cpp | 7656 | ImGui::Text("Lorem ipsum dolor sit amet"); | CODE |
| LOW | lib/third_party/imgui/imgui/source/imgui_demo.cpp | 9575 | ImGui::TextWrapped("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor i | CODE |
| LOW | lib/third_party/imgui/imgui/source/imgui_demo.cpp | 9575 | ImGui::TextWrapped("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor i | CODE |
| LOW | lib/third_party/imgui/imgui/source/imgui_demo.cpp | 10859 | ImGui::TextWrapped("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut | CODE |
| LOW | lib/third_party/imgui/imgui/source/imgui_demo.cpp | 10859 | ImGui::TextWrapped("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …s/builtin/source/content/views/view_data_inspector.cpp | 136 | // Try to read as many bytes as requested and possible | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/check_langs.py | 51 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cmake/sdk/template/CMakeLists.txt | 2 | # ===================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/builtin/include/content/views/view_data_processor.hpp | 18 | class ViewDataProcessor : public View::Window { | CODE |
| LOW | plugins/builtin/source/content/achievements.cpp | 38 | class AchievementDataProcessor : public Achievement { | CODE |
| LOW | tests/check_langs.py | 10 | def get_lang_occurrences_in_code(path): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …rty/imgui/imgui_test_engine/source/imgui_te_engine.cpp | 548 | // Setup inputs in the tested Dear ImGui context. Essentially we override the work of the backend here. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/check_langs.py | 10 | CODE | |
| LOW | tests/check_langs.py | 64 | CODE |