AI Slop Code Risk Monitor

google/guava

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

Google core libraries for Java

0.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for google/guava, a Java project with 51,914 GitHub stars. SynthScan examined 814,244 lines of code across 3336 source files, recording 106 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 0.4 (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.4
Adjusted Signal
0.4
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
51.9K
Stars
Java
Language
814.2K
Lines of Code
3.3K
Files
106
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 0.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.5/100 · LOW

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

Agent Over-Engineering Ratio 0.0/100 · LOW

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

PR Review Velocity Impact 1.9/100 · LOW

Which changes need focused human review? 106 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 18HIGH 0MEDIUM 22LOW 66

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 106 distinct pattern matches across 6 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.

Hallucination Indicators18 hits · 230 pts
SeverityFileLineSnippetContext
CRITICAL⚡…com/google/common/testing/FreshValueGeneratorTest.java438 com.google.common.base.Optional.absent(),CODE
CRITICAL⚡…com/google/common/testing/FreshValueGeneratorTest.java441 com.google.common.base.Optional.of("2"),CODE
CRITICAL⚡…com/google/common/testing/FreshValueGeneratorTest.java447 com.google.common.base.Optional.absent(),CODE
CRITICAL⚡…com/google/common/testing/FreshValueGeneratorTest.java451 com.google.common.base.Optional.of(OneConstantEnum.CONSTANT1),CODE
CRITICAL…src/com/google/common/testing/FreshValueGenerator.java555 return com.google.common.base.Optional.absent();CODE
CRITICAL…src/com/google/common/testing/FreshValueGenerator.java560 return com.google.common.base.Optional.of(value);CODE
CRITICAL…/src/com/google/common/testing/ArbitraryInstances.java234 .put(com.google.common.base.Optional.class, com.google.common.base.Optional.absent())CODE
CRITICAL…-tests/test/com/google/common/collect/StreamsTest.java79 assertThat(stream(com.google.common.base.Optional.absent())).isEmpty();CODE
CRITICAL…-tests/test/com/google/common/collect/StreamsTest.java80 assertThat(stream(com.google.common.base.Optional.of("a"))).containsExactly("a");CODE
CRITICALguava/src/com/google/common/base/Defaults.java45 * `c.g.c.primitives.Primitives.wrap(type).cast(...)`, and we can't depend on `primitives` fromCOMMENT
CRITICAL⚡…com/google/common/testing/FreshValueGeneratorTest.java434 com.google.common.base.Optional.absent(),CODE
CRITICAL⚡…com/google/common/testing/FreshValueGeneratorTest.java437 com.google.common.base.Optional.of("2"),CODE
CRITICAL⚡…com/google/common/testing/FreshValueGeneratorTest.java443 com.google.common.base.Optional.absent(),CODE
CRITICAL⚡…com/google/common/testing/FreshValueGeneratorTest.java447 com.google.common.base.Optional.of(OneConstantEnum.CONSTANT1),CODE
CRITICAL…src/com/google/common/testing/FreshValueGenerator.java526 return com.google.common.base.Optional.absent();CODE
CRITICAL…src/com/google/common/testing/FreshValueGenerator.java531 return com.google.common.base.Optional.of(value);CODE
CRITICAL…/src/com/google/common/testing/ArbitraryInstances.java225 .put(com.google.common.base.Optional.class, com.google.common.base.Optional.absent())CODE
CRITICALandroid/guava/src/com/google/common/base/Defaults.java45 * `c.g.c.primitives.Primitives.wrap(type).cast(...)`, and we can't depend on `primitives` fromCOMMENT
Over-Commented Block52 hits · 52 pts
SeverityFileLineSnippetContext
LOW…tlib/src/com/google/common/testing/GcFinalization.java121@NullMarkedCOMMENT
LOW…ava-tests/test/com/google/common/collect/MapsTest.java1301 // Map<Number, Number> looseValued1 = transformEntries(map5, transformer);COMMENT
LOW…com/google/common/util/concurrent/MonitorTestCase.java241 // TODO: Test waitFor(Guard, long, TimeUnit).COMMENT
LOW…FinalizableReferenceQueueClassLoaderUnloadingTest.java81 ClassLoader myLoader = getClass().getClassLoader();COMMENT
LOWutil/gradle_integration_tests.sh21 --projects '!guava-testlib,!guava-tests,!guava-bom,!guava-gwt' \COMMENT
LOW…com/google/common/escape/ArrayBasedUnicodeEscaper.java101 this.replacements = escaperMap.getReplacementArray();COMMENT
LOWguava/src/com/google/common/collect/Iterables.java661 * stream.filter(predicate).findFirst().orElse(defaultValue)}COMMENT
LOWguava/src/com/google/common/collect/Maps.java281 }COMMENT
LOWguava/src/com/google/common/collect/CompactHashMap.java121 static final double HASH_FLOODING_FPP = 0.001;COMMENT
LOWguava/src/com/google/common/collect/CompactHashMap.java141 // int hash;COMMENT
LOWguava/src/com/google/common/collect/CompactHashMap.java441COMMENT
LOWguava/src/com/google/common/eventbus/Dispatcher.java141 // 1. Subscribers to events posted on different threads can be interleaved with each otherCOMMENT
LOW…e/common/util/concurrent/AbstractScheduledService.java621 } catch (Throwable e) {COMMENT
LOW…google/common/util/concurrent/AbstractFutureState.java101 // Timed GetCOMMENT
LOW…ava/src/com/google/common/util/concurrent/Futures.java81 * @author Sven MawsonCOMMENT
LOW…ava/src/com/google/common/util/concurrent/Futures.java101 // 'inputFuture' field is read and where we will have to consider visibility of the writeCOMMENT
LOW…ava/src/com/google/common/util/concurrent/Monitor.java201 * @author Martin BuchholzCOMMENT
LOW…ava/src/com/google/common/util/concurrent/Monitor.java221 // up strongly favoring the current interface.COMMENT
LOW…ava/src/com/google/common/util/concurrent/Monitor.java241 //COMMENT
LOW…/google/common/util/concurrent/ExecutionSequencer.java221 // if the future we return is cancelled, we don't begin execution of the next task until afterCOMMENT
LOW…/google/common/util/concurrent/ExecutionSequencer.java241 // 1. not to execute a new callable until the old one has returnedCOMMENT
LOWguava/src/com/google/common/hash/BloomFilter.java541 public static <T extends @Nullable Object> BloomFilter<T> create(COMMENT
LOWguava/src/com/google/common/reflect/TypeToken.java1281 // If both runtimeType and subclass are not parameterized, return subclassCOMMENT
LOWguava/src/com/google/common/io/MoreFiles.java421 // Interestingly, unlike File.getCanonicalFile(), Path/Files provides no way of getting theCOMMENT
LOWguava/src/com/google/common/io/MoreFiles.java721 if (parent != null) {COMMENT
LOW…src/com/google/common/math/PairedStatsAccumulator.java41 private final StatsAccumulator xStats = new StatsAccumulator();COMMENT
LOWguava/src/com/google/common/primitives/Ints.java561 public static void rotate(int[] array, int distance, int fromIndex, int toIndex) {COMMENT
LOW…tlib/src/com/google/common/testing/GcFinalization.java121@NullMarkedCOMMENT
LOW…ava-tests/test/com/google/common/collect/MapsTest.java1281 Map<? extends Number, Double> wildcarded = transformEntries(map0, transformer);COMMENT
LOW…com/google/common/util/concurrent/MonitorTestCase.java241 // TODO: Test hasQueuedThreads().COMMENT
LOW…FinalizableReferenceQueueClassLoaderUnloadingTest.java81 ClassLoader myLoader = getClass().getClassLoader();COMMENT
LOW…com/google/common/escape/ArrayBasedUnicodeEscaper.java101 this.replacements = escaperMap.getReplacementArray();COMMENT
LOW…oid/guava/src/com/google/common/collect/Iterables.java681 * stream.filter(predicate).findFirst().orElse(defaultValue)}COMMENT
LOW…uava/src/com/google/common/collect/CompactHashMap.java121 * implementation. Experimentally determined.COMMENT
LOW…uava/src/com/google/common/collect/CompactHashMap.java141 // }COMMENT
LOW…d/guava/src/com/google/common/eventbus/Dispatcher.java141 // 1. Subscribers to events posted on different threads can be interleaved with each otherCOMMENT
LOW…e/common/util/concurrent/AbstractScheduledService.java601 // correct order.COMMENT
LOW…google/common/util/concurrent/AbstractFutureState.java101 // have observed 12 micros on 64-bit linux systems to wake up a parked thread). So if theCOMMENT
LOW…ava/src/com/google/common/util/concurrent/Futures.java81 * @author Sven MawsonCOMMENT
LOW…ava/src/com/google/common/util/concurrent/Futures.java101 // 'inputFuture' field is read and where we will have to consider visibility of the writeCOMMENT
LOW…ava/src/com/google/common/util/concurrent/Monitor.java201 * @author Martin BuchholzCOMMENT
LOW…ava/src/com/google/common/util/concurrent/Monitor.java221 // up strongly favoring the current interface.COMMENT
LOW…ava/src/com/google/common/util/concurrent/Monitor.java241 //COMMENT
LOW…/google/common/util/concurrent/ExecutionSequencer.java221 // if the future we return is cancelled, we don't begin execution of the next task until afterCOMMENT
LOW…/google/common/util/concurrent/ExecutionSequencer.java241 // 1. not to execute a new callable until the old one has returnedCOMMENT
LOW…oid/guava/src/com/google/common/reflect/TypeToken.java1281 // If both runtimeType and subclass are not parameterized, return subclassCOMMENT
LOWandroid/guava/src/com/google/common/io/MoreFiles.java421 */COMMENT
LOWandroid/guava/src/com/google/common/io/MoreFiles.java721 Path parent = path.getParent();COMMENT
LOW…src/com/google/common/math/PairedStatsAccumulator.java41 private final StatsAccumulator xStats = new StatsAccumulator();COMMENT
LOW…droid/guava/src/com/google/common/primitives/Ints.java561 public static void rotate(int[] array, int distance, int fromIndex, int toIndex) {COMMENT
LOW.github/dependabot.yml1version: 2COMMENT
LOW.github/workflows/scorecard.yml41 with:COMMENT
Slop Phrases16 hits · 45 pts
SeverityFileLineSnippetContext
LOW…/com/google/common/util/concurrent/JSR166TestCase.java34 * <li>If you override {@link #tearDown}, make sure to invoke {@code super.tearDown} within it.COMMENT
MEDIUM…om/google/common/util/concurrent/ListenableFuture.java115 * nullness annotations in particular will outweigh the costs. (And it's worth noting that we haveCOMMENT
MEDIUMguava/src/com/google/common/collect/StandardTable.java294 * then) or rowEntry would have been initialized by next() (as discussed above).COMMENT
MEDIUM…/com/google/common/util/concurrent/ServiceManager.java83 * <p>Here is a simple example of how to use a {@code ServiceManager} to start a server.COMMENT
MEDIUM…om/google/common/util/concurrent/ListenableFuture.java115 * nullness annotations in particular will outweigh the costs. (And it's worth noting that we haveCOMMENT
MEDIUM…/google/common/util/concurrent/ExecutionSequencer.java438 // requireNonNull is safe, as discussed above.COMMENT
MEDIUMguava/src/com/google/common/math/LongMath.java1314 // correct for Long.MAX_VALUE as discussed above: roundCeilingAsDouble must be 2^63, butCOMMENT
MEDIUMguava/src/com/google/common/base/Joiner.java227 // We might not have seen the expected number of elements, as discussed above.COMMENT
MEDIUMguava/src/com/google/common/base/Functions.java60 * <p>As discussed above, prefer to use the method reference {@code Object::toString} instead,COMMENT
LOW…/com/google/common/util/concurrent/JSR166TestCase.java34 * <li>If you override {@link #tearDown}, make sure to invoke {@code super.tearDown} within it.COMMENT
MEDIUM…guava/src/com/google/common/collect/StandardTable.java292 * then) or rowEntry would have been initialized by next() (as discussed above).COMMENT
MEDIUM…/com/google/common/util/concurrent/ServiceManager.java83 * <p>Here is a simple example of how to use a {@code ServiceManager} to start a server.COMMENT
MEDIUM…om/google/common/util/concurrent/ListenableFuture.java115 * nullness annotations in particular will outweigh the costs. (And it's worth noting that we haveCOMMENT
MEDIUM…/google/common/util/concurrent/ExecutionSequencer.java438 // requireNonNull is safe, as discussed above.COMMENT
MEDIUMandroid/guava/src/com/google/common/math/LongMath.java1314 // correct for Long.MAX_VALUE as discussed above: roundCeilingAsDouble must be 2^63, butCOMMENT
MEDIUMandroid/guava/src/com/google/common/base/Functions.java60 * <p>As discussed above, prefer to use the method reference {@code Object::toString} instead,COMMENT
AI Slop Vocabulary8 hits · 24 pts
SeverityFileLineSnippetContext
MEDIUM…tlib/src/com/google/common/testing/GcFinalization.java131 // we try hard to make them robust in practice. We could additionally try to add in a systemCOMMENT
MEDIUM…/google/common/util/concurrent/AbstractFutureTest.java365 // and the approximate actual delay, to be robust to variance in thread scheduling.COMMENT
MEDIUMguava/src/com/google/common/collect/CompactHashMap.java155 // Essentially, then, `table[h]` gives us the start of a linked list in `entries`, where everyCOMMENT
MEDIUMguava/src/com/google/common/base/Splitter.java257 * <p><b>Note:</b> if {@link #fixedLength} is used in conjunction with {@link #limit}, the finalCOMMENT
MEDIUM…tlib/src/com/google/common/testing/GcFinalization.java131 // we try hard to make them robust in practice. We could additionally try to add in a systemCOMMENT
MEDIUM…/google/common/util/concurrent/AbstractFutureTest.java365 // and the approximate actual delay, to be robust to variance in thread scheduling.COMMENT
MEDIUM…uava/src/com/google/common/collect/CompactHashMap.java151 // Essentially, then, `table[h]` gives us the start of a linked list in `entries`, where everyCOMMENT
MEDIUMandroid/guava/src/com/google/common/base/Splitter.java257 * <p><b>Note:</b> if {@link #fixedLength} is used in conjunction with {@link #limit}, the finalCOMMENT
Fake / Example Data10 hits · 10 pts
SeverityFileLineSnippetContext
LOW…ests/test/com/google/common/net/UrlEscaperTesting.java102 assertThat(e.escape("foo@bar.com")).isEqualTo("foo@bar.com");CODE
LOW…-tests/test/com/google/common/net/UrlEscapersTest.java63 assertThat(e.escape("foo@bar.com")).isEqualTo("foo%40bar.com");CODE
LOW…-tests/test/com/google/common/io/SourceSinkTester.java44 "Lorem ipsum dolor sit amet, consectetur adipiscing "CODE
LOW…-tests/test/com/google/common/io/SourceSinkTester.java44 "Lorem ipsum dolor sit amet, consectetur adipiscing "CODE
LOW…-tests/test/com/google/common/io/SourceSinkTester.java73 .put("lorem ipsum", LOREM_IPSUM)CODE
LOW…ests/test/com/google/common/net/UrlEscaperTesting.java102 assertThat(e.escape("foo@bar.com")).isEqualTo("foo@bar.com");CODE
LOW…-tests/test/com/google/common/net/UrlEscapersTest.java63 assertThat(e.escape("foo@bar.com")).isEqualTo("foo%40bar.com");CODE
LOW…-tests/test/com/google/common/io/SourceSinkTester.java44 "Lorem ipsum dolor sit amet, consectetur adipiscing "CODE
LOW…-tests/test/com/google/common/io/SourceSinkTester.java44 "Lorem ipsum dolor sit amet, consectetur adipiscing "CODE
LOW…-tests/test/com/google/common/io/SourceSinkTester.java73 .put("lorem ipsum", LOREM_IPSUM)CODE
TODO Padding2 hits · 3 pts
SeverityFileLineSnippetContext
LOWguava/src/com/google/common/escape/Escapers.java54 // TODO: Fix tests not to call this directly and make it throw an error.COMMENT
LOW…droid/guava/src/com/google/common/escape/Escapers.java54 // TODO: Fix tests not to call this directly and make it throw an error.COMMENT