AI Slop Code Risk Monitor

vim/vim

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

The official Vim repository

1.1 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for vim/vim, a Vim Script project with 41,178 GitHub stars. SynthScan examined 842,152 lines of code across 726 source files, recording 928 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 1.1 (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.1
Adjusted Signal
1.1
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
41.2K
Stars
Vim Script
Language
842.2K
Lines of Code
726
Files
928
Pattern Hits
2026-10-31
Scan Date
0.01
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 5.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.2/100 · LOW

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

Agent Over-Engineering Ratio 0.1/100 · LOW

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

PR Review Velocity Impact 5.6/100 · LOW

Which changes need focused human review? 928 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 8MEDIUM 5LOW 915

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 928 distinct pattern matches across 15 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 Block860 hits · 780 pts
SeverityFileLineSnippetContext
LOWruntime/tools/efm_perl.pl1#!/usr/bin/perl -wCOMMENT
LOWruntime/tools/efm_perl.pl21# set errorformat=%f:%l:%mCOMMENT
LOWruntime/tools/efm_perl.pl41# Version history:COMMENT
LOWruntime/tools/xcmdsrv_client.c21#include <string.h>COMMENT
LOWruntime/tools/demoserver.py1#!/usr/bin/pythonCOMMENT
LOWruntime/tools/pltags.pl1#!/usr/bin/env perlCOMMENT
LOWruntime/tools/ccfilter.c61 { "HPUX", "HPUX's C compiler" }COMMENT
LOWruntime/tools/vimspell.sh1#!/bin/shCOMMENT
LOWruntime/doc/vim2html.pl1#!/usr/bin/env perlCOMMENT
LOWruntime/syntax/testdir/tools/regenerate_screendumps.sh1#!/bin/sh -eCOMMENT
LOWruntime/syntax/testdir/input/c.c21#if defined(MSWIN) && (!defined(FEAT_GUI_MSWIN) || defined(VIMDLL))COMMENT
LOW…ntime/syntax/testdir/input/java_comments_markdown.java1// VIM_TEST_SETUP unlet! g:java_no_tab_space_error g:java_ignore_javadocCOMMENT
LOW…ntime/syntax/testdir/input/java_comments_markdown.java21/**/ /*/ */ /* /*/ /*/*/ /*//*/ /// Markdown comment tests.COMMENT
LOW…ntime/syntax/testdir/input/java_comments_markdown.java101 static final String MARKDOWN_COMMENT_B = "///";COMMENT
LOW…ntime/syntax/testdir/input/java_comments_markdown.java121 /// public static void main(String[] args) { }COMMENT
LOW…ntime/syntax/testdir/input/java_comments_markdown.java141 /// @see java.base/java.lang.Object#toString()COMMENT
LOWruntime/syntax/testdir/input/c_string_literal.c1// C string literalsCOMMENT
LOWruntime/syntax/testdir/input/sh_07.sh1#!/bin/dashCOMMENT
LOWruntime/syntax/testdir/input/sh_06.sh61COMMENT
LOW.github/workflows/ci-windows.yml281 src\vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quitCOMMENT
LOW.github/workflows/ci-windows.yml301COMMENT
LOWsrc/normal.c6681 // changes one character, not all blanks until the start ofCOMMENT
LOWsrc/clientserver.c261# endifCOMMENT
LOWsrc/clientserver.c761 // lcd -COMMENT
LOWsrc/bufwrite.c1341 // Try to make the backup in each directory in the 'bdir' option.COMMENT
LOWsrc/bufwrite.c1821 // Make sure we don't write anything.COMMENT
LOWsrc/bufwrite.c2141 // On VMS there is a problem: newlines get added when writingCOMMENT
LOWsrc/bufwrite.c2201 if (!checking_conversion || end == 0)COMMENT
LOWsrc/bufwrite.c2281 errmsg = (char_u *)_(e_close_failed);COMMENT
LOWsrc/gui_dwrite.h101#ifdef __cplusplusCOMMENT
LOWsrc/crypt.c201} sodium_state_T;COMMENT
LOWsrc/crypt.c221# define sodium_init load_sodiumCOMMENT
LOWsrc/diff.c21COMMENT
LOWsrc/diff.c41# define DIFF_INLINE_NONE 0x2000 // no inline highlightCOMMENT
LOWsrc/optionstr.c41#endifCOMMENT
LOWsrc/optionstr.c101 NULL};COMMENT
LOWsrc/optionstr.c141#ifdef FEAT_FOLDINGCOMMENT
LOWsrc/optionstr.c301 check_string_option(&buf->b_p_inex);COMMENT
LOWsrc/option.c601 // "utf-8" for 'encoding' should work best for most users.COMMENT
LOWsrc/option.c6601 && strstr(*(char **)varp, "<lambda>") != NULL)COMMENT
LOWsrc/option.c7801#ifdef FEAT_SIGNSCOMMENT
LOWsrc/installml.sh1#! /bin/shCOMMENT
LOWsrc/osdef.sh1#! /bin/shCOMMENT
LOWsrc/osdef.sh21# Make sure collation works as expectedCOMMENT
LOWsrc/osdef.sh41#ifdef HAVE_FCNTL_HCOMMENT
LOWsrc/buffer.c1001#ifdef FEAT_EVALCOMMENT
LOWsrc/buffer.c2441 }COMMENT
LOWsrc/buffer.c4101COMMENT
LOWsrc/gui_w32_rc.h1//{{NO_DEPENDENCIES}}COMMENT
LOWsrc/mouse.c661# if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK) \COMMENT
LOWsrc/mouse.c2401 // Only use ScreenCols[] after the window was redrawn. Mainly mattersCOMMENT
LOWsrc/mouse.c2701COMMENT
LOWsrc/gui.c141 // hit an X11 I/O error and do a longjmp(), leaving recursiveCOMMENT
LOWsrc/gui.c461# endifCOMMENT
LOWsrc/gui.c1481 // the vertical line needs to be on the right half.COMMENT
LOWsrc/gui.c1801 int screen_h;COMMENT
LOWsrc/gui.c3861#endifCOMMENT
LOWsrc/term.c41# define TPUTSFUNCAST (void (*)(unsigned int))COMMENT
LOWsrc/term.c201# ifndef HAVE_UP_BC_PCCOMMENT
LOWsrc/term.c221// When the cursor shape was detected these values are used:COMMENT
800 more matches not shown…
Synthetic Comment Markers5 hits · 38 pts
SeverityFileLineSnippetContext
HIGHruntime/syntax/testdir/tools/regenerate_screendumps.sh8# 4) Repeat steps 2) and 3) once or as many times as requested with the "$1"COMMENT
HIGHsrc/strings.c4025 // truncate string if necessary as requested by precisionCOMMENT
HIGHsrc/strings.c4591 // insert padding to the left as requested by min_field_width;COMMENT
HIGHsrc/strings.c4613 // zero padding as requested by the precision or by the minimalCOMMENT
HIGHsrc/strings.c4640 // insert zero padding as requested by the precision or minCOMMENT
Fake / Example Data11 hits · 16 pts
SeverityFileLineSnippetContext
LOWruntime/doc/insert.txt461 Lorem ipsum (dolorCODE
LOWruntime/doc/insert.txt465 Lorem ipsum (dolor)CODE
LOW⚡runtime/doc/indent.txt683 "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doCODE
LOW⚡runtime/doc/indent.txt683 "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doCODE
LOW⚡runtime/doc/indent.txt689 "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doCODE
LOW⚡runtime/doc/indent.txt689 "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doCODE
LOWsrc/session.c778 // Use `bufhidden=wipe` to remove empty "placeholder" buffers onceCOMMENT
LOW⚡src/gui_xmdlg.c716 XmListCallbackStruct fake_data;CODE
LOW⚡src/gui_xmdlg.c723 fake_data.item = str;CODE
LOW⚡src/gui_xmdlg.c725 do_choice(0, data, &fake_data, ENCODING);CODE
LOWsrc/feature.h799// #define MODIFIED_BY "John Doe"COMMENT
Unused Imports15 hits · 15 pts
SeverityFileLineSnippetContext
LOWruntime/tools/demoserver.py20CODE
LOWsrc/testdir/test_makeencoding.py6CODE
LOWsrc/testdir/test_makeencoding.py6CODE
LOWsrc/testdir/test_channel_write.py7CODE
LOWsrc/testdir/test_channel_pipe.py7CODE
LOWsrc/testdir/test_channel_lsp.py8CODE
LOWsrc/testdir/test_channel.py8CODE
LOWsrc/testdir/test_channel_unix.py8CODE
LOWsrc/testdir/test_channel_dap.py8CODE
LOWsrc/testdir/test_netbeans.py8CODE
LOWsrc/testdir/test_netbeans.py10CODE
LOWsrc/testdir/test_netbeans.py11CODE
LOWsrc/testdir/python3/module.py1CODE
LOWsrc/testdir/python2/module.py1CODE
LOWsrc/testdir/python_after/after.py1CODE
Empty Error Handlers3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHsrc/testdir/test_makeencoding.py39except IOError:CODE
HIGHsrc/testdir/test_channel_pipe.py35except Exception:CODE
HIGHsrc/testdir/test_channel_unix.py54except FileNotFoundError:CODE
Slop Phrases7 hits · 10 pts
SeverityFileLineSnippetContext
LOWsrc/list.c312 * It is not initialized, don't forget to set v_lock.COMMENT
LOWsrc/findfile.c37 * with some new parameters. Don't forget to pass your old search context toCOMMENT
LOWsrc/findfile.c235 * Don't forget to clean up by calling vim_findfile_cleanup() if you are doneCOMMENT
LOWsrc/findfile.c753 * stack with a list (don't forget to leave partly searched directories on theCOMMENT
LOWsrc/alloc.c689 * Initialize a growing array. Don't forget to set ga_itemsize andCOMMENT
LOWsrc/memline.c4346 * Don't forget to copy the mark!COMMENT
LOWsrc/version.c3456 * When adding features here, don't forget to update the list ofCOMMENT
Hyper-Verbose Identifiers10 hits · 10 pts
SeverityFileLineSnippetContext
LOWruntime/tools/demoserver.py35class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):CODE
LOWsrc/testdir/test_channel_lsp.py22class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):CODE
LOWsrc/testdir/test_channel_lsp.py123 def send_hdr_with_negative_len(self, msgid, resp_dict):CODE
LOWsrc/testdir/test_channel_lsp.py214 def do_server_req_in_middle_resp(self, payload):CODE
LOWsrc/testdir/test_channel.py22class TestingRequestHandler(socketserver.BaseRequestHandler):CODE
LOWsrc/testdir/test_channel.py238class ThreadedTCPRequestHandler(TestingRequestHandler):CODE
LOWsrc/testdir/test_channel_unix.py27class ThreadedUnixRequestHandler(TestingRequestHandler):CODE
LOWsrc/testdir/thread_util.py57 def _get_time_constraint_policy(default=False):CODE
LOWsrc/testdir/thread_util.py73 def _set_time_constraint_policy(policy_info):CODE
LOWsrc/testdir/test_netbeans.py22class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):CODE
Self-Referential Comments3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMruntime/tools/pltags.pl56# Create a tag file line and push it on the list of found tagsCOMMENT
MEDIUMruntime/tools/pltags.pl75 # Create a tag lineCOMMENT
MEDIUMruntime/syntax/testdir/input/sh_06.sh51# Create a backup using fbackup/frecoverCOMMENT
AI Slop Vocabulary3 hits · 8 pts
SeverityFileLineSnippetContext
LOWsrc/vim.h1162#define ECMD_ADDBUF 0x10 // don't edit, just add to buffer listCOMMENT
MEDIUMsrc/highlight.c4814 // Temporarily utilize 28 more hl entries:COMMENT
MEDIUMsrc/testdir/test_channel_unix.py38 # Signal the test harness we're ready, the port value has no meaning.COMMENT
Verbosity Indicators3 hits · 4 pts
SeverityFileLineSnippetContext
LOWsrc/debugger.c1178 // We need to check if this line is actually executed in do_one_cmd()COMMENT
LOWsrc/regexp_bt.c3975 // When we run into BACK we need to check if we don't keepCOMMENT
LOWsrc/job.c861 * Return TRUE if we need to check if the process of "job" has ended.COMMENT
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippetContext
LOWruntime/tools/demoserver.py37CODE
LOWsrc/testdir/test_channel.py23CODE
LOWsrc/testdir/test_channel_dap.py90CODE
LOWsrc/testdir/test_netbeans.py24CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWruntime/tools/efm_perl.pl23# Usage:COMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/os_amiga.c697 // TODO: implementCOMMENT
Excessive Try-Catch Wrapping1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsrc/testdir/test_channel_pipe.py35 except Exception:CODE
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsrc/testdir/test_channel_dap.py77 def handle_request(self, msg):CODE