AI Slop Code Risk Monitor

vcmi/vcmi

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

Open-source engine for Heroes of Might and Magic III

0.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for vcmi/vcmi, a C++ project with 6,000 GitHub stars. SynthScan examined 849,437 lines of code across 3076 source files, recording 447 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 0.7 (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.

0.7
Adjusted Signal
0.7
Raw Pattern Score
100%
Time Factor
2026-11-01
Last Push
6.0K
Stars
C++
Language
849.4K
Lines of Code
3.1K
Files
447
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 2.2/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 1.5/100 · LOW

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

PR Review Velocity Impact 3.4/100 · LOW

Which changes need focused human review? 447 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 0MEDIUM 72LOW 375

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 447 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.

Over-Commented Block329 hits · 329 pts
SeverityFileLineSnippetContext
LOWCMakeLists.txt1# Minimum required version greatly affect CMake behaviorCOMMENT
LOWGlobal.h21// Based on: http://sourceforge.net/p/predef/wiki/OperatingSystems/COMMENT
LOWGlobal.h41# define VCMI_UNIXCOMMENT
LOWGlobal.h61# define VCMI_IOSCOMMENT
LOWGlobal.h81#ifdef VCMI_WINDOWSCOMMENT
LOWGlobal.h101COMMENT
LOWGlobal.h121#include <iostream>COMMENT
LOWGlobal.h141#include <vector>COMMENT
LOWGlobal.h161// C++ 20 -> std::source_location::function_nameCOMMENT
LOWGlobal.h201# define DLL_EXPORTCOMMENT
LOWGlobal.h221# define DLL_LINKAGE DLL_IMPORTCOMMENT
LOWlibFacade/CMakeLists.txt1#######################################COMMENT
LOWclientapp/EntryPoint.cpp21#include "../client/GameEngine.h"COMMENT
LOWclientapp/EntryPoint.cpp41#include "../lib/texts/CGeneralTextHandler.h"COMMENT
LOWclientapp/EntryPoint.cpp61#include <SDL3/SDL_main.h>COMMENT
LOWclientapp/EntryPoint.cpp141int wmain(int argc, wchar_t* argv[])COMMENT
LOWclientapp/ios/startSDL.mm21#define SDL_MAIN_NOIMPLCOMMENT
LOWlauncher/mainwindow_moc.cpp21#include "../lib/texts/Languages.h"COMMENT
LOWlauncher/helper.cpp21#include <QFileDialog>COMMENT
LOWlauncher/main.cpp21# if __has_include("QIOSIntegrationPlugin.h")COMMENT
LOWlauncher/main.cpp41COMMENT
LOWlauncher/modManager/cmodlistview_moc.cpp21#include "modstateitemmodel_moc.h"COMMENT
LOWlauncher/settingsView/csettingsview_moc.cpp21COMMENT
LOWtest/battle/CUnitStateMagicTest.cpp221//TODO:getCastDescriptionCOMMENT
LOWtest/mock/TinyH3MBuilder.cpp861 // All 8 players default to "neither human nor computer".COMMENT
LOWtest/server/battles/BattleTestFixture.cpp21#include "../../../lib/CCreatureHandler.h"COMMENT
LOWtest/server/battles/DamageCalculatorTest.cpp21#include "../../../lib/modding/ModScope.h"COMMENT
LOWtest/server/activities/ActivityProcessorTest.cpp1#include "StdInc.h"COMMENT
LOWtest/server/activities/ActivityProcessorTest.cpp21#include "lib/mapObjects/CGDwelling.h"COMMENT
LOWtest/game/BattleSpellCastTest.cpp21#include <cmath>COMMENT
LOWtest/game/BattleSpellCastTest.cpp41#include "../../lib/filesystem/ResourcePath.h"COMMENT
LOWtest/game/BattleSpellCastTest.cpp861 EXPECT_EQ(damages[1], static_cast<int64_t>(std::floor(0.5 * base)));COMMENT
LOWtest/map/TinyH3MBuilderTest.cpp21#include "../../lib/entities/hero/CHeroHandler.h"COMMENT
LOWtest/spells/effects/EffectFixture.h21#include "../../mock/mock_Creature.h"COMMENT
LOWconfig/terrainViewPatterns.json1// Defines terrain view/types patterns.COMMENT
LOWconfig/gameConfig.json621 // every 1 attack point damage influence in battle when attack points > defense points during creature attackCOMMENT
LOWconfig/obstacles.json1// Defines battle obstacles. We have two vectors of them:COMMENT
LOWconfig/ai/nk2ai/nk2ai-settings.json1{COMMENT
LOWconfig/ai/nk2ai/nk2ai-settings.json21 // - a higher storage capacity becomes necessary later in the gameCOMMENT
LOWluascript/LuaContext.cpp21#include "../lib/filesystem/Filesystem.h"COMMENT
LOWluascript/api/MethodRegistrar.h81COMMENT
LOWluascript/api/Registry.cpp21COMMENT
LOWluascript/api/Registry.cpp41#include "library/Creature.h"COMMENT
LOWluascript/api/library/Services.cpp21#include <vcmi/Skill.h>COMMENT
LOWluascript/api/callback/IBattleInfoCallback.cpp21#include "../battle/BattleHexArray.h"COMMENT
LOWluascript/api/callback/IGameInfoCallback.cpp21#include "../adventure/HeroInstance.h"COMMENT
LOWluascript/api/callback/ServerCallback.cpp21#include "../library/BonusDescriptor.h"COMMENT
LOWluascript/api/callback/AdventureServer.cpp21#include <vcmi/Artifact.h>COMMENT
LOWinclude/vcmi/scripting/ApiTags.h41/// WARNING: avoid mutable (non-const) methods - prefer returning copyCOMMENT
LOWmapeditor/mapcontroller.cpp21#include "../lib/mapObjects/ObjectTemplate.h"COMMENT
LOWmapeditor/helper.cpp21COMMENT
LOWmapeditor/mainwindow.cpp21#include <QListWidget>COMMENT
LOWmapeditor/mainwindow.cpp41#include "../lib/modding/ModIncompatibility.h"COMMENT
LOWmapeditor/mainwindow.cpp61#include "campaigneditor/campaigneditor.h"COMMENT
LOWmapeditor/graphics.cpp21#include <vcmi/spells/Service.h>COMMENT
LOWmapeditor/windownewmap.cpp21#include "../lib/CRandomGenerator.h"COMMENT
LOWmapeditor/mapsettings/timedevent.cpp1/*COMMENT
LOWmapeditor/mapsettings/eventsettings.cpp1/*COMMENT
LOWmapeditor/inspector/rewardswidget.cpp1/*COMMENT
LOWmapeditor/inspector/rewardswidget.cpp21#include "../../lib/mapping/CMap.h"COMMENT
269 more matches not shown…
Decorative Section Separators71 hits · 237 pts
SeverityFileLineSnippetContext
MEDIUMclient/windows/wiki/WikiModContent.cpp44// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp46// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp70// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp72// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp119// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp121// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp137 // ── Title ─────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp144 // ── Generic section builder ────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp199 // ── Towns ─────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp230 // ── Heroes ────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp265 // ── Creatures ─────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp300 // ── Artifacts ─────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp333 // ── Spells ────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp366 // ── Skills ────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiModContent.cpp398 // ── Terrains (id > 0) ─────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiTownContent.cpp48// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiTownContent.cpp50// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiTownContent.cpp57// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiTownContent.cpp59// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiTownContent.cpp150// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiTownContent.cpp152// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiTownContent.cpp165// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiTownContent.cpp167// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiTownContent.cpp574// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiTownContent.cpp576// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiHeroContent.cpp42// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiHeroContent.cpp44// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiHeroContent.cpp51// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiHeroContent.cpp53// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiHeroContent.cpp75 // ── 1. Title + class/gender subtitle ───────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiHeroContent.cpp112 // ── 2. Large portrait + biography side-by-side ────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiHeroContent.cpp161 // ── 3. Primary skills table ─────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiHeroContent.cpp195 // ── 4. Specialty ─────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiHeroContent.cpp242 // ── 5. Starting army table ───────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiHeroContent.cpp323 // ── 5.5. War machines ───────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiHeroContent.cpp394 // ── 6. Secondary skills ──────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiHeroContent.cpp460 // ── 7. Starting spells (always shown) ──────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.h21// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.h23// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.cpp29// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.cpp31// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.cpp88// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.cpp90// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.cpp142// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.cpp144// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.cpp194// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.cpp196// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.cpp213// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiCommon.cpp215// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiArtifactContent.cpp35// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiArtifactContent.cpp37// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiArtifactContent.cpp44// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡client/windows/wiki/WikiArtifactContent.cpp46// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiArtifactContent.cpp92// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiArtifactContent.cpp94// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiArtifactContent.cpp115 // ── 1. Title ────────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiArtifactContent.cpp122 // ── 2. Class · Price · Slots info row ────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiArtifactContent.cpp207 // ── 3. Description ─────────────────────────────────────────────────────COMMENT
MEDIUMclient/windows/wiki/WikiArtifactContent.cpp223 // ── Helper: render one artifact row in a clickable table ───────────COMMENT
MEDIUMclient/windows/wiki/WikiArtifactContent.cpp252 // ── 4. Constituents (if combined artifact) ───────────────────────────COMMENT
11 more matches not shown…
Structural Annotation Overuse16 hits · 24 pts
SeverityFileLineSnippetContext
LOWdocs/players/Installation_Windows.md8## Step 1: Download and install VCMICOMMENT
LOWdocs/players/Installation_Windows.md19## Step 2: Obtain Heroes III data filesCOMMENT
LOWdocs/players/Installation_Windows.md37## Step 3: Import Heroes III data into VCMICOMMENT
LOWdocs/players/Installation_Windows.md66## Step 4: Finish setup in LauncherCOMMENT
LOWdocs/players/Installation_Linux.md5## Step 1: Binaries installationCOMMENT
LOWdocs/players/Installation_Linux.md122## Step 2: Installing Heroes III data filesCOMMENT
LOWdocs/players/Installation_Linux.md177## Step 3: Launching gameCOMMENT
LOWdocs/players/Installation_Android.md8## Step 1: Download and install VCMICOMMENT
LOWdocs/players/Installation_Android.md32## Step 2: Obtain Heroes III data filesCOMMENT
LOWdocs/players/Installation_Android.md50## Step 3: Import Heroes III data into VCMICOMMENT
LOWdocs/players/Installation_Android.md78## Step 4: Finish setup in LauncherCOMMENT
LOWdocs/players/Installation_macOS.md3## Step 1: Download and install VCMICOMMENT
LOWdocs/players/Installation_macOS.md20## Step 2: Installing Heroes III data filesCOMMENT
LOWdocs/players/Installation_iOS.md5## Step 1: Download and install VCMICOMMENT
LOWdocs/players/Installation_iOS.md44## Step 2: Installing Heroes III data filesCOMMENT
LOWdocs/players/Installation_iOS.md59## Step 3: Configuration settingsCOMMENT
Excessive Try-Catch Wrapping11 hits · 13 pts
SeverityFileLineSnippetContext
LOWCI/emit_partial.py16 except Exception:CODE
LOWCI/final_summary.py54 except Exception:CODE
LOWCI/final_summary.py85 except Exception as e:CODE
LOWCI/final_summary.py95 except Exception as e:CODE
LOW⚡CI/final_summary.py408 except Exception as e:CODE
LOW⚡CI/final_summary.py418 except Exception as e:CODE
LOW⚡CI/final_summary.py423 except Exception as e:CODE
LOW⚡CI/final_summary.py428 except Exception as e:CODE
LOWCI/validate_json.py23 except Exception as exc:CODE
LOWupdates/vcmi_updates/server.py60 except Exception:CODE
LOWupdates/vcmi_updates/server.py84 except Exception:CODE
TODO Padding6 hits · 8 pts
SeverityFileLineSnippetContext
LOWlauncher/startGame/StartGameTab.cpp54 ui->buttonGameResume->setVisible(false); // TODO: implementCODE
LOWmapeditor/graphics.cpp253 //TODO: implement. H3 method works only for images with palettes.COMMENT
LOWmapeditor/inspector/inspector.cpp465 addProperty(QObject::tr("Artifact reward"), o->gainedArtifact); //TODO: implement in setPropertyCODE
LOWmapeditor/inspector/inspector.cpp468 //addProperty(QObject::tr("Resources reward"), o->resources); //TODO: implement in setPropertyCOMMENT
LOWlib/modding/ModScope.h43 //TODO: implement accessing map dependencies for both H3 and VCMI mapsCOMMENT
LOWlib/rmg/modificators/ObjectManager.cpp550 //TODO: implement guardsCOMMENT
Unused Imports6 hits · 6 pts
SeverityFileLineSnippetContext
LOWCI/normalize_relative_includes.py5CODE
LOWCI/emit_partial.py9CODE
LOWCI/final_summary.py3CODE
LOWCI/final_summary.py13CODE
LOWCI/validate_json.py3CODE
LOWCI/validate_json.py6CODE
Hyper-Verbose Identifiers4 hits · 4 pts
SeverityFileLineSnippetContext
LOWCI/final_summary.py200def collect_validation_and_tests() -> None:CODE
LOWCI/final_summary.py299def _render_validation_section(val_rows: List[Dict[str, Any]]) -> None:CODE
LOWCI/final_summary.py339def _render_build_matrix_section(val_rows: List[Dict[str, Any]]) -> None:CODE
LOWscripts/damage/damageCalculator.lua90local function getBonusValueOfTypeAndRange(unit, present, type, shooting)CODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMlib/bonuses/BonusList.h48 // There should be no non-const access to provide solid,robust bonus cachingCOMMENT
Deep Nesting2 hits · 2 pts
SeverityFileLineSnippetContext
LOWupdates/vcmi_updates/store.py98CODE
LOWupdates/vcmi_updates/changelog.py8CODE
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWlib/json/JsonWriter.cpp68 //we need to check if special character was been already escapedCOMMENT