Low code web framework for real world applications, in Python and Javascript
This report presents the forensic synthetic code analysis of frappe/frappe, a Python project with 10,417 GitHub stars. SynthScan v2.0 examined 483,006 lines of code across 3528 source files, recording 4008 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 9.9 places this repository in the Low AI signal 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).
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.
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.
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.
The scanner identified 4008 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/src/components/ActivityTimeline/grouping.ts | 181 | export function groupAssignmentActivities(activities: Activity[]): Activity[] { | CODE |
| LOW | ui/src/components/ColumnSettings/columns.ts | 150 | export function dropOrphanedSyntheticColumns( | CODE |
| LOW | frappe/build.py | 307 | def get_safe_max_old_space_size(): | CODE |
| LOW | frappe/auth.py | 307 | def force_user_to_reset_password(self): | CODE |
| LOW | frappe/auth.py | 516 | def get_login_attempt_tracker(key: str, raise_locked_exception: bool = True): | CODE |
| LOW | frappe/auth.py | 708 | def validate_auth_via_api_keys(authorization_header): | CODE |
| LOW | frappe/sessions.py | 363 | def get_session_data_from_cache(self): | CODE |
| LOW | frappe/sessions.py | 499 | def get_expiry_period_for_query(): | CODE |
| LOW | frappe/translate.py | 181 | def get_translations_from_apps(lang, apps=None): | CODE |
| LOW | frappe/translate.py | 199 | def get_translations_from_csv(lang, app): | CODE |
| LOW | frappe/translate.py | 205 | def get_translation_dict_from_file(path, lang, app, throw=False) -> dict[str, str]: | CODE |
| LOW | frappe/translate.py | 265 | def change_translation_version(): | CODE |
| LOW | frappe/translate.py | 337 | def get_messages_from_doctype(name): | CODE |
| LOW | frappe/translate.py | 383 | def get_messages_from_workflow(doctype=None, app_name=None): | CODE |
| LOW | frappe/translate.py | 453 | def get_messages_from_custom_fields(app_name): | CODE |
| LOW | frappe/translate.py | 525 | def _get_messages_from_page_or_report(doctype, name, module=None): | CODE |
| LOW | frappe/translate.py | 562 | def get_messages_from_include_files(app_name=None): | CODE |
| LOW | frappe/translate.py | 580 | def get_all_messages_from_js_files(app_name=None): | CODE |
| LOW | frappe/translate.py | 641 | def extract_messages_from_python_code(code: str) -> list[tuple[int, str, str | None]]: | CODE |
| LOW | frappe/translate.py | 666 | def extract_messages_from_javascript_code(code: str) -> list[tuple[int, str, str | None]]: | CODE |
| LOW | frappe/translate.py | 871 | def rebuild_all_translation_files(): | CODE |
| LOW | frappe/translate.py | 912 | def update_translations_for_source(source: str | None = None, translation_dict: str | dict | None = None): | CODE |
| LOW | frappe/translate.py | 950 | def get_all_language_with_name(): | CODE |
| LOW | frappe/translate.py | 963 | def get_preferred_language_cookie(): | CODE |
| LOW | frappe/config.py | 123 | def _apply_common_env_overrides(config: _dict[str, Any]) -> None: | CODE |
| LOW | frappe/cache_manager.py | 136 | def _clear_doctype_cache_from_redis(doctype: str | None = None): | CODE |
| LOW | frappe/cache_manager.py | 247 | def build_domain_restricted_doctype_cache(*args, **kwargs): | CODE |
| LOW | frappe/cache_manager.py | 264 | def build_domain_restricted_page_cache(*args, **kwargs): | CODE |
| LOW | frappe/boot.py | 432 | def get_link_preview_doctypes(): | CODE |
| LOW | frappe/boot.py | 449 | def get_additional_filters_from_hooks(): | CODE |
| LOW | frappe/boot.py | 480 | def get_notification_settings(): | CODE |
| LOW | frappe/boot.py | 552 | def get_authored_sidebar_items(workspace_names): | CODE |
| LOW | frappe/boot.py | 651 | def build_default_workspace_map(sidebar_items): | CODE |
| LOW | frappe/boot.py | 667 | def get_workspaces_with_sidebar(): | CODE |
| LOW | frappe/boot.py | 695 | def get_workspace_module_onboarding(workspace_names): | CODE |
| LOW | frappe/onboarding.py | 13 | def update_user_onboarding_status(steps: str | list | dict, appName: str): | CODE |
| LOW | frappe/__init__.py | 482 | def setup_redis_cache_connection(): | CODE |
| LOW | frappe/__init__.py | 1143 | def _get_cached_signature_params(fn: Callable) -> tuple[dict[str, Any], bool]: | CODE |
| LOW | frappe/__init__.py | 1462 | def validate_and_sanitize_search_inputs(fn): | CODE |
| LOW | frappe/__init__.py | 1468 | def override_whitelisted_method(original_method: str) -> str: | CODE |
| LOW | frappe/deprecation_dumpster.py | 383 | def test_runner_make_test_records(*args, **kwargs): | CODE |
| LOW | frappe/deprecation_dumpster.py | 392 | def test_runner_make_test_objects(*args, **kwargs): | CODE |
| LOW | frappe/deprecation_dumpster.py | 404 | def test_runner_make_test_records_for_doctype(*args, **kwargs): | CODE |
| LOW | frappe/deprecation_dumpster.py | 416 | def test_runner_print_mandatory_fields(*args, **kwargs): | CODE |
| LOW | frappe/deprecation_dumpster.py | 428 | def test_runner_get_test_record_log(doctype): | CODE |
| LOW | frappe/deprecation_dumpster.py | 440 | def test_runner_add_to_test_record_log(doctype): | CODE |
| LOW | frappe/deprecation_dumpster.py | 486 | def tests_update_system_settings(args, commit=False): | CODE |
| LOW | frappe/deprecation_dumpster.py | 742 | def execute_command_and_count(*args, **kwargs): | CODE |
| LOW | frappe/deprecation_dumpster.py | 841 | def get_compat_frappe_test_case_preparation(cfg): | CODE |
| LOW | frappe/deprecation_dumpster.py | 885 | def model_trace_traced_field_context(*args, **kwargs): | CODE |
| LOW | frappe/deprecation_dumpster.py | 897 | def tests_utils_get_dependencies(doctype): | CODE |
| LOW | frappe/deprecation_dumpster.py | 932 | def test_runner_get_dependencies(doctype): | CODE |
| LOW | frappe/deprecation_dumpster.py | 960 | def compat_preload_test_records_upfront(candidates: list): | CODE |
| LOW | frappe/twofactor.py | 112 | def two_factor_is_enabled_for_(user): | CODE |
| LOW | frappe/twofactor.py | 276 | def get_email_subject_for_qr_code(kwargs_dict): | STRING |
| LOW | frappe/twofactor.py | 284 | def get_email_body_for_qr_code(kwargs_dict): | CODE |
| LOW | frappe/twofactor.py | 413 | def delete_all_barcodes_for_users(): | CODE |
| LOW | frappe/twofactor.py | 423 | def should_remove_barcode_image(barcode): | CODE |
| LOW | frappe/apps.py | 107 | def get_incomplete_setup_route(current_app: str, app_route: str): | CODE |
| LOW | frappe/installer.py | 366 | def remove_from_installed_apps(app_name): | CODE |
| 2082 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frappe/build.py | 160 | except Exception as e: | CODE |
| LOW | frappe/build.py | 167 | except Exception: | CODE |
| LOW | frappe/build.py | 207 | except Exception: | CODE |
| LOW | frappe/build.py | 317 | except Exception: | CODE |
| LOW | frappe/build.py | 376 | except Exception: | CODE |
| LOW | frappe/build.py | 405 | except Exception as e: | CODE |
| LOW | frappe/auth.py | 744 | except Exception: | CODE |
| LOW | frappe/translate.py | 174 | except Exception: | CODE |
| LOW | frappe/translate.py | 619 | except Exception: | CODE |
| LOW | frappe/config.py | 46 | except Exception as error: | CODE |
| LOW | frappe/config.py | 102 | except Exception: | CODE |
| LOW | frappe/config.py | 138 | except Exception as error: | CODE |
| LOW | frappe/monitor.py | 65 | except Exception: | CODE |
| LOW | frappe/monitor.py | 115 | except Exception: | CODE |
| MEDIUM | frappe/monitor.py | 50 | def __init__(self, transaction_type, method, kwargs): | CODE |
| MEDIUM | frappe/monitor.py | 95 | def dump(self, response=None): | CODE |
| LOW | frappe/handler.py | 77 | except Exception as e: | CODE |
| LOW | frappe/deferred_insert.py | 55 | except Exception as e: | CODE |
| LOW | frappe/boot.py | 219 | except Exception: | CODE |
| LOW | frappe/boot.py | 508 | except Exception: | CODE |
| LOW | frappe/boot.py | 541 | except Exception: | CODE |
| MEDIUM | frappe/boot.py | 538 | def add_subscription_conf(): | CODE |
| LOW | frappe/client.py | 322 | except Exception: | CODE |
| LOW | frappe/recorder.py | 101 | except Exception: | CODE |
| LOW | frappe/recorder.py | 132 | except Exception: | CODE |
| LOW | frappe/recorder.py | 176 | except Exception as e: | CODE |
| LOW | frappe/twofactor.py | 312 | except Exception: | CODE |
| LOW | frappe/apps.py | 53 | except Exception: | CODE |
| LOW | frappe/installer.py | 31 | except Exception: | CODE |
| LOW | frappe/installer.py | 75 | except Exception: | CODE |
| LOW | frappe/installer.py | 236 | except Exception: | CODE |
| LOW | frappe/installer.py | 637 | except Exception: | CODE |
| LOW | frappe/installer.py | 819 | except Exception: | CODE |
| LOW | frappe/installer.py | 935 | except Exception: | CODE |
| LOW | frappe/app.py | 148 | except Exception as e: | CODE |
| LOW | frappe/app.py | 163 | except Exception: | CODE |
| LOW | frappe/frappeclient.py | 398 | except Exception: | CODE |
| LOW | frappe/migrate.py | 53 | except Exception as e: | CODE |
| LOW | frappe/migrate.py | 256 | except Exception as e: | CODE |
| MEDIUM | frappe/migrate.py | 48 | def wrapper(*args, **kwargs): | CODE |
| LOW | frappe/oauth.py | 120 | except Exception as e: | CODE |
| LOW | frappe/oauth.py | 210 | except Exception: | CODE |
| LOW⚡ | frappe/oauth.py | 381 | except Exception: | CODE |
| LOW⚡ | frappe/oauth.py | 391 | except Exception: | CODE |
| LOW | frappe/oauth.py | 494 | except Exception: | CODE |
| MEDIUM | frappe/oauth.py | 125 | def authenticate_client_id(self, client_id, request, *args, **kwargs): | CODE |
| MEDIUM | frappe/oauth.py | 376 | def validate_id_token(self, token, scopes, request): | CODE |
| MEDIUM | frappe/oauth.py | 386 | def validate_jwt_bearer_token(self, token, scopes, request): | CODE |
| LOW | frappe/database/query.py | 475 | except Exception as e: | CODE |
| LOW | frappe/database/query.py | 592 | except Exception: | CODE |
| LOW | frappe/database/query.py | 1901 | except Exception: | CODE |
| LOW | frappe/database/query.py | 1917 | except Exception: | CODE |
| LOW | frappe/database/query.py | 1966 | except Exception: | CODE |
| LOW | frappe/database/query.py | 1994 | except Exception: | CODE |
| LOW | frappe/database/query.py | 2112 | except Exception: | CODE |
| LOW | frappe/database/database.py | 154 | except Exception as e: | CODE |
| LOW | frappe/database/database.py | 274 | except Exception as e: | CODE |
| LOW | frappe/database/database.py | 438 | except Exception as e: | CODE |
| LOW | frappe/database/database.py | 685 | except Exception as e: | CODE |
| LOW | frappe/database/database.py | 1422 | except Exception: | CODE |
| 351 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frappe/hooks.py | 3 | CODE | |
| LOW | frappe/translate.py | 13 | CODE | |
| LOW | frappe/handler.py | 14 | CODE | |
| LOW | frappe/handler.py | 18 | CODE | |
| LOW | frappe/handler.py | 23 | CODE | |
| LOW | frappe/handler.py | 26 | CODE | |
| LOW | frappe/deferred_insert.py | 2 | CODE | |
| LOW | frappe/deferred_insert.py | 10 | CODE | |
| LOW | frappe/boot.py | 28 | CODE | |
| LOW | frappe/client.py | 3 | CODE | |
| LOW | frappe/client.py | 16 | CODE | |
| LOW | frappe/parallel_test_runner.py | 4 | CODE | |
| LOW | frappe/parallel_test_runner.py | 9 | CODE | |
| LOW | frappe/recorder.py | 32 | CODE | |
| LOW | frappe/__init__.py | 24 | CODE | |
| LOW | frappe/__init__.py | 25 | CODE | |
| LOW | frappe/__init__.py | 25 | CODE | |
| LOW | frappe/__init__.py | 25 | CODE | |
| LOW | frappe/__init__.py | 30 | CODE | |
| LOW | frappe/__init__.py | 36 | CODE | |
| LOW | frappe/__init__.py | 36 | CODE | |
| LOW | frappe/__init__.py | 36 | CODE | |
| LOW | frappe/__init__.py | 36 | CODE | |
| LOW | frappe/__init__.py | 38 | CODE | |
| LOW | frappe/__init__.py | 38 | CODE | |
| LOW | frappe/__init__.py | 41 | CODE | |
| LOW | frappe/__init__.py | 43 | CODE | |
| LOW | frappe/__init__.py | 43 | CODE | |
| LOW | frappe/__init__.py | 43 | CODE | |
| LOW | frappe/__init__.py | 43 | CODE | |
| LOW | frappe/__init__.py | 43 | CODE | |
| LOW | frappe/__init__.py | 1475 | CODE | |
| LOW | frappe/__init__.py | 1475 | CODE | |
| LOW | frappe/__init__.py | 1475 | CODE | |
| LOW | frappe/__init__.py | 1475 | CODE | |
| LOW | frappe/__init__.py | 1475 | CODE | |
| LOW | frappe/__init__.py | 146 | CODE | |
| LOW | frappe/__init__.py | 152 | CODE | |
| LOW | frappe/__init__.py | 152 | CODE | |
| LOW | frappe/__init__.py | 153 | CODE | |
| LOW | frappe/__init__.py | 154 | CODE | |
| LOW | frappe/__init__.py | 154 | CODE | |
| LOW | frappe/__init__.py | 155 | CODE | |
| LOW | frappe/__init__.py | 160 | CODE | |
| LOW | frappe/__init__.py | 161 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 162 | CODE | |
| LOW | frappe/__init__.py | 180 | CODE | |
| LOW | frappe/__init__.py | 180 | CODE | |
| 377 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ctype/installed_applications/installed_applications.js | 54 | dialog.fields_dict.apps.df.data.push({ | CODE |
| CRITICAL | frappe/printing/page/print/print.js | 556 | const get_options = frappe.ui.form.ControlBarcode.prototype.get_options.bind({ | CODE |
| CRITICAL | frappe/public/js/frappe/module_editor.js | 15 | return this.frm.doc.__onload.all_modules.map((module) => { | CODE |
| CRITICAL | frappe/public/js/frappe/ui/naming_series.js | 172 | this.dialog.fields_dict.naming_series_options.grid.refresh(); | CODE |
| CRITICAL | frappe/public/js/frappe/ui/naming_series.js | 176 | const rows = this.dialog.fields_dict.naming_series_options.grid.get_data(); | CODE |
| CRITICAL | frappe/public/js/frappe/ui/naming_series.js | 221 | this.dialog.fields_dict.naming_series_options.grid.refresh(); | CODE |
| CRITICAL | frappe/public/js/frappe/widgets/widget_dialog.js | 551 | let color = this.dialog.fields_dict.color.value.toLowerCase(); | CODE |
| CRITICAL | frappe/public/js/frappe/widgets/widget_dialog.js | 573 | this.dialog.fields_dict.link_to.df.onchange(); | CODE |
| CRITICAL⚡ | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 454 | this._endLabelText = L.drawLocal.draw.handlers.simpleshape.tooltip.end, L.Draw.Feature.prototype.initialize.call(thi | CODE |
| CRITICAL⚡ | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 457 | L.Draw.Feature.prototype.addHooks.call(this), this._map && (this._mapDraggable = this._map.dragging.enabled(), this. | CODE |
| CRITICAL⚡ | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 462 | L.Draw.Feature.prototype.removeHooks.call(this), this._map && (this._mapDraggable && this._map.dragging.enable(), th | CODE |
| CRITICAL⚡ | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 498 | this.type = L.Draw.Rectangle.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.rectangle.tooltip.start, L.Dra | CODE |
| CRITICAL⚡ | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 501 | this._enabled && (this._isCurrentlyTwoClickDrawing = !1, L.Draw.SimpleShape.prototype.disable.call(this)) | CODE |
| CRITICAL⚡ | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 505 | this._isCurrentlyTwoClickDrawing && !o(t.target, "leaflet-pane") || L.Draw.SimpleShape.prototype._onMouseUp.call(thi | CODE |
| CRITICAL⚡ | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 512 | L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this, t) | CODE |
| CRITICAL⚡ | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 515 | var t, e, i, o = L.Draw.SimpleShape.prototype._getTooltipText.call(this), | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 203 | L.Browser.touch && (this.options.icon = this.options.touchIcon), this.options.drawError.message = L.drawLocal.draw.h | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 206 | L.Draw.Feature.prototype.addHooks.call(this), this._map && (this._markers = [], this._markerGroup = new L.LayerGroup | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 217 | L.Draw.Feature.prototype.removeHooks.call(this), this._clearHideErrorTimeout(), this._cleanUpShape(), this._map.remo | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 394 | L.Draw.Feature.prototype._fireCreatedEvent.call(this, t) | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 420 | L.Draw.Polyline.prototype.initialize.call(this, t, e), this.type = L.Draw.Polygon.TYPE | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 436 | return t || this.options.showLength ? (this.options.showLength && (e = L.Draw.Polyline.prototype._getMeasurementStri | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 443 | !this.options.allowIntersection && this.options.showArea && (i = this._poly.getLatLngs(), this._area = L.GeometryUti | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 533 | this.type = L.Draw.Marker.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.marker.tooltip.start, L.Draw.Feat | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 536 | L.Draw.Feature.prototype.addHooks.call(this), this._map && (this._tooltip.updateContent({ | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 549 | L.Draw.Feature.prototype.removeHooks.call(this), this._map && (this._marker && (this._marker.off("click", this._onCl | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 571 | L.Draw.Feature.prototype._fireCreatedEvent.call(this, t) | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 589 | this.type = L.Draw.CircleMarker.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.circlemarker.tooltip.start, | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 593 | L.Draw.Feature.prototype._fireCreatedEvent.call(this, t) | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 619 | this.type = L.Draw.Circle.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.circle.tooltip.start, L.Draw.Simp | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 627 | L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this, t) | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 907 | if (L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this, t), "function" == typeof this._getCorners) { | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 937 | L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this, t); | CODE |
| CRITICAL | frappe/public/js/lib/leaflet_draw/leaflet.draw.js | 945 | o === this._moveMarker && (e = this._shape.getBounds(), i = e.getCenter(), o.setLatLng(i)), this._toggleCornerMarker | CODE |
| CRITICAL | frappe/public/js/lib/jquery/jquery.min.js | 3 | }catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:fun | CODE |
| CRITICAL | frappe/public/js/form_builder/form_builder.bundle.js | 35 | this.store.frm.layout.tabs.find((tab) => tab.label === "Form").set_active(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frappe/build.py | 116 | CODE | |
| LOW | frappe/translate.py | 205 | CODE | |
| LOW | frappe/translate.py | 270 | CODE | |
| LOW | frappe/translate.py | 383 | CODE | |
| LOW | frappe/translate.py | 580 | CODE | |
| LOW | frappe/translate.py | 701 | CODE | |
| LOW | frappe/translate.py | 731 | CODE | |
| LOW | frappe/translate.py | 829 | CODE | |
| LOW | frappe/config.py | 33 | CODE | |
| LOW | frappe/monitor.py | 95 | CODE | |
| LOW | frappe/handler.py | 130 | CODE | |
| LOW | frappe/deferred_insert.py | 28 | CODE | |
| LOW | frappe/cache_manager.py | 136 | CODE | |
| LOW | frappe/boot.py | 194 | CODE | |
| LOW | frappe/boot.py | 782 | CODE | |
| LOW | frappe/recorder.py | 105 | CODE | |
| LOW | frappe/__init__.py | 985 | CODE | |
| LOW | frappe/deprecation_dumpster.py | 841 | CODE | |
| LOW | frappe/deprecation_dumpster.py | 960 | CODE | |
| LOW | frappe/deprecation_dumpster.py | 848 | CODE | |
| LOW | frappe/twofactor.py | 44 | CODE | |
| LOW | frappe/apps.py | 24 | CODE | |
| LOW | frappe/installer.py | 452 | CODE | |
| LOW | frappe/installer.py | 594 | CODE | |
| LOW | frappe/app.py | 102 | CODE | |
| LOW | frappe/app.py | 353 | CODE | |
| LOW | frappe/permissions.py | 80 | CODE | |
| LOW | frappe/permissions.py | 351 | CODE | |
| LOW | frappe/defaults.py | 235 | CODE | |
| LOW | frappe/frappeclient.py | 64 | CODE | |
| LOW | frappe/frappeclient.py | 260 | CODE | |
| LOW | frappe/frappeclient.py | 380 | CODE | |
| LOW | frappe/oauth.py | 438 | CODE | |
| LOW | frappe/database/query.py | 389 | CODE | |
| LOW | frappe/database/query.py | 562 | CODE | |
| LOW | frappe/database/query.py | 835 | CODE | |
| LOW | frappe/database/query.py | 883 | CODE | |
| LOW | frappe/database/query.py | 1094 | CODE | |
| LOW | frappe/database/query.py | 1178 | CODE | |
| LOW | frappe/database/query.py | 1227 | CODE | |
| LOW | frappe/database/query.py | 1333 | CODE | |
| LOW | frappe/database/query.py | 1515 | CODE | |
| LOW | frappe/database/query.py | 1601 | CODE | |
| LOW | frappe/database/query.py | 1819 | CODE | |
| LOW | frappe/database/query.py | 2060 | CODE | |
| LOW | frappe/database/query.py | 2383 | CODE | |
| LOW | frappe/database/query.py | 2465 | CODE | |
| LOW | frappe/database/query.py | 2499 | CODE | |
| LOW | frappe/database/database.py | 183 | CODE | |
| LOW | frappe/database/database.py | 352 | CODE | |
| LOW | frappe/database/database.py | 598 | CODE | |
| LOW | frappe/database/database.py | 715 | CODE | |
| LOW | frappe/database/__init__.py | 122 | CODE | |
| LOW | frappe/database/schema.py | 411 | CODE | |
| LOW | frappe/database/schema.py | 112 | CODE | |
| LOW | frappe/database/schema.py | 317 | CODE | |
| LOW | frappe/database/schema.py | 346 | CODE | |
| LOW | frappe/database/sqlite/database.py | 467 | CODE | |
| LOW | frappe/database/postgres/schema.py | 96 | CODE | |
| LOW | frappe/types/exporter.py | 208 | CODE | |
| 346 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ui/src/components/FileUpload/useUploader.ts | 340 | // ── internals ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/FileUpload/FileUploadDialog.vue | 355 | // ── the add-menu ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/FileUpload/FileUploadDialog.vue | 424 | // ── staged rows ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/FileUpload/FileUploadDialog.vue | 511 | // ── crop ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/FileUpload/FileUploadDialog.vue | 528 | // ── drag & drop (scoped to this popover) ───────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/FileUpload/FileUploadDialog.vue | 583 | // ── commit ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/Fields/GeolocationField.vue | 140 | // ─── Computed ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/Fields/GeolocationField.vue | 170 | // ─── Map lifecycle ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/Fields/GeolocationField.vue | 302 | // ── Tile layers (mirrors Frappe's map_defaults) ────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/Fields/GeolocationField.vue | 336 | // ── Locate control ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/Fields/GeolocationField.vue | 440 | // ─── Actions ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/Fields/GeolocationField.vue | 463 | // ─── Cleanup ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | cypress/integration/print_format_builder.js | 6 | // ─── shared helpers ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | cypress/integration/print_format_builder.js | 50 | // ─── Create flow ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | cypress/integration/print_format_builder.js | 331 | // ─── Setup flow ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | cypress/integration/print_format_builder.js | 444 | // ─── Section insert (+ Add Section) ────────────────────────────────────────── | COMMENT |
| MEDIUM | cypress/integration/print_format_builder.js | 590 | // ─── Column width resize ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | cypress/integration/print_format_builder.js | 789 | // ─── Image and Barcode blocks ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | cypress/integration/list_view_column_width.js | 69 | // ─── 1. Width set via List View Settings dialog is applied ─────────────────── | COMMENT |
| MEDIUM | cypress/integration/list_view_column_width.js | 92 | // ─── 2. Width persists after page reload ───────────────────────────────────── | COMMENT |
| MEDIUM | cypress/integration/list_view_column_width.js | 115 | // ─── 3. Drag-to-resize changes the column width ────────────────────────────── | COMMENT |
| MEDIUM | cypress/integration/list_view_column_width.js | 126 | // ─── 4. Drag-to-resize width is persisted after reload ─────────────────────── | COMMENT |
| MEDIUM⚡ | cypress/integration/list_view_column_width.js | 141 | // ─── 5. Min-width constraint (50 px) is enforced ───────────────────────────── | COMMENT |
| MEDIUM⚡ | cypress/integration/list_view_column_width.js | 149 | // ─── 6. Max-width constraint (400 px) is enforced ──────────────────────────── | COMMENT |
| MEDIUM⚡ | cypress/integration/list_view_column_width.js | 157 | // ─── 7. Resize handles are present in the header ───────────────────────────── | COMMENT |
| MEDIUM⚡ | cypress/integration/list_view_column_width.js | 163 | // ─── 8. List View Settings dialog shows Width (px) header and hint ─────────── | COMMENT |
| MEDIUM | frappe/database/__init__.py | 5 | # -------------------- | COMMENT |
| MEDIUM | frappe/core/doctype/sms_settings/sms_settings.py | 154 | # ========================================================= | COMMENT |
| MEDIUM⚡ | frappe/tests/test_mask_fields.py | 163 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | frappe/tests/test_mask_fields.py | 165 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | frappe/tests/test_mask_fields.py | 177 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | frappe/tests/test_mask_fields.py | 179 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | frappe/tests/test_mask_fields.py | 198 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | frappe/tests/test_mask_fields.py | 200 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | frappe/tests/test_mask_fields.py | 248 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | frappe/tests/test_mask_fields.py | 250 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | frappe/tests/test_mask_fields.py | 317 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | frappe/tests/test_mask_fields.py | 319 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 487 | # ---------- | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 496 | # ---------- | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 505 | # ------------ | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 511 | # ------------ | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 517 | # ------------------ | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 525 | # ------------------- | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 533 | # ------------------ | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 539 | # ------------------ | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 545 | # ----------- | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 621 | # ----------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 626 | # ---------------- | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 631 | # ---------- | COMMENT |
| MEDIUM⚡ | frappe/utils/boilerplate.py | 638 | # -------------------- | COMMENT |
| MEDIUM | frappe/utils/boilerplate.py | 418 | # ------------------ | COMMENT |
| MEDIUM | frappe/utils/boilerplate.py | 444 | # ------------------ | COMMENT |
| MEDIUM | frappe/utils/boilerplate.py | 471 | # ------------------ | COMMENT |
| MEDIUM | frappe/utils/boilerplate.py | 476 | # ---------- | COMMENT |
| MEDIUM | frappe/utils/boilerplate.py | 557 | # --------------- | COMMENT |
| MEDIUM | frappe/utils/boilerplate.py | 569 | # --------------- | COMMENT |
| MEDIUM | frappe/utils/boilerplate.py | 595 | # ------------------------------ | COMMENT |
| MEDIUM | frappe/utils/boilerplate.py | 603 | # ------------------------------ | COMMENT |
| MEDIUM | frappe/utils/boilerplate.py | 662 | # -------------------------------- | COMMENT |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frappe/sessions.py | 122 | """This function is meant to be called from scheduler""" | STRING |
| MEDIUM | frappe/database/query.py | 967 | # Create a ChildTableField instance to handle join and field access | COMMENT |
| MEDIUM | frappe/core/doctype/file/test_file.py | 1227 | # Create a test user without System Manager role | COMMENT |
| MEDIUM | frappe/core/doctype/rq_job/test_rq_job.py | 89 | # Create a slow job and check if it's stuck in "Started" | COMMENT |
| MEDIUM | frappe/core/doctype/data_import/importer.py | 1753 | # Defining an explicit value which surely recognizes | COMMENT |
| MEDIUM | frappe/desk/desktop.py | 632 | # Create a json string to log | COMMENT |
| MEDIUM | …ctype/global_search_settings/global_search_settings.py | 194 | # Create a Customize Form stub to apply property setters | COMMENT |
| MEDIUM | frappe/tests/test_mask_fields.py | 88 | # Create a role without mask permission | COMMENT |
| MEDIUM | frappe/tests/test_mask_fields.py | 92 | # Create a test user and assign the role | COMMENT |
| MEDIUM⚡ | frappe/tests/test_search.py | 196 | # Create a test doctype to link to | COMMENT |
| MEDIUM⚡ | frappe/tests/test_search.py | 204 | # Create a form doctype with a link field that has ignore_user_permissions | COMMENT |
| MEDIUM | frappe/tests/test_search.py | 232 | # Create a test user with restricted permissions | COMMENT |
| MEDIUM | frappe/tests/test_removing_orphans.py | 11 | # Create a new report | COMMENT |
| MEDIUM | frappe/tests/test_boot.py | 47 | # Create a ToDo custom report with admin user | COMMENT |
| MEDIUM | frappe/tests/test_boot.py | 69 | # Create a ToDo custom report with test user | STRING |
| MEDIUM | frappe/tests/test_api_v2.py | 472 | # Create a fresh doc for this test | COMMENT |
| MEDIUM | frappe/tests/test_query_report.py | 181 | # Define the visible rows | COMMENT |
| MEDIUM | frappe/tests/test_query_report.py | 206 | # Define the visible rows | COMMENT |
| MEDIUM | frappe/tests/test_query_report.py | 237 | # Define the visible rows | COMMENT |
| MEDIUM | frappe/tests/test_base_document.py | 104 | # Create an instance of the extended ToDo | COMMENT |
| MEDIUM | frappe/tests/test_base_document.py | 157 | # Create an instance with some data | COMMENT |
| MEDIUM⚡ | frappe/tests/test_query.py | 2852 | # This function is used as a permission query condition hook | COMMENT |
| MEDIUM | frappe/tests/test_query.py | 983 | # Create a test blog post | COMMENT |
| MEDIUM | frappe/tests/test_query.py | 1091 | # Create a test note with specific content | COMMENT |
| MEDIUM | frappe/tests/test_query.py | 1205 | # Create a Dashboard Settings for test user | COMMENT |
| MEDIUM | frappe/tests/test_query.py | 1218 | # Create a server script for permission query | COMMENT |
| MEDIUM | frappe/tests/test_query.py | 1477 | # Create a test blog post | COMMENT |
| MEDIUM | frappe/tests/test_query.py | 2258 | # Create a private event (only owner can see by default) | COMMENT |
| MEDIUM | frappe/tests/test_query.py | 2465 | # Create a child table row with non-existent parent | COMMENT |
| MEDIUM | frappe/tests/test_sqlite_search.py | 232 | # Create a test user and switch to them | COMMENT |
| MEDIUM | frappe/tests/test_sqlite_search.py | 400 | # Create a new document after index is built | COMMENT |
| MEDIUM | frappe/tests/test_sqlite_search.py | 520 | # Create a note with HTML content | COMMENT |
| MEDIUM | frappe/tests/test_sqlite_search.py | 563 | # Create a search class with search disabled | COMMENT |
| MEDIUM | frappe/tests/test_sqlite_search.py | 606 | # Create a test document | COMMENT |
| MEDIUM⚡ | frappe/utils/test_print_format_generator.py | 83 | # Create the doc directly (without format_data) because _make_print_format | COMMENT |
| MEDIUM | frappe/utils/password_strength.py | 82 | # Define a number of functions that are used in a look up dictionary | COMMENT |
| MEDIUM | frappe/utils/chromium/page.py | 337 | # Create a new stylesheet | COMMENT |
| MEDIUM | frappe/utils/chromium/page.py | 344 | # Define the CSS rule for the page size | COMMENT |
| MEDIUM | frappe/search/sqlite_search.py | 1241 | # Create the FTS table with dynamic columns | COMMENT |
| MEDIUM | frappe/search/sqlite_search.py | 1251 | # Create the vocabulary and trigram tables | STRING |
| MEDIUM | frappe/search/sqlite_search.py | 1268 | # Create the index progress tracking table | STRING |
| MEDIUM | …tegrations/doctype/ldap_settings/test_ldap_settings.py | 41 | # Create a clean doc | COMMENT |
| MEDIUM | …tegrations/doctype/ldap_settings/test_ldap_settings.py | 572 | # Create a clean doc | COMMENT |
| MEDIUM | frappe/model/db_query.py | 848 | # Create a copy of the fields list and reverse it to avoid index issues when removing fields | COMMENT |
| MEDIUM | frappe/model/base_document.py | 240 | # Create the extended class by combining extension classes with base class | COMMENT |
| MEDIUM | frappe/email/doctype/notification/test_notification.py | 239 | # Create a test notification | COMMENT |
| MEDIUM | frappe/email/doctype/notification/test_notification.py | 298 | # Create a test notification | COMMENT |
| MEDIUM | frappe/email/doctype/notification/test_notification.py | 675 | # Create a ToDo | COMMENT |
| MEDIUM | frappe/email/doctype/notification/test_notification.py | 785 | # # Create an event and notification before each test | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/src/components/TableMultiSelect/TableMultiSelect.vue | 7 | :placeholder="placeholder" | CODE |
| LOW | …ts/ActivityTimeline/stories/ActivityTimeline.story.vue | 85 | author: person("Jane Doe", "jane@example.com"), | CODE |
| LOW | …ts/ActivityTimeline/stories/ActivityTimeline.story.vue | 92 | author: person("Jane Doe", "jane@example.com"), | CODE |
| LOW | …ts/ActivityTimeline/stories/ActivityTimeline.story.vue | 162 | author: person("Jane Doe", "jane@example.com"), | CODE |
| LOW | ui/src/components/Phone/Phone.vue | 88 | :placeholder="placeholder" | CODE |
| LOW | ui/src/components/Filter/Filter.vue | 390 | return "John Doe"; | CODE |
| LOW | cypress/integration/control_color.js | 77 | .invoke("attr", "placeholder") | CODE |
| LOW⚡ | frappe/database/database.py | 1265 | exists("User", "jane@example.org", cache=True) | STRING |
| LOW⚡ | frappe/database/database.py | 1271 | exists({"doctype": "User", "full_name": "Jane Doe"}) | STRING |
| LOW⚡ | frappe/database/database.py | 1277 | exists("User", {"full_name": "Jane Doe"}) | STRING |
| LOW | …ppe/core/page/component_explorer/component_explorer.js | 249 | label: "John Doe", | CODE |
| LOW | …ppe/core/page/component_explorer/component_explorer.js | 1118 | label: "John Doe", | CODE |
| LOW | …ppe/core/page/component_explorer/component_explorer.js | 1137 | { label: "John Doe" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1148 | { label: "John Doe", size: "xs" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1149 | { label: "John Doe", size: "sm" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1150 | { label: "John Doe" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1151 | { label: "John Doe", size: "lg" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1152 | { label: "John Doe", size: "xl" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1153 | { label: "John Doe", size: "2xl" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1154 | { label: "John Doe", size: "3xl" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1160 | { label: "John Doe", theme: "blue" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1161 | { label: "John Doe", theme: "blue", shape: "square" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1162 | { label: "John Doe", theme: "blue", shape: "square", size: "2xl" }, | CODE |
| LOW⚡ | …ppe/core/page/component_explorer/component_explorer.js | 1169 | label: "John Doe", | CODE |
| LOW | frappe/core/doctype/role/role.py | 143 | if enabled and user_info not in ["admin@example.com", "guest@example.com"]: | CODE |
| LOW | frappe/core/doctype/docfield/docfield.json | 86 | "placeholder", | CODE |
| LOW | frappe/core/doctype/docfield/docfield.json | 621 | "fieldname": "placeholder", | CODE |
| LOW | frappe/core/doctype/comment/test_comment.py | 55 | "comment_email": "test@test.com", | CODE |
| LOW | frappe/core/doctype/user/test_user.py | 291 | data = {"cmd": "frappe.core.doctype.user.user.reset_password", "user": "test@test.com"} | STRING |
| LOW | frappe/core/doctype/report/test_report.py | 194 | "email": "admin@example.com", | CODE |
| LOW | frappe/core/doctype/report/test_report.py | 230 | "email": "admin@example.com", | CODE |
| LOW | frappe/core/doctype/communication/test_communication.py | 242 | to = "jane.doe+A+Test@example.org" | CODE |
| LOW | frappe/core/doctype/communication/communication.py | 625 | e.g. 'admin@example.com' is returned for email 'admin+doctype+docname@example.com' | STRING |
| LOW | frappe/desk/page/setup_wizard/install_fixtures.py | 60 | {"email": "admin@example.com", "global_unsubscribe": 1}, | CODE |
| LOW | frappe/patches/v13_0/email_unsubscribe.py | 6 | {"email": "admin@example.com", "global_unsubscribe": 1}, | CODE |
| LOW⚡ | frappe/contacts/doctype/contact/test_contact.py | 40 | self.assertEqual(get_full_name(first="John", last="Doe"), "John Doe") | CODE |
| LOW⚡ | frappe/contacts/doctype/contact/test_contact.py | 42 | self.assertEqual(get_full_name(first="John", last="Doe", company="Doe Pvt Ltd"), "John Doe") | CODE |
| LOW | …appe/website/doctype/web_template/test_web_template.py | 48 | self.assertEqual(sections[0].find("p").text, "test lorem ipsum") | CODE |
| LOW | …appe/website/doctype/web_template/test_web_template.py | 84 | {"title": "Test Title", "subtitle": "test lorem ipsum"} | CODE |
| LOW | …appe/website/doctype/web_template/test_web_template.py | 92 | "subtitle": "test lorem ipsum", | CODE |
| LOW | …ppe/website/doctype/web_form_field/web_form_field.json | 30 | "placeholder" | CODE |
| LOW | …ppe/website/doctype/web_form_field/web_form_field.json | 158 | "fieldname": "placeholder", | CODE |
| LOW | frappe/tests/test_email.py | 31 | sender="admin@example.com", | CODE |
| LOW | frappe/tests/test_email.py | 98 | sender="admin@example.com", | CODE |
| LOW | frappe/tests/test_email.py | 139 | sender="admin@example.com", | CODE |
| LOW | frappe/tests/test_email.py | 176 | sender="admin@example.com", | CODE |
| LOW | frappe/tests/test_email.py | 211 | sender="admin@example.com", | CODE |
| LOW | frappe/tests/test_email.py | 260 | sender="admin@example.com", | CODE |
| LOW | frappe/tests/test_email.py | 274 | _patched_assertion(email_account, "admin@example.com") | CODE |
| LOW | frappe/tests/test_email.py | 281 | _patched_assertion(email_account, '"admin@example.com" <test@example.com>') | CODE |
| LOW | frappe/tests/test_email.py | 299 | sender="admin@example.com", | CODE |
| LOW | frappe/tests/test_db_query.py | 467 | self.assertEqual(result[0].allocated_user_email, "admin@example.com") | CODE |
| LOW⚡ | frappe/tests/test_mask_fields.py | 48 | self.assertEqual(mask_field_value(self._field("Link", "Company"), "Acme Corp"), "XXXXXXXX") | CODE |
| LOW⚡ | frappe/tests/test_mask_fields.py | 59 | result = mask_field_value(self._field("Data", "Email"), "user@example.com") | CODE |
| LOW | frappe/tests/test_db.py | 152 | self.assertEqual(result, ("Administrator", "admin@example.com")) | CODE |
| LOW | frappe/tests/test_boilerplate.py | 34 | "app_email": "example@example.org", | CODE |
| LOW | frappe/tests/test_boilerplate.py | 45 | "example@example.org", # email | CODE |
| LOW⚡ | frappe/tests/test_boilerplate.py | 103 | invalid_inputs[3] = ["notavalidemail", "what@is@this.email", "example@example.org"] | CODE |
| LOW⚡ | frappe/tests/test_boilerplate.py | 109 | self.assertEqual(hooks.app_email, "example@example.org") | CODE |
| LOW | frappe/tests/test_query_report.py | 101 | fake_data = { | CODE |
| 57 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/vite/index.js | 1 | // Vite plugin for apps that consume @framework/ui. | COMMENT |
| LOW | ui/src/components/FileUpload/useUploader.ts | 261 | COMMENT | |
| LOW | ui/src/components/FileUpload/FileUploadDialog.vue | 281 | :aspectRatio="restrictions?.crop_image_aspect_ratio ?? null" | COMMENT |
| LOW | ui/src/components/FileUpload/FileUploadDialog.vue | 601 | COMMENT | |
| LOW | ui/src/components/Fields/GeolocationField.vue | 81 | // | COMMENT |
| LOW | cypress/plugins/index.js | 1 | // *********************************************************** | COMMENT |
| LOW | cypress/integration/awesome_bar.js | 41 | cy.get(".title-text").should("contain", "To Do"); | COMMENT |
| LOW | cypress/integration/relative_time_filters.js | 1 | // TODO: Enable this again | COMMENT |
| LOW | cypress/integration/relative_time_filters.js | 21 | // cy.intercept('POST', '/api/method/frappe.desk.reportview.get').as('list_refresh'); | COMMENT |
| LOW | cypress/integration/relative_time_filters.js | 41 | // cy.wait('@list_refresh'); | COMMENT |
| LOW | cypress/integration/sidebar.js | 81 | cy.get(".show-all-btn").click({ force: true }); | COMMENT |
| LOW | cypress/integration/sidebar.js | 101 | // cy.wait(1000); | COMMENT |
| LOW | cypress/integration/sidebar.js | 121 | // cy.get(".fieldname-select-area > .awesomplete > .form-control").should( | COMMENT |
| LOW | cypress/integration/sidebar.js | 141 | // cy.click_sidebar_button("Assigned To"); | COMMENT |
| LOW | cypress/integration/es_components.js | 1 | // Espresso component tests, driven through the Component Explorer page | COMMENT |
| LOW | cypress/support/commands.js | 1 | import "@testing-library/cypress/add-commands"; | COMMENT |
| LOW | cypress/support/e2e.js | 1 | // *********************************************************** | COMMENT |
| LOW | frappe/database/query.py | 141 | # Pattern for detecting SQL function calls: identifier followed by opening parenthesis | COMMENT |
| LOW | frappe/database/sequence.py | 1 | from frappe import db, scrub | COMMENT |
| LOW | frappe/database/sequence.py | 41 | sequence_name = scrub(doctype_name + slug) | COMMENT |
| LOW | frappe/core/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/page/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/page/permission_manager/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/report/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/page/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/role/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/docperm/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/permission_type/permission_type.js | 1 | // Copyright (c) 2025, Frappe Technologies and contributors | COMMENT |
| LOW | frappe/core/doctype/scheduler_event/scheduler_event.js | 1 | // Copyright (c) 2025, Frappe Technologies and contributors | COMMENT |
| LOW | frappe/core/doctype/docfield/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/module_def/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/api_request_log/api_request_log.js | 1 | // Copyright (c) 2025, Frappe Technologies and contributors | COMMENT |
| LOW | frappe/core/doctype/defaultvalue/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/patch_log/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/report/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/report/boilerplate/controller.js | 1 | // Copyright (c) {year}, {app_publisher} and contributors | COMMENT |
| LOW | frappe/core/doctype/recorder_query/recorder_query.js | 1 | // Copyright (c) 2023, Frappe Technologies and contributors | COMMENT |
| LOW | frappe/core/doctype/communication/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/core/doctype/doctype/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | …ore/doctype/doctype/boilerplate/controller_calendar.js | 1 | // Copyright (c) {year}, {app_publisher} and contributors | COMMENT |
| LOW | …pe/core/doctype/doctype/boilerplate/controller_list.js | 1 | /* eslint-disable */ | COMMENT |
| LOW | …pe/core/doctype/doctype/boilerplate/controller_tree.js | 1 | // Copyright (c) {year}, {app_publisher} and contributors | COMMENT |
| LOW | frappe/core/doctype/doctype/boilerplate/controller.js | 1 | // Copyright (c) {year}, {app_publisher} and contributors | COMMENT |
| LOW | frappe/desk/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/desk/form/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/desk/doctype/workspace/test_workspace.py | 21 | COMMENT | |
| LOW | frappe/desk/doctype/todo/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | …pe/desk/doctype/document_template/document_template.js | 1 | // Copyright (c) 2026, Frappe Technologies and contributors | COMMENT |
| LOW | frappe/desk/doctype/event/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/desk/doctype/list_filter/list_filter.js | 1 | // Copyright (c) 2026, Frappe Technologies and contributors | COMMENT |
| LOW | frappe/desk/doctype/desktop_layout/desktop_layout.js | 1 | // Copyright (c) 2026, Frappe Technologies and contributors | COMMENT |
| LOW | frappe/website/__init__.py | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | COMMENT |
| LOW | frappe/website/doctype/utm_source/utm_source.js | 1 | // Copyright (c) 2024, Frappe Technologies and contributors | COMMENT |
| LOW | frappe/website/doctype/utm_medium/utm_medium.js | 1 | // Copyright (c) 2024, Frappe Technologies and contributors | COMMENT |
| LOW | frappe/website/doctype/utm_campaign/utm_campaign.js | 1 | // Copyright (c) 2024, Frappe Technologies and contributors | COMMENT |
| LOW | …format_builder_classic/print_format_builder_classic.js | 61 | // future-bindings for buttons on sections / fields | COMMENT |
| LOW | frappe/tests/test_domainification.py | 121 | COMMENT | |
| LOW | frappe/tests/test_domainification.py | 141 | # def test_module_def_for_domainification(self): | COMMENT |
| LOW | frappe/utils/boilerplate.py | 421 | COMMENT | |
| 60 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | frappe/build.py | 83 | r"cd ../apps/frappe && git show-ref --tags -d | grep {} | sed -e 's,.*" | CODE |
| HIGH | frappe/build.py | 145 | frappe_head = getoutput("cd ../apps/frappe && git rev-parse HEAD") | CODE |
| HIGH | frappe/database/query.py | 2013 | # Since Y and X can't be null, null value in column will never match filter, so | COMMENT |
| HIGH⚡ | frappe/core/doctype/server_script/test_server_script.py | 171 | server_script["script"] = "js || code.?" | CODE |
| HIGH | frappe/core/doctype/data_import/test_data_import.py | 9 | CSV_IMPORT_SOURCE_DEPENDS_ON = "eval:doc.google_sheets_url || (doc.import_file && doc.import_file.split('.').pop().toLow | CODE |
| HIGH | frappe/core/doctype/data_import/test_data_import.py | 10 | CSV_DELIMITER_OPTIONS_DEPENDS_ON = "eval:doc.custom_delimiters && (doc.google_sheets_url || (doc.import_file && doc.impo | CODE |
| HIGH | frappe/desk/reportview.py | 944 | filters=[*filters, "({0} = '' or {0} is null)".format(tag["name"])], | CODE |
| HIGH⚡ | frappe/tests/test_utils.py | 790 | "these_are && js_conditions", | CODE |
| HIGH⚡ | frappe/tests/test_utils.py | 791 | "more || js_conditions", | CODE |
| HIGH | frappe/tests/test_db_query.py | 1322 | # it is non-null, so the plucked result must be masked. | COMMENT |
| HIGH | frappe/tests/test_translate.py | 241 | __("attr with", null, "context") | STRING |
| HIGH | frappe/tests/test_translate.py | 287 | args = get_args("""__("attr with", null, "context")""") | CODE |
| HIGH⚡ | frappe/utils/telemetry/pulse/test_pulse_client.py | 332 | # Guests have no server-known identity → null; the client mints its own anon id. | COMMENT |
| HIGH⚡ | frappe/gettext/extractors/tests/test_javascript.py | 13 | code = "let test = `<p>${__('Test', null, 'Context')}</p>`;" | CODE |
| HIGH | frappe/model/db_query.py | 1078 | # Since Y and X can't be null, null value in column will never match filter, so | COMMENT |
| HIGH | frappe/commands/testing.py | 499 | "(cd ../frappe && yarn bin)", | STRING |
| HIGH | frappe/commands/testing.py | 540 | frappe.commands.popen(f"(cd ../frappe && yarn add {packages} --no-lockfile)") | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frappe/auth.py | 113 | # Check if the referrer or origin is in the allowed list | COMMENT |
| LOW | frappe/database/query.py | 437 | # Check if the operator is a string, and specifically a logical operator | COMMENT |
| LOW | frappe/database/query.py | 448 | # Check if it looks like it *might* be nested (even if malformed). | COMMENT |
| LOW | frappe/database/query.py | 840 | # Check if it's a nested condition list [cond1, op, cond2, ...] | COMMENT |
| LOW | frappe/database/query.py | 951 | # Check if doctype is a valid child table of self.doctype | COMMENT |
| LOW | frappe/database/query.py | 1207 | # Iterate through the list where each item could be a single field, criterion, or a comma-separated string | COMMENT |
| LOW | frappe/database/query.py | 1235 | # Check if it's a SQL function or operator dictionary | COMMENT |
| LOW | frappe/database/query.py | 1473 | # Check if the last word is a valid direction | COMMENT |
| LOW | frappe/database/query.py | 1591 | # Check if the field name is an optional field (like _user_tags) or in permitted fields | COMMENT |
| LOW | frappe/database/query.py | 2107 | # Check if the first part is a valid fieldname in the parent doctype | COMMENT |
| LOW | frappe/database/query.py | 2535 | # Check if it's a numeric string like "1" (for COUNT(1), etc.) | COMMENT |
| LOW | frappe/core/doctype/user/user.py | 1225 | # Check if we have a search term, and decide the filters depending on the search term | COMMENT |
| LOW | frappe/core/doctype/version/version.py | 34 | # Check if doc has some information about creation source like data import | COMMENT |
| LOW | frappe/core/doctype/package_release/package_release.py | 133 | # Set path to tarball | COMMENT |
| LOW | frappe/core/doctype/report/test_report.py | 132 | # Check if creating and deleting works with proper validations | COMMENT |
| LOW | frappe/desk/desktop.py | 112 | # Check if onboarding is enabled | COMMENT |
| LOW | frappe/desk/desktop.py | 124 | # Check if user is allowed | COMMENT |
| LOW | frappe/desk/desktop.py | 130 | # Check if already complete | COMMENT |
| LOW | frappe/desk/desktop.py | 224 | # Check if user is allowed to view | COMMENT |
| LOW | frappe/desk/desktop.py | 771 | # Check if user is allowed | STRING |
| LOW⚡ | frappe/website/website_generator.py | 161 | # Check if the route is changed | COMMENT |
| LOW | frappe/tests/test_nestedset.py | 333 | # Check if all records are fetched when flag is set to True | COMMENT |
| LOW | frappe/tests/test_nestedset.py | 336 | # Check if disabled records are skipped is set to False | COMMENT |
| LOW | frappe/tests/test_query_report.py | 217 | # Check if unset filters are skipped | Rows -> 2 filters + 1 empty + 1 column + 3 data | COMMENT |
| LOW | frappe/tests/test_sqlite_search.py | 142 | # Check if FTS table exists | COMMENT |
| LOW | frappe/tests/test_sqlite_search.py | 146 | # Check if vocabulary tables exist | COMMENT |
| LOW | frappe/tests/test_sqlite_search.py | 296 | # Check if corrections were applied | COMMENT |
| LOW | frappe/utils/backups.py | 165 | # Check if file exists and is less than a day old | COMMENT |
| LOW | frappe/utils/change_log.py | 366 | # Check if user is int the set of users to send update message to | COMMENT |
| LOW | frappe/utils/pdf_generator/browser.py | 124 | # Check if any of the classes exist | COMMENT |
| LOW | frappe/utils/pdf_generator/browser.py | 136 | if soup.find(class_=class_name): # Check if any element with the class is found | CODE |
| LOW | frappe/search/sqlite_search.py | 308 | # Check if this is a completely fresh build or a continuation | COMMENT |
| LOW | frappe/search/sqlite_search.py | 320 | # Check if we're continuing a fresh build (temp db exists) | COMMENT |
| LOW | frappe/search/sqlite_search.py | 353 | # Check if indexing is already complete | COMMENT |
| LOW | frappe/search/sqlite_search.py | 429 | # Check if all doctypes are indexed before building vocabulary | COMMENT |
| LOW | frappe/search/sqlite_search.py | 810 | # Check if this is a LIKE filter (list with 'LIKE' operator) | COMMENT |
| LOW | frappe/search/sqlite_search.py | 1753 | # Check if a temp DB exists (incomplete build from previous run) | COMMENT |
| LOW | frappe/search/sqlite_search.py | 1834 | # Check if a temp DB exists (incomplete build from previous run) | COMMENT |
| LOW | frappe/testing/discovery.py | 84 | # Check if the DocType belongs to the specified app | COMMENT |
| LOW | frappe/model/qb_query.py | 117 | # Set fields to the requested field or `name` if none specified | COMMENT |
| LOW | frappe/model/qb_query.py | 173 | # Check if table exists before running query | COMMENT |
| LOW | frappe/model/db_query.py | 607 | # Check if table_name is a linked_table alias | COMMENT |
| LOW | frappe/api/v2.py | 164 | # Check if the doctype controller has a static get_list method | COMMENT |
| LOW | frappe/commands/site.py | 373 | # Check if the backup is of an older version of frappe and the user hasn't specified force | COMMENT |
| LOW | frappe/email/doctype/notification/test_notification.py | 257 | # Check if the notification was triggered | COMMENT |
| LOW | frappe/email/doctype/notification/test_notification.py | 316 | # Check if the notification was triggered | COMMENT |
| LOW | …e/email/doctype/auto_email_report/auto_email_report.py | 125 | # Check if all Mandatory Report Filters are filled by the User | COMMENT |
| LOW | .github/workflows/run-indinvidual-tests.yml | 32 | # Loop through array and create JSON objects | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frappe/build.py | 226 | CODE | |
| LOW | frappe/client.py | 26 | CODE | |
| LOW | frappe/client.py | 374 | CODE | |
| LOW | frappe/recorder.py | 335 | CODE | |
| LOW | frappe/__init__.py | 748 | CODE | |
| LOW | frappe/__init__.py | 885 | CODE | |
| LOW | frappe/installer.py | 39 | CODE | |
| LOW | frappe/installer.py | 121 | CODE | |
| LOW | frappe/installer.py | 568 | CODE | |
| LOW | frappe/installer.py | 594 | CODE | |
| LOW | frappe/share.py | 49 | CODE | |
| LOW | frappe/frappeclient.py | 363 | CODE | |
| LOW | frappe/frappeclient.py | 370 | CODE | |
| LOW | frappe/database/query.py | 215 | CODE | |
| LOW | frappe/database/sequence.py | 28 | CODE | |
| LOW | frappe/database/database.py | 183 | CODE | |
| LOW | frappe/database/database.py | 520 | CODE | |
| LOW | frappe/database/database.py | 598 | CODE | |
| LOW | frappe/database/__init__.py | 122 | CODE | |
| LOW | …prepared_report_analytics/prepared_report_analytics.py | 106 | CODE | |
| LOW | frappe/core/doctype/access_log/access_log.py | 51 | CODE | |
| LOW | frappe/core/doctype/data_export/exporter.py | 33 | CODE | |
| LOW | frappe/core/doctype/data_export/exporter.py | 78 | CODE | |
| LOW | frappe/core/doctype/data_import/importer.py | 567 | CODE | |
| LOW | frappe/core/doctype/communication/mixins.py | 270 | CODE | |
| LOW | frappe/core/doctype/communication/mixins.py | 338 | CODE | |
| LOW | frappe/core/doctype/communication/email.py | 33 | CODE | |
| LOW | frappe/core/doctype/communication/email.py | 143 | CODE | |
| LOW | frappe/desk/query_report.py | 225 | CODE | |
| LOW | frappe/desk/query_report.py | 248 | CODE | |
| LOW | frappe/desk/search.py | 102 | CODE | |
| LOW | frappe/desk/doctype/dashboard_chart/dashboard_chart.py | 93 | CODE | |
| LOW | frappe/website/doctype/web_page_view/web_page_view.py | 47 | CODE | |
| LOW | frappe/tests/ui_test_helpers.py | 736 | CODE | |
| LOW | frappe/tests/microbenchmarks/utils.py | 31 | CODE | |
| LOW | frappe/tests/microbenchmarks/utils.py | 43 | CODE | |
| LOW | frappe/utils/task_queue.py | 12 | CODE | |
| LOW | frappe/utils/backups.py | 569 | CODE | |
| LOW | frappe/utils/backups.py | 608 | CODE | |
| LOW | frappe/utils/backups.py | 42 | CODE | |
| LOW | frappe/utils/print_utils.py | 10 | CODE | |
| LOW | frappe/utils/print_utils.py | 108 | CODE | |
| LOW | frappe/utils/response.py | 360 | CODE | |
| LOW | frappe/utils/messages.py | 11 | CODE | |
| LOW | frappe/utils/background_jobs.py | 79 | CODE | |
| LOW | frappe/utils/commands.py | 40 | CODE | |
| LOW | frappe/utils/data.py | 238 | CODE | |
| LOW | frappe/utils/data.py | 253 | CODE | |
| LOW | frappe/utils/data.py | 268 | CODE | |
| LOW | frappe/utils/data.py | 282 | CODE | |
| LOW | frappe/realtime/__init__.py | 29 | CODE | |
| LOW | frappe/testing/runner.py | 49 | CODE | |
| LOW | frappe/model/delete_doc.py | 24 | CODE | |
| LOW | frappe/model/qb_query.py | 26 | CODE | |
| LOW | frappe/model/db_query.py | 111 | CODE | |
| LOW | frappe/model/document.py | 178 | CODE | |
| LOW | frappe/model/document.py | 412 | CODE | |
| LOW | frappe/model/rename_doc.py | 108 | CODE | |
| LOW | frappe/commands/site.py | 73 | CODE | |
| LOW | frappe/commands/site.py | 196 | CODE | |
| 12 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | frappe/database/mariadb/database.py | 0 | select constraint_name from information_schema.table_constraints where table_name=%s and constraint_type='unique' and co | STRING |
| HIGH | frappe/database/mariadb/mysqlclient.py | 0 | select constraint_name from information_schema.table_constraints where table_name=%s and constraint_type='unique' and co | STRING |
| HIGH | frappe/database/postgres/database.py | 0 | select constraint_name from information_schema.table_constraints where table_name=%s and constraint_type='unique' and co | STRING |
| HIGH | frappe/database/mariadb/database.py | 0 | syncs a `doctype` to the table * creates if required * updates columns * updates indices | STRING |
| HIGH | frappe/database/mariadb/mysqlclient.py | 0 | syncs a `doctype` to the table * creates if required * updates columns * updates indices | STRING |
| HIGH | frappe/database/postgres/database.py | 0 | syncs a `doctype` to the table * creates if required * updates columns * updates indices | STRING |
| HIGH | frappe/gettext/extractors/web_form.py | 0 | extract messages from report json files. to be used to babel extractor :param fileobj: the file-like object the messages | STRING |
| HIGH | frappe/gettext/extractors/doctype.py | 0 | extract messages from report json files. to be used to babel extractor :param fileobj: the file-like object the messages | STRING |
| HIGH | frappe/gettext/extractors/workspace.py | 0 | extract messages from report json files. to be used to babel extractor :param fileobj: the file-like object the messages | STRING |
| HIGH | frappe/gettext/extractors/report.py | 0 | extract messages from report json files. to be used to babel extractor :param fileobj: the file-like object the messages | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frappe/core/doctype/file/utils.py | 324 | def update_existing_file_docs(doc: "File") -> None: | CODE |
| LOW | frappe/core/doctype/background_task/background_task.py | 55 | def update_stage(self, stage: str) -> None: | CODE |
| LOW | frappe/core/doctype/recorder/db_optimizer.py | 110 | def update_cardinality(self, column_stats: list[ColumnStat]) -> None: | CODE |
| LOW | …e/document_naming_settings/document_naming_settings.py | 124 | def set_series_options_in_meta(self, doctype: str, options: str) -> None: | CODE |
| LOW⚡ | …ctype/global_search_settings/global_search_settings.py | 161 | def _set_global_search_property_setter(cf: CustomizeForm, fieldname: str, enabled: bool) -> None: | CODE |
| LOW | frappe/tests/test_virtual_doctype.py | 42 | def update_data(data: dict[str, dict]) -> None: | CODE |
| LOW | frappe/tests/classes/context_managers.py | 267 | __all__ = [ | CODE |
| LOW | frappe/tests/utils/generators.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | frappe/tests/utils/generators.py | 26 | __all__ = [ | CODE |
| LOW | frappe/pulse/utils.py | 5 | __all__ = ["get_app_version", "get_frappe_version"] | CODE |
| LOW | frappe/utils/translations.py | 68 | def set_user_lang(user: str, user_language: str | None = None) -> None: | CODE |
| LOW | frappe/utils/logger.py | 109 | def set_log_level(level: Literal["ERROR", "WARNING", "WARN", "INFO", "DEBUG"]) -> None: | CODE |
| LOW | frappe/utils/messages.py | 176 | __all__ = [ | CODE |
| LOW | frappe/utils/chromium/__init__.py | 25 | __all__ = [ | CODE |
| LOW | frappe/www/printview.py | 296 | def set_link_titles(doc: "Document") -> None: | STRING |
| LOW | frappe/www/printview.py | 333 | def set_title_values_for_table_and_multiselect_fields(meta: "Meta", doc: "Document") -> None: | STRING |
| LOW | frappe/testing/runner.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | frappe/testing/__init__.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | frappe/testing/result.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | frappe/testing/utils.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | frappe/testing/environment.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | frappe/model/naming.py | 128 | def update_counter(self, new_count: int) -> None: | CODE |
| LOW | frappe/model/document.py | 2702 | def _set_document_in_cache(key: str, doc: "Document") -> None: | CODE |
| LOW | frappe/model/rename_doc.py | 236 | def update_assignments(old: str, new: str, doctype: str) -> None: | CODE |
| LOW | frappe/model/rename_doc.py | 260 | def update_user_settings(old: str, new: str, link_fields: list[dict]) -> None: | CODE |
| LOW | frappe/model/rename_doc.py | 299 | def update_customizations(old: str, new: str) -> None: | CODE |
| LOW | frappe/model/rename_doc.py | 303 | def update_attachments(doctype: str, old: str, new: str) -> None: | CODE |
| LOW | frappe/model/rename_doc.py | 327 | def update_autoname_field(doctype: str, new: str, meta: "Meta") -> None: | CODE |
| LOW | frappe/model/rename_doc.py | 411 | def update_child_docs(old: str, new: str, meta: "Meta") -> None: | CODE |
| LOW | frappe/model/rename_doc.py | 421 | def update_link_field_values(link_fields: list[dict], old: str, new: str, doctype: str) -> None: | CODE |
| LOW | frappe/model/rename_doc.py | 513 | def update_options_for_fieldtype(fieldtype: str, old: str, new: str) -> None: | CODE |
| LOW | frappe/custom/doctype/custom_field/custom_field.py | 437 | def _update_fieldname_references(field: CustomField, old_fieldname: str, new_fieldname: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | frappe/utils/telemetry/pulse/utils.py | 42 | Parse interval string or integer into seconds. Args: interval: Can be: - Integer: seconds (e.g., 3600) | STRING |
| HIGH | frappe/model/delete_doc.py | 36 | Deletes a document and validates if it is not submitted and not linked in a live record. Args: doctype (str, optio | STRING |
| HIGH | frappe/model/qb_query.py | 61 | Execute a database query using the Query Builder engine. Args: fields: Fields to select. Can be a list, tuple, or | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frappe/core/doctype/file/file.py | 507 | # just use the url, to avoid uploading a duplicate | COMMENT |
| MEDIUM | frappe/tests/test_preview.py | 80 | # this robust against jpeg compression noise. | COMMENT |
| LOW | frappe/tests/test_permissions.py | 513 | # not raise permission error but simply return empty list | COMMENT |
| MEDIUM | frappe/utils/chromium/page.py | 285 | # Absolutely/fixed-positioned descendants are skipped so they can't | COMMENT |
| MEDIUM | frappe/public/js/frappe/ui/sort_selector.js | 74 | // and is robust to missing backticks | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | frappe/public/js/frappe/utils/utils.js | 1677 | print(doctype, docname, print_format, letterhead, lang_code) { | CODE |
| HIGH | frappe/public/js/frappe/list/bulk_operations.js | 7 | print(docs) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ntegrations/doctype/google_calendar/google_calendar.py | 339 | # instances of recurring events, so we need to check if the event is already | COMMENT |
| LOW | frappe/public/js/frappe/form/toolbar.js | 743 | // We need to check if document is already amend specifically and hide | COMMENT |
| LOW⚡ | frappe/public/js/frappe/list/list_factory.js | 70 | // Step 1: /desk/List/Item redirects to /desk/List/Item/List | COMMENT |
| LOW⚡ | frappe/public/js/frappe/list/list_factory.js | 71 | // Step 2: User hits "back" comes back to /desk/List/Item | COMMENT |
| LOW⚡ | frappe/public/js/frappe/list/list_factory.js | 72 | // Step 3: Now we cannot send the user back to /desk/List/Item/List so go back one more step | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frappe/__init__.py | 1178 | # WARNING: This behaviour is now part of business logic in places, never remove. | COMMENT |
| LOW | frappe/tests/utils/generators.py | 222 | # NOTE: This method is called in roughly these situations: | COMMENT |
| LOW⚡ | frappe/public/js/frappe/list/list_factory.js | 71 | // Step 2: User hits "back" comes back to /desk/List/Item | COMMENT |
| LOW⚡ | frappe/public/js/frappe/list/list_factory.js | 72 | // Step 3: Now we cannot send the user back to /desk/List/Item/List so go back one more step | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frappe/__init__.py | 234 | # TODO: implement dataclass | COMMENT |
| LOW | frappe/__init__.py | 236 | # TODO: implement dataclass | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frappe/deprecation_dumpster.py | 140 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frappe/oauth.py | 194 | # the authorization code. Don't forget to save both the | COMMENT |