Offline, privacy-first grammar checker. Fast, open-source, Rust-powered
This report summarizes scanner evidence for Automattic/harper, a Rust project with 17,312 GitHub stars. SynthScan examined 341,325 lines of code across 1357 source files, recording 177 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 0.6 (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.
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.
Can maintainers explain intent, assumptions, and trade-offs? 155 finding(s).
Are imports declared and package/API names verified? 14 finding(s).
Are wrappers, guards, and repeated structures necessary? 90 finding(s).
Which changes need focused human review? 177 finding(s).
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.
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.
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.
The scanner identified 177 distinct pattern matches across 7 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/obsidian-plugin/src/lint.ts | 867 | function getDiagnosticForTooltipRange( | CODE |
| LOW | packages/obsidian-plugin/src/lint.ts | 974 | export function canApplySuggestionFromVisibleTooltip(view: EditorView, index: number): boolean { | CODE |
| LOW | packages/obsidian-plugin/src/lint.ts | 980 | export function applySuggestionFromVisibleTooltip(view: EditorView, index: number): boolean { | CODE |
| LOW | packages/obsidian-plugin/src/lint.ts | 992 | export function canAddWordToDictionaryFromVisibleTooltip(view: EditorView): boolean { | CODE |
| LOW | packages/obsidian-plugin/src/lint.ts | 998 | export function addWordToDictionaryFromVisibleTooltip(view: EditorView): boolean { | CODE |
| LOW⚡ | packages/obsidian-plugin/src/lint.ts | 1010 | export function canIgnoreVisibleTooltipDiagnostic(view: EditorView): boolean { | CODE |
| LOW⚡ | packages/obsidian-plugin/src/lint.ts | 1016 | export function ignoreVisibleTooltipDiagnostic(view: EditorView): boolean { | CODE |
| LOW⚡ | packages/obsidian-plugin/src/lint.ts | 1025 | export function canDismissFocusedLintTooltip(view: EditorView): boolean { | CODE |
| LOW⚡ | packages/obsidian-plugin/src/lint.ts | 1030 | export function dismissFocusedLintTooltip(view: EditorView): boolean { | CODE |
| LOW | packages/obsidian-plugin/src/State.test.ts | 24 | function collectStructuredRuleNames(config: StructuredLintConfig): string[] { | CODE |
| LOW | packages/harper-editor/src/lib/editorDisplay.ts | 294 | export function createEmptyLintKindCounts(): LintKindCounts { | CODE |
| LOW | packages/harper-editor/src/lib/Editor.svelte | 147 | async function updateLintFrameworkElements() { | CODE |
| LOW | packages/harper-editor/src/lib/Editor.svelte | 274 | function scheduleLintFrameworkUpdate() { | CODE |
| LOW | packages/harper-editor/src/lib/LintSidebar.svelte | 95 | function handleIgnoreBackdropClick(event: MouseEvent) { | CODE |
| LOW | packages/wordpress-plugin/src/harper/domUtils.ts | 7 | export function extractFromHTMLCollection(collection: HTMLCollection): Element[] { | CODE |
| LOW | packages/wordpress-plugin/src/harper/domUtils.ts | 32 | export function getNodesFromQuerySelector(element: Element, query: string) { | CODE |
| LOW | packages/lint-framework/src/lint/googleDocsAdapter.ts | 21 | export function maybeComputeGoogleDocsLintBoxes( | CODE |
| LOW⚡ | packages/lint-framework/src/lint/googleDocsAdapter.ts | 90 | export function isGoogleDocsSourceSyncing(source: SourceElement): boolean { | CODE |
| LOW⚡ | packages/lint-framework/src/lint/googleDocsAdapter.ts | 97 | export function getGoogleDocsRenderTarget(source: SourceElement): HTMLElement | null { | CODE |
| LOW⚡ | packages/lint-framework/src/lint/googleDocsAdapter.ts | 105 | export function getGoogleDocsRenderOffset(source: SourceElement): { x: number; y: number } | null { | CODE |
| LOW | packages/lint-framework/src/lint/googleDocsAdapter.ts | 124 | export function applyGoogleDocsRenderHostStyle(host: HTMLElement, source: SourceElement): boolean { | CODE |
| LOW | packages/lint-framework/src/lint/googleDocsAdapter.ts | 141 | function suggestionToReplacementText( | CODE |
| LOW | packages/lint-framework/src/lint/domUtils.ts | 8 | export function extractFromHTMLCollection(collection: HTMLCollection): Element[] { | CODE |
| LOW | packages/lint-framework/src/lint/domUtils.ts | 32 | export function getNodesFromQuerySelector(element: Element, query: string) { | CODE |
| LOW | …ages/lint-framework/src/lint/computeLintBoxes/index.ts | 105 | function suggestionToReplacementText( | CODE |
| LOW | …ages/lint-framework/src/lint/computeLintBoxes/index.ts | 217 | function replaceRichTextEditorValue( | CODE |
| LOW | …ages/lint-framework/src/lint/computeLintBoxes/index.ts | 322 | function replaceGenericContentEditable( | CODE |
| LOW | …ework/src/lint/computeLintBoxes/googleDocsUtilities.ts | 31 | function getGoogleDocsMeasurementContext(): CanvasRenderingContext2D | null { | CODE |
| LOW | …ework/src/lint/computeLintBoxes/googleDocsUtilities.ts | 41 | function getGoogleDocsTextSliceRect( | CODE |
| LOW | …ework/src/lint/computeLintBoxes/googleDocsUtilities.ts | 109 | function getLongestCommonSubsequenceLength(left: string, right: string): number { | CODE |
| LOW | …ework/src/lint/computeLintBoxes/googleDocsUtilities.ts | 235 | export function getGoogleDocsHighlightRects(target: HTMLElement, span: Span): DOMRect[] { | CODE |
| LOW | …ework/src/lint/computeLintBoxes/googleDocsUtilities.ts | 285 | function getGoogleDocsPositionedLeafHost(child: Node, target: HTMLElement): HTMLElement | null { | CODE |
| LOW | packages/chrome-plugin/tests/google_docs_live.spec.ts | 52 | async function dispatchGoogleDocsBridgeReplacement( | CODE |
| LOW | …ckages/chrome-plugin/tests/google_docs_flicker.spec.ts | 76 | async function installMockGoogleDocsGeometry(page: Page, annotatedText: string) { | CODE |
| LOW | …ckages/chrome-plugin/tests/google_docs_flicker.spec.ts | 130 | async function updateMockGoogleDocsGeometry( | CODE |
| LOW | …ckages/chrome-plugin/tests/google_docs_flicker.spec.ts | 175 | async function startHighlightCountSampling(page: Page) { | CODE |
| LOW | …ckages/chrome-plugin/tests/google_docs_flicker.spec.ts | 197 | async function stopHighlightCountSampling(page: Page): Promise<number[]> { | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 25 | export function normalizeGoogleDocsBridgeText(text: string): string { | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 85 | export async function moveGoogleDocsCursorToEnd(page: Page) { | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 94 | async function getGoogleDocsRenderedState(page: Page): Promise<GoogleDocsRenderedState> { | CODE |
| LOW⚡ | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 118 | export async function getGoogleDocsAnnotatedText(page: Page): Promise<string> { | CODE |
| LOW⚡ | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 128 | export async function getGoogleDocsNormalizedBridgeText(page: Page): Promise<string> { | CODE |
| LOW⚡ | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 132 | export async function getGoogleDocsHighlightCount(page: Page): Promise<number> { | CODE |
| LOW⚡ | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 137 | export async function getGoogleDocsVisualLineCount(page: Page): Promise<number> { | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 160 | async function clearGoogleDocsDocumentCompletely(page: Page) { | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 206 | async function openGoogleDocsInsertTablePicker(page: Page) { | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 272 | async function ensurePlainGoogleDocsInsertionMode(page: Page) { | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 312 | export async function replaceGoogleDocsDocumentText(page: Page, text: string) { | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 370 | export async function selectGoogleDocsFromTextToEnd(page: Page, text: string) { | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 390 | export async function hasGoogleDocsRectWithFontContainingText( | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 405 | export async function applyItalicToGoogleDocsText(page: Page, text: string, occurrence = 0) { | CODE |
| LOW | packages/chrome-plugin/tests/googleDocsTestUtils.ts | 416 | export async function applyBulletedListToGoogleDocsText(page: Page, text: string) { | CODE |
| LOW | packages/chrome-plugin/tests/google_docs.spec.ts | 406 | async function installMockGoogleDocsGeometry( | CODE |
| LOW | packages/chrome-plugin/tests/testUtils.ts | 116 | export async function waitForHighlightsToSettle( | CODE |
| LOW | packages/chrome-plugin/tests/testUtils.ts | 161 | export async function waitForHarperHighlightCenter( | CODE |
| LOW | packages/chrome-plugin/tests/testUtils.ts | 195 | export async function assertLocatorsResolveEqually(page: Page, a: Locator, b: Locator) { | CODE |
| LOW | packages/chrome-plugin/tests/testUtils.ts | 228 | export async function openHarperPopupFromEditorPointerDown( | CODE |
| LOW | packages/chrome-plugin/tests/testUtils.ts | 383 | export async function testCanBlockRuleSuggestion( | CODE |
| LOW | packages/chrome-plugin/tests/testUtils.ts | 429 | export async function testMultipleSuggestionsAndUndo( | CODE |
| LOW | packages/chrome-plugin/tests/testUtils.ts | 483 | export async function assertHarperHighlightBoxes( | CODE |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | harper-ls/src/main.rs | 21 | COMMENT | |
| LOW | …t-commit/tests/test_sources/complex_verbose_commit.txt | 1 | This is the the subject | COMMENT |
| LOW | packages/obsidian-plugin/src/lint.ts | 41 | /// this diagnostic applies to. | COMMENT |
| LOW | packages/obsidian-plugin/src/lint.ts | 81 | delay?: number; | COMMENT |
| LOW | packages/harper.js/src/Linter.test.ts | 781 | } | COMMENT |
| LOW | harper-core/expr_linter_skeleton_commented.rs | 41 | fn match_to_lint_with_context( | COMMENT |
| LOW | harper-core/expr_linter_skeleton_commented.rs | 61 | // EDIT using `.span()` from `TokenStringExt`. | COMMENT |
| LOW | harper-core/tests/pos_tags.rs | 1 | //! This test creates snapshots of the part-of-speech (POS) tags assigned by the | COMMENT |
| LOW | harper-core/tests/pos_tags.rs | 21 | //! > I told her how I had stopped off in Chicago for a day on my way East . | COMMENT |
| LOW | harper-core/tests/pos_tags.rs | 41 | //! - The `Pl` suffix means plural, and `Sg` means singular. | COMMENT |
| LOW | harper-core/tests/pos_tags.rs | 61 | //! - Dialects are denoted by `Am`, `Br`, `Ca`, or `Au` for individual | COMMENT |
| LOW | harper-core/src/dict_word_metadata.rs | 41 | /// If no dialects are defined, it can be assumed that the word is | COMMENT |
| LOW | harper-core/src/dict_word_metadata.rs | 761 | /// Does the metadata for this word cover an all-lowercase variant? (e.g., "hello") | COMMENT |
| LOW | harper-core/src/dict_word_metadata.rs | 781 | self.orth_info.contains(OrthFlags::TITLECASE) | COMMENT |
| LOW | harper-core/src/dict_word_metadata.rs | 801 | /// | COMMENT |
| LOW | harper-core/src/dict_word_metadata.rs | 881 | // | COMMENT |
| LOW | harper-core/src/dict_word_metadata.rs | 1141 | /// Tries to get a dialect from its abbreviation. Returns `None` if the abbreviation is not | COMMENT |
| LOW | harper-core/src/dict_word_metadata.rs | 1221 | /// Checks if the provided dialect is enabled. | COMMENT |
| LOW | harper-core/src/dict_word_metadata.rs | 1241 | /// | COMMENT |
| LOW | harper-core/src/punctuation.rs | 21 | /// `.` | COMMENT |
| LOW | harper-core/src/span.rs | 1 | use std::{fmt::Display, marker::PhantomData, ops::Range}; | COMMENT |
| LOW | harper-core/src/token_string_ext.rs | 121 | /// assert_eq!(tokens.get_rel(0).unwrap().get_str(&source), "The"); | COMMENT |
| LOW | harper-core/src/token_string_ext.rs | 141 | } | COMMENT |
| LOW | harper-core/src/linting/lint_kind.rs | 41 | /// When your brain doesn't know the right spelling. | COMMENT |
| LOW | harper-core/src/linting/rise_the_ranks.rs | 141 | RiseTheRanks::default(), | COMMENT |
| LOW | harper-core/src/linting/rise_the_ranks.rs | 161 | // } | COMMENT |
| LOW | harper-core/src/linting/rise_the_ranks.rs | 181 | // #[test] | COMMENT |
| LOW | harper-core/src/linting/rise_the_ranks.rs | 201 | // assert_suggestion_result( | COMMENT |
| LOW | harper-core/src/linting/rise_the_ranks.rs | 221 | // RiseTheRanks::default(), | COMMENT |
| LOW | harper-core/src/linting/rise_the_ranks.rs | 241 | // ); | COMMENT |
| LOW | harper-core/src/linting/rise_the_ranks.rs | 261 | COMMENT | |
| LOW | harper-core/src/linting/rise_the_ranks.rs | 281 | // fn fix_risen_in_the_ranks() { | COMMENT |
| LOW | harper-core/src/linting/there_is_agreement.rs | 721 | &[ | COMMENT |
| LOW | harper-core/src/linting/mod.rs | 401 | /// application cycles or deep multi-step fixes are involved. | COMMENT |
| LOW | harper-core/src/linting/expr_linter.rs | 41 | type Unit: DocumentIterator; | COMMENT |
| LOW | harper-core/src/linting/adjective_of_a.rs | 81 | COMMENT | |
| LOW | harper-core/src/linting/nobel_noble.rs | 241 | NobelNoble::default(), | COMMENT |
| LOW | harper-core/src/linting/lint_group/mod.rs | 381 | }; | COMMENT |
| LOW | harper-core/src/spell/rune/attribute_list.rs | 41 | .map_err(Error::from) | COMMENT |
| LOW | harper-core/src/spell/word_map/mod.rs | 21 | /// Type used to store the canonical entries in the word map. | COMMENT |
| LOW | harper-core/src/expr/fixed_phrase.rs | 1 | use crate::parsers::PlainEnglish; | COMMENT |
| LOW | harper-core/src/expr/expr_map.rs | 1 | use crate::LSend; | COMMENT |
| LOW | harper-core/src/expr/mod.rs | 1 | //! An `Expr` is a declarative way to express whether a certain set of tokens fulfill a criteria. | COMMENT |
| LOW | harper-core/src/expr/filter.rs | 1 | use crate::{Span, Token}; | COMMENT |
| LOW | harper-cli/src/main.rs | 61 | Lint { | COMMENT |
| LOW | harper-cli/src/main.rs | 81 | #[arg(short, long, default_value = "us")] | COMMENT |
| LOW | harper-cli/src/main.rs | 101 | }, | COMMENT |
| LOW | harper-cli/src/main.rs | 181 | #[arg(short, long)] | COMMENT |
| LOW | …src-tauri/src/highlighter/render_state/popup_layout.rs | 1 | //! Places the suggestion list card and the lint flyout card on screen. | COMMENT |
| LOW | …src-tauri/src/highlighter/render_state/popup_layout.rs | 21 | /// The time constant, in seconds, of the sidebar's movement toward its target. | COMMENT |
| LOW | …src-tauri/src/highlighter/render_state/popup_layout.rs | 41 | impl PopupLayout { | COMMENT |
| LOW | harper-desktop/src/routes/+layout.ts | 1 | // Tauri doesn't have a Node.js server to do proper SSR | COMMENT |
| LOW | …r-comments/tests/language_support_sources/issue_229.cs | 1 | // | COMMENT |
| LOW | …r-comments/tests/language_support_sources/issue_229.js | 1 | // | COMMENT |
| LOW | …omments/tests/language_support_sources/merged_lines.ts | 1 | // This is a test to make sure we don't split up paragraphs on newlines. | COMMENT |
| LOW | …er-comments/tests/language_support_sources/issue_229.c | 1 | // | COMMENT |
| LOW | harper-comments/tests/language_support_sources/clean.rs | 1 | /// This is an example Rust file that should produce no Harper lints. | COMMENT |
| LOW | …nts/tests/language_support_sources/ignore_shebang_3.sh | 1 | #!/usr/bin/python3 | COMMENT |
| LOW | …nts/tests/language_support_sources/ignore_shebang_2.sh | 1 | #! /usr/bin/env sh | COMMENT |
| LOW | …nts/tests/language_support_sources/ignore_shebang_1.sh | 1 | #!/bin/sh | COMMENT |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | harper-core/src/linting/were_where.rs | 132 | // ── where → were: unambiguous pronouns ────────────────────────────────── | COMMENT |
| MEDIUM | harper-core/src/linting/were_where.rs | 161 | // ── where → were: "you where" with a following verb ───────────────────── | COMMENT |
| MEDIUM | harper-core/src/linting/were_where.rs | 181 | // ── were → where: verb + were + pronoun/determiner ────────────────────── | COMMENT |
| MEDIUM | harper-core/src/linting/were_where.rs | 219 | // ── where → were: more they/we variants ───────────────────────────────── | COMMENT |
| MEDIUM | harper-core/src/linting/were_where.rs | 258 | // ── where → were: more "you where" variants ────────────────────────────── | COMMENT |
| MEDIUM | harper-core/src/linting/were_where.rs | 289 | // ── were → where: more verbs and pronouns ──────────────────────────────── | COMMENT |
| MEDIUM | harper-core/src/linting/were_where.rs | 336 | // ── no false positives ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | harper-core/src/linting/were_where.rs | 415 | // ── known limitations (documented but not yet handled) ─────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/web/src/routes/languagedetection/+page.svelte | 34 | name: 'Chinese Lorem Ipsum', | CODE |
| LOW | packages/web/src/routes/titlecase/+page.svelte | 37 | attr: 'placeholder', | CODE |
| LOW | packages/chrome-plugin/tests/google_docs_live.spec.ts | 345 | const repeatedSentence = 'Lorem ipsum an dolor sit amet.'; | CODE |
| LOW | packages/chrome-plugin/tests/google_docs_live.spec.ts | 345 | const repeatedSentence = 'Lorem ipsum an dolor sit amet.'; | CODE |
| LOW⚡ | packages/chrome-plugin/tests/google_docs_live.spec.ts | 379 | .toBe(`Lorem ipsum an dolor sit amet. ${insertedPrefix}Lorem ipsum a dolor sit amet.`); | CODE |
| LOW⚡ | packages/chrome-plugin/tests/google_docs_live.spec.ts | 379 | .toBe(`Lorem ipsum an dolor sit amet. ${insertedPrefix}Lorem ipsum a dolor sit amet.`); | CODE |
| LOW⚡ | packages/chrome-plugin/tests/google_docs_live.spec.ts | 382 | .toBe(`Lorem ipsum an dolor sit amet. ${insertedPrefix}Lorem ipsum a dolor sit amet.`); | CODE |
| LOW⚡ | packages/chrome-plugin/tests/google_docs_live.spec.ts | 382 | .toBe(`Lorem ipsum an dolor sit amet. ${insertedPrefix}Lorem ipsum a dolor sit amet.`); | CODE |
| LOW | packages/components/src/lib/SearchField.svelte | 11 | export let placeholder: HTMLInputAttributes['placeholder'] = undefined; | CODE |
| LOW | packages/components/src/lib/Input.svelte | 29 | export let placeholder: HTMLInputAttributes['placeholder'] = undefined; | CODE |
| LOW⚡ | packages/harper.js/src/Linter.test.ts | 167 | test(`${linterName} detects lorem ipsum paragraph as not english`, async () => { | CODE |
| LOW⚡ | packages/harper.js/src/Linter.test.ts | 171 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna | CODE |
| LOW⚡ | packages/harper.js/src/Linter.test.ts | 171 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna | CODE |
| LOW | harper-core/tests/test_sources/chinese_lorem_ipsum.md | 1 | The following text was generated using [a Chinese lorem ipsum generator](https://pinkylam.me/generator/chinese-lorem-ips | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | harper-core/src/linting/open_the_light.rs | 186 | "Don't forget to open the lights when you enter the room.", | CODE |
| LOW | harper-core/src/linting/open_the_light.rs | 188 | "Don't forget to turn on the lights when you enter the room.", | CODE |
| MEDIUM | harper-core/src/linting/initialisms.rs | 235 | "Let me know if you need any debug logs.", | CODE |
| MEDIUM | …src/linting/phrase_set_corrections/one_to_one_tests.rs | 841 | "Here is how you can extract the list of coords from any geometry:", | CODE |
| MEDIUM | …src/linting/phrase_set_corrections/one_to_one_tests.rs | 843 | "Here is how you can extract the list of coordinates from any geometry:", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/web/src/routes/wpdemo/+page.server.ts | 5 | const playgroundUrl = `https://playground.wordpress.net/?mode=seamless#${base64Blueprint}`; | CODE |
| MEDIUM | packages/harper.js/src/SlimLinter.test.ts | 5 | // We test the 'slim' binary separately from the main one because we utilize memoization. | COMMENT |
| LOW | harper-core/src/linting/call_them.rs | 144 | r#"Can we just call it as abstract latte art."#, | CODE |
| LOW | harper-core/src/linting/call_them.rs | 146 | r#"Can we just call it abstract latte art."#, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/chrome-plugin/src/background/index.ts | 222 | function handleRequest(message: Request, sender?: chrome.runtime.MessageSender): Promise<Response> { | CODE |