AI Slop Code Risk Monitor

gristlabs/grist-core

SlopCodeMonitor badge for gristlabs/grist-core Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Grist is the evolution of spreadsheets.

3.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for gristlabs/grist-core, a TypeScript project with 12,030 GitHub stars. SynthScan examined 559,568 lines of code across 2006 source files, recording 1175 pattern matches distributed across 23 syntactic categories. The legacy adjusted pattern signal is 3.4 (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.

3.4
Adjusted Signal
3.4
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
12.0K
Stars
TypeScript
Language
559.6K
Lines of Code
2.0K
Files
1.2K
Pattern Hits
2026-10-31
Scan Date
0.03
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 9.2/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 901 finding(s).

Hallucinated Dependency & Supply Chain Risk 3.4/100 · LOW

Are imports declared and package/API names verified? 117 finding(s).

Agent Over-Engineering Ratio 8.8/100 · LOW

Are wrappers, guards, and repeated structures necessary? 775 finding(s).

PR Review Velocity Impact 15.3/100 · LOW

Which changes need focused human review? 1175 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 24HIGH 30MEDIUM 157LOW 964

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 1175 distinct pattern matches across 23 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.

Hyper-Verbose Identifiers617 hits · 615 pts
SeverityFileLineSnippetContext
LOWapp/plugin/grist-plugin-api.ts275export async function testWaitForPendingRequests() {CODE
LOWapp/plugin/grist-plugin-api.ts605function getCssScrollbarProperties(appearance: "light" | "dark") {CODE
LOWapp/plugin/grist-plugin-api.ts618function getOrCreateStyleElement(id: string) {CODE
LOWapp/server/utils/pruneActionHistory.ts43export async function pruneActionHistoryFromConsole(argv: string[]): Promise<number> {CODE
LOWapp/server/lib/bootstrapFullEdition.ts120export function isExtFullEditionSupported(): boolean {CODE
LOWapp/server/lib/bootstrapFullEdition.ts320async function resolveExtensionsDownload(): Promise<{ url: string; sha256: string }> {CODE
LOWapp/server/lib/sessionUtils.ts98export function getDocSessionReadOnlyReason(docSession: OptDocSession): DocReadOnlyReason | null {CODE
LOWapp/server/lib/sessionUtils.ts126export 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.ts111export 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.ts30export function checkMinIOExternalStorage() {CODE
LOWapp/server/lib/OIDCConfig.ts152export function readOIDCConfigFromSettings(settings: AppSettings): OIDCConfig {CODE
LOW⚡app/server/lib/AttachmentStoreProvider.ts116async function isAttachmentStoreOptionAvailable(option: ICreateAttachmentStoreOptions) {CODE
LOW⚡app/server/lib/AttachmentStoreProvider.ts125function storeOptionIsNotUndefined(CODE
LOW⚡app/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.ts193export async function assertCompatibleSchemaIds(db: ISQLiteDB): Promise<void> {CODE
LOWapp/server/lib/serverUtils.ts214export function getSupportedEngineChoices(): EngineCode[] {CODE
LOWapp/server/lib/AssistantStatePermit.ts38export async function getAndRemoveAssistantStatePermit(CODE
LOWapp/server/lib/AssistantStatePermit.ts38export 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.ts147export 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/usageKeys.ts23export function billingMonthlyApiUsageKey(billingAccountId: number, m: moment.Moment) {CODE
LOWapp/server/lib/OAuth2Clients.ts382function renderEndFlowHtmlTemplate(payload: object, openerOrigin: string) {CODE
LOWapp/server/lib/sendAppPage.ts270function logVisitedPageTelemetryEvent(req: RequestWithLogin, options: LogVisitedPageEventOptions) {CODE
LOWapp/server/lib/sendAppPage.ts317function configuredPageTitleSuffix() {CODE
LOWapp/server/lib/sendAppPage.ts343function getPageMetadataHtmlSnippet(req: express.Request, config: GristLoadConfig): string {CODE
LOWapp/server/lib/DocWorkerUtils.ts170export async function getDocWorkerInfoOrSelfPrefix(CODE
LOWapp/server/lib/SetupRequestsEndpoints.ts56export function attachSetupRequestsEndpoints(CODE
LOWapp/server/lib/DocManager.ts730async function updateDocumentAttachmentStoreSettingToValidValue(fname: string, provider: IAttachmentStoreProvider) {CODE
LOWapp/server/lib/DocManager.ts747async function updateDocumentSettingsInPlace(CODE
LOWapp/server/lib/dbUtils.ts78export async function getOrCreateConnection(): Promise<DataSource> {CODE
LOWapp/server/lib/GranularAccess.ts90function isAddOrUpdateRecordAction([actionName]: UserAction): boolean {CODE
LOWapp/server/lib/GranularAccess.ts3409async function applyToActionsRecursively(actions: (DocAction | UserAction)[],CODE
LOWapp/server/lib/requestUtils.ts530export function clearSessionCacheIfNeeded(req: Request, options?: {CODE
LOWapp/server/lib/requestUtils.ts562export function getExtraAttachmentOptions(req: Request): {CODE
LOWapp/server/lib/requestUtils.ts672export function terminateSocketWithHttpResponse(CODE
LOWapp/server/lib/requestUtils.ts994export function insertProxiedToTestHeader(headers: http.IncomingHttpHeaders, target: string) {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.ts108export function getAnonPlaygroundEnabledSource(): AppSettingSource | undefined {CODE
LOWapp/server/lib/gristSettings.ts158export function getCanAnyoneCreateOrgsSource(): AppSettingSource | undefined {CODE
557 more matches not shown…
Decorative Section Separators92 hits · 285 pts
SeverityFileLineSnippetContext
MEDIUMsandbox/grist/test_engine.py413 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_engine.py415 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_engine.py443 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_engine.py445 #----------------------------------------------------------------------COMMENT
MEDIUM⚡sandbox/grist/useractions.py2619 #----------------------------------------COMMENT
MEDIUM⚡sandbox/grist/useractions.py2621 #----------------------------------------COMMENT
MEDIUM⚡sandbox/grist/useractions.py2648 #--------------------------------------------------------------------------------COMMENT
MEDIUM⚡sandbox/grist/useractions.py2650 #--------------------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py381 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py383 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py457 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py459 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py583 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py585 # ----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py1319 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py1321 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py1630 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py1632 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2188 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2190 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2563 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2565 #----------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2695 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/useractions.py2697 #----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/codebuilder.py283#----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/codebuilder.py523#----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/test_lookups.py29 #----------------------------------------COMMENT
MEDIUMsandbox/grist/test_lookups.py79 #----------------------------------------COMMENT
MEDIUMsandbox/grist/test_lookups.py102 #----------------------------------------COMMENT
MEDIUMsandbox/grist/test_lookups.py151 #----------------------------------------COMMENT
MEDIUMsandbox/grist/test_lookups.py172 #----------------------------------------COMMENT
MEDIUMsandbox/grist/lookup.py196#----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/lookup.py273#----------------------------------------------------------------------COMMENT
MEDIUMsandbox/grist/lookup.py566#----------------------------------------------------------------------COMMENT
MEDIUM⚡sandbox/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
MEDIUM⚡sandbox/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
MEDIUM⚡sandbox/grist/test_summary.py68 #----------------------------------------------------------------------COMMENT
32 more matches not shown…
Hallucination Indicators24 hits · 260 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.ts440 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.ts62 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.ts682 const fieldsIds = this._doc.docModel.viewFields.tableData.filterRowIds(CODE
CRITICALapp/client/components/VirtualDoc.ts831 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.ts307 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.ts154 const app = this._gristDoc.app.topAppModel.appObs.get();CODE
CRITICALapp/client/widgets/DiscussionEditor.ts822 const currentUserAccess = this.props.gristDoc.docPageModel.currentDoc.get()?.access;CODE
CRITICALtest/nbrowser/CalendarView.ts643 const col = window.gristCalendarView._view.viewSection.columns.peek()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
CRITICAL⚡sandbox/grist/test_rules.py38 rules = self.engine.docmodel.columns.table.get_record(col_id).rulesCODE
CRITICAL⚡sandbox/grist/test_rules.py44 rules = self.engine.docmodel.view_fields.table.get_record(field_id).rulesCODE
CRITICAL⚡sandbox/grist/test_rules.py50 rules = self.engine.docmodel.columns.table.get_record(col_id).rulesCODE
CRITICAL⚡sandbox/grist/test_rules.py55 rules = self.engine.docmodel.view_fields.table.get_record(field_id).rulesCODE
Self-Referential Comments44 hits · 141 pts
SeverityFileLineSnippetContext
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.py989 # Create a patch and append to the list for this col_rec.COMMENT
MEDIUMsandbox/grist/useractions.py2278 # Create a primary viewCOMMENT
MEDIUMsandbox/grist/useractions.py2577 # 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.py373 # Create a key in the index for every combination of values in columnsCOMMENT
MEDIUM⚡sandbox/grist/test_useractions.py141 # Create a view + section for the initial table.COMMENT
MEDIUM⚡sandbox/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
MEDIUM⚡sandbox/grist/test_summary_choicelist.py47 # Create a summary section, grouped by the "choices1" column.COMMENT
MEDIUMsandbox/grist/test_summary_choicelist.py332 # Create a summary section, grouped by the "choices1" column.COMMENT
MEDIUMsandbox/grist/test_summary_choicelist.py371 # 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
MEDIUM⚡sandbox/grist/engine.py210 # Create the formula tracer that can be overridden to trace formula evaluations. It is calledCOMMENT
MEDIUM⚡sandbox/grist/engine.py214 # Create the object that knows how to interpret UserActions.COMMENT
MEDIUM⚡sandbox/grist/engine.py217 # Create the object that knows how to interpret UserActions.COMMENT
MEDIUMsandbox/grist/engine.py363 # 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
MEDIUM⚡sandbox/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.py303 # Create a type with a property for each column. We use property-methods rather thanCOMMENT
MEDIUMsandbox/grist/test_summary_undo.py33 # 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.py194 # Create a summary on the Customers table. Adding orders involves a lookup for each customer.COMMENT
MEDIUMsandbox/grist/test_derived.py205 # # Create the same summary on the Orders table, looking up 'state' via the Customer reference.COMMENT
MEDIUMsandbox/grist/test_derived.py264 # Create a summary table summarizing count and total of orders by year.COMMENT
MEDIUMsandbox/grist/test_completion.py47 # Create a summary table of Students grouped by schoolCOMMENT
MEDIUMsandbox/grist/functions/date.py794 # This function is actually completely crazy. The rules are strange too. We'll follow the logicCOMMENT
Over-Commented Block130 hits · 129 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/publish-grist-full-edition.sh1#!/usr/bin/env bashCOMMENT
LOWbuildtools/publish-grist-full-edition.sh21# LABEL - Human-friendly label (e.g. v1.7.8, latest-<commit>). See LABEL below.COMMENT
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.ts261 // can't read. Schema permissions are not row dependent.COMMENT
LOWapp/server/lib/runSQLQuery.ts61 // The underlying SQLite functions used will only process theCOMMENT
LOWapp/server/lib/DocWorkerIdentity.ts81 // The port the socket ended up on. Read late by the caller, since with port 0 the real port isCOMMENT
LOWapp/server/lib/DocManager.ts321COMMENT
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.ts1521 // with actions other than other AddOrUpdateRecords, or simple dataCOMMENT
LOWapp/server/lib/GranularAccess.ts2141 const userAttrAfter = this._getUserAttributes(docSession);COMMENT
LOWapp/server/lib/GranularAccess.ts2341 // Apply the undo actions, since the docActions have already been applied to the db.COMMENT
LOWapp/server/lib/WebhookQueue.ts121export class WebhookQueue implements ActionQueue<WebhookActionPayload> {COMMENT
LOWapp/server/lib/RestartShell.ts61COMMENT
LOWapp/server/lib/SQLiteDB.ts101// in the 'create' function, and added as new entries in the 'migrations' array. ExistingCOMMENT
LOWapp/server/lib/FlexServer.ts3041 // which meant that the Grist server's keepAlive timeout should beCOMMENT
LOWapp/server/lib/Client.ts241 * Sends a message to the client, queuing it up on failure or if the client is disconnected.COMMENT
LOWapp/server/lib/Client.ts281 try {COMMENT
LOWapp/server/lib/SandboxPyodide.ts41 // personally and disruption in the name of security could seem unreasonable.COMMENT
LOWapp/server/lib/DocStorage.ts541 // With an INTEGER, NUMERIC, or REAL affinity, we need to be careful sinceCOMMENT
LOWapp/server/lib/DocStorage.ts741 // the options for WAL are commented outCOMMENT
LOWapp/server/lib/ActiveDoc.ts521COMMENT
LOWapp/server/lib/Triggers.ts101COMMENT
LOWapp/server/lib/workerExporter.ts281COMMENT
LOWapp/server/lib/ICreate.ts41// protection passed on to expressjs-session for security whenCOMMENT
LOWapp/server/lib/Sharing.ts281 // We have some extra actions, so we need to prepare a fake bundle (only with the extra actions) andCOMMENT
LOWapp/common/BillingAPI.ts81 plans: IBillingPlan[];COMMENT
LOWapp/common/BillingAPI.ts101 userCount: number;COMMENT
LOWapp/common/LinkNode.ts261 return false;COMMENT
LOWapp/common/ACLRuleCollection.ts681export interface ReadAclOptions {COMMENT
LOWapp/common/UserAPI.ts81 id: number;COMMENT
LOWapp/common/Prefs.ts21 // Whether to record a new sign-up event via Google Tag Manager. Set to true on first login, thenCOMMENT
LOWapp/common/ActionSummarizer.ts721 if (!v1[1]) {COMMENT
LOWapp/common/ActionSummarizer.ts901 */COMMENT
LOWapp/common/ActionSummarizer.ts921 // a cell under the live name (e.g. for a row removed before the column wentCOMMENT
LOWapp/common/ActionBundle.ts101 // Parallel to 'undo': the stored-action index each undo corresponds to (or null), as reportedCOMMENT
LOWapp/common/ActionLayout.ts501 // [1, 1] one action and its inverse (the common case).COMMENT
LOWapp/common/ActionLayout.ts561 edges.push({ i: node.fromI, a: ci - node.fromI, j: node.fromJ, b: cj - node.fromJ });COMMENT
LOWapp/gen-server/lib/TypeORMPatches.ts1// This contains two TypeORM patches.COMMENT
LOWapp/gen-server/lib/homedb/UsersManager.ts581 // delete the forks now. Deleting can be a relatively slowCOMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts1161 } else {COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts2041 // Forcibly remove the aliases relation from the document object, so that TypeORMCOMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts2601 }COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts4801 if (moveTo) {COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts4881 // Normalize query results in the following ways:COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts5041 const idColumn = resType.slice(0, -1) + "_id";COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts5061COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts5121 }COMMENT
LOWapp/gen-server/lib/homedb/HomeDBManager.ts5661 });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/ui/AccountWidget.ts281 return menuItemLink(t("Support Grist"), " 💛",COMMENT
LOWapp/client/ui/AdminPanel.ts981 // Never checked before (no last version or last check time).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
70 more matches not shown…
Empty Error Handlers17 hits · 85 pts
SeverityFileLineSnippetContext
HIGHsandbox/grist/match_counter.py27except TypeError:CODE
HIGHsandbox/grist/lookup.py602except TypeError:CODE
HIGHsandbox/grist/lookup.py253except Exception:CODE
HIGHsandbox/grist/test_match_counter.py23except TypeError:CODE
HIGHsandbox/grist/engine.py396except TypeError:CODE
HIGHsandbox/grist/testutil.py140except AssertionError as e:CODE
HIGHsandbox/grist/twowaymap.py258except ValueError:CODE
HIGHsandbox/grist/usertypes.py399except Exception:CODE
HIGHsandbox/grist/usertypes.py506except Exception:CODE
HIGHsandbox/grist/usertypes.py380except Exception:CODE
HIGHsandbox/grist/column.py409except Exception:CODE
HIGHsandbox/grist/column.py702except Exception:CODE
HIGHsandbox/grist/objtypes.py216except Exception as e:CODE
HIGHsandbox/grist/imports/import_utils.py60except (ValueError, OverflowError, TypeError):CODE
HIGHsandbox/grist/functions/text.py744except ValueError:CODE
HIGHsandbox/grist/functions/text.py749except ValueError:CODE
HIGHsandbox/grist/functions/text.py754except ValueError:CODE
Excessive Try-Catch Wrapping46 hits · 50 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/lookup.py253 except Exception:CODE
LOWsandbox/grist/lookup.py339 except Exception as e:CODE
LOWsandbox/grist/lookup.py382 except Exception:CODE
LOWsandbox/grist/test_summary_perf.py17 except Exception:CODE
LOWsandbox/grist/sandbox.py149 except Exception as e:CODE
LOWsandbox/grist/summary.py134 except Exception:CODE
LOWsandbox/grist/engine.py1360 except Exception as e:CODE
LOWsandbox/grist/engine.py1374 except Exception:CODE
LOWsandbox/grist/engine.py1426 except Exception:CODE
LOWsandbox/grist/engine.py1435 except Exception:CODE
LOWsandbox/grist/acl.py107 except Exception as e:CODE
LOWsandbox/grist/acl.py143 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.py179 except Exception as e:CODE
LOWsandbox/grist/usertypes.py183 except Exception:CODE
LOWsandbox/grist/usertypes.py380 except Exception:CODE
LOWsandbox/grist/usertypes.py399 except Exception:CODE
LOWsandbox/grist/usertypes.py506 except Exception:CODE
LOWsandbox/grist/column.py409 except Exception:CODE
LOWsandbox/grist/column.py702 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
Fake / Example Data44 hits · 48 pts
SeverityFileLineSnippetContext
LOWstorybook/authenticationSection.stories.ts15 adminEmail: "admin@example.com",CODE
LOWapp/client/ui/RightPanel.ts1096 dom.prop("placeholder", use => use(field.displayLabel) || use(field.colId)),CODE
LOWapp/client/ui/ColumnFilterMenu.ts229 "placeholder": t("Search values"),CODE
LOWapp/client/ui/searchDropdown.ts146 "placeholder": this._options.placeholder || t("Search"),CODE
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.ts318 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/Boot.ts46 profile: { email: "admin@example.com", name: "admin" },CODE
LOWtest/server/lib/docapi/DocApiWebhooks.ts1546 await check({ authorization: "Bearer fake-token" }, 200);CODE
LOW⚡test/client/lib/textUtils.ts26 check("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOW⚡test/client/lib/textUtils.ts26 check("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOW⚡test/client/lib/textUtils.ts34 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOW⚡test/client/lib/textUtils.ts34 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOW⚡test/client/lib/textUtils.ts40 "Nullam dictum felis eu pede mollis pretium. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOW⚡test/client/lib/textUtils.ts40 "Nullam dictum felis eu pede mollis pretium. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " +CODE
LOW⚡test/client/lib/ACIndex.ts281 const acIndex = new ACIndexImpl(["Lorem ipsum 𝌆 dolor sit ameͨ͆t.", "mañana", "Москва"].map(makeItem), {CODE
LOW⚡test/client/lib/ACIndex.ts286 [["", "Моск", "ва"], ["", "mañ", "ana"], ["Lorem ipsum 𝌆 dolor sit ", "am", "eͨ͆t."]]);CODE
LOW⚡test/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.ts893 Name: "Acme Corp",CODE
LOWtest/nbrowser/BootPage.ts259 await driver.find(".test-boot-page-email-input").doClear().sendKeys("admin@example.com");CODE
LOWtest/nbrowser/BootPage.ts264 assert.deepEqual({ name, email }, { name: "admin", email: "admin@example.com" });CODE
LOWtest/nbrowser/RowHeights.ts66 assert.equal(await driver.find(".test-row-height-max input").getAttribute("placeholder"), "auto");CODE
LOW…-forwarded-headers/configs/authelia/users_database.yml13 email: 'test@example.org'CODE
LOW…ostgres-redis-rustfs/configs/keycloak/grist-realm.json26 "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.ts82 // providers, be more nuanced about setting this.COMMENT
MEDIUMapp/server/lib/GranularAccess.ts113// Actions that won't be allowed (yet) for a user with nuanced access to a document.COMMENT
MEDIUMapp/server/lib/GranularAccess.ts1529 // There might be uses for applying AddOrUpdateRecord in a nuancedCOMMENT
MEDIUMapp/server/lib/FlexServer.ts223 // This can be called to do a redirect to signin/signup in a nuanced situation.COMMENT
MEDIUMapp/server/lib/Client.ts351 // We have all the needed messages (possibly an empty array); can do a seamless reconnect.COMMENT
MEDIUMapp/server/lib/ActiveDoc.ts2610 this._fetchCache.clear(); // This could be more nuanced.CODE
MEDIUMapp/client/ui/HomeLeftPane.ts115 // be a bit more nuanced here, but as of today the menu isn't particularly usefulCOMMENT
MEDIUMapp/client/components/GristWSConnection.ts140 // 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.ts60 // 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
LOW⚡sandbox/grist/useractions.py2610 # TODO: Deprecated; should just use RemoveRecord('_grist_Views', view_id)COMMENT
LOW⚡sandbox/grist/useractions.py2639 # 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.py733 # 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
Synthetic Comment Markers6 hits · 45 pts
SeverityFileLineSnippetContext
HIGHapp/client/components/GristDoc.ts294 // 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 · 42 pts
SeverityFileLineSnippetContext
LOWsandbox/grist/test_predicate_formula.py5CODE
LOWsandbox/grist/test_replay.py39CODE
LOWsandbox/grist/test_renames.py417CODE
LOWsandbox/grist/xmlrunner.py10CODE
LOWsandbox/grist/test_prevnext.py5CODE
LOWsandbox/grist/test_codebuilder.py2CODE
LOWsandbox/grist/engine.py43CODE
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.py726CODE
LOWsandbox/grist/useractions.py804CODE
LOWsandbox/grist/useractions.py934CODE
LOWsandbox/grist/useractions.py1153CODE
LOWsandbox/grist/test_table_data_set.py72CODE
LOWsandbox/grist/test_table_data_set.py118CODE
LOWsandbox/grist/codebuilder.py98CODE
LOWsandbox/grist/codebuilder.py525CODE
LOWsandbox/grist/summary_helper.py145CODE
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.py382CODE
LOWsandbox/grist/engine.py571CODE
LOWsandbox/grist/engine.py764CODE
LOWsandbox/grist/engine.py959CODE
LOWsandbox/grist/engine.py1233CODE
LOWsandbox/grist/engine.py1451CODE
LOWsandbox/grist/acl.py87CODE
LOWsandbox/grist/acl.py116CODE
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/test_reload_oracle.py44CODE
LOWsandbox/grist/usertypes.py193CODE
LOWsandbox/grist/usertypes.py312CODE
LOWsandbox/grist/usertypes.py344CODE
LOWsandbox/grist/usertypes.py372CODE
LOWsandbox/grist/usertypes.py486CODE
LOWsandbox/grist/column.py678CODE
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.py200CODE
LOWsandbox/grist/functions/date.py703CODE
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.ts218 return NoneCODE
Redundant / Tautological Comments12 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.py983 # Check if we are seeing a mention of a column that's getting renamed.COMMENT
LOWsandbox/grist/test_lookups.py975 # Set address to a valid value again. Values that used error cells should get correct order.STRING
LOWsandbox/grist/engine.py656 # Check if any potentially unused LookupMaps are still unused, and if so, delete them.COMMENT
LOWsandbox/grist/engine.py1181 # Set flag to rebuild dependencies of trigger columns after any potential renames, etc.COMMENT
LOWsandbox/grist/engine.py1586 # 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.py744 # Check if col_id is in the immediate dictionary of self.Record[Set]; if missing, or inheritedCOMMENT
LOWsandbox/grist/table.py794 # Check if 'id' is mentioned explicitly. If so, then no fallback to 'manualSort', or anythingCOMMENT
LOWsandbox/grist/functions/date.py980 # Check if the current date is a weekday (Monday=0, Sunday=6)COMMENT
Verbosity Indicators8 hits · 14 pts
SeverityFileLineSnippetContext
LOWapp/server/lib/NSandbox.ts713 // Step 1: Create a sandbox. If a flavor is given, create that exact flavor.COMMENT
LOWapp/server/lib/NSandbox.ts729 // Step 2: Run a simple Python call to check if the sandbox can execute code.COMMENT
LOWapp/server/lib/NSandbox.ts740 // 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.ts1175 // We need to check if the current user is disabled or not. InCOMMENT
LOW⚡test/nbrowser/gristUtils.ts4595 // Step 1: Set fixed size of the window to ensure consistent outer dimensions, and prevent maximizedCOMMENT
LOW⚡test/nbrowser/gristUtils.ts4599 // Step 2: Get outer vs inner differenceCOMMENT
LOWtest/nbrowser/gristUtils.ts4610 // 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.ts697 // Use document timezone. Don't forget to use uppercase HH for 24-hour time.COMMENT
LOW⚡sandbox/grist/test_lookup_sort.py464 # (this is a way to check that we don't forget to clean up stale lookup helper columns).COMMENT
LOW⚡sandbox/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.ts713 // Step 1: Create a sandbox. If a flavor is given, create that exact flavor.COMMENT
LOWapp/server/lib/NSandbox.ts729 // Step 2: Run a simple Python call to check if the sandbox can execute code.COMMENT
LOWapp/server/lib/NSandbox.ts740 // Step 3: Stop the sandbox. If we get here, everything worked.COMMENT
LOW⚡test/nbrowser/gristUtils.ts4595 // Step 1: Set fixed size of the window to ensure consistent outer dimensions, and prevent maximizedCOMMENT
LOW⚡test/nbrowser/gristUtils.ts4599 // Step 2: Get outer vs inner differenceCOMMENT
LOWtest/nbrowser/gristUtils.ts4610 // Step 3: Set outer window size to match desired viewportCOMMENT
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHsandbox/grist/engine.py94# 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.py163 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.ts450 // TODO: implement userSelector for rest API, to allow "sticky" user selection on pages.COMMENT
AI Structural Patterns1 hit · 0 pts
SeverityFileLineSnippetContext
LOWsandbox/grist/useractions.py2573CODE