AI Slop Code RIsk Monitor

filp/whoops

PHP errors for cool kids

6.9 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for filp/whoops, a PHP project with 13,230 GitHub stars. SynthScan examined 9,331 lines of code across 71 source files, recording 62 pattern matches distributed across 3 syntactic categories. The legacy adjusted pattern signal is 6.9 (Moderate 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.

6.9
Adjusted Signal
6.9
Raw Pattern Score
100%
Time Factor
2026-10-03
Last Push
13.2K
Stars
PHP
Language
9.3K
Lines of Code
71
Files
62
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 29.0/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 24.7/100 · LOW

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

PR Review Velocity Impact 29.0/100 · MEDIUM

Which changes need focused human review? 62 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 1LOW 61

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 62 distinct pattern matches across 3 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.

Hyper-Verbose Identifiers53 hits · 53 pts
SeverityFileLineSnippetContext
LOWtests/Whoops/RunTest.php22 public function testImplementsRunInterface()CODE
LOWtests/Whoops/RunTest.php27 public function testConstantsAreAccessibleFromTheClass()CODE
LOWtests/Whoops/RunTest.php114 public function testPushClosureBecomesHandler()CODE
LOWtests/Whoops/RunTest.php434 public function testErrorWrappedInException()CODE
LOWtests/Whoops/RunTest.php485 public function testOutputBufferCleanupStopsAtNonRemovableBuffer()CODE
LOWtests/Whoops/RunTest.php544 public function testSendHttpCodeWrongCode()CODE
LOWtests/Whoops/RunTest.php564 public function testSendExitCodeDefaultCode()CODE
LOWtests/Whoops/RunTest.php573 public function testSendExitCodeWrongCode()CODE
LOWtests/Whoops/RunTest.php618 public function testShutdownHandlerDoesNotRunIfUnregistered()CODE
LOWtests/Whoops/Handler/PlainTextHandlerTest.php128 public function testAddTraceFunctionArgsToOutput()CODE
LOWtests/Whoops/Handler/PlainTextHandlerTest.php158 public function testGetSetTraceFunctionArgsOutputLimit()CODE
LOWtests/Whoops/Handler/PlainTextHandlerTest.php207 public function testReturnsWithoutFramesOutput()CODE
LOWtests/Whoops/Handler/PlainTextHandlerTest.php230 public function testReturnsWithoutPreviousExceptions()CODE
LOWtests/Whoops/Handler/PlainTextHandlerTest.php253 public function testReturnsWithPreviousExceptions()CODE
LOWtests/Whoops/Handler/PlainTextHandlerTest.php288 public function testReturnsWithFramesOutput()CODE
LOWtests/Whoops/Handler/PlainTextHandlerTest.php322 public function testReturnsWithFramesAndArgsOutput()CODE
LOWtests/Whoops/Handler/PlainTextHandlerTest.php369 public function testReturnsWithFramesAndLimitedArgsOutput()CODE
LOWtests/Whoops/Handler/PlainTextHandlerTest.php408 public function testReturnsWithLoggerOnlyOutput()CODE
LOWtests/Whoops/Handler/PlainTextHandlerTest.php424 public function testGetFrameArgsOutputUsesDumper()CODE
LOWtests/Whoops/Handler/PrettyPageHandlerTest.php85 public function testSetInvalidResourcesPath()CODE
LOWtests/Whoops/Handler/PrettyPageHandlerTest.php134 public function testSetCallbackDataTables()CODE
LOWtests/Whoops/Handler/JsonResponseHandlerTest.php34 private function getJsonResponseFromHandler($withTrace = false, $jsonApi = false)CODE
LOWtests/Whoops/Util/MiscTest.php24 public function provideTranslateException()CODE
LOWtests/Whoops/Util/TemplateHelperTest.php57 public function testEscapeButPreserveUris()CODE
LOWtests/Whoops/Util/TemplateHelperTest.php70 public function testEscapeButPreserveUrisRejectsDangerousSchemes()CODE
LOWtests/Whoops/Util/TemplateHelperTest.php92 public function testEscapeButPreserveUrisAllowsHttpAndHttpsSchemes()CODE
LOWtests/Whoops/Util/TemplateHelperTest.php155 public function testRenderEscapesHeaderHtmlAttributes()CODE
LOWtests/Whoops/Util/TemplateHelperTest.php181 public function testRenderEscapesFrameEditorHref()CODE
LOWtests/Whoops/Exception/FrameTest.php112 public function testGetFileContentsWhenFrameIsNotRelatedToSpecificFile($fakeFilename)CODE
LOWtests/Whoops/Exception/FrameCollectionTest.php54 private function getFrameCollectionInstance($frames = null)CODE
LOWtests/Whoops/Exception/FrameCollectionTest.php193 public function testCollectionIsSerializable()CODE
LOWtests/Whoops/Exception/InspectorTest.php67 public function testReturnsCorrectExceptionName()CODE
LOWtests/Whoops/Exception/InspectorTest.php79 public function testExceptionIsStoredAndReturned()CODE
LOWtests/Whoops/Exception/InspectorTest.php90 public function testGetFramesReturnsCollection()CODE
LOWtests/Whoops/Exception/InspectorTest.php101 public function testGetFramesWithFiltersReturnsCollection()CODE
LOWtests/Whoops/Exception/InspectorTest.php119 public function testGetFramesWithFiltersReturnsEmptyCollection()CODE
LOWtests/Whoops/Exception/InspectorTest.php151 public function testNegativeHasPreviousException()CODE
LOWtests/Whoops/Exception/InspectorTest.php162 public function testGetPreviousExceptionsReturnsListOfExceptions()CODE
LOWtests/Whoops/Exception/InspectorTest.php179 public function testGetPreviousExceptionsReturnsEmptyListIfThereAreNoPreviousExceptions()CODE
LOWtests/Whoops/Exception/InspectorTest.php191 public function testGetPreviousExceptionMessages()CODE
LOWtests/Whoops/Exception/InspectorTest.php209 public function testGetPreviousExceptionCodes()CODE
LOWsrc/Whoops/Handler/PlainTextHandler.php144 public function addTraceFunctionArgsToOutput($addTraceFunctionArgsToOutput = null)CODE
LOWsrc/Whoops/Handler/PlainTextHandler.php165 public function setTraceFunctionArgsOutputLimit($traceFunctionArgsOutputLimit)CODE
LOWsrc/Whoops/Handler/PlainTextHandler.php198 public function getTraceFunctionArgsOutputLimit()CODE
LOWsrc/Whoops/Handler/XmlResponseHandler.php17class XmlResponseHandler extends HandlerCODE
LOWsrc/Whoops/Handler/JsonResponseHandler.php16class JsonResponseHandler extends HandlerCODE
LOWsrc/Whoops/Inspector/InspectorInterface.php29 public function getPreviousExceptionMessages();CODE
LOWsrc/Whoops/Inspector/InspectorInterface.php34 public function getPreviousExceptionCodes();CODE
LOWsrc/Whoops/Inspector/InspectorInterface.php54 public function getPreviousExceptionInspector();CODE
LOWsrc/Whoops/Exception/Formatter.php21 public static function formatExceptionAsDataArray(InspectorInterface $inspector, $shouldAddTrace, array $frameFilterCODE
LOWsrc/Whoops/Exception/Inspector.php77 public function getPreviousExceptionMessages()CODE
LOWsrc/Whoops/Exception/Inspector.php88 public function getPreviousExceptionCodes()CODE
LOWsrc/Whoops/Exception/Inspector.php143 public function getPreviousExceptionInspector()CODE
Over-Commented Block8 hits · 8 pts
SeverityFileLineSnippetContext
LOWdocs/API Documentation.md61 #=> Whoops\RunCOMMENT
LOWdocs/API Documentation.md81 #=> boolCOMMENT
LOWdocs/API Documentation.md181// Returns the number of frames in the collectionCOMMENT
LOWdocs/API Documentation.md221// within a class/instance.COMMENT
LOWdocs/API Documentation.md241// given range of line numbers. i.e: Frame::getFileLines(0, 3)COMMENT
LOWdocs/API Documentation.md341// Adds a key=>value table of arbitrary data, labeled by $label, toCOMMENT
LOWdocs/API Documentation.md361PrettyPageHandler::setPageTitle(string $title)COMMENT
LOWdocs/API Documentation.md401// rest of the application. Useful if, for example, you integrateCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/Whoops/Handler/PrettyPageHandler.php189 // @todo: Make this more robustCOMMENT