Repository Analysis

gristlabs/grist-core

Grist is the evolution of spreadsheets.

3.3 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of gristlabs/grist-core, a TypeScript project with 11,276 GitHub stars. SynthScan v2.0 examined 520,212 lines of code across 1890 source files, recording 1100 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 3.3 places this repository in the Likely human-written band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

3.3
Adjusted Score
3.3
Raw Score
100%
Time Factor
2026-07-14
Last Push
11.3K
Stars
TypeScript
Language
520.2K
Lines of Code
1.9K
Files
1.1K
Pattern Hits
2026-07-14
Scan Date
0.02
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 23HIGH 13MEDIUM 160LOW 904

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 1100 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers531 hits · 527 pts
SeverityFileLineSnippetContext
LOWapp/plugin/grist-plugin-api.ts276export async function testWaitForPendingRequests() {CODE
LOWapp/plugin/grist-plugin-api.ts621function getCssScrollbarProperties(appearance: "light" | "dark") {CODE
LOWapp/plugin/grist-plugin-api.ts634function getOrCreateStyleElement(id: string) {CODE
LOWapp/server/utils/pruneActionHistory.ts42export async function pruneActionHistoryFromConsole(argv: string[]): Promise<number> {CODE
LOWapp/server/lib/sessionUtils.ts115export function getDocSessionAccessOrNull(docSession: OptDocSession): Role | null {CODE
LOWapp/server/lib/DocSession.ts80export function makeExceptionalDocSession(mode: "nascent" | "plugin" | "system" | "share",CODE
LOWapp/server/lib/gristSessions.ts60function createSessionStoreFactory(sessionsDB: string): () => SessionStore {CODE
LOWapp/server/lib/gristSessions.ts104export function getAllowedOrgForSessionID(sessionID: string): { org: string, host: string } | null {CODE
LOWapp/server/lib/configureMinIOExternalStorage.ts15export function configureMinIOExternalStorage(purpose: "doc" | "meta" | "attachments", extraPrefix: string) {CODE
LOWapp/server/lib/configureMinIOExternalStorage.ts25export function checkMinIOExternalStorage() {CODE
LOWapp/server/lib/OIDCConfig.ts152export function readOIDCConfigFromSettings(settings: AppSettings): OIDCConfig {CODE
LOWapp/server/lib/AttachmentStoreProvider.ts116async function isAttachmentStoreOptionAvailable(option: ICreateAttachmentStoreOptions) {CODE
LOWapp/server/lib/AttachmentStoreProvider.ts125function storeOptionIsNotUndefined(CODE
LOWapp/server/lib/AttachmentStoreProvider.ts131export async function checkAvailabilityAttachmentStoreOptions(CODE
LOWapp/server/lib/AttachmentStoreProvider.ts146export async function makeTempFilesystemStoreSpec(CODE
LOWapp/server/lib/AttachmentStoreProvider.ts168export function getConfiguredStandardAttachmentStore(): string | undefined {CODE
LOWapp/server/lib/AttachmentStoreProvider.ts188export async function getConfiguredAttachmentStoreConfigs(CODE
LOWapp/server/lib/serverUtils.ts147export function getSupportedEngineChoices(): EngineCode[] {CODE
LOWapp/server/lib/AssistantStatePermit.ts36export async function getAndRemoveAssistantStatePermit(CODE
LOWapp/server/lib/AssistantStatePermit.ts36export async function getAndRemoveAssistantStatePermit(CODE
LOWapp/server/lib/UserPresence.ts128function getVisibleUserProfileFromDocSession(CODE
LOWapp/server/lib/DiscourseConnect.ts100export function addDiscourseConnectEndpoints(app: Express, options: {CODE
LOWapp/server/lib/SamlConfig.ts101export function readSamlConfigFromSettings(settings: AppSettings): SamlConfig {CODE
LOWapp/server/lib/GoogleAuth.ts92export async function googleAuthTokenMiddleware(CODE
LOWapp/server/lib/uploads.ts146export async function parseMultipartFormRequest(CODE
LOWapp/server/lib/backupSqliteDatabase.ts221export async function backupUsingBestConnection(CODE
LOWapp/server/lib/ProxyAgent.ts24export function getProxyAgentConfiguration() {CODE
LOWapp/server/lib/ProxyAgent.ts63export function isUntrustedRequestBehaviorSet() {CODE
LOWapp/server/lib/updateChecker.ts37export async function updateGristServerLatestVersion(CODE
LOWapp/server/lib/loginSystemHelpers.ts21export function getActiveLoginSystemTypeSource(settings: AppSettings) {CODE
LOWapp/server/lib/loginSystemHelpers.ts44export function createLoginProviderFactory(CODE
LOWapp/server/lib/ActionHistory.ts230function getActionUndoInfoWithoutClient(act: LocalActionBundle, retValues?: any[]) {CODE
LOWapp/server/lib/ExpandedQuery.ts135export function getFormulaErrorForExpandQuery(docData: DocData, tableId: string, colId: string): CellValue {CODE
LOWapp/server/lib/idUtils.ts48export function getExternalIdForAppSumoUser(email: string) {CODE
LOWapp/server/lib/UpdateManager.ts195export async function getLatestStableDockerVersion(signal: AbortSignal): Promise<LatestVersion> {CODE
LOWapp/server/lib/OAuth2Clients.ts383function renderEndFlowHtmlTemplate(payload: object, openerOrigin: string) {CODE
LOWapp/server/lib/sendAppPage.ts244function logVisitedPageTelemetryEvent(req: RequestWithLogin, options: LogVisitedPageEventOptions) {CODE
LOWapp/server/lib/sendAppPage.ts291function getPermittedCustomWidgets(gristServer?: GristServer | null): IAttachedCustomWidget[] {CODE
LOWapp/server/lib/sendAppPage.ts313function configuredPageTitleSuffix() {CODE
LOWapp/server/lib/sendAppPage.ts339function getPageMetadataHtmlSnippet(req: express.Request, config: GristLoadConfig): string {CODE
LOWapp/server/lib/DocWorkerUtils.ts156export async function getDocWorkerInfoOrSelfPrefix(CODE
LOWapp/server/lib/DocManager.ts805async function updateDocumentAttachmentStoreSettingToValidValue(fname: string, provider: IAttachmentStoreProvider) {CODE
LOWapp/server/lib/DocManager.ts822async function updateDocumentSettingsInPlace(CODE
LOWapp/server/lib/dbUtils.ts78export async function getOrCreateConnection(): Promise<DataSource> {CODE
LOWapp/server/lib/configCoreFileFormats.ts39export function convertToCoreFileContents(input: any): IGristCoreConfigFileLatest | null {CODE
LOWapp/server/lib/GranularAccess.ts83function isAddOrUpdateRecordAction([actionName]: UserAction): boolean {CODE
LOWapp/server/lib/GranularAccess.ts3339async function applyToActionsRecursively(actions: (DocAction | UserAction)[],CODE
LOWapp/server/lib/requestUtils.ts495export function clearSessionCacheIfNeeded(req: Request, options?: {CODE
LOWapp/server/lib/requestUtils.ts527export function getExtraAttachmentOptions(req: Request): {CODE
LOWapp/server/lib/CellDataAccess.ts40export async function applyAndCheckActionsForCells(CODE
LOWapp/server/lib/GetGristComConfig.ts24export function readGetGristComConfigFromSettings(settings: AppSettings): OIDCConfig {CODE
LOWapp/server/lib/GetGristComConfig.ts61function getDecodedGetGristSecretJson(settings: AppSettings) {CODE
LOWapp/server/lib/gristSettings.ts104export function getAnonPlaygroundEnabledSource(): AppSettingSource | undefined {CODE
LOWapp/server/lib/gristSettings.ts154export function getCanAnyoneCreateOrgsSource(): AppSettingSource | undefined {CODE
LOWapp/server/lib/gristSettings.ts173export function getPersonalOrgsEnabledSource(): AppSettingSource | undefined {CODE
LOWapp/server/lib/gristSettings.ts339export function invalidateReloadableSettings(...envVars: string[]) {CODE
LOWapp/server/lib/gristSettings.ts347export function invalidateAllReloadableSettings() {CODE
LOWapp/server/lib/DocApiTriggers.ts145async function extractAndUpdateActionSecret(CODE
LOWapp/server/lib/attachEarlyEndpoints.ts315 function logCreateOrUpdateConfigEvents(CODE
LOWapp/server/lib/ExportTableSchema.ts37export async function collectTableSchemaInFrictionlessFormat(CODE
471 more matches not shown…
Decorative Section Separators93 hits · 288 pts
SeverityFileLineSnippetContext
MEDIUM…t-traefik-oidc-auth/configs/authelia/configuration.yml10#------------------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_engine.py413 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_engine.py415 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_engine.py443 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_engine.py445 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2540 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2542 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2569 #--------------------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2571 #--------------------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py306 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py308 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py382 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py384 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py508 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py510 # ----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py1244 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py1246 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py1551 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py1553 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2109 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2111 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2484 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2486 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2616 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2618 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/codebuilder.py272#----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/codebuilder.py512#----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_lookups.py28 #----------------------------------------COMMENT
MEDIUMsandbox/grist/test_lookups.py78 #----------------------------------------COMMENT
MEDIUMsandbox/grist/test_lookups.py101 #----------------------------------------COMMENT
MEDIUMsandbox/grist/test_lookups.py150 #----------------------------------------COMMENT
MEDIUMsandbox/grist/test_lookups.py171 #----------------------------------------COMMENT
MEDIUMsandbox/grist/lookup.py167#----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/lookup.py226#----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/lookup.py359#----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py134 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py35 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py194 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py268 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py354 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py397 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py534 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py599 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py638 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py767 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py816 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_useractions.py856 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_summary_choicelist.py37 # ----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_summary2.py164 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_summary2.py474 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_summary2.py559 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_summary2.py883 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_summary2.py947 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_summary2.py1030 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_summary2.py1077 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_summary2.py1196 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_summary2.py1251 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_table_actions.py127 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_table_actions.py203 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_table_actions.py251 #----------------------------------------------------------------------COMMENT
33 more matches not shown…
Hallucination Indicators23 hits · 250 pts
SeverityFileLineSnippetContext
CRITICALapp/client/ui/ProposedChangesPage.ts499 const tableRow = this._gristDoc.docModel.tables.rowModels.find(tr => tr?.tableId() === table);CODE
CRITICALapp/client/ui/ProposedChangesPage.ts500 const columnRows = tableRow ? this._gristDoc.docModel.columns.rowModels.filter(CODE
CRITICALapp/client/ui/DocumentSettings.ts439 this._gristDoc.app.topAppModel.notifier.createNotification({CODE
CRITICALapp/client/ui/WebhookPage.ts349 public docApi = this.gristDoc.docPageModel.appModel.api.getDocAPI(this.gristDoc.docId());CODE
CRITICALapp/client/ui/Tools.ts60 owner.autoDispose(gristDoc.docModel.rules.tableData.tableActionEmitter.addListener(updateCanViewAccessRules));CODE
CRITICALapp/client/ui/TimingPage.ts73 const docApi = this._gristDoc.docPageModel.appModel.api.getDocAPI(this._gristDoc.docId());CODE
CRITICALapp/client/components/VirtualDoc.ts680 const fieldsIds = this._doc.docModel.viewFields.tableData.filterRowIds(CODE
CRITICALapp/client/components/VirtualDoc.ts829 const fieldsIds = this._doc.docModel.viewFields.tableData.filterRowIds(CODE
CRITICALapp/client/components/RawDataPage.ts35 const emptyView = this._gristDoc.docModel.views.rowModels.find(x => x.id.peek() === undefined);CODE
CRITICALapp/client/components/WidgetFrame.ts291 const widgets = await this._options.gristDoc.app.topAppModel.getWidgets();CODE
CRITICALapp/client/components/Forms/FormView.ts403 const userId = this.gristDoc.app.topAppModel.appObs.get()?.currentUser?.id || 0;CODE
CRITICALapp/client/widgets/FieldEditor.ts152 const app = this._gristDoc.app.topAppModel.appObs.get();CODE
CRITICALapp/client/widgets/DiscussionEditor.ts819 const currentUserAccess = this.props.gristDoc.docPageModel.currentDoc.get()?.access;CODE
CRITICALsandbox/grist/test_useractions.py1655 rules = self.engine.docmodel.columns.table.get_record(23).rulesCODE
CRITICALsandbox/grist/test_useractions.py1857 new_section = self.engine.docmodel.view_sections.table.get_record(result.retValues[0]['sectionRef'])CODE
CRITICALsandbox/grist/test_useractions.py1870 enabled_section = self.engine.docmodel.view_sections.table.get_record(result.retValues[0]['sectionRef'])CODE
CRITICALsandbox/grist/test_undo.py46 for r in self.engine.docmodel.tables.table.filter_records()], [CODE
CRITICALsandbox/grist/test_undo.py79 for r in self.engine.docmodel.tables.table.filter_records()], [CODE
CRITICALsandbox/grist/test_twoway_refs.py221 projects_table = self.engine.docmodel.tables.table.get_record(2)CODE
CRITICALsandbox/grist/test_rules.py38 rules = self.engine.docmodel.columns.table.get_record(col_id).rulesCODE
CRITICALsandbox/grist/test_rules.py44 rules = self.engine.docmodel.view_fields.table.get_record(field_id).rulesCODE
CRITICALsandbox/grist/test_rules.py50 rules = self.engine.docmodel.columns.table.get_record(col_id).rulesCODE
CRITICALsandbox/grist/test_rules.py55 rules = self.engine.docmodel.view_fields.table.get_record(field_id).rulesCODE
Self-Referential Comments46 hits · 147 pts
SeverityFileLineSnippetContext
MEDIUM…t-traefik-oidc-auth/configs/authelia/configuration.yml7## This file is an edited version to support Grist as an OIDC client ##COMMENT
MEDIUMsandbox/gvisor/update_engine_checkpoint.sh3# Create a checkpoint of a gvisor sandbox. It is best to make theCOMMENT
MEDIUMsandbox/grist/test_sort_key.py45 # Create a simple table (People) with a couple records.COMMENT
MEDIUMsandbox/grist/test_sort_key.py52 # Create a separate table that does a lookup in the People table.COMMENT
MEDIUMsandbox/grist/test_dropdown_condition_renames.py65 # Create a similar column with an invalid dropdown condition formula.COMMENT
MEDIUMsandbox/grist/test_dropdown_condition_renames.py162 # Create a column with None for widget options. Just a presence of such a column was causingCOMMENT
MEDIUMsandbox/grist/useractions.py914 # Create a patch and append to the list for this col_rec.COMMENT
MEDIUMsandbox/grist/useractions.py2199 # Create a primary viewCOMMENT
MEDIUMsandbox/grist/useractions.py2498 # Create the raw view for the new table, with a field for each column.COMMENT
MEDIUMsandbox/grist/test_table_data_set.py16 # Create a test_* method for each case in testscript, which runs `self._run_test_body()`.COMMENT
MEDIUMsandbox/grist/lookup.py315 # Create a key in the index for every combination of values in columnsCOMMENT
MEDIUMsandbox/grist/test_useractions.py141 # Create a view + section for the initial table.COMMENT
MEDIUMsandbox/grist/test_useractions.py151 # Create a new section for the same view, check that only a section is added.COMMENT
MEDIUMsandbox/grist/test_useractions.py1461 # Create a new table which automatically gets a raw view sectionCOMMENT
MEDIUMsandbox/grist/test_useractions.py1617 # Create a new table, Table1, and populate it with some data.COMMENT
MEDIUMsandbox/grist/test_summary_choicelist.py47 # Create a summary section, grouped by the "choices1" column.COMMENT
MEDIUMsandbox/grist/test_summary_choicelist.py340 # Create a summary section, grouped by the "choices1" column.COMMENT
MEDIUMsandbox/grist/test_summary_choicelist.py379 # Create a summary section, grouped by both choicelist columns.COMMENT
MEDIUMsandbox/grist/summary.py399 # Create the new table.COMMENT
MEDIUMsandbox/grist/test_summary2.py1207 # Create a summary of the detached table (tableRef 3) by state (colRef 21).COMMENT
MEDIUMsandbox/grist/engine.py208 # Create the formula tracer that can be overridden to trace formula evaluations. It is calledCOMMENT
MEDIUMsandbox/grist/engine.py212 # Create the object that knows how to interpret UserActions.COMMENT
MEDIUMsandbox/grist/engine.py215 # Create the object that knows how to interpret UserActions.COMMENT
MEDIUMsandbox/grist/engine.py360 # Create the new records.COMMENT
MEDIUMsandbox/grist/test_renames2.py22 # Create a schema with several tables including some references and lookups.COMMENT
MEDIUMsandbox/grist/timing.py51 # Create a marks array for the last node or append to the existing one.COMMENT
MEDIUMsandbox/grist/test_display_cols.py280 # Create a display column.COMMENT
MEDIUMsandbox/grist/test_table_actions.py355 # Create a summary table of People grouped by address (a reference column).COMMENT
MEDIUMsandbox/grist/test_lookup_find.py188 # Create a simple table (People) with a couple records.COMMENT
MEDIUMsandbox/grist/test_lookup_find.py195 # Create a separate table that does a lookup in the People table.COMMENT
MEDIUMsandbox/grist/migrations.py561 # Create the ACL table AND also the default ACL groups, default resource, and the default rule.COMMENT
MEDIUMsandbox/grist/test_trigger_expression.py188 # Create a table so the trigger has a valid tableRef.COMMENT
MEDIUMsandbox/grist/test_trigger_expression.py285 # Create a table with columns for testsCOMMENT
MEDIUMsandbox/grist/test_summary.py86 # Create a view + section for the initial table.COMMENT
MEDIUMsandbox/grist/test_summary.py131 # Create a summary section, grouped by the "State" column.COMMENT
MEDIUMsandbox/grist/test_summary.py172 # Create a summary section grouped by two columns ("city" and "state").COMMENT
MEDIUMsandbox/grist/test_summary.py257 # Create a summary section grouped by two columns ("city" and "state").COMMENT
MEDIUMsandbox/grist/table.py292 # Create a type with a property for each column. We use property-methods rather thanCOMMENT
MEDIUMsandbox/grist/table.py397 # Create a row in the summary table for every combination of values inCOMMENT
MEDIUMsandbox/grist/test_summary_undo.py32 # Create a summary section, grouped by the "State" column.COMMENT
MEDIUMsandbox/grist/test_derived.py59 # Create a derived table summarizing count and total of orders by year.COMMENT
MEDIUMsandbox/grist/test_derived.py195 # Create a summary on the Customers table. Adding orders involves a lookup for each customer.COMMENT
MEDIUMsandbox/grist/test_derived.py206 # # Create the same summary on the Orders table, looking up 'state' via the Customer reference.COMMENT
MEDIUMsandbox/grist/test_derived.py265 # Create a summary table summarizing count and total of orders by year.COMMENT
MEDIUMsandbox/grist/test_completion.py46 # Create a summary table of Students grouped by schoolCOMMENT
MEDIUMsandbox/grist/functions/date.py735 # This function is actually completely crazy. The rules are strange too. We'll follow the logicCOMMENT
Over-Commented Block161 hits · 136 pts
SeverityFileLineSnippetContext
LOWbuildtools/webpack.config.js41 // Workaround for a known issue with webpack + onerror under chrome, see:COMMENT
LOWbuildtools/update_schema.sh1#!/usr/bin/env bashCOMMENT
LOWbuildtools/install_edition.sh1#!/usr/bin/env bashCOMMENT
LOWapp/plugin/grist-plugin-api.ts1// Provide a way to access grist for iframe, web worker (which runs the main safeBrowser script) andCOMMENT
LOWapp/server/lib/PermissionInfo.ts241 // - partial permissions are merged, so denySome + deny = deny, and allowSome + allow = allow.COMMENT
LOWapp/server/lib/runSQLQuery.ts61 // The underlying SQLite functions used will only process theCOMMENT
LOWapp/server/lib/DocManager.ts381 // If opening in (pre-)fork mode, check if it is appropriate to treat the user asCOMMENT
LOWapp/server/lib/dbUtils.ts81 // share the database connection. This saves locking troubleCOMMENT
LOWapp/server/lib/ExternalStorage.ts41 // Upload content from file to the given key. Returns a snapshotId if store supports that.COMMENT
LOWapp/server/lib/GranularAccess.ts981 // retaining only permitted material.COMMENT
LOWapp/server/lib/GranularAccess.ts1481 // we've hit something unexpected - perhaps a UserAction has been addedCOMMENT
LOWapp/server/lib/GranularAccess.ts2081 await this._getAccess(docSession); // Makes sure user attrs have actually been computed.COMMENT
LOWapp/server/lib/GranularAccess.ts2281 if (applied) {COMMENT
LOWapp/server/lib/WebhookQueue.ts121export class WebhookQueue implements ActionQueue<WebhookActionPayload> {COMMENT
LOWapp/server/lib/SQLiteDB.ts101// in the 'create' function, and added as new entries in the 'migrations' array. ExistingCOMMENT
LOWapp/server/lib/FlexServer.ts1281 await this._dbManager.updateUser(user.id, { isFirstTimeUser: false });COMMENT
LOWapp/server/lib/FlexServer.ts2461 // Get access to the clients of this document. This has the sideCOMMENT
LOWapp/server/lib/FlexServer.ts2861 // Then, there was a complicated issue:COMMENT
LOWapp/server/lib/SandboxPyodide.ts41 // personally and disruption in the name of security could seem unreasonable.COMMENT
LOWapp/server/lib/DocStorage.ts521 if (affinity === "TEXT" || affinity === "BLOB") { return val; }COMMENT
LOWapp/server/lib/DocStorage.ts721 // including generating unwanted extra files that can be tricky to deal with in renaming, etcCOMMENT
LOWapp/server/lib/Authorizer.ts441 // Modify request session object to link the current org with our choice ofCOMMENT
LOWapp/server/lib/Triggers.ts101COMMENT
LOWapp/server/lib/workerExporter.ts281// which under Electron will deal fine with Electron's ASARCOMMENT
LOWapp/server/lib/ICreate.ts41// to hijack a session to only guessing the session ID (asCOMMENT
LOWapp/common/BillingAPI.ts81 tiers: ILimitTier[];COMMENT
LOWapp/common/BillingAPI.ts101 // The next total in cents that Stripe is going to charge (includes tax and discount).COMMENT
LOWapp/common/LinkNode.ts261 }COMMENT
LOWapp/gen-server/lib/TypeORMPatches.ts1// This contains two TypeORM patches.COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts2481 // TODO: Consider updating to traverse through the doc groups and their nested groups forCOMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts2521 const doc = await this._loadDocAccess({ ...scope, urlId: trunkId }, Permissions.VIEW);COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts4641 if (moveTo) {COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts4721 // Normalize query results in the following ways:COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts4881 const idColumn = resType.slice(0, -1) + "_id";COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts4901COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts4961 }COMMENT
LOW…erver/migration/1764872085347-OAuthClientsAndGrants.ts21 // Core client properties.COMMENT
LOWapp/client/apiconsole.ts161 }COMMENT
LOWapp/client/apiconsole.ts301COMMENT
LOWapp/client/ui/UserItem.ts1import { colors, theme, vars } from "app/client/ui2018/cssVars";COMMENT
LOWapp/client/models/errors.ts81 return reportMessage(msg, { level: "success", ...options });COMMENT
LOWapp/client/models/ViewFieldConfig.ts41 // Make extra sure that field and column is not disposed, most of the knockoutCOMMENT
LOWapp/client/models/entities/ViewSectionRec.ts101// a grid section and a chart section).COMMENT
LOWapp/client/components/UndoStack.ts141 if (!ag) { return; }COMMENT
LOWapp/client/components/Printing.ts41 // continue on to trying to print from outside, which should work OK for a single page.COMMENT
LOWapp/client/components/RecordLayout.js1/**COMMENT
LOWapp/client/components/TypeConversion.ts121 if (isReferenceCol(origCol)) {COMMENT
LOWapp/client/components/LinkingState.ts41COMMENT
LOWapp/client/components/LinkingState.ts121 // If srcCol is the empty col, is a row->col filter (i.e. id -> tgtCol)COMMENT
LOWapp/client/components/LinkingState.ts181COMMENT
LOWapp/client/components/LinkingState.ts201 //COMMENT
LOWapp/client/components/LinkingState.ts221 // (i.e. two sections back) instead of looking at our srcSection's activeRowId. This way it doesn't matter howCOMMENT
LOWapp/client/components/LinkingState.ts241 // Once the incomingCursorPos-es are determined correctly, the cursorPos-es just need to pull out the rowId,COMMENT
LOWapp/client/components/LinkingState.ts381 // or null if the rowId is "new"COMMENT
LOWapp/client/components/LinkingState.ts461 // ==== Determine operation to use for filter ====COMMENT
LOWapp/client/components/LinkingState.ts481COMMENT
LOWapp/client/components/LayoutTray.ts621 // The content of the leaf that is rendered. Stored in an observable so that we can update it when theCOMMENT
LOWapp/client/components/GridView.ts281 // helper for clarityCOMMENT
LOWapp/client/components/GridView.ts301 // Final check - we actually don't want to haveCOMMENT
LOWapp/client/components/GridView.ts1601 // when implementing selection and cell editor.COMMENT
101 more matches not shown…
Fake / Example Data44 hits · 50 pts
SeverityFileLineSnippetContext
LOWstorybook/authenticationSection.stories.ts16 adminEmail: "admin@example.com",CODE
LOWapp/client/ui/RightPanel.ts1077 dom.prop("placeholder", use => use(field.displayLabel) || use(field.colId)),CODE
LOWapp/client/ui/ColumnFilterMenu.ts228 "placeholder": t("Search values"),CODE
LOWapp/client/ui/searchDropdown.ts146 "placeholder": this._options.placeholder || t("Search"),CODE
LOWapp/client/ui/SetupCard.ts37 * dom("span", "Installation admin:", dom("strong", "admin@example.com")),COMMENT
LOWapp/client/ui/DescriptionConfig.ts137 dom.prop("placeholder", options.placeholder || ""),CODE
LOWapp/client/ui2018/search.ts221 "placeholder": t("Search in document"),CODE
LOWapp/client/widgets/NumericSpinner.ts70 defaultValue !== undefined ? dom.prop("placeholder", defaultValue) : null,CODE
LOWapp/client/widgets/TextEditor.js46 kd.attr("placeholder", options.placeholder || ""),CODE
LOWapp/client/widgets/DateTimeEditor.ts68 dom.attr("placeholder", placeholder),CODE
LOWapp/client/widgets/DateEditor.ts47 this.textInput.setAttribute("placeholder", placeholder);CODE
LOWapp/client/widgets/HyperLinkEditor.ts14 this.textInput.setAttribute("placeholder", t("[link label] url"));CODE
LOWapp/client/widgets/Assistant.ts309 dom.prop("placeholder", (use) => {CODE
LOWtest/projects/filterUtils.ts64 (await bound.find("input").getAttribute("placeholder")).trim();CODE
LOWtest/server/lib/OIDCConfig.ts451 email: "fake-email",CODE
LOWtest/server/lib/OIDCConfig.ts452 name: "fake-name",CODE
LOWtest/server/lib/OIDCConfig.ts640 email: "fake-email",CODE
LOWtest/server/lib/OIDCConfig.ts675 email: "fake-email",CODE
LOWtest/server/lib/OIDCConfig.ts676 name: "fake-name",CODE
LOWtest/server/lib/OIDCConfig.ts691 email: "fake-email",CODE
LOWtest/server/lib/OIDCConfig.ts692 name: "fake-name",CODE
LOWtest/server/lib/OIDCConfig.ts707 email: "fake-email",CODE
LOWtest/server/lib/OIDCConfig.ts708 name: "fake-name",CODE
LOWtest/server/lib/OIDCConfig.ts754 token_type: "fake-token-type",CODE
LOWtest/server/lib/docapi/DocApiWebhooks.ts1554 await check({ authorization: "Bearer fake-token" }, 200);CODE
LOWtest/client/lib/textUtils.ts26 check("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOWtest/client/lib/textUtils.ts26 check("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOWtest/client/lib/textUtils.ts34 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOWtest/client/lib/textUtils.ts34 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOWtest/client/lib/textUtils.ts40 "Nullam dictum felis eu pede mollis pretium. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOWtest/client/lib/textUtils.ts40 "Nullam dictum felis eu pede mollis pretium. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOWtest/client/lib/ACIndex.ts281 const acIndex = new ACIndexImpl(["Lorem ipsum 𝌆 dolor sit ameͨ͆t.", "mañana", "Москва"].map(makeItem), {CODE
LOWtest/client/lib/ACIndex.ts286 [["", "Моск", "ва"], ["", "mañ", "ana"], ["Lorem ipsum 𝌆 dolor sit ", "am", "eͨ͆t."]]);CODE
LOWtest/client/lib/ACIndex.ts294 ["Lorem ipsum 𝌆 dolor sit ", original, "t."]);CODE
LOWtest/nbrowser/ProposedChangesPage.ts1810 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do " +CODE
LOWtest/nbrowser/ProposedChangesPage.ts1810 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do " +CODE
LOWtest/nbrowser/AirtableImport.ts843 Name: "Acme Corp",CODE
LOWtest/nbrowser/BootPage.ts257 await driver.find(".test-boot-page-email-input").doClear().sendKeys("admin@example.com");CODE
LOWtest/nbrowser/BootPage.ts262 assert.deepEqual({ name, email }, { name: "admin", email: "admin@example.com" });CODE
LOWtest/nbrowser/RowHeights.ts65 assert.equal(await driver.find(".test-row-height-max input").getAttribute("placeholder"), "auto");CODE
LOW…-traefik-basic-auth/configs/traefik-dynamic-config.yml12 # The default username is "test@example.org". The default password is "test".COMMENT
LOW…-traefik-oidc-auth/configs/authelia/users_database.yml13 email: 'test@example.org'CODE
LOWsandbox/grist/functions/info.py287 >>> ISEMAIL("John Doe")CODE
LOWsandbox/grist/functions/info.py298 >>> ISEMAIL("foo@bar.com") # True, TrueCODE
AI Slop Vocabulary19 hits · 46 pts
SeverityFileLineSnippetContext
MEDIUMapp/server/lib/BrowserSession.ts114// - "S": the user is signed in once; in this case an automatic signin can be unambiguous and seamless.COMMENT
MEDIUMapp/server/lib/ConfigBackendAPI.ts81 // providers, be more nuanced about setting this.COMMENT
MEDIUMapp/server/lib/GranularAccess.ts96// Actions that won't be allowed (yet) for a user with nuanced access to a document.COMMENT
MEDIUMapp/server/lib/GranularAccess.ts1501 // There might be uses for applying AddOrUpdateRecord in a nuancedCOMMENT
MEDIUMapp/server/lib/FlexServer.ts215 // This can be called to do a redirect to signin/signup in a nuanced situation.COMMENT
MEDIUMapp/server/lib/Client.ts334 // We have all the needed messages (possibly an empty array); can do a seamless reconnect.COMMENT
MEDIUMapp/server/lib/ActiveDoc.ts2569 this._fetchCache.clear(); // This could be more nuanced.CODE
MEDIUMapp/client/ui/HomeLeftPane.ts109 // be a bit more nuanced here, but as of today the menu isn't particularly usefulCOMMENT
MEDIUMapp/client/components/GristWSConnection.ts139 // 0. We keep track of them to allow for seamless reconnects.COMMENT
MEDIUMtest/common/NumberFormat.ts10 // useGrouping became more nuanced in recent node.COMMENT
MEDIUMtest/nbrowser/QuickSetupAuth.ts58 // provider row with a Configure button. Handle both so the helper is robustCOMMENT
MEDIUMsandbox/docker_entrypoint.sh11# Try to setup permissions and de-elevate to a normal user.COMMENT
LOWsandbox/grist/test_lookup_perf.py91 # Otherwise, we could just use statistics.linear_regression()COMMENT
MEDIUMsandbox/grist/testscript.json95 // Essentially a duplicate of the UserAction, but as a DocAction.COMMENT
LOWsandbox/grist/useractions.py2531 # TODO: Deprecated; should just use RemoveRecord('_grist_Views', view_id)COMMENT
LOWsandbox/grist/useractions.py2560 # TODO: Deprecated; should just use RemoveRecord('_grist_Views_section', view_id)COMMENT
LOWsandbox/grist/summary.py49 # not a valid json string, i.e. in tests), just return the original updates.COMMENT
MEDIUMsandbox/grist/functions/text.py731 # This is not particularly robust, but makes an attempt to handle a number of cases: numbers,STRING
LOW.github/workflows/docker_latest.yml7 # personal access tokens so we just use a cron job.COMMENT
Excessive Try-Catch Wrapping42 hits · 46 pts
SeverityFileLineSnippetContext
LOWsandbox/grist/test_lookup_perf.py14 except Exception as e:CODE
LOWsandbox/grist/test_engine.py473 except Exception as e:CODE
LOWsandbox/grist/test_table_data_set.py99 except Exception as e:CODE
LOWsandbox/grist/autocomplete_context.py24 except Exception as e:CODE
LOWsandbox/grist/autocomplete_context.py198 except Exception:CODE
LOWsandbox/grist/autocomplete_context.py239 except Exception:CODE
MEDIUMsandbox/grist/autocomplete_context.py21def is_grist_func(func):CODE
MEDIUMsandbox/grist/autocomplete_context.py236def repr_example(x):CODE
LOWsandbox/grist/sandbox.py149 except Exception as e:CODE
LOWsandbox/grist/summary.py134 except Exception:CODE
LOWsandbox/grist/engine.py1328 except Exception as e:CODE
LOWsandbox/grist/engine.py1342 except Exception:CODE
LOWsandbox/grist/engine.py1396 except Exception:CODE
LOWsandbox/grist/engine.py1405 except Exception:CODE
LOWsandbox/grist/acl.py104 except Exception as e:CODE
LOWsandbox/grist/acl.py140 except Exception as e:CODE
LOWsandbox/grist/migrations.py58 except Exception:CODE
LOWsandbox/grist/migrations.py508 except Exception:CODE
LOWsandbox/grist/migrations.py655 except Exception:CODE
LOWsandbox/grist/parse_data.py42 except Exception:CODE
LOWsandbox/grist/parse_data.py208 except Exception:CODE
MEDIUMsandbox/grist/parse_data.py38def test(cls, value):CODE
LOWsandbox/grist/table_data_set.py32 except Exception as e:CODE
MEDIUMsandbox/grist/table_data_set.py29def apply_doc_action(self, action):CODE
LOWsandbox/grist/usertypes.py169 except Exception as e:CODE
LOWsandbox/grist/usertypes.py173 except Exception:CODE
LOWsandbox/grist/usertypes.py370 except Exception:CODE
LOWsandbox/grist/usertypes.py389 except Exception:CODE
LOWsandbox/grist/usertypes.py496 except Exception:CODE
LOWsandbox/grist/column.py402 except Exception:CODE
LOWsandbox/grist/column.py613 except Exception:CODE
LOWsandbox/grist/attribute_recorder.py57 except Exception:CODE
MEDIUMsandbox/grist/attribute_recorder.py54def safe_repr(x):CODE
LOWsandbox/grist/objtypes.py135 except Exception:CODE
LOWsandbox/grist/objtypes.py144 except Exception:CODE
LOWsandbox/grist/objtypes.py216 except Exception as e:CODE
LOWsandbox/grist/objtypes.py256 except Exception as e:CODE
LOWsandbox/grist/imports/import_csv.py99 except Exception as e:CODE
LOWsandbox/grist/functions/math.py895 except Exception:CODE
LOWsandbox/grist/functions/info.py592 except Exception:STRING
LOWsandbox/grist/functions/info.py630 except Exception as e:STRING
LOWsandbox/grist/functions/info.py651 except Exception:STRING
Synthetic Comment Markers6 hits · 45 pts
SeverityFileLineSnippetContext
HIGHapp/client/components/GristDoc.ts288 // One of the section can be expanded (as requested from the Layout), we willCOMMENT
HIGHapp/client/components/Layout.ts242 // Normally, we just add a sibling as requested.COMMENT
HIGHtest/gen-server/lib/scrubUserFromOrg.ts427 // user2's access should be changed just as requestedCOMMENT
HIGHtest/gen-server/lib/scrubUserFromOrg.ts449 // user2's access should be changed just as requestedCOMMENT
HIGHsandbox/grist/test_useractions.py1600 # Actually testing that the time is updated as requestedCOMMENT
HIGHsandbox/grist/table.py31 # UserTables are only created in auto-generated code by using UserTable as decorator for a tableCOMMENT
Unused Imports43 hits · 43 pts
SeverityFileLineSnippetContext
LOWsandbox/grist/test_predicate_formula.py5CODE
LOWsandbox/grist/test_replay.py39CODE
LOWsandbox/grist/test_renames.py416CODE
LOWsandbox/grist/xmlrunner.py10CODE
LOWsandbox/grist/test_prevnext.py5CODE
LOWsandbox/grist/test_codebuilder.py2CODE
LOWsandbox/grist/engine.py41CODE
LOWsandbox/grist/test_renames2.py2CODE
LOWsandbox/grist/test_lookup_find.py3CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py8CODE
LOWsandbox/grist/grist.py10CODE
LOWsandbox/grist/grist.py10CODE
LOWsandbox/grist/grist.py10CODE
LOWsandbox/grist/grist.py10CODE
LOWsandbox/grist/grist.py10CODE
LOWsandbox/grist/grist.py13CODE
LOWsandbox/grist/runtests.py11CODE
LOWsandbox/grist/functions/logical.py2CODE
LOWsandbox/grist/functions/__init__.py2CODE
LOWsandbox/grist/functions/__init__.py3CODE
LOWsandbox/grist/functions/__init__.py4CODE
LOWsandbox/grist/functions/__init__.py5CODE
LOWsandbox/grist/functions/__init__.py6CODE
LOWsandbox/grist/functions/__init__.py7CODE
LOWsandbox/grist/functions/__init__.py8CODE
LOWsandbox/grist/functions/__init__.py9CODE
LOWsandbox/grist/functions/__init__.py10CODE
LOWsandbox/grist/functions/stats.py6CODE
LOWsandbox/grist/functions/math.py3CODE
LOWsandbox/grist/functions/info.py4CODE
Deep Nesting47 hits · 42 pts
SeverityFileLineSnippetContext
LOWsandbox/grist/test_replay.py63CODE
LOWsandbox/grist/test_engine.py446CODE
LOWsandbox/grist/useractions.py651CODE
LOWsandbox/grist/useractions.py729CODE
LOWsandbox/grist/useractions.py859CODE
LOWsandbox/grist/useractions.py1078CODE
LOWsandbox/grist/test_table_data_set.py72CODE
LOWsandbox/grist/test_table_data_set.py118CODE
LOWsandbox/grist/codebuilder.py87CODE
LOWsandbox/grist/codebuilder.py514CODE
LOWsandbox/grist/lookup.py314CODE
LOWsandbox/grist/formula_prompt.py17CODE
LOWsandbox/grist/formula_prompt.py54CODE
LOWsandbox/grist/formula_prompt.py89CODE
LOWsandbox/grist/actions.py194CODE
LOWsandbox/grist/trigger_expression.py23CODE
LOWsandbox/grist/test_migrations.py8CODE
LOWsandbox/grist/engine.py379CODE
LOWsandbox/grist/engine.py568CODE
LOWsandbox/grist/engine.py760CODE
LOWsandbox/grist/engine.py946CODE
LOWsandbox/grist/engine.py1211CODE
LOWsandbox/grist/acl.py84CODE
LOWsandbox/grist/acl.py113CODE
LOWsandbox/grist/import_actions.py71CODE
LOWsandbox/grist/import_actions.py119CODE
LOWsandbox/grist/import_actions.py182CODE
LOWsandbox/grist/migrations.py481CODE
LOWsandbox/grist/depend.py124CODE
LOWsandbox/grist/table.py373CODE
LOWsandbox/grist/table.py396CODE
LOWsandbox/grist/usertypes.py183CODE
LOWsandbox/grist/usertypes.py302CODE
LOWsandbox/grist/usertypes.py334CODE
LOWsandbox/grist/usertypes.py362CODE
LOWsandbox/grist/usertypes.py476CODE
LOWsandbox/grist/column.py589CODE
LOWsandbox/grist/objtypes.py163CODE
LOWsandbox/grist/objtypes.py222CODE
LOWsandbox/grist/imports/import_json.py151CODE
LOWsandbox/grist/imports/import_xls.py42CODE
LOWsandbox/grist/functions/schedule.py221CODE
LOWsandbox/grist/functions/info.py599CODE
LOWsandbox/grist/functions/info.py663CODE
LOWsandbox/grist/functions/date.py14CODE
LOWsandbox/grist/functions/date.py193CODE
LOWsandbox/grist/functions/date.py644CODE
Cross-Language Confusion (JS/TS)5 hits · 28 pts
SeverityFileLineSnippetContext
HIGHapp/server/lib/Triggers.ts571 // as a class that overrides __bool__ to return False, but still allows field access without errors.COMMENT
HIGHapp/client/ui/GridViewMenusDateHelpers.ts76 TIME_BUCKET: "if not $Column:\n return None\n" +CODE
HIGHapp/client/widgets/ConditionalStyle.ts148 t("Rule must return True or False"));CODE
HIGHtest/nbrowser/GridViewNewColumnMenuDateHelpers.ts247 formula: "if not $EventDate:\n return None\n" +CODE
HIGHtest/nbrowser/Formulas.ts191 return NoneCODE
Redundant / Tautological Comments11 hits · 16 pts
SeverityFileLineSnippetContext
LOWbuildtools/update_type_info.sh24 # Check if source file existsCOMMENT
LOWbuildtools/update_type_info.sh29 # Check if source file is newer than the type info file or force flag is setCOMMENT
LOWsandbox/gvisor/get_checkpoint_path.sh33 # Check if a trivial command works under gvisor with the proposed flags.COMMENT
LOWsandbox/grist/useractions.py908 # Check if we are seeing a mention of a column that's getting renamed.COMMENT
LOWsandbox/grist/engine.py653 # Check if any potentially unused LookupMaps are still unused, and if so, delete them.COMMENT
LOWsandbox/grist/engine.py1167 # Set flag to rebuild dependencies of trigger columns after any potential renames, etc.COMMENT
LOWsandbox/grist/engine.py1530 # Check if out_actions ActionObj grew at all since _get_undo_checkpoint(). If yes, revert byCOMMENT
LOWsandbox/grist/migrations.py511 # Set formula to use the current visibleCol in widgetOptions.COMMENT
LOWsandbox/grist/table.py756 # Check if col_id is in the immediate dictionary of self.Record[Set]; if missing, or inheritedCOMMENT
LOWsandbox/grist/table.py782 # Check if 'id' is mentioned explicitly. If so, then no fallback to 'manualSort', or anythingCOMMENT
LOWsandbox/grist/functions/date.py921 # Check if the current date is a weekday (Monday=0, Sunday=6)COMMENT
Verbosity Indicators8 hits · 14 pts
SeverityFileLineSnippetContext
LOWapp/server/lib/NSandbox.ts712 // Step 1: Create a sandbox. If a flavor is given, create that exact flavor.COMMENT
LOWapp/server/lib/NSandbox.ts728 // Step 2: Run a simple Python call to check if the sandbox can execute code.COMMENT
LOWapp/server/lib/NSandbox.ts739 // Step 3: Stop the sandbox. If we get here, everything worked.COMMENT
LOWapp/common/NumberParse.ts238 // but for currencies we need to check if there are fewer decimal places than the default.COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts1081 // We need to check if the current user is disabled or not. InCOMMENT
LOWtest/nbrowser/gristUtils.ts4360 // Step 1: Set fixed size of the window to ensure consistent outer dimensions, and prevent maximizedCOMMENT
LOWtest/nbrowser/gristUtils.ts4364 // Step 2: Get outer vs inner differenceCOMMENT
LOWtest/nbrowser/gristUtils.ts4375 // Step 3: Set outer window size to match desired viewportCOMMENT
Slop Phrases7 hits · 13 pts
SeverityFileLineSnippetContext
MEDIUMapp/server/lib/SQLiteDB.ts5 * Here's a simple example,COMMENT
LOWapp/client/ui2018/stretchedLink.ts4 * Don't forget to apply the `position: relative` CSS property to the parent block you want the link to cover.COMMENT
LOWapp/client/components/BaseView.ts688 // Use document timezone. Don't forget to use uppercase HH for 24-hour time.COMMENT
LOWsandbox/grist/test_lookup_sort.py464 # (this is a way to check that we don't forget to clean up stale lookup helper columns).COMMENT
LOWsandbox/grist/test_lookup_sort.py464 # (this is a way to check that we don't forget to clean up stale lookup helper columns).COMMENT
MEDIUMsandbox/grist/records.py283 certain date, here is how you can do it old-style:STRING
LOWsandbox/pyodide/env.sh1# When you update this, make sure to update worker/package.json and worker/yarn.lock,COMMENT
Structural Annotation Overuse6 hits · 10 pts
SeverityFileLineSnippetContext
LOWapp/server/lib/NSandbox.ts712 // Step 1: Create a sandbox. If a flavor is given, create that exact flavor.COMMENT
LOWapp/server/lib/NSandbox.ts728 // Step 2: Run a simple Python call to check if the sandbox can execute code.COMMENT
LOWapp/server/lib/NSandbox.ts739 // Step 3: Stop the sandbox. If we get here, everything worked.COMMENT
LOWtest/nbrowser/gristUtils.ts4360 // Step 1: Set fixed size of the window to ensure consistent outer dimensions, and prevent maximizedCOMMENT
LOWtest/nbrowser/gristUtils.ts4364 // Step 2: Get outer vs inner differenceCOMMENT
LOWtest/nbrowser/gristUtils.ts4375 // Step 3: Set outer window size to match desired viewportCOMMENT
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHsandbox/grist/engine.py92# In this implementation, rows are identified by a row_id, which functions like an index, so thatCOMMENT
Cross-Language Confusion1 hit · 2 pts
SeverityFileLineSnippetContext
HIGHsandbox/grist/import_actions.py76 If dst_table is null, copy all src columnsSTRING
Overly Generic Function Names2 hits · 2 pts
SeverityFileLineSnippetContext
LOWtest/nbrowser/CustomView.ts892 async function getData(shown: number) {CODE
LOWsandbox/grist/test_completion.py161 def test_function(self):CODE
Modern Structural Boilerplate2 hits · 2 pts
SeverityFileLineSnippetContext
LOWsandbox/grist/functions/__init__.py13__all__ = [k for k in dir() if not k.startswith('_') and k.isupper()]CODE
LOWsandbox/grist/functions/schedule.py7__all__ = ['SCHEDULE']CODE
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWapp/server/lib/Authorizer.ts432 // TODO: implement userSelector for rest API, to allow "sticky" user selection on pages.COMMENT
AI Structural Patterns1 hit · 0 pts
SeverityFileLineSnippetContext
LOWsandbox/grist/useractions.py2494CODE