Repository Analysis

GraphiteEditor/Graphite

Community-built comprehensive 2D content creation appplication for graphic design, digital art, and interactive real-time motion graphics powered by a node-based procedural graphics engine

1.4 Likely human-written View on GitHub
1.4
Adjusted Score
1.4
Raw Score
100%
Time Factor
2026-05-29
Last Push
26,062
Stars
Rust
Language
194,359
Lines of Code
862
Files
225
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 2HIGH 2MEDIUM 4LOW 217

Pattern Findings

225 matches across 8 categories. Click a row to expand file-level details.

Over-Commented Block169 hits · 169 pts
SeverityFileLineSnippet
LOWdeny.toml1# This template contains all of the possible sections and their default values
LOWdeny.toml21targets = [
LOWdeny.toml41ignore = [
LOWdeny.toml81 "Zlib", # Keep this list in sync with those in `/about.toml`
LOWdeny.toml101# licensing information
LOWdeny.toml121# published to private registries
LOWdeny.toml141# * lowest-version - The path to the lowest versioned duplicate is highlighted
LOWdeny.toml161 #{ name = "ansi_term", version = "=0.11.0" },
LOWdeny.toml181unknown-git = "warn"
LOWrustfmt.toml1edition = "2024"
LOWfrontend/wrapper/src/helpers.rs281 "ArrowLeft" => ArrowLeft,
LOWfrontend/wrapper/src/helpers.rs301 // "NumpadComma" => KeyNumpadComma,
LOWfrontend/src/vite-env.d.ts1/// <reference types="svelte" />
LOWfrontend/src/icons.ts481// Constraining its values means that TypeScript can make sure each icon definition has a valid size number from the uni
LOWfrontend/src/utility-functions/keyboard-entry.ts21// Directly using `KeyboardEvent.code` scan code only works on a US QWERTY layout, because alternate layouts like
LOWfrontend/src/components/layout/FloatingMenu.svelte361 // Accompanying diagram: <https://files.keavon.com/-/SpringgreenKnownXantus/capture.png>
LOWfrontend/src/components/panels/Document.svelte821 // --available-height-plus-1: calc(var(--available-height) + 1px);
LOW…ntend/src/components/widgets/inputs/NumberInput.svelte341 }
LOW…ntend/src/components/widgets/inputs/NumberInput.svelte401 const target = e.target || undefined;
LOW…ntend/src/components/widgets/inputs/NumberInput.svelte521 const combined = initialValue + cumulativeDragDelta;
LOW…ntend/src/components/widgets/inputs/NumberInput.svelte541 // - If this is the first "input" event upon mousedown, manage the state so we end up waiting for the user to decide on
LOW…ntend/src/components/widgets/inputs/NumberInput.svelte661 // We want to let the user abort while dragging the slider by right clicking or pressing Escape.
LOW…ntend/src/components/widgets/inputs/NumberInput.svelte721 // Set the value back to the original value before the user began dragging.
LOWwebsite/sass/base.scss721// height: 40px;
LOWlibraries/dyn-any/derive/src/lib.rs1#![doc(html_root_url = "http://docs.rs/dyn-any-derive/0.1.0")]
LOWlibraries/dyn-any/derive/src/lib.rs21/// # use dyn_any::{DynAny, StaticType};
LOWdesktop/bundle/src/mac.rs141#[derive(serde::Serialize)]
LOWdesktop/bundle/src/mac.rs161 cf_bundle_version: String,
LOWdesktop/bundle/src/mac.rs181 #[serde(skip_serializing_if = "Option::is_none")]
LOWdesktop/embedded-resources/src/lib.rs1//! This crate provides `EMBEDDED_RESOURCES` that can be included in the desktop application binary.
LOWdesktop/src/cef.rs1//! CEF (Chromium Embedded Framework) integration for Graphite Desktop
LOWdesktop/src/cef/input.rs101 //
LOW.github/workflows/comment-!build-commands.yml1# USAGE:
LOWproc-macros/src/lib.rs21use crate::hint::derive_hint_impl;
LOWproc-macros/src/lib.rs41/// If the discriminant is supposed to also have an attribute, you must double it with `#[discriminant_attr(…)]`
LOWproc-macros/src/lib.rs61/// Foo(u8),
LOWproc-macros/src/lib.rs81/// like in the example.
LOWproc-macros/src/lib.rs101///
LOWproc-macros/src/lib.rs121/// #[parent(C, C)]
LOWproc-macros/src/lib.rs141/// # use editor::utility_traits::TransitiveChild;
LOWproc-macros/src/lib.rs161/// #[parent_is_top]
LOWproc-macros/src/lib.rs181/// }
LOWproc-macros/src/lib.rs201///
LOWproc-macros/src/lib.rs221 TokenStream::from(combined_message_attrs_impl(attr.into(), input_item.into()).unwrap_or_else(|err| err.to_compile_error
LOWproc-macros/src/lib.rs241#[proc_macro_derive(Hint, attributes(hint))]
LOWproc-macros/src/lib.rs261/// SelectToolState::TransformSelected
LOWeditor/src/macros.rs1/// Syntax sugar for initializing an `ActionList`
LOW…messages/layout/utility_types/widgets/input_widgets.rs81 #[serde(rename = "virtualScrolling")]
LOW…messages/layout/utility_types/widgets/input_widgets.rs121 #[widget_builder(skip)]
LOW…messages/layout/utility_types/widgets/input_widgets.rs181 #[serde(rename = "incrementBehavior")]
LOW…messages/layout/utility_types/widgets/input_widgets.rs281 // Behavior
LOW…messages/layout/utility_types/widgets/input_widgets.rs321#[widget_builder(not_widget_instance)]
LOW…messages/layout/utility_types/widgets/input_widgets.rs341 pub on_update: WidgetCallback<()>,
LOW…messages/layout/utility_types/widgets/input_widgets.rs401 // Sizing
LOW…messages/layout/utility_types/widgets/input_widgets.rs421 pub on_commit: WidgetCallback<()>,
LOW…messages/layout/utility_types/widgets/input_widgets.rs441// #[serde(skip)]
LOW…messages/layout/utility_types/widgets/input_widgets.rs481#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
LOW…messages/layout/utility_types/widgets/input_widgets.rs501 #[serde(rename = "newColorCSS")]
LOW…messages/layout/utility_types/widgets/input_widgets.rs521 pub on_update: WidgetCallback<()>,
LOW…messages/layout/utility_types/widgets/input_widgets.rs561 #[serde(rename = "trackCSS")]
109 more matches not shown…
Hyper-Verbose Identifiers37 hits · 39 pts
SeverityFileLineSnippet
LOWfrontend/src/subscriptions-router.ts12export function createSubscriptionsRouter() {
LOWfrontend/src/utility-functions/colors.ts196export function fillChoiceUIGradientStops(value: FillChoiceUI): GradientStopsUI | undefined {
LOWfrontend/src/utility-functions/keyboard-entry.ts1export function makeKeyboardModifiersBitfield(e: WheelEvent | PointerEvent | MouseEvent | KeyboardEvent): number {
LOWfrontend/src/utility-functions/network.ts9export function requestWithUploadDownloadProgress(
LOWfrontend/src/utility-functions/input.ts26export async function shouldRedirectKeyboardEventToBackend(e: KeyboardEvent, dialogStore: DialogStore): Promise<boolean>
LOWfrontend/src/utility-functions/input.ts354function potentiallyRestoreCanvasFocus(e: Event) {
LOWfrontend/src/utility-functions/viewports.ts6export function hasFirstArtworkBeenReceived(): boolean {
LOWfrontend/src/utility-functions/viewports.ts13export function setupViewportResizeObserver(editor: EditorWrapper): () => void {
LOWfrontend/src/utility-functions/persistence.ts195function extractIsSavedFromUnknown(details: unknown): boolean {
LOWfrontend/src/managers/localization.ts8export function createLocalizationManager(subscriptions: SubscriptionsRouter, editor: EditorWrapper) {
LOWfrontend/src/managers/localization.ts20export function destroyLocalizationManager() {
LOWfrontend/src/managers/persistence.ts58export function destroyPersistenceManager() {
LOWfrontend/src/components/layout/FloatingMenu.svelte6 export function preventEscapeClosingParentFloatingMenu(element: HTMLElement) {
LOWfrontend/src/components/layout/FloatingMenu.svelte125 function setSafariScrollableOverflow(hidden: boolean) {
LOWfrontend/src/components/layout/FloatingMenu.svelte183 function positionAndStyleFloatingMenu() {
LOWfrontend/src/components/layout/FloatingMenu.svelte298 export async function measureAndEmitNaturalWidth() {
LOWfrontend/src/components/layout/FloatingMenu.svelte471 function isPointerEventOutsideFloatingMenu(e: PointerEvent, extraDistanceAllowed = 0): boolean {
LOWfrontend/src/components/layout/FloatingMenu.svelte478 function isPointerEventOutsideMenuElement(e: PointerEvent, element: Element, extraDistanceAllowed = 0): boolean {
LOWfrontend/src/components/panels/Document.svelte225 export async function updateEyedropperSamplingState(
LOWfrontend/src/components/panels/Document.svelte310 function updateRulerCursorPosition(e: PointerEvent) {
LOWfrontend/src/components/panels/Document.svelte423 export function displayRemoveEditableTextbox() {
LOWfrontend/src/components/panels/Document.svelte445 function gradientStopPickerDirection(position: { x: number; y: number } | undefined, viewport: HTMLDivElement | undefin
LOWfrontend/src/components/panels/Layers.svelte110 function toggleNodeVisibilityLayerPanel(id: bigint) {
LOWfrontend/src/components/panels/Layers.svelte118 function handleExpandArrowClickWithModifiers(e: MouseEvent, treePath: bigint[]) {
LOWfrontend/src/components/floating-menus/MenuList.svelte94 async function watchHighlightedWithSearch(filteredEntries: MenuListEntry[][], open: boolean) {
LOWfrontend/src/components/window/Panel.svelte311 function calculateForeignInsertionIndex(pointerX: number, targetPanelId: string, tabBarDiv: HTMLDivElement) {
LOWfrontend/src/components/views/Graph.svelte47 function exportsToEdgeTextInputWidth() {
LOWfrontend/src/components/views/Graph.svelte57 function importsToEdgeTextInputWidth() {
LOWfrontend/src/components/views/Graph.svelte67 function setEditingImportNameIndex(index: number, currentName: string) {
LOWfrontend/src/components/views/Graph.svelte72 function setEditingExportNameIndex(index: number, currentName: string) {
LOWfrontend/src/components/widgets/WidgetSpan.svelte64 function widgetValueCommitAndUpdate(widgetIndex: number, value: unknown, resendWidget: boolean) {
LOW…ntend/src/components/widgets/inputs/NumberInput.svelte145 function commitTransactionIfInProgress() {
LOW…ontend/src/components/widgets/inputs/CurveInput.svelte75 function handleManipulatorPointerDown(e: PointerEvent, i: number) {
LOW…ontend/src/components/widgets/inputs/CurveInput.svelte95 function getSvgPositionFromPointerEvent(e: PointerEvent): [number, number] | undefined {
LOWwebsite/static/js/template/book.js55function listenForClickToOpenOrCloseTOC() {
LOWwebsite/static/js/component/image-comparison.js6function initializeImageComparison() {
LOWwebsite/static/js/component/carousel.js288function updateVideoSyncForTransitions(carousel, videos) {
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippet
CRITICALeditor/src/test_utils.rs162 self.editor.dispatcher.message_handlers.portfolio_message_handler.active_document().unwrap()
CRITICALeditor/src/test_utils.rs166 self.editor.dispatcher.message_handlers.portfolio_message_handler.active_document_mut().unwrap()
Example Usage Blocks9 hits · 14 pts
SeverityFileLineSnippet
LOWnode-graph/node-macro/src/parsing.rs275 // Example usage:
LOWnode-graph/node-macro/src/parsing.rs290 // Example usage:
LOWnode-graph/node-macro/src/parsing.rs304 // Example usage:
LOWnode-graph/node-macro/src/parsing.rs321 // Example usage:
LOWnode-graph/node-macro/src/parsing.rs333 // Example usage:
LOWnode-graph/node-macro/src/parsing.rs348 // Example usage:
LOWnode-graph/node-macro/src/parsing.rs359 // Example usage:
LOWnode-graph/node-macro/src/parsing.rs370 // Example usage:
LOWnode-graph/node-macro/src/parsing.rs385 // Example usage:
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippet
MEDIUMfrontend/src/utility-functions/keyboard-entry.ts28// Eventually we will need a more robust system based on a giant database of keyboard layouts from all around the world.
MEDIUMfrontend/src/components/panels/Document.svelte333 // This isn't very clean but it's good enough for now until we need more icons, then we can build something more robus
MEDIUM…olio/document/data_panel/data_panel_message_handler.rs659 // TODO: Make this robust for large u64 values that don't fit in f64 (above roughly 2^53). Perhaps using a bigint kind
MEDIUMnode-graph/graphene-cli/src/main.rs232 // Since the CLI doesn't have the document node definitions, a less robust method of just patching the inputs is used
Synthetic Comment Markers2 hits · 10 pts
SeverityFileLineSnippet
HIGH.github/workflows/website.yml52 - name: 🦀 Produce auto-generated code docs data
HIGH.github/workflows/build.yml266 - name: 📃 Trigger website rebuild if auto-generated code docs are stale
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippet
LOW.github/workflows/check.yml11 # Check if CI can be skipped (for merge queue deduplication)
Fake / Example Data1 hit · 2 pts
SeverityFileLineSnippet
LOWnode-graph/nodes/gstd/src/text.rs16 #[default("Lorem ipsum")]