Repository Analysis

GoogleChrome/lighthouse

Automated auditing, performance metrics, and best practices for the web.

0.6 Likely human-written View on GitHub
0.6
Adjusted Score
0.6
Raw Score
100%
Time Factor
2026-05-29
Last Push
30,271
Stars
JavaScript
Language
416,550
Lines of Code
1116
Files
189
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 1HIGH 2MEDIUM 18LOW 168

Pattern Findings

189 matches across 9 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers130 hits · 130 pts
SeverityFileLineSnippet
LOWclients/extension/scripts/popup.js84function onGenerateReportButtonClick(backend, url, settings) {
LOWclients/extension/scripts/popup.js112function generateCategoryOptionsList(settings) {
LOWclients/extension/scripts/popup.js129function generateBackendOptionsList(settings) {
LOWclients/extension/scripts/popup.js156function getLocalizedLanguageRegion(localeString, currentLocale) {
LOWclients/extension/scripts/popup.js192function generateLocaleOptionsList(settings) {
LOWclients/extension/scripts/popup.js227function readSettingsFromDomAndPersist() {
LOWcore/gather/runner-helpers.js139async function collectArtifactDependencies(artifact, artifactsById) {
LOWcore/gather/gatherers/accessibility.js120function createAxeRuleResultArtifact(result) {
LOWcore/gather/gatherers/scripts.js35function isLighthouseRuntimeEvaluateScript(script) {
LOWcore/gather/gatherers/image-elements.js194function findMostSpecificMatchedCSSRule(matchedCSSRules = [], isDeclarationOfInterest) {
LOWcore/gather/driver/wait-for-condition.js288function registerPerformanceObserverInPage() {
LOWcore/gather/driver/wait-for-condition.js312function checkTimeSinceLastLongTaskInPage() {
LOWcore/gather/driver/navigation.js45function resolveWaitForFullyLoadedOptions(options) {
LOWcore/gather/driver/dom.js11function handlePotentialMissingNodeError(err) {
LOWcore/gather/driver/dom.js47async function resolveDevtoolsNodePathToObjectId(session, path) {
LOWcore/gather/driver/prepare.js61async function shimRequestIdleCallbackOnNewDocument(driver, settings) {
LOWcore/gather/driver/prepare.js119async function prepareThrottlingAndNetwork(session, settings) {
LOWcore/gather/driver/prepare.js158async function prepareTargetForTimespanMode(driver, settings) {
LOWcore/gather/driver/prepare.js192async function prepareTargetForNavigationMode(driver, settings, requestor) {
LOWcore/gather/driver/network.js17async function fetchResponseBodyFromCache(session, requestId, timeout = 1000) {
LOWcore/gather/driver/storage.js81async function getImportantStorageWarning(session, url) {
LOWcore/test/network-records-to-devtools-log.js37function headersArrayToHeadersDict(headersArray = []) {
LOWcore/test/network-records-to-devtools-log.js160function getNormalizedRequestTiming(networkRecord) {
LOWcore/test/network-records-to-devtools-log.js227function getRequestWillBeSentEvent(networkRecord, index, normalizedTiming) {
LOWcore/test/network-records-to-devtools-log.js261function getRequestServedFromCacheEvent(networkRecord, index) {
LOWcore/test/network-records-to-devtools-log.js312function getResponseReceivedExtraInfoEvent(networkRecord, index) {
LOWcore/test/network-records-to-devtools-log.js408function addRedirectResponseIfNeeded(networkRecords, record) {
LOWcore/test/network-records-to-devtools-log.js441function networkRecordsToDevtoolsLog(networkRecords, options = {}) {
LOWcore/test/test-utils.js77function loadSourceMapAndUsageFixture(name) {
LOWcore/test/test-utils.js186async function flushAllTimersAndMicrotasks(ms = 1000) {
LOWcore/test/test-utils.js259function getURLArtifactFromDevtoolsLog(devtoolsLog) {
LOWcore/test/gather/base-artifacts-test.js12function getMockDriverForArtifacts() {
LOWcore/test/gather/mock-driver.js93function createMockGathererInstance(meta) {
LOWcore/test/gather/mock-driver.js123function createMockExecutionContext() {
LOWcore/test/gather/gatherers/full-page-screenshot-test.js392 async function verifyNodeRectsAlignWithImage(lhr, rectExpectations) {
LOWcore/test/gather/gatherers/trace-elements-test.js14function makeLayoutShiftTraceEvent(score, impactedNodes, had_recent_input = false) { // eslint-disable-line camelcase
LOWcore/test/gather/driver/execution-context-test.js264 .catch(function wrapRuntimeEvalErrorInBrowser(err) {
LOWcore/test/gather/driver/wait-for-condition-test.js37function createMockMultipleInvocationWaitForFn() {
LOWcore/test/audits/long-tasks-test.js24function generateTraceWithLongTasks(args) {
LOWcore/test/audits/user-timing-test.js14function generateArtifactsWithTrace(trace) {
LOW…/test/audits/byte-efficiency/unused-javascript-test.js64function generateScriptWithCoverage(url, ranges) {
LOWcore/test/results/artifacts/artifacts.json6790 "MainDocumentContent": "<!doctype html>\n<!--\n * @license\n * Copyright 2016 Google LLC\n * SPDX-License-Identifier:
LOWcore/test/results/artifacts/artifacts.json7206 "content": "\nfunction stampTemplate(id, location) {\n const template = document.querySelector('#' + id);\n loca
LOWcore/test/results/artifacts/artifacts.json7231 "content": "\n/**\n * Lighthouse backstory:\n * Zone aggressively polyfills promises including rewriting Promise.p
LOWcore/test/lib/navigation-error-test.js36 function getAndExpectError(mainRecord, context) {
LOWcore/test/lib/navigation-error-test.js136 function getAndExpectError(mainRecord, networkRecords) {
LOWcore/test/lib/navigation-error-test.js229 function getAndExpectError(mainRecord) {
LOWcore/test/lib/navigation-error-test.js284 function getAndExpectError(navigationError, context) {
LOWcore/test/lib/csp-evaluator-test.js19function evaluateRawCspForFailures(rawCsps) {
LOWcore/test/lib/csp-evaluator-test.js26function evaluateRawCspForWarnings(rawCsps) {
LOWcore/audits/image-size-responsive.js132function imageHasNaturalDimensions(image) {
LOWcore/audits/non-composited-animations.js97function getActionableFailureReasons(failureCode, unsupportedProperties) {
LOWcore/audits/insights/insight-audit.js52async function adaptInsightToAuditProduct(artifacts, context, insightName, createDetails) {
LOWcore/audits/seo/is-crawlable.js73function getUserAgentFromHeaderDirectives(directives) {
LOWcore/config/config.js109function resolveArtifactDependencies(artifact, gatherer, artifactDefnsBySymbol) {
LOWcore/config/config.js183function overrideSettingsForGatherMode(settings, gatherMode) {
LOWcore/config/config.js196function overrideThrottlingWindows(settings) {
LOWcore/config/config-helpers.js128function mergeConfigFragmentArrayByKey(baseArray, extensionArray, keyFn) {
LOWcore/config/config-plugin.js21function isObjectOfUnknownProperties(val) {
LOWcore/config/validation.js19function isValidArtifactDependency(dependent, dependency) {
70 more matches not shown…
AI Slop Vocabulary14 hits · 29 pts
SeverityFileLineSnippet
LOWcore/test/results/artifacts/artifacts.json7231 "content": "\n/**\n * Lighthouse backstory:\n * Zone aggressively polyfills promises including rewriting Promise.p
MEDIUMshared/localization/locales/ar-XB.json2925 "message": "‏‮Use‬‏ [‏‮Ezoic‬‏ ‏‮Leap‬‏](https://pubdash.ezoic.com/leap) ‏‮and‬‏ ‏‮enable‬‏ `Optimize Fonts` ‏‮to‬‏
MEDIUMshared/localization/locales/ar-XB.json3042 "message": "‏‮Consider‬‏ ‏‮searching‬‏ ‏‮the‬‏ [‏‮Magento‬‏ ‏‮Marketplace‬‏](https://marketplace.magento.com/catalog
MEDIUMshared/localization/locales/fil.json3159 "message": "[Palitan ang mga animated na GIF ng video](https://web.dev/replace-gifs-with-videos/) para sa mas mabibi
MEDIUMshared/localization/locales/pt-PT.json3273 "message": "Carregue imagens diretamente a partir da [biblioteca de multimédia](https://wordpress.org/support/articl
MEDIUMshared/localization/locales/hi.json3159 "message": "वेब पेजों को तेज़ी से लोड करने के लिए, [ऐनिमेट किए गए GIF की जगह वीडियो का इस्तेमाल करें](https://web.de
MEDIUMshared/localization/locales/en-US.json3147 "message": "Use [Ezoic Leap](https://pubdash.ezoic.com/leap) and enable `Optimize Fonts` to automatically leverage t
MEDIUMshared/localization/locales/en-US.json3264 "message": "Consider searching the [Magento Marketplace](https://marketplace.magento.com/catalogsearch/result/?q=web
MEDIUMshared/localization/locales/en-US.json3381 "message": "[Replace animated GIFs with video](https://web.dev/replace-gifs-with-videos/) for faster web page loads
MEDIUMshared/localization/locales/en-GB.json2925 "message": "Use [Ezoic Leap](https://pubdash.ezoic.com/leap) and enable `Optimize Fonts` to automatically leverage t
MEDIUMshared/localization/locales/en-GB.json3042 "message": "Consider searching the [Magento Marketplace](https://marketplace.magento.com/catalogsearch/result/?q=web
MEDIUMshared/localization/locales/en-GB.json3159 "message": "[Replace animated GIFs with video](https://web.dev/replace-gifs-with-videos/) for faster web page loads,
MEDIUMcli/test/smokehouse/test-definitions/byte-efficiency.js27 // unsized-images is not a byte-efficiency audit but can easily leverage the variety of images present in
MEDIUMviewer/test/viewer-test-pptr.js257 // TODO: Find a more robust fix for this issue.
Over-Commented Block28 hits · 28 pts
SeverityFileLineSnippet
LOWcore/test/lib/icons-test.js61 // value: [{
LOWcore/test/lib/tracehouse/trace-processor-test.js661 // All frames
LOWcore/audits/metrics/total-blocking-time.js41 // SELECT
LOWcore/audits/metrics/largest-contentful-paint.js41 // 25th and 13th percentiles HTTPArchive -> median and p10 points.
LOWcore/audits/insights/legacy-javascript-insight.js81
LOWcore/config/config-helpers.js481 // | relative to the current working directory | 3. |
LOWcore/config/config-helpers.js521 }
LOWcore/config/default-config.js481 // │ Minor │ 1 │ 0 │ 0 │
LOWcore/scripts/run-jest.sh1#!/usr/bin/env bash
LOWcore/scripts/roll-to-devtools.sh1#!/usr/bin/env bash
LOWcore/scripts/open-devtools.sh1#!/usr/bin/env bash
LOWcore/scripts/build-devtools.sh1#!/usr/bin/env bash
LOW…ripts/legacy-javascript/create-polyfill-module-data.js61 'es.string.fontcolor',
LOWcore/lib/network-request.js381 * @param {LH.Crdp.Network.ResourceTiming} timing
LOWcore/lib/legacy-javascript/legacy-javascript.js121
LOWcore/lib/legacy-javascript/legacy-javascript.js201 return (content.match(pattern) ?? []).length;
LOWcore/lib/legacy-javascript/legacy-javascript.js221 // function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Obj
LOWdocs/recipes/test-recipes.sh21yarn custom-gatherer-puppeteer-test
LOWcli/test/smokehouse/test-definitions/byte-efficiency.js181 ],
LOWcli/test/smokehouse/test-definitions/byte-efficiency.js201 // subItems: {items: {_includes: [{reason: /Using a modern image format/}]}},
LOW…test/smokehouse/test-definitions/forms-autocomplete.js461 },
LOW…test/smokehouse/test-definitions/forms-autocomplete.js481 // type: 'node',
LOW…test/smokehouse/test-definitions/forms-autocomplete.js501 // type: 'node',
LOW…test/smokehouse/test-definitions/forms-autocomplete.js521 // snippet: '<input type="text" id="zip_shipping">',
LOW…test/smokehouse/test-definitions/forms-autocomplete.js541 // '<input type="text" id="city_billing" name="city_billing" placeholder="city you live in" autocomple
LOW…test/smokehouse/test-definitions/forms-autocomplete.js561 // nodeLabel: 'input',
LOW.github/scripts/git-get-shared-history.sh1#!/usr/bin/env bash
LOW…rd-party/devtools-tests/e2e/resources/lighthouse/sw.js1// Used to verify that a service worker is/isn't registered.
Decorative Section Separators4 hits · 18 pts
SeverityFileLineSnippet
MEDIUMcore/config/default-config.js475 // ┌────────────┬───────────────────────────────────────────────┐
MEDIUMcore/config/default-config.js477 // │ ├──────────────┬─────────────────┬──────────────┤
MEDIUMcore/config/default-config.js480 // ├────────────┼──────────────┼─────────────────┼──────────────┤
MEDIUMcore/config/default-config.js485 // └────────────┴──────────────┴─────────────────┴──────────────┘
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippet
CRITICALcore/config/filters.js105 return artifact.gatherer.instance.meta.supportedModes.includes(mode);
Cross-Language Confusion (JS/TS)2 hits · 10 pts
SeverityFileLineSnippet
HIGHcore/scripts/compare-runs.js338 print(filter(results));
HIGHcore/scripts/compare-runs.js412 print(filter(results));
Fake / Example Data7 hits · 8 pts
SeverityFileLineSnippet
LOWdocs/recipes/auth/example-lh-auth.js25 await emailInput.type('admin@example.com');
LOWdocs/recipes/auth/README.md79await emailInput.type('admin@example.com');
LOWdocs/recipes/auth/server/server.js54 if (email !== 'admin@example.com' || password !== 'password') {
LOW…test/smokehouse/test-definitions/forms-autocomplete.js36 placeholder: 'John Doe',
LOW…test/smokehouse/test-definitions/forms-autocomplete.js131 placeholder: 'John Doe',
LOW…test/smokehouse/test-definitions/forms-autocomplete.js470 // '`autocomplete` token(s): "sectio-red shipping cc-namez" is invalid in <textarea type="text" id="name_cc1"
LOW…test/smokehouse/test-definitions/forms-autocomplete.js483 // '<textarea type="text" id="name_cc1" name="name_cc1" autocomplete="sectio-red shipping cc-namez" pl
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippet
LOWcore/test/devtools-tests/setup.sh10# Set SKIP_DOWNLOADS to skip all the downloading and just export variables.
LOWcore/test/devtools-tests/setup.sh11# Set BUILD_FOLDER to use a folder other than 'LighthouseIntegration' (ex: Default to use out/Default).
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippet
MEDIUMcore/scripts/release/prepare-commit.sh45# Create the changelog entry