AI Slop Code Risk Monitor

vbenjs/vue-vben-admin

SlopCodeMonitor badge for vbenjs/vue-vben-admin Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

A modern vue admin panel built with Vue3, Shadcn UI, Vite, TypeScript, and Monorepo. It's fast!

0.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for vbenjs/vue-vben-admin, a TypeScript project with 33,718 GitHub stars. SynthScan examined 183,307 lines of code across 1935 source files, recording 119 pattern matches distributed across 4 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-10-31
Last Push
33.7K
Stars
TypeScript
Language
183.3K
Lines of Code
1.9K
Files
119
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 1.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.7/100 · LOW

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

Agent Over-Engineering Ratio 1.2/100 · LOW

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

PR Review Velocity Impact 3.3/100 · LOW

Which changes need focused human review? 119 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 2LOW 117

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 119 distinct pattern matches across 4 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.

Fake / Example Data53 hits · 62 pts
SeverityFileLineSnippetContext
LOWplayground/src/locales/langs/zh-CN/demos.json95 "placeholder": "请输入看板标题"CODE
LOWplayground/src/locales/langs/zh-CN/system.json15 "placeholder": "搜索部门..."CODE
LOWplayground/src/locales/langs/zh-TW/demos.json95 "placeholder": "請輸入看板標題"CODE
LOWplayground/src/locales/langs/zh-TW/system.json15 "placeholder": "搜尋部門..."CODE
LOWplayground/src/locales/langs/en-US/demos.json95 "placeholder": "Please enter the report title"CODE
LOWplayground/src/locales/langs/en-US/system.json15 "placeholder": "Search Department..."CODE
LOWdocs/src/components/common-ui/vben-form.md412 await formApi.setValues({ email: 'user@example.com' });CODE
LOWdocs/src/en/components/common-ui/vben-form.md254 await formApi.setValues({ email: 'user@example.com' });CODE
LOWpackages/locales/src/langs/zh-CN/ui.json27 "placeholder": {CODE
LOWpackages/locales/src/langs/zh-CN/ui.json50 "placeholder": "选择一个图标",CODE
LOWpackages/locales/src/langs/zh-CN/ui.json65 "placeholder": "请输入内容...",CODE
LOWpackages/locales/src/langs/zh-CN/ui.json154 "placeholder": "请输入锁屏密码",CODE
LOWpackages/locales/src/langs/zh-CN/preferences.json241 "placeholder": "请输入报表默认标题"CODE
LOWpackages/locales/src/langs/zh-TW/ui.json27 "placeholder": {CODE
LOWpackages/locales/src/langs/zh-TW/ui.json50 "placeholder": "選擇一個圖示",CODE
LOWpackages/locales/src/langs/zh-TW/ui.json65 "placeholder": "請輸入內容...",CODE
LOWpackages/locales/src/langs/zh-TW/ui.json154 "placeholder": "請輸入鎖屏密碼",CODE
LOWpackages/locales/src/langs/zh-TW/preferences.json241 "placeholder": "請輸入報表預設標題"CODE
LOWpackages/locales/src/langs/en-US/ui.json27 "placeholder": {CODE
LOWpackages/locales/src/langs/en-US/ui.json50 "placeholder": "Select an icon",CODE
LOWpackages/locales/src/langs/en-US/ui.json65 "placeholder": "Please enter content...",CODE
LOWpackages/locales/src/langs/en-US/ui.json154 "placeholder": "Please enter password",CODE
LOWpackages/locales/src/langs/en-US/preferences.json241 "placeholder": "Please enter the default report title"CODE
LOWpackages/stores/src/modules/user.test.ts13 const userInfo: any = { name: 'Jane Doe', roles: [{ value: 'user' }] };CODE
LOW…/layouts/src/widgets/preferences/blocks/input-item.vue62 :placeholder="placeholder"CODE
LOW…layouts/src/widgets/preferences/blocks/select-item.vue67 <SelectValue :placeholder="placeholder" />CODE
LOW…core/ui-kit/shadcn-ui/src/components/select/select.vue32 <SelectValue class="flex-auto text-left" :placeholder="placeholder" />CODE
LOW…core/ui-kit/form-ui/__tests__/form-integration.test.ts607 expect(details.attributes('placeholder')).toBe('resolved');CODE
LOWpackages/@core/ui-kit/form-ui/src/types.ts118 | 'placeholder'CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts32 await storageManager.setItem('user', { age: 30, name: 'John Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts39 await storageManager.setItem('user1', { age: 30, name: 'John Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts40 await storageManager.setItem('user2', { age: 25, name: 'Jane Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts47 await storageManager.setItem('user', { age: 30, name: 'John Doe' }, 1000); // 1秒过期CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts55 await storageManager.setItem('user', { age: 30, name: 'John Doe' }, 10_000); // 10秒过期CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts59 expect(user).toEqual({ age: 30, name: 'John Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts68 await storageManager.setItem('user', { age: 30, name: 'John Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts69 await storageManager.setItem('user', { age: 25, name: 'Jane Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts71 expect(user).toEqual({ age: 25, name: 'Jane Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts75 await storageManager.setItem('user', { age: 30, name: 'John Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts78 expect(user).toEqual({ age: 30, name: 'John Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts82 await storageManager.setItem('user', { age: 30, name: 'John Doe' }, 1000); // 1秒过期CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts89 await storageManager.setItem('user', { age: 30, name: 'John Doe' }, 10_000); // 10秒过期CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts92 expect(user).toEqual({ age: 30, name: 'John Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts96 await storageManager.setItem('user1', { age: 30, name: 'John Doe' }, 1000); // 1秒过期CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts97 await storageManager.setItem('user2', { age: 25, name: 'Jane Doe' }, 2000); // 2秒过期CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts103 expect(user2).toEqual({ age: 25, name: 'Jane Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts107 await storageManager.setItem('user', { age: 30, name: 'John Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts111 expect(user).toEqual({ age: 30, name: 'John Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts115 await storageManager.setItem('user1', { age: 30, name: 'John Doe' });CODE
LOW⚡…ase/shared/src/cache/__tests__/storage-manager.test.ts116 await storageManager.setItem('user2', { age: 25, name: 'Jane Doe' });CODE
LOW…ase/shared/src/cache/__tests__/storage-manager.test.ts18 await storageManager.setItem('user', { age: 30, name: 'John Doe' });CODE
LOW…ase/shared/src/cache/__tests__/storage-manager.test.ts20 expect(user).toEqual({ age: 30, name: 'John Doe' });CODE
LOWapps/backend-mock/api/demo/bigint.ts17 "name": "John Doe",CODE
Hyper-Verbose Identifiers46 hits · 46 pts
SeverityFileLineSnippetContext
LOWplayground/__tests__/e2e/layout-system.spec.ts71async function getSidebarTransitionDuration(CODE
LOWplayground/__tests__/e2e/common/layout-performance.ts142async function measureSidebarPerformance(CODE
LOWplayground/src/views/examples/drawer/index.vue125function openTypedDataExplicitDrawer() {CODE
LOWplayground/src/views/examples/drawer/index.vue134function openTypedDataFactoryDrawer() {CODE
LOWplayground/src/views/examples/form/custom.vue137function handleToggleDynamicComponent() {CODE
LOWplayground/src/views/examples/modal/index.vue144function openTypedDataExplicitModal() {CODE
LOWplayground/src/views/examples/modal/index.vue153function openTypedDataFactoryModal() {CODE
LOWinternal/vite-config/src/plugins/inject-metadata.ts29async function resolveMonorepoDependencies() {CODE
LOWinternal/vite-config/src/plugins/tailwind-reference.ts14export function viteTailwindReferencePlugin(): Plugin {CODE
LOWinternal/vite-config/src/plugins/vxe-table.ts5async function viteVxeTableImportsPlugin(): Promise<PluginOption> {CODE
LOW…onfig/src/plugins/form-field-slot-migration-warning.ts6function viteFormFieldSlotMigrationWarningPlugin(): Plugin {CODE
LOW…al/vite-config/src/plugins/inject-app-loading/index.ts14async function viteInjectAppLoadingPlugin(CODE
LOW…al/vite-config/src/plugins/inject-app-loading/index.ts54async function getLoadingRawByHtmlTemplate(loadingTemplate: string) {CODE
LOWscripts/vsh/src/code-workspace/index.ts65function defineCodeWorkspaceCommand(cac: CAC) {CODE
LOWscripts/vsh/src/check-circular/index.ts49async function detectCircularDependencies({CODE
LOWscripts/vsh/src/check-circular/index.ts193function defineCheckCircularCommand(cac: CAC): void {CODE
LOWpackages/preferences/src/index.ts15function defineOverridesPreferences(preferences: DeepPartial<Preferences>) {CODE
LOWpackages/utils/src/helpers/generate-routes-backend.ts14function menuHasVisibleWithForbidden(route: RouteRecordRaw): boolean {CODE
LOWpackages/utils/src/helpers/generate-routes-frontend.ts50function menuHasVisibleWithForbidden(route: RouteRecordRaw) {CODE
LOWpackages/effects/plugins/src/tiptap/extensions.ts403export function createDefaultTiptapExtensions(CODE
LOWpackages/effects/layouts/src/basic/layout.vue212function clearPreferencesAndLogout() {CODE
LOWpackages/effects/layouts/src/basic/header/header.vue256function clearPreferencesAndLogout() {CODE
LOW…layouts/src/widgets/preferences/preferences-button.vue12function clearPreferencesAndLogout() {CODE
LOW…layouts/src/widgets/preferences/preferences-drawer.vue386function handleCustomPreferencesUpdate(updates: CustomPreferencesRecord) {CODE
LOW…ts/layouts/src/widgets/user-dropdown/user-dropdown.vue301function handleLanguageToggleSelect(event?: Event) {CODE
LOWpackages/effects/hooks/src/use-design-tokens.ts163export function useElementPlusDesignTokens() {CODE
LOW…es/@core/composables/src/use-layout-viewport-height.ts7function supportsDynamicViewportHeight() {CODE
LOW…es/@core/composables/src/use-layout-viewport-height.ts40 function scheduleApplyViewportHeight() {CODE
LOW…ages/@core/ui-kit/layout-ui/src/header-scroll-state.ts10export function resolveHeaderHiddenOnScroll({CODE
LOWpackages/@core/ui-kit/layout-ui/src/vben-layout.vue519function updateHeaderVisibilityFromMouse(mouseY: null | number) {CODE
LOWpackages/@core/ui-kit/layout-ui/src/vben-layout.vue552function resolveHeaderVisibilityOnScroll() {CODE
LOWpackages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue392function computeIndeterminateKeysInSelection(CODE
LOWpackages/@core/ui-kit/form-ui/src/use-form-context.ts42function normalizeSchemaForDefaults(rule: ZodType): ZodType {CODE
LOWpackages/@core/ui-kit/form-ui/src/form-runtime.ts62 function registerValidationInvalidator(CODE
LOWpackages/@core/ui-kit/form-ui/src/form-runtime.ts81 function invalidateFieldValidation(fieldName: string) {CODE
LOWpackages/@core/ui-kit/form-ui/src/form-runtime-field.ts16export function createRuntimeFieldComponent(CODE
LOWpackages/@core/ui-kit/form-ui/src/field-name.ts41export function resolveChildUpdateFieldName(CODE
LOWpackages/@core/ui-kit/form-ui/src/field-name.ts76export function resolveValueFormatFieldName(CODE
LOWpackages/@core/ui-kit/form-ui/src/form-render/schema.ts123function wrapRenderComponentContent(CODE
LOWpackages/@core/ui-kit/form-ui/src/form-render/schema.ts203function createArrayComponentProps(CODE
LOWpackages/@core/ui-kit/form-ui/src/form-render/schema.ts341export function resolveArrayChildFieldName(rowPath: string, fieldName: string) {CODE
LOW…s/@core/ui-kit/form-ui/src/form-render/dependencies.ts115async function resolveLegacyDependencies(CODE
LOW…es/@core/ui-kit/form-ui/src/form-render/form-field.vue319function conflictsWithFormProperty(fieldName: string): boolean {CODE
LOWpackages/@core/ui-kit/form-ui/src/form-render/helper.ts45export function getDefaultValueInZodStack(CODE
LOWpackages/@core/ui-kit/form-ui/src/form-render/form.vue151function isNormalizedFormGroupSchema(CODE
LOWapps/backend-mock/utils/cookie-utils.ts25export function getRefreshTokenFromCookie(event: H3Event<EventHandlerRequest>) {CODE
Over-Commented Block18 hits · 18 pts
SeverityFileLineSnippetContext
LOWlefthook.yml1# EXAMPLE USAGE:COMMENT
LOWlefthook.yml21# parallel: trueCOMMENT
LOWplayground/playwright.config.ts41 // name: 'webkit',COMMENT
LOWplayground/playwright.config.ts61 /* Test against branded browsers. */COMMENT
LOWplayground/src/views/_core/authentication/login.vue41 // if (findItem) {COMMENT
LOWinternal/lint-configs/eslint-config/src/configs/vue.ts21 {COMMENT
LOWdocs/src/demos/vben-vxe-table/tree/index.vue21// {COMMENT
LOWdocs/src/demos/vben-vxe-table/remote/index.vue21// 数据实例COMMENT
LOWscripts/turbo-run/src/run.ts61 * @param packagesCOMMENT
LOWpackages/@core/ui-kit/popup-ui/src/modal/modal.vue141 const { offsetX, offsetY } = transform;COMMENT
LOWpackages/@core/ui-kit/menu-ui/src/components/menu.vue641 // }COMMENT
LOWpackages/@core/base/shared/src/cache/README.md41//new StorageManager({ driver: new IndexedDBDriver(), prefix: 'app' });COMMENT
LOWpackages/@core/base/shared/src/utils/diff.ts21// 比较两个数组是否相等(顺序敏感)COMMENT
LOWpackages/@core/base/shared/src/utils/diff.ts41COMMENT
LOW.github/workflows/codeql.yml1# For most projects, this workflow file will not need changing; you simply needCOMMENT
LOW.github/workflows/codeql.yml61COMMENT
LOWapps/web-tdesign/src/bootstrap.ts21async function bootstrap(namespace: string) {COMMENT
LOWapps/web-ele/src/bootstrap.ts21 // 初始化组件适配器COMMENT
Slop Phrases2 hits · 5 pts
SeverityFileLineSnippetContext
MEDIUMplayground/src/views/examples/json-viewer/data.ts8 additionalNotes: 'This JSON is used for demonstration purposes',CODE
MEDIUM.github/workflows/codeql.yml56 # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize howCOMMENT