AI Slop Code Risk Monitor

FEX-Emu/FEX

SlopCodeMonitor badge for FEX-Emu/FEX Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

A fast usermode x86 and x86-64 emulator for Arm64 Linux

1.6 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for FEX-Emu/FEX, a C++ project with 8,358 GitHub stars. SynthScan examined 437,333 lines of code across 954 source files, recording 665 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 1.6 (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.

1.6
Adjusted Signal
1.6
Raw Pattern Score
100%
Time Factor
2026-10-29
Last Push
8.4K
Stars
C++
Language
437.3K
Lines of Code
954
Files
665
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 6.5/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 635 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.1/100 · LOW

Are imports declared and package/API names verified? 4 finding(s).

Agent Over-Engineering Ratio 1.2/100 · LOW

Are wrappers, guards, and repeated structures necessary? 34 finding(s).

PR Review Velocity Impact 8.1/100 · LOW

Which changes need focused human review? 665 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 3MEDIUM 30LOW 632

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 665 distinct pattern matches across 13 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.

Over-Commented Block573 hits · 496 pts
SeverityFileLineSnippetContext
LOWThunkLibs/libGL/libGL_Guest.cpp21#include <cstdlib>COMMENT
LOWThunkLibs/libGL/glcorearb.h41#include <windows.h>COMMENT
LOWThunkLibs/libGL/glcorearb.h81typedef unsigned int GLenum;COMMENT
LOWThunkLibs/libGL/glcorearb.h101#define GL_TRIANGLE_STRIP 0x0005COMMENT
LOWThunkLibs/libGL/glcorearb.h121#define GL_ONE_MINUS_DST_COLOR 0x0307COMMENT
LOWThunkLibs/libGL/glcorearb.h141#define GL_POINT_SIZE_RANGE 0x0B12COMMENT
LOWThunkLibs/libGL/glcorearb.h161#define GL_STENCIL_FAIL 0x0B94COMMENT
LOWThunkLibs/libGL/glcorearb.h181#define GL_POLYGON_SMOOTH_HINT 0x0C53COMMENT
LOWThunkLibs/libGL/glcorearb.h201#define GL_TEXTURE_BORDER_COLOR 0x1004COMMENT
LOWThunkLibs/libGL/glcorearb.h221#define GL_OR 0x1507COMMENT
LOWThunkLibs/libGL/glcorearb.h241#define GL_RGBA 0x1908COMMENT
LOWThunkLibs/libGL/glcorearb.h361GLAPI void APIENTRY glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params);COMMENT
LOWThunkLibs/libGL/glcorearb.h381#define GL_TEXTURE_RED_SIZE 0x805CCOMMENT
LOWThunkLibs/libGL/glcorearb.h441#ifndef GL_VERSION_1_2COMMENT
LOWThunkLibs/libGL/glcorearb.h461#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365COMMENT
LOWThunkLibs/libGL/glcorearb.h501#define GL_TEXTURE2 0x84C2COMMENT
LOWThunkLibs/libGL/glcorearb.h521#define GL_TEXTURE22 0x84D6COMMENT
LOWThunkLibs/libGL/glcorearb.h541#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514COMMENT
LOWThunkLibs/libGL/glcorearb.h581 GLsizei imageSize, const void* data);COMMENT
LOWThunkLibs/libGL/glcorearb.h601#define GL_DEPTH_COMPONENT32 0x81A7COMMENT
LOWThunkLibs/libGL/glcorearb.h641#endif /* GL_VERSION_1_4 */COMMENT
LOWThunkLibs/libGL/glcorearb.h661#define GL_BUFFER_ACCESS 0x88BBCOMMENT
LOWThunkLibs/libGL/glcorearb.h721typedef khronos_int8_t GLbyte;COMMENT
LOWThunkLibs/libGL/glcorearb.h741#define GL_DRAW_BUFFER5 0x882ACOMMENT
LOWThunkLibs/libGL/glcorearb.h761#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4CCOMMENT
LOWThunkLibs/libGL/glcorearb.h781#define GL_SAMPLER_1D_SHADOW 0x8B61COMMENT
LOWThunkLibs/libGL/glcorearb.h1001#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EFCOMMENT
LOWThunkLibs/libGL/glcorearb.h1021GLAPI void APIENTRY glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);COMMENT
LOWThunkLibs/libGL/glcorearb.h1041#define GL_CLIP_DISTANCE7 0x3007COMMENT
LOWThunkLibs/libGL/glcorearb.h1061#define GL_TEXTURE_1D_ARRAY 0x8C18COMMENT
LOWThunkLibs/libGL/glcorearb.h1081#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8ACOMMENT
LOWThunkLibs/libGL/glcorearb.h1101#define GL_BLUE_INTEGER 0x8D96COMMENT
LOWThunkLibs/libGL/glcorearb.h1121#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2COMMENT
LOWThunkLibs/libGL/glcorearb.h1141#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214COMMENT
LOWThunkLibs/libGL/glcorearb.h1161#define GL_RENDERBUFFER_BINDING 0x8CA7COMMENT
LOWThunkLibs/libGL/glcorearb.h1181#define GL_COLOR_ATTACHMENT3 0x8CE3COMMENT
LOWThunkLibs/libGL/glcorearb.h1201#define GL_COLOR_ATTACHMENT23 0x8CF7COMMENT
LOWThunkLibs/libGL/glcorearb.h1221#define GL_RENDERBUFFER_RED_SIZE 0x8D50COMMENT
LOWThunkLibs/libGL/glcorearb.h1241#define GL_RG 0x8227COMMENT
LOWThunkLibs/libGL/glcorearb.h1441#define GL_VERSION_3_1 1COMMENT
LOWThunkLibs/libGL/glcorearb.h1461#define GL_R16_SNORM 0x8F98COMMENT
LOWThunkLibs/libGL/glcorearb.h1481#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32COMMENT
LOWThunkLibs/libGL/glcorearb.h1541#define GL_LINE_STRIP_ADJACENCY 0x000BCOMMENT
LOWThunkLibs/libGL/glcorearb.h1561#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4CCOMMENT
LOWThunkLibs/libGL/glcorearb.h1581#define GL_SAMPLE_POSITION 0x8E50COMMENT
LOWThunkLibs/libGL/glcorearb.h1661#define GL_ANY_SAMPLES_PASSED 0x8C2FCOMMENT
LOWThunkLibs/libGL/glcorearb.h1721GLAPI void APIENTRY glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value);COMMENT
LOWThunkLibs/libGL/glcorearb.h1741#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900CCOMMENT
LOWThunkLibs/libGL/glcorearb.h1761#define GL_DOUBLE_MAT3x2 0x8F4BCOMMENT
LOWThunkLibs/libGL/glcorearb.h1781#define GL_TESS_GEN_VERTEX_ORDER 0x8E78COMMENT
LOWThunkLibs/libGL/glcorearb.h1901GLAPI void APIENTRY glResumeTransformFeedback(void);COMMENT
LOWThunkLibs/libGL/glcorearb.h1921#define GL_SHADER_COMPILER 0x8DFACOMMENT
LOWThunkLibs/libGL/glcorearb.h2141#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129COMMENT
LOWThunkLibs/libGL/glcorearb.h2161#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CCCOMMENT
LOWThunkLibs/libGL/glcorearb.h2181#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008COMMENT
LOWThunkLibs/libGL/glcorearb.h2201#define GL_IMAGE_2D_RECT 0x904FCOMMENT
LOWThunkLibs/libGL/glcorearb.h2221#define GL_UNSIGNED_INT_IMAGE_2D 0x9063COMMENT
LOWThunkLibs/libGL/glcorearb.h2281#define GL_VERSION_4_3 1COMMENT
LOWThunkLibs/libGL/glcorearb.h2301#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BCCOMMENT
LOWThunkLibs/libGL/glcorearb.h2321#define GL_DEBUG_SOURCE_API 0x8246COMMENT
513 more matches not shown…
Decorative Section Separators20 hits · 84 pts
SeverityFileLineSnippetContext
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h210 // 'z' >= 'M' && 'a' <= 'M' ─────┘ │ ││COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h212 // 'z' >= 'C' && 'a' <= 'C' ───────┘ ││COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h214 // 'Z' >= 'k' && 'A' <= 'k' ─────────┘│COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h216 // 'Z' >= 'z' && 'A' <= 'z' ──────────┘COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h259 // 'e' == 'e' ─────┘ ││││COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h261 // 'd' == 'd' ───────┘│││COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h263 // 'c' == 'c' ────────┘││COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h265 // 'b' == 'b' ─────────┘│COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h267 // 'a' == 'a' ──────────┘COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h311 // └───────────┬────────────┘COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h318 // At index 3 ───────┘ │COMMENT
MEDIUM⚡…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h320 // At index 0 ──────────┘COMMENT
MEDIUM…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h169 // 'd' match ──────┘ │COMMENT
MEDIUM…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h171 // 'c' match ────────┘COMMENT
MEDIUM⚡FEXCore/Source/Interface/Core/JIT/VectorOps.cpp3589 // ╔═══════════╗╔═══════════╗╔═══════════╗╔═══════════╗COMMENT
MEDIUM⚡FEXCore/Source/Interface/Core/JIT/VectorOps.cpp3591 // ╚═══════════╝╚═══════════╝╚═══════════╝╚═══════════╝COMMENT
MEDIUM⚡FEXCore/Source/Interface/Core/JIT/VectorOps.cpp3595 // ╔═════╗╔═════╗╔═════╗╔═════╗╔═════╗╔═════╗╔═════╗╔═════╗COMMENT
MEDIUM⚡FEXCore/Source/Interface/Core/JIT/VectorOps.cpp3597 // ╚═════╝╚═════╝╚═════╝╚═════╝╚═════╝╚═════╝╚═════╝╚═════╝COMMENT
MEDIUM…Core/Source/Interface/Core/OpcodeDispatcher/Vector.cpp5045 // ╔═══════════╗╔═══════════╗╔═══════════╗╔═══════════╗╔═══════════╗╔═══════════╗╔═══════════╗╔═══════════╗COMMENT
MEDIUM…Core/Source/Interface/Core/OpcodeDispatcher/Vector.cpp5047 // ╚═══════════╝╚═══════════╝╚═══════════╝╚═══════════╝╚═══════════╝╚═══════════╝╚═══════════╝╚═══════════╝COMMENT
AI Slop Vocabulary11 hits · 30 pts
SeverityFileLineSnippetContext
MEDIUMSource/Tools/LinuxEmulation/LinuxSyscalls/Syscalls.h607 // These are little helper functions for cases when FEX needs to copy data to or from the application in a robust fashCOMMENT
MEDIUM…urce/Tools/LinuxEmulation/LinuxSyscalls/x32/Thread.cpp190 // Retain the robust list head but don't give it to the kernelCOMMENT
MEDIUM…urce/Tools/LinuxEmulation/LinuxSyscalls/x32/Thread.cpp191 // The kernel would break if it tried parsing a 32bit robust list from a 64bit processCOMMENT
MEDIUM…urce/Tools/LinuxEmulation/LinuxSyscalls/x32/Thread.cpp202 // Give the robust list back to the applicationCOMMENT
MEDIUM…urce/Tools/LinuxEmulation/LinuxSyscalls/x32/Thread.cpp203 // Steam specifically checks to make sure the robust list is setCOMMENT
LOWScripts/NeedDisabledSVE.py63 # If SVE is reported from cpuinfo just return.COMMENT
LOWScripts/guest_test_runner.py97# If the test requires AVX and FEX doesn't support it, just pass the test and move onCOMMENT
MEDIUMFEXCore/Source/Interface/Core/OpcodeDispatcher.cpp1711 // Essentially (Src1 >> Start) & ((1 << Length) - 1)COMMENT
MEDIUM…/Core/Interpreter/Fallbacks/StringCompareFallbacks.cpp69// Essentially the same in terms of behavior with VPCMPESTRX instructions,COMMENT
MEDIUM…Interface/Core/Interpreter/Fallbacks/VectorFallbacks.h242 // Essentially the PCMPXSTRX variant of memcmp/strcmp. Sets the bit of theCOMMENT
MEDIUMFEXCore/Source/Common/JitSymbols.cpp19 // We can't use FILE here since we must be robust against forking processes closing our FD from under us.COMMENT
Deep Nesting28 hits · 28 pts
SeverityFileLineSnippetContext
LOWScripts/InstallFEX.py22CODE
LOWScripts/InstallFEX.py100CODE
LOWScripts/InstallFEX.py138CODE
LOWScripts/StructPackVerifier.py246CODE
LOWScripts/StructPackVerifier.py318CODE
LOWScripts/StructPackVerifier.py398CODE
LOWScripts/StructPackVerifier.py417CODE
LOWScripts/StructPackVerifier.py484CODE
LOWScripts/StructPackVerifier.py506CODE
LOWScripts/StructPackVerifier.py610CODE
LOWScripts/DefinitionExtract.py134CODE
LOWScripts/DefinitionExtract.py274CODE
LOWScripts/DefinitionExtract.py345CODE
LOWScripts/DefinitionExtract.py425CODE
LOWScripts/DefinitionExtract.py444CODE
LOWScripts/GenerateSyscallNumbers.py121CODE
LOWScripts/GenerateSyscallNumbers.py192CODE
LOWScripts/ClassifyCPU.py11CODE
LOWScripts/json_config_parse.py206CODE
LOWScripts/guest_test_runner.py27CODE
LOWFEXCore/Scripts/json_ir_doc_generator.py29CODE
LOWFEXCore/Scripts/json_ir_generator.py109CODE
LOWFEXCore/Scripts/json_ir_generator.py321CODE
LOWFEXCore/Scripts/json_ir_generator.py425CODE
LOWFEXCore/Scripts/json_ir_generator.py558CODE
LOWFEXCore/Scripts/json_ir_generator.py607CODE
LOWFEXCore/Scripts/config_generator.py350CODE
LOWFEXCore/Scripts/config_generator.py373CODE
Redundant / Tautological Comments9 hits · 16 pts
SeverityFileLineSnippetContext
LOWScripts/StructPackVerifier.py510 # Check if the struct size is a mismatchCOMMENT
LOWScripts/StructPackVerifier.py516 # Check if the number of members differCOMMENT
LOW⚡Scripts/CI_FetchRootFS.py92 # Check if rootfs mount path existsCOMMENT
LOW⚡Scripts/CI_FetchRootFS.py98 # Check if rootfs path existsCOMMENT
LOW⚡Scripts/CI_FetchRootFS.py104 # Check if rootfs path existsCOMMENT
LOWScripts/CI_FetchRootFS.py126 # Check if the image needs to be extractedCOMMENT
LOWScripts/guest_test_runner.py7 # Check if FEX indicates support for AVXCOMMENT
LOWScripts/guest_test_runner.py28 # Check if the test itself requires AVXCOMMENT
LOWFEXCore/Scripts/json_ir_generator.py118 # Check if we have a destinationCOMMENT
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHScripts/StructPackVerifier.py29except:CODE
HIGHScripts/guest_test_runner.py46except IOError:CODE
Verbosity Indicators5 hits · 8 pts
SeverityFileLineSnippetContext
LOWSource/Tools/FEXConfig/Main.cpp319 // If it is a regular file then we need to check if it is a valid archiveCOMMENT
LOW…/Tools/LinuxEmulation/LinuxSyscalls/FileManagement.cpp58 // If the thunksDB file exists then we need to check if the rootfs supports multi-arch or not.COMMENT
LOW…/Tools/LinuxEmulation/LinuxSyscalls/FileManagement.cpp535 // We need to check if the filepath exists and is a symlink.COMMENT
LOWSource/Common/FileFormatCheck.cpp11 // If it is a regular file then we need to check if it is a valid archiveCOMMENT
LOWFEXHeaderUtils/FEXHeaderUtils/Filesystem.h78 // If it exists, we need to check if it is a file or folder.COMMENT
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHFEXCore/Scripts/json_ir_generator.py218 OpDef.EmitValidation.append(f"GetOpRegClass({ArgName}) == RegClass::Invalid || WalkFindRegClass(CODE
Hyper-Verbose Identifiers8 hits · 4 pts
SeverityFileLineSnippetContext
LOWScripts/UpdateInstructionCountJson.py13def update_performance_numbers(performance_json_path, performance_json, new_json_numbers, new_cache_version):CODE
LOWExternal/code-format-helper/code-format-helper.py180 def should_include_extensionless_file(self, path: str) -> bool:STRING
LOWFEXCore/Scripts/json_ir_generator.py607def print_ir_allocator_helpers():STRING
LOWFEXCore/Scripts/json_ir_generator.py837def print_ir_dispatcher_dispatch():STRING
LOWFEXCore/Scripts/config_generator.py152def print_man_environment_tail():STRING
LOWFEXCore/Scripts/config_generator.py330def print_parse_envloader_options(options):STRING
LOWFEXCore/Scripts/config_generator.py350def print_parse_jsonloader_options(options):STRING
LOWFEXCore/Scripts/config_generator.py410def print_affects_codegen_options(options, unnamed_options):STRING
Excessive Try-Catch Wrapping3 hits · 4 pts
SeverityFileLineSnippetContext
LOW⚡Scripts/doc_outline_generator.py71 except Exception as e:CODE
LOW⚡Scripts/doc_outline_generator.py79 except Exception as e:CODE
LOW⚡Scripts/doc_outline_generator.py87 except Exception as e:CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMScripts/json_config_parse.py308 # Create a list of values for this register as an integerCOMMENT
Unused Imports3 hits · 3 pts
SeverityFileLineSnippetContext
LOWExternal/code-format-helper/code-format-helper.py116CODE
LOWExternal/code-format-helper/code-format-helper.py116CODE
LOWFEXCore/Scripts/json_ir_generator.py4CODE
Modern Structural Boilerplate1 hit · 0 pts
SeverityFileLineSnippetContext
LOWExternal/code-format-helper/code-format-helper.py114 def update_pr(self, comment_text: str, args: FormatArgs, create_new: bool) -> None:STRING