Repository Analysis

darkreader/darkreader

Dark Reader Chrome and Firefox extension

1.6 Likely human-written View on GitHub
1.6
Adjusted Score
1.6
Raw Score
100%
Time Factor
2026-05-30
Last Push
22,043
Stars
TypeScript
Language
56,477
Lines of Code
624
Files
84
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 0LOW 84

Pattern Findings

84 matches across 3 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers80 hits · 84 pts
SeverityFileLineSnippet
LOWtasks/integrity.js46function firefoxExtractHashMetaInfOrder(manifest) {
LOWtests/inject/support/background-stub.ts27export function resetChromeRuntimeMessageStub(): void {
LOWtests/inject/support/background-stub.ts32export function stubBackgroundFetchResponse(url: string, content: string): void {
LOWtests/browser/coverage.js95async function generateHTMLCoverageReport(dir, info) {
LOWtests/browser/coverage.js126async function generateIndexHTMLCoveragePage(dir, info) {
LOWtests/browser/coverage.js161export async function generateHTMLCoverageReports(dir, coverage) {
LOWsrc/ui/options/advanced/enable-for-protected-pages.tsx7 function onEnableForProtectedPages(value: boolean) {
LOWsrc/ui/popup/utils/issues.ts3export function fixNotClosingPopupOnNavigation(): void {
LOWsrc/ui/popup/components/body.tsx114 function disableMobileLinksSlideIn() {
LOWsrc/inject/index.ts169function sendConnectionOrResumeMessage(type: MessageTypeCStoBG.DOCUMENT_CONNECT | MessageTypeCStoBG.DOCUMENT_RESUME) {
LOWsrc/inject/utils/dom.ts237export function addReadyStateCompleteListener(listener: () => void): void {
LOWsrc/inject/utils/dom.ts241export function cleanReadyStateCompleteListeners(): void {
LOWsrc/inject/utils/dom.ts286function getElementsTreeOperations(mutations: MutationRecord[]): ElementsTreeOperations {
LOWsrc/inject/utils/dom.ts335export function createOptimizedTreeObserver(root: Document | ShadowRoot, callbacks: OptimizedTreeObserverCallbacks): {di
LOWsrc/inject/dynamic-theme/image.ts287export function isBlobURLCheckResultReady(): boolean {
LOWsrc/inject/dynamic-theme/image.ts357function tryConvertDataURLToBlobSync(dataURL: string): Blob | null {
LOWsrc/inject/dynamic-theme/image.ts382export async function tryConvertDataURLToBlobURL(dataURL: string): Promise<string | null> {
LOWsrc/inject/dynamic-theme/image.ts403export function cleanImageProcessingCache(): void {
LOWsrc/inject/dynamic-theme/css-rules.ts157export function replaceCSSRelativeURLsWithAbsolute($css: string, cssBasePath: string): string {
LOWsrc/inject/dynamic-theme/inline-style.ts269export function stopWatchingForInlineStyles(): void {
LOWsrc/inject/dynamic-theme/modify-css.ts67export function getModifiableCSSDeclaration(
LOWsrc/inject/dynamic-theme/modify-css.ts133export function getModifiedUserAgentStyle(theme: Theme, isIFrame: boolean, styleSystemControls: boolean): string {
LOWsrc/inject/dynamic-theme/modify-css.ts210function getModifiedSelectionStyle(theme: Theme) {
LOWsrc/inject/dynamic-theme/modify-css.ts224function getModifiedScrollbarStyle(theme: Theme) {
LOWsrc/inject/dynamic-theme/modify-css.ts681export function getShadowModifierWithInfo(value: string): CSSValueModifierWithInfo | null {
LOWsrc/inject/dynamic-theme/modify-css.ts721export function getScrollbarColorModifier(value: string): string | CSSValueModifier | null {
LOWsrc/inject/dynamic-theme/modify-css.ts758function getVariableDependantModifier(
LOWsrc/inject/dynamic-theme/palette.ts49function getRegisteredVariableValue(type: ColorType, registered: RegisteredColor) {
LOWsrc/inject/dynamic-theme/meta-theme-color.ts22export function changeMetaThemeColorWhenAvailable(theme: Theme): void {
LOWsrc/inject/dynamic-theme/variables.ts660function getVariableNameAndFallback(match: string) {
LOWsrc/inject/dynamic-theme/variables.ts715function wrapTextColorVariableName(name: string) {
LOWsrc/inject/dynamic-theme/variables.ts719function wrapBorderColorVariableName(name: string) {
LOWsrc/inject/dynamic-theme/index.ts89function stopStylePositionWatchers() {
LOWsrc/inject/dynamic-theme/index.ts203function createStaticStyleOverrides() {
LOWsrc/inject/dynamic-theme/index.ts266function createShadowStaticStyleOverridesInner(root: ShadowRoot) {
LOWsrc/inject/dynamic-theme/index.ts280function delayedCreateShadowStaticStyleOverrides(root: ShadowRoot): void {
LOWsrc/inject/dynamic-theme/index.ts300function createShadowStaticStyleOverrides(root: ShadowRoot) {
LOWsrc/inject/dynamic-theme/index.ts337function createDynamicStyleOverrides() {
LOWsrc/inject/dynamic-theme/index.ts498function createThemeAndWatchForUpdates() {
LOWsrc/inject/dynamic-theme/index.ts532function getAdoptedStyleChangeToken(sheet: CSSStyleSheet) {
LOWsrc/inject/dynamic-theme/index.ts541function getAdoptedStyleSheetFallback(sheet: CSSStyleSheet) {
LOWsrc/inject/dynamic-theme/index.ts621function createDarkReaderInstanceMarker() {
LOWsrc/inject/dynamic-theme/index.ts632function isAnotherDarkReaderInstanceActive() {
LOWsrc/inject/dynamic-theme/index.ts669function disableConflictingPlugins() {
LOWsrc/inject/dynamic-theme/index.ts729export function createOrUpdateDynamicTheme(theme: Theme, dynamicThemeFixes: DynamicThemeFix[] | null, iframe: boolean):
LOWsrc/inject/dynamic-theme/index.ts747export function createOrUpdateDynamicThemeInternal(themeConfig: Theme, dynamicThemeFixes: DynamicThemeFix | null, iframe
LOWsrc/inject/dynamic-theme/stylesheet-proxy.ts21 function disableConflictingPlugins() {
LOWsrc/inject/dynamic-theme/adopted-style-manger.ts20export function canHaveAdoptedStyleSheets(node: Document | ShadowRoot): boolean {
LOWsrc/inject/dynamic-theme/adopted-style-manger.ts24export function createAdoptedStyleSheetOverride(node: Document | ShadowRoot): AdoptedStyleSheetManager {
LOWsrc/inject/dynamic-theme/adopted-style-manger.ts173 function addSheetChangeEventListener(type: string, listener: (e: CustomEvent) => void) {
LOWsrc/inject/dynamic-theme/adopted-style-manger.ts282export function createAdoptedStyleSheetFallback(): AdoptedStyleSheetFallback {
LOWsrc/inject/dynamic-theme/modify-colors.ts28export function clearColorModificationCache(): void {
LOWsrc/inject/dynamic-theme/watch/sheet-changes.ts50 function watchForSheetChangesUsingProxy() {
LOWsrc/inject/dynamic-theme/watch/sheet-changes.ts54 function stopWatchingForSheetChangesUsingProxy() {
LOWsrc/inject/dynamic-theme/watch/sheet-changes.ts58 function stopWatchingForSheetChanges() {
LOWsrc/inject/dynamic-theme/watch/sheet-changes.ts87 function watchForSheetChangesUsingRAF() {
LOWsrc/inject/dynamic-theme/watch/sheet-changes.ts106 function stopWatchingForSheetChangesUsingRAF() {
LOWsrc/inject/dynamic-theme/watch/style-position.ts196 function subscribeForShadowRootChanges(node: Element) {
LOWsrc/inject/dynamic-theme/watch/style-position.ts249export function stopWatchingForStylePositions(): void {
LOWsrc/inject/dynamic-theme/watch/index.ts20export function stopWatchingForStyleChanges(): void {
20 more matches not shown…
Overly Generic Function Names2 hits · 2 pts
SeverityFileLineSnippet
LOWtests/inject/support/echo-server.js9 function handleRequest(req, res) {
LOWtests/browser/server.js43 function handleRequest(req, res) {
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippet
LOWsrc/ui/controls/shortcut/index.tsx61 // e.key can be inaccurate if Shift is also pressed
LOWsrc/utils/colorscheme-parser.ts1// Seperator is to indicate that the it should start with a new defined colorscheme.