Zulip server and web application. Open-source team chat that helps teams stay productive and focused.
This report presents the forensic synthetic code analysis of zulip/zulip, a Python project with 25,591 GitHub stars. SynthScan v2.0 examined 963,100 lines of code across 4110 source files, recording 8770 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 8.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 8770 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 | manage.py | 112 | def execute_from_command_line(argv: list[str] | None = None) -> None: | CODE |
| LOW | corporate/tests/test_remote_counts.py | 25 | def test_compute_max_monthly_messages(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 6200 | # def test_update_or_create_stripe_customer(self) -> None: | COMMENT |
| LOW | corporate/tests/test_stripe.py | 105 | def check_initial_ledger_entry( | CODE |
| LOW | corporate/tests/test_stripe.py | 118 | def raise_invalid_request_error() -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 152 | def test_stripe_billing_portal_urls(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 172 | def test_upgrade_by_card_to_plus_plan(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 300 | def test_upgrade_by_invoice_to_plus_plan(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 537 | def test_card_attached_to_customer_but_payment_fails(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 655 | def test_free_trial_upgrade_by_card(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 855 | def test_free_trial_upgrade_by_invoice(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1015 | def test_make_end_of_cycle_updates_errors_without_free_trial_invoice(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1047 | def test_free_trial_upgrade_by_invoice_with_additional_users_after_payment( | CODE |
| LOW | corporate/tests/test_stripe.py | 1232 | def test_free_trial_upgrade_by_invoice_customer_fails_to_pay(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1367 | def test_upgrade_by_card_with_outdated_seat_count(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1419 | def test_upgrade_by_card_with_outdated_lower_seat_count(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1477 | def test_upgrade_by_card_with_outdated_seat_count_and_minimum_for_plan_tier( | CODE |
| LOW | corporate/tests/test_stripe.py | 1529 | def test_customer_minimum_licenses_for_plan(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1584 | def test_upgrade_with_tampered_seat_count(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1593 | def test_upgrade_race_condition_during_card_upgrade(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1668 | def test_upgrade_race_condition_during_invoice_upgrade(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1689 | def test_check_upgrade_parameters(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1760 | def test_upgrade_license_counts(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1859 | def test_upgrade_with_uncaught_exception(self, *mock_args: Any) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1881 | def test_invoice_payment_succeeded_event_with_uncaught_exception(self, *mock_args: Any) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1910 | def test_request_sponsorship_form_with_invalid_url(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1927 | def test_request_sponsorship_form_with_blank_url(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 1945 | def test_sponsorship_access_for_realms_on_paid_plan(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 2128 | def test_redirect_for_billing_page(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 2173 | def test_redirect_for_billing_page_downgrade_at_free_trial_end(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 2242 | def test_upgrade_page_for_demo_organizations(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 2253 | def test_sponsorship_page_for_demo_organizations(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 2264 | def test_redirect_for_upgrade_page(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 2319 | def test_get_latest_seat_count(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 2379 | def test_payment_method_string(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 2393 | def test_replace_payment_method(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 2647 | def test_switch_from_monthly_plan_to_annual_plan_for_automatic_license_management( | CODE |
| LOW | corporate/tests/test_stripe.py | 2819 | def test_switch_from_monthly_plan_to_annual_plan_for_manual_license_management( | CODE |
| LOW | corporate/tests/test_stripe.py | 2924 | def test_switch_from_annual_plan_to_monthly_plan_for_automatic_license_management( | CODE |
| LOW | corporate/tests/test_stripe.py | 3078 | def test_reupgrade_after_plan_status_changed_to_downgrade_at_end_of_cycle(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3119 | def test_downgrade_during_invoicing(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3155 | def test_switch_now_free_trial_from_monthly_to_annual(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3204 | def test_switch_now_free_trial_from_annual_to_monthly(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3303 | def test_downgrade_at_end_of_free_trial(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3398 | def test_cancel_downgrade_at_end_of_free_trial(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3454 | def test_reupgrade_by_billing_admin_after_downgrade(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3523 | def test_update_licenses_of_manual_plan_from_billing_page(self, *mocks: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3645 | def test_update_licenses_of_manual_plan_from_billing_page_exempt_from_license_number_check( | CODE |
| LOW | corporate/tests/test_stripe.py | 3677 | def test_upgrade_exempt_from_license_number_check_realm_less_licenses_than_seat_count( | CODE |
| LOW | corporate/tests/test_stripe.py | 3704 | def test_update_licenses_of_automatic_plan_from_billing_page(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3724 | def test_update_plan_with_invalid_status(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3737 | def test_update_plan_without_any_params(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3748 | def test_update_plan_that_which_is_due_for_expiry(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3778 | def test_update_plan_that_which_is_due_for_replacement(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3857 | def test_reupgrade_by_billing_admin_after_realm_deactivation(self) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 3900 | def test_void_all_open_invoices(self, *mock: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 4006 | def test_downgrade_small_realms_behind_on_payments_as_needed(self, *mock: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 4156 | def test_upgrade_pay_by_invoice(self, *mock: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 4180 | def test_change_plan_tier_from_standard_to_plus(self, *mock: Mock) -> None: | CODE |
| LOW | corporate/tests/test_stripe.py | 4271 | def test_customer_has_credit_card_as_default_payment_method(self, *mocks: Mock) -> None: | CODE |
| 6192 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | corporate/tests/test_stripe.py | 5039 | remote_server=remote_server, email="admin@example.com" | CODE |
| LOW | corporate/tests/test_stripe.py | 6724 | remote_realm=remote_realm, email="admin@example.com", user_uuid=uuid.uuid4() | CODE |
| LOW | corporate/tests/test_stripe.py | 6727 | remote_server=remote_server, email="admin@example.com" | CODE |
| LOW | …vent_with_uncaught_exception--Customer.retrieve.2.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …vent_with_uncaught_exception--Customer.retrieve.2.json | 28 | "name": "John Doe", | CODE |
| LOW | …e_by_card_with_outdated_seat_count--Charge.list.1.json | 15 | "line1": "123 Main St", | CODE |
| LOW | …e_by_card_with_outdated_seat_count--Charge.list.1.json | 21 | "name": "John Doe", | CODE |
| LOW | …rd_as_default_payment_method--Customer.retrieve.3.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …rd_as_default_payment_method--Customer.retrieve.3.json | 28 | "name": "John Doe", | CODE |
| LOW | …tures/upgrade_license_counts--Customer.retrieve.1.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …tures/upgrade_license_counts--Customer.retrieve.1.json | 28 | "name": "John Doe", | CODE |
| LOW | …voice_plans_as_needed_server--Customer.retrieve.4.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …voice_plans_as_needed_server--Customer.retrieve.4.json | 28 | "name": "John Doe", | CODE |
| LOW | …res/check_upgrade_parameters--Customer.retrieve.7.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …res/check_upgrade_parameters--Customer.retrieve.7.json | 28 | "name": "John Doe", | CODE |
| LOW | …d_price_annual_business_plan--Customer.retrieve.1.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …d_price_annual_business_plan--Customer.retrieve.1.json | 28 | "name": "John Doe", | CODE |
| LOW | …ures/upgrade_license_counts--Customer.retrieve.16.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …ures/upgrade_license_counts--Customer.retrieve.16.json | 28 | "name": "John Doe", | CODE |
| LOW | …automatic_license_management--Customer.retrieve.3.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …automatic_license_management--Customer.retrieve.3.json | 28 | "name": "John Doe", | CODE |
| LOW | …ondition_during_card_upgrade--Customer.retrieve.5.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …ondition_during_card_upgrade--Customer.retrieve.5.json | 28 | "name": "John Doe", | CODE |
| LOW | …es/replace_payment_method--PaymentMethod.create.2.json | 7 | "line1": "123 Main St", | CODE |
| LOW | …es/replace_payment_method--PaymentMethod.create.2.json | 13 | "name": "John Doe", | CODE |
| LOW | …ures/upgrade_license_counts--Customer.retrieve.41.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …ures/upgrade_license_counts--Customer.retrieve.41.json | 28 | "name": "John Doe", | CODE |
| LOW | …es/check_upgrade_parameters--Customer.retrieve.25.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …es/check_upgrade_parameters--Customer.retrieve.25.json | 28 | "name": "John Doe", | CODE |
| LOW | …n_bundle_additional_licenses--Customer.retrieve.4.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …n_bundle_additional_licenses--Customer.retrieve.4.json | 28 | "name": "John Doe", | CODE |
| LOW | …rade_by_card_to_plus_plan--PaymentMethod.create.1.json | 7 | "line1": "123 Main St", | CODE |
| LOW | …rade_by_card_to_plus_plan--PaymentMethod.create.1.json | 13 | "name": "John Doe", | CODE |
| LOW | …ures/non_sponsorship_billing--Customer.retrieve.2.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …ures/non_sponsorship_billing--Customer.retrieve.2.json | 28 | "name": "John Doe", | CODE |
| LOW | …_downgrade_at_free_trial_end--Customer.retrieve.6.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …_downgrade_at_free_trial_end--Customer.retrieve.6.json | 28 | "name": "John Doe", | CODE |
| LOW | …minimum_licenses_for_plan--PaymentMethod.create.1.json | 7 | "line1": "123 Main St", | CODE |
| LOW | …minimum_licenses_for_plan--PaymentMethod.create.1.json | 13 | "name": "John Doe", | CODE |
| LOW | …automatic_license_management--Customer.retrieve.3.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …automatic_license_management--Customer.retrieve.3.json | 28 | "name": "John Doe", | CODE |
| LOW | …ser_to_basic_plan_free_trial--Customer.retrieve.1.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …ser_to_basic_plan_free_trial--Customer.retrieve.1.json | 28 | "name": "John Doe", | CODE |
| LOW | …e_fixtures/end_free_trial--PaymentMethod.create.1.json | 7 | "line1": "123 Main St", | CODE |
| LOW | …e_fixtures/end_free_trial--PaymentMethod.create.1.json | 13 | "name": "John Doe", | CODE |
| LOW | …s/free_trial_upgrade_by_card--Customer.retrieve.4.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …s/free_trial_upgrade_by_card--Customer.retrieve.4.json | 28 | "name": "John Doe", | CODE |
| LOW | …er_complimentary_access_plan--Customer.retrieve.5.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …er_complimentary_access_plan--Customer.retrieve.5.json | 28 | "name": "John Doe", | CODE |
| LOW | …_to_another_fixed_price_plan--Customer.retrieve.1.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …_to_another_fixed_price_plan--Customer.retrieve.1.json | 28 | "name": "John Doe", | CODE |
| LOW | …al_urls_for_remote_server--PaymentMethod.create.1.json | 7 | "line1": "123 Main St", | CODE |
| LOW | …al_urls_for_remote_server--PaymentMethod.create.1.json | 13 | "name": "John Doe", | CODE |
| LOW | …de_complimentary_access_plan--Customer.retrieve.5.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …de_complimentary_access_plan--Customer.retrieve.5.json | 28 | "name": "John Doe", | CODE |
| LOW | …m_user_to_monthly_basic_plan--Customer.retrieve.5.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …m_user_to_monthly_basic_plan--Customer.retrieve.5.json | 28 | "name": "John Doe", | CODE |
| LOW | …nitial_remote_server_upgrade--Customer.retrieve.1.json | 22 | "line1": "123 Main St", | CODE |
| LOW | …nitial_remote_server_upgrade--Customer.retrieve.1.json | 28 | "name": "John Doe", | CODE |
| LOW | …omplimentary_access_customer--Customer.retrieve.6.json | 22 | "line1": "123 Main St", | CODE |
| 949 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | corporate/views/support.py | 13 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zilencer/models.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zilencer/views.py | 16 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/forms.py | 13 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/tests/test_realm_creation.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/tests/test_integrations_dev_panel.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/tests/test_subs.py | 11 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/tests/test_import_export.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/tests/test_realm_domains.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/tests/test_validators.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/tests/test_typed_endpoint.py | 5 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | zerver/tests/test_widgets.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/tests/test_users.py | 11 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/tests/test_realm_linkifiers.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/management/commands/import.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/management/commands/change_password.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/management/commands/change_realm_subdomain.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/management/commands/create_realm.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/management/commands/realm_domain.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/models/custom_profile_fields.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/models/linkifiers.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/models/realm_playgrounds.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/models/realms.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/data_import/import_util.py | 19 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/data_import/slack_message_conversion.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/actions/realm_emoji.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/actions/message_send.py | 12 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/actions/realm_playgrounds.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/validator.py | 37 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/users.py | 11 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/narrow.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/email_validation.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/domains.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/external_accounts.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/scim.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/typed_endpoint_validators.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/drafts.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/exceptions.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/recipient_users.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/subscription_info.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/lib/event_types.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/webhooks/ifttt/view.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/webhooks/jira/view.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/webhooks/rhodecode/view.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/webhooks/freshstatus/view.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/webhooks/newrelic/view.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/webhooks/zabbix/view.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/webhooks/uptimerobot/view.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/views/registration.py | 15 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/views/user_settings.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/views/auth.py | 15 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/views/custom_profile_fields.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/views/realm_linkifiers.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/views/users.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/views/realm_domains.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/views/message_send.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/views/submessage.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zerver/views/realm.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | zproject/backends.py | 33 | from django.core.exceptions import ValidationError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | version.py | 21 | # Versions of the desktop app below DESKTOP_MINIMUM_VERSION will be | COMMENT |
| LOW | version.py | 41 | # directions. | COMMENT |
| LOW | corporate/tests/test_stripe.py | 6201 | # server_uuid = str(uuid.uuid4()) | COMMENT |
| LOW | corporate/models/plans.py | 121 | next_invoice_date = models.DateTimeField(db_index=True, null=True) | COMMENT |
| LOW | corporate/lib/decorator.py | 81 | request, realm_uuid | COMMENT |
| LOW | corporate/lib/stripe.py | 1161 | COMMENT | |
| LOW | corporate/lib/stripe.py | 1261 | ): | COMMENT |
| LOW | corporate/lib/test_stripe_class.py | 341 | # relevance, so collapse it to a placeholder. | COMMENT |
| LOW | corporate/lib/test_stripe_class.py | 361 | file_content = file_content.replace( | COMMENT |
| LOW | …ocumentation_crawler/documentation_crawler/settings.py | 21 | "Mozilla/5.0 (X11; Linux x86_64) " | COMMENT |
| LOW | …ocumentation_crawler/documentation_crawler/settings.py | 41 | # COOKIES_ENABLED = False | COMMENT |
| LOW | …ocumentation_crawler/documentation_crawler/settings.py | 61 | # 'documentation_crawler.middlewares.DocumentationCrawlerDownloaderMiddleware': 543, | COMMENT |
| LOW | …ocumentation_crawler/documentation_crawler/settings.py | 81 | # The maximum download delay to be set in case of high latencies | COMMENT |
| LOW | …tion_crawler/documentation_crawler/spiders/__init__.py | 1 | # This package will contain the spiders of your Scrapy project | COMMENT |
| LOW | tools/setup/emoji/custom_emoji_names.py | 261 | # where People/144 would substitute. It'd be nice if there were another | COMMENT |
| LOW | tools/setup/emoji/custom_emoji_names.py | 761 | "1f938": {"canonical_name": "cartwheel", "aliases": ["acrobatics", "gymnastics", "tumbling"]}, | COMMENT |
| LOW | tools/setup/emoji/custom_emoji_names.py | 1541 | # 24-hour time (used in many countries), like what is 00:30 or 01:00 | COMMENT |
| LOW | tools/setup/emoji/custom_emoji_names.py | 1561 | # '1f55f': {'canonical_name': 'X', 'aliases': ['clock430']}, | COMMENT |
| LOW | tools/droplets/create.py | 1 | # Creates a Zulip remote development environment droplet or | COMMENT |
| LOW | tools/droplets/add_mentor.py | 1 | # Allows a mentor to ssh into a DigitalOcean droplet. This is designed to be | COMMENT |
| LOW | tools/linter_lib/custom_check.py | 1 | from zulint.custom_rules import Rule, RuleList | COMMENT |
| LOW | web/styles/portico/billing.css | 181 | #licensechange-loading, | COMMENT |
| LOW | web/styles/portico/billing.css | 241 | } | COMMENT |
| LOW | web/styles/portico/billing.css | 301 | legacy_landing_page.css. */ | COMMENT |
| LOW | web/styles/portico/billing.css | 581 | #remote-billing-confirm-email-intro .not-editable-realm-field, | COMMENT |
| LOW | web/styles/portico/portico_signin.css | 1021 | color: var(--color-link-portico-auth-hover); | COMMENT |
| LOW | web/src/message_list_view.ts | 481 | // MessageList into the DOM, and maintaining it over time. | COMMENT |
| LOW | web/src/message_list_view.ts | 501 | // | COMMENT |
| LOW | web/src/message_list_view.ts | 861 | message_container.msg, | COMMENT |
| LOW | web/src/message_list_view.ts | 1621 | // would push the pointer off the screen, we do a partial autoscroll, | COMMENT |
| LOW | web/src/message_list_view.ts | 1641 | // still end up being visible, so we do some arithmetic.) | COMMENT |
| LOW | web/src/message_list_view.ts | 1801 | // hash table to make this O(1) runtime. | COMMENT |
| LOW | web/src/lightbox.ts | 741 | `.message_row a[href='${CSS.escape($(this).attr("data-url")!)}'] img`, | COMMENT |
| LOW | web/src/drafts_overlay_ui.ts | 541 | } | COMMENT |
| LOW | web/src/compose_paste.ts | 261 | // `h1`), we don't want to retain its styling, except when it is needed to | COMMENT |
| LOW | web/src/compose_paste.ts | 521 | filter: "img", | COMMENT |
| LOW | web/src/echo.ts | 301 | return !content.startsWith("/me") && content.startsWith("/"); | COMMENT |
| LOW | web/src/server_events_dispatch.js | 1021 | // requiring a reload. This is likely fairly difficult, | COMMENT |
| LOW | web/src/compose_validate.ts | 241 | if (!stream_id) { | COMMENT |
| LOW | web/src/compose_validate.ts | 261 | // change this policy if user feedback suggests it'd be an | COMMENT |
| LOW | web/src/bootstrap_typeahead.ts | 461 | // * Since we use an offset which can partially hide | COMMENT |
| LOW | web/src/bootstrap_typeahead.ts | 921 | // we trigger a click from JavaScript (or with a mobile touchscreen), | COMMENT |
| LOW | web/src/transmit.ts | 101 | export function reply_message(message: Message, content: string): void { | COMMENT |
| LOW | web/src/ui_util.ts | 201 | COMMENT | |
| LOW | web/src/popover_menus.ts | 281 | // We only care about the reference element if it is inside the message feed since | COMMENT |
| LOW | web/src/popover_menus.ts | 301 | // const topmost_element = document.elementFromPoint( | COMMENT |
| LOW | web/src/search.ts | 221 | // we want to highlight the first typeahead row by default | COMMENT |
| LOW | web/src/tippyjs.ts | 41 | return ""; | COMMENT |
| LOW | web/src/tippyjs.ts | 61 | export const EXTRA_LONG_HOVER_DELAY: [number, number] = [1500, 20]; | COMMENT |
| LOW | web/src/tippyjs.ts | 81 | animation: false, | COMMENT |
| LOW | web/src/message_view.ts | 581 | } | COMMENT |
| LOW | web/src/message_view.ts | 1161 | export function maybe_add_local_messages(opts: { | COMMENT |
| LOW | web/src/message_view.ts | 1181 | // things, both of which are somewhat optional: | COMMENT |
| LOW | web/src/message_view.ts | 1221 | } | COMMENT |
| LOW | web/src/message_view.ts | 1261 | return; | COMMENT |
| LOW | web/src/message_view.ts | 1281 | } | COMMENT |
| LOW | web/src/message_view.ts | 1341 | // go to the server to get it before we can render the narrow. | COMMENT |
| LOW | web/src/message_lists.ts | 21 | message_list.data.set_rendered_message_list_id(undefined); | COMMENT |
| LOW | web/src/pm_list.ts | 281 | const top_item_no_unreads = $top_dm_item.hasClass("zero-dm-unreads"); | COMMENT |
| LOW | web/src/narrow_state.ts | 261 | COMMENT | |
| 353 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | corporate/tests/test_stripe.py | 2402 | # Create an open invoice | COMMENT |
| MEDIUM | corporate/lib/stripe.py | 3979 | # Create a new renewal invoice with updated licenses so that this becomes the last | COMMENT |
| MEDIUM | corporate/lib/stripe.py | 4180 | # Create a ledger entry for the complimentary access plan for tracking purposes. | COMMENT |
| MEDIUM | corporate/lib/stripe.py | 4225 | # Create a ledger entry for the community plan for tracking purposes. | COMMENT |
| MEDIUM⚡ | corporate/lib/test_stripe_class.py | 642 | # Create a PaymentMethod using the token | COMMENT |
| MEDIUM | tools/setup/emoji/emoji_setup_utils.py | 1 | # This file contains various helper functions used by `build_emoji` tool. | COMMENT |
| MEDIUM | tools/lib/provision_inner.py | 310 | # The following block is skipped when we just need the development | COMMENT |
| MEDIUM | zilencer/management/commands/populate_billing_realms.py | 89 | # Create a realm for each plan type | COMMENT |
| MEDIUM | zilencer/management/commands/populate_billing_realms.py | 287 | # Create a card payment method and attach it to the customer | COMMENT |
| MEDIUM | zilencer/management/commands/populate_billing_realms.py | 369 | # Create a user with billing access | COMMENT |
| MEDIUM | zilencer/management/commands/populate_db.py | 1004 | # Create a test realm emoji. | COMMENT |
| MEDIUM | zerver/tests/test_channel_fetch.py | 1451 | # Create a stream for which Hamlet is the only subscriber. | STRING |
| MEDIUM | zerver/tests/test_channel_fetch.py | 1532 | # Create a private stream for which Hamlet is the only subscriber. | STRING |
| MEDIUM | zerver/tests/test_email_mirror.py | 1076 | # Create an invalid attachment: | COMMENT |
| MEDIUM⚡ | zerver/tests/test_push_notifications.py | 1934 | # Create a message to self using PERSONAL recipient type | COMMENT |
| MEDIUM | zerver/tests/test_push_notifications.py | 636 | # Create a duplicate, newer uuid-based registration for the same user to verify | COMMENT |
| MEDIUM | zerver/tests/test_push_notifications.py | 1051 | # Create a simulated second server. We will take user's RemoteRealm registration | COMMENT |
| MEDIUM | zerver/tests/test_push_notifications.py | 1193 | # Create the expected RemoteRealm registration and proceed with testing with a | COMMENT |
| MEDIUM⚡ | zerver/tests/test_drafts.py | 322 | # Create a draft. | COMMENT |
| MEDIUM⚡ | zerver/tests/test_drafts.py | 428 | # Create a draft. | COMMENT |
| MEDIUM | zerver/tests/test_drafts.py | 380 | # Create a draft. | COMMENT |
| MEDIUM | zerver/tests/test_drafts.py | 473 | # Create a draft. | COMMENT |
| MEDIUM | zerver/tests/test_channel_creation.py | 332 | # Creating an existing channel should return an error. | COMMENT |
| MEDIUM | zerver/tests/test_presence.py | 549 | # Create a first presence for the user. It's the first one and has status idle, | COMMENT |
| MEDIUM | zerver/tests/test_subs.py | 4433 | # Create a private stream with Hamlet subscribed | COMMENT |
| MEDIUM | zerver/tests/test_subs.py | 4850 | # Create a whole bunch of streams | COMMENT |
| MEDIUM | zerver/tests/test_subs.py | 5686 | # Creating an invite-only stream is allowed | COMMENT |
| MEDIUM | zerver/tests/test_import_export.py | 183 | """This class is a container for shared helper functions | STRING |
| MEDIUM | zerver/tests/test_bots.py | 427 | # Create a bot. | COMMENT |
| MEDIUM | zerver/tests/test_bots.py | 726 | # Create a bot and then deactivate it | COMMENT |
| MEDIUM | zerver/tests/test_scheduled_messages.py | 215 | # Create a direct message group for the sender. | COMMENT |
| MEDIUM | zerver/tests/test_signup.py | 264 | # Create a user who hasn't had historical messages added | COMMENT |
| MEDIUM⚡ | zerver/tests/test_message_fetch.py | 378 | # Create a direct message group between users | COMMENT |
| MEDIUM⚡ | zerver/tests/test_message_fetch.py | 445 | # Create a direct message group between users | COMMENT |
| MEDIUM⚡ | zerver/tests/test_message_fetch.py | 468 | # Create a direct message group with the user | COMMENT |
| MEDIUM⚡ | zerver/tests/test_message_fetch.py | 491 | # Create a direct message group with the user | COMMENT |
| MEDIUM⚡ | zerver/tests/test_message_fetch.py | 809 | # Create a direct message group with the user | COMMENT |
| MEDIUM⚡ | zerver/tests/test_message_fetch.py | 820 | # Create a direct message group with the user | COMMENT |
| MEDIUM | zerver/tests/test_slack_importer.py | 2790 | # Create a user who become the realm owner, ideally this will be created | STRING |
| MEDIUM | zerver/tests/test_auth_backends.py | 9301 | # Creating a mock Django form in order to keep the test simple. | COMMENT |
| MEDIUM | zerver/tests/test_auth_backends.py | 9336 | # Creating a mock Django form in order to keep the test simple. | COMMENT |
| MEDIUM | zerver/tests/test_message_send.py | 3274 | # Create a non-bot user | COMMENT |
| MEDIUM | zerver/tests/test_message_send.py | 3278 | # Create a new bot user | COMMENT |
| MEDIUM | zerver/tests/test_reminders.py | 93 | # Create a direct message group for hamlet's self messages. | COMMENT |
| MEDIUM | zerver/tests/test_reminders.py | 118 | # Create a direct message group between hamlet and othello. | COMMENT |
| MEDIUM | zerver/tests/test_reminders.py | 461 | # Create a test message to schedule a reminder for. | COMMENT |
| MEDIUM | zerver/tests/test_events.py | 4 | # This module is closely integrated with zerver/lib/event_schema.py | COMMENT |
| MEDIUM | zerver/tests/test_realm_linkifiers.py | 366 | # Create a linkifier with alternative URL templates. | COMMENT |
| MEDIUM | zerver/tests/test_channel_access.py | 28 | # Create a private stream for which Hamlet is the only subscriber. | COMMENT |
| MEDIUM | zerver/tests/test_channel_access.py | 92 | # Create a private stream for which Hamlet is the only subscriber. | COMMENT |
| MEDIUM | zerver/tests/test_invite.py | 430 | # Create a first user | COMMENT |
| MEDIUM | zerver/tests/test_link_embed.py | 29 | # The following code is taken from | COMMENT |
| MEDIUM | zerver/tests/test_markdown.py | 3428 | # Create a linkifier. | COMMENT |
| MEDIUM | zerver/tests/test_markdown.py | 3439 | # Create a topic link that potentially interferes with the pattern. | COMMENT |
| MEDIUM⚡ | zerver/tests/test_markdown.py | 2983 | # Create a linkifier. | STRING |
| MEDIUM⚡ | zerver/tests/test_markdown.py | 2993 | # Create a user that potentially interferes with the pattern. | STRING |
| MEDIUM⚡ | zerver/tests/test_markdown.py | 3079 | # Create a linkifier. | STRING |
| MEDIUM⚡ | zerver/tests/test_markdown.py | 3089 | # Create a user-group that potentially interferes with the pattern. | STRING |
| MEDIUM | zerver/tests/test_markdown.py | 626 | # Create a userprofile and send message with it. | STRING |
| MEDIUM | zerver/tests/test_markdown.py | 3732 | # Create a linkifier. | STRING |
| 51 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | corporate/lib/support.py | 284 | CODE | |
| LOW | corporate/lib/billing_management.py | 36 | CODE | |
| LOW | corporate/lib/stripe.py | 5981 | CODE | |
| LOW | corporate/lib/stripe.py | 1610 | CODE | |
| LOW | corporate/lib/stripe.py | 1996 | CODE | |
| LOW | corporate/lib/stripe.py | 2478 | CODE | |
| LOW | corporate/lib/stripe.py | 2726 | CODE | |
| LOW | corporate/lib/stripe.py | 2935 | CODE | |
| LOW | corporate/lib/stripe.py | 3191 | CODE | |
| LOW | corporate/lib/stripe.py | 3547 | CODE | |
| LOW | corporate/lib/stripe.py | 3895 | CODE | |
| LOW | corporate/lib/stripe.py | 4390 | CODE | |
| LOW | corporate/lib/stripe.py | 4776 | CODE | |
| LOW | corporate/lib/stripe.py | 4900 | CODE | |
| LOW | corporate/lib/stripe.py | 5024 | CODE | |
| LOW | corporate/lib/stripe.py | 5222 | CODE | |
| LOW | corporate/lib/stripe.py | 5340 | CODE | |
| LOW | corporate/lib/stripe.py | 5475 | CODE | |
| LOW | corporate/lib/test_stripe_class.py | 219 | CODE | |
| LOW | corporate/lib/stripe_event_handler.py | 127 | CODE | |
| LOW | corporate/views/support.py | 413 | CODE | |
| LOW | corporate/views/support.py | 768 | CODE | |
| LOW | corporate/views/installation_activity.py | 96 | CODE | |
| LOW | corporate/views/installation_activity.py | 140 | CODE | |
| LOW | corporate/views/remote_activity.py | 25 | CODE | |
| LOW | …rawler/documentation_crawler/spiders/common/spiders.py | 143 | CODE | |
| LOW | tools/tests/test_zulint_custom_rules.py | 47 | CODE | |
| LOW | tools/lib/pretty_print.py | 41 | CODE | |
| LOW | tools/lib/template_parser.py | 56 | CODE | |
| LOW | tools/lib/template_parser.py | 307 | CODE | |
| LOW | tools/lib/template_parser.py | 352 | CODE | |
| LOW | tools/lib/test_server.py | 55 | CODE | |
| LOW | tools/lib/provision_inner.py | 262 | CODE | |
| LOW | zilencer/views.py | 1572 | CODE | |
| LOW | zilencer/management/commands/populate_billing_realms.py | 335 | CODE | |
| LOW | zilencer/management/commands/populate_billing_realms.py | 419 | CODE | |
| LOW | zilencer/management/commands/populate_billing_realms.py | 88 | CODE | |
| LOW | zilencer/management/commands/queue_rate.py | 40 | CODE | |
| LOW | zilencer/management/commands/populate_db.py | 1310 | CODE | |
| LOW | zilencer/management/commands/populate_db.py | 1482 | CODE | |
| LOW | zilencer/management/commands/populate_db.py | 367 | CODE | |
| LOW | zilencer/management/commands/render_messages.py | 37 | CODE | |
| LOW | scripts/setup/generate_secrets.py | 78 | CODE | |
| LOW | scripts/lib/sharding.py | 31 | CODE | |
| LOW | scripts/lib/supervisor.py | 44 | CODE | |
| LOW | scripts/lib/zulip_tools.py | 303 | CODE | |
| LOW | scripts/lib/zulip_tools.py | 727 | CODE | |
| LOW | zerver/decorator.py | 371 | CODE | |
| LOW | zerver/decorator.py | 379 | CODE | |
| LOW | zerver/decorator.py | 383 | CODE | |
| LOW | zerver/checks.py | 134 | CODE | |
| LOW | zerver/tests/test_compatibility.py | 38 | CODE | |
| LOW | zerver/tests/test_integrations.py | 123 | CODE | |
| LOW | zerver/tests/test_microsoft_teams_importer.py | 739 | CODE | |
| LOW | zerver/tests/test_openapi.py | 50 | CODE | |
| LOW | zerver/tests/test_openapi.py | 444 | CODE | |
| LOW | zerver/tests/test_openapi.py | 908 | CODE | |
| LOW | zerver/tests/test_digest.py | 793 | CODE | |
| LOW | zerver/tests/test_migration_status.py | 16 | CODE | |
| LOW | zerver/tests/test_auth_backends.py | 542 | CODE | |
| 202 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | zilencer/models.py | 428 | # As noted above, remote_id may be null, so we only | COMMENT |
| HIGH | zilencer/models.py | 430 | # technically necessary, since null != null, but it | COMMENT |
| HIGH | zilencer/models.py | 489 | # be null; since null != null, this condition is not | COMMENT |
| HIGH | zerver/tests/test_presence.py | 598 | The data model now supports them being null, but the API should still return | STRING |
| HIGH | zerver/tests/test_validators.py | 327 | x = to_wild_value("x", '{"a": 1, "b": ["c", false, null]}') | CODE |
| HIGH⚡ | zerver/tests/test_message_fetch.py | 3037 | subject || rendered_content) | STRING |
| HIGH | zerver/tests/test_event_queue.py | 1366 | queue.push(in_dict) | CODE |
| HIGH | zerver/tests/test_event_queue.py | 1402 | queue.push(event) | CODE |
| HIGH | zerver/tests/test_event_queue.py | 1428 | queue.push( | CODE |
| HIGH | zerver/tests/test_event_queue.py | 1459 | queue.push( | CODE |
| HIGH | zerver/tests/test_event_queue.py | 1470 | queue.push( | CODE |
| HIGH | zerver/tests/test_event_queue.py | 1500 | queue.push( | CODE |
| HIGH | zerver/tests/test_event_queue.py | 1511 | queue.push( | CODE |
| HIGH | zerver/tests/test_event_queue.py | 1559 | queue.push(event) | CODE |
| HIGH | zerver/tests/test_event_queue.py | 1565 | queue.push({"type": "unknown", "timestamp": "1"}) | CODE |
| HIGH | zerver/management/commands/audit_fts_indexes.py | 17 | to_tsvector('zulip.english_us_search', subject || rendered_content) | STRING |
| HIGH | zerver/management/commands/audit_fts_indexes.py | 18 | WHERE to_tsvector('zulip.english_us_search', subject || rendered_content) != search_tsvector | STRING |
| HIGH | zerver/models/realms.py | 513 | # When non-null, all but the latest this many messages in the organization | COMMENT |
| HIGH | zerver/tornado/event_queue.py | 225 | self.event_queue.push(event) | CODE |
| HIGH | zerver/actions/realm_linkifiers.py | 152 | # None means unchanged. Empty string means null, normalize_optional_text | COMMENT |
| HIGH | zerver/lib/thumbnail.py | 300 | # content-type -- null, or empty from a blank ?mimetype= -- which | COMMENT |
| HIGH | zerver/lib/retention.py | 526 | # if stream.message_retention_days is null, use the realm's policy | COMMENT |
| HIGH | zerver/lib/markdown/fenced_code.py | 276 | processor.push(handler) | CODE |
| HIGH | zerver/lib/markdown/fenced_code.py | 459 | self.push(handler) | CODE |
| HIGH | zerver/webhooks/raygun/view.py | 177 | # Contains list of tags for the error. Can be empty (null) | COMMENT |
| HIGH⚡ | zerver/webhooks/sentry/tests.py | 149 | :orange_circle: **New exception:** [TypeError: can't access property "bar", x.foo is undefined](https://sentry.io/organi | CODE |
| HIGH | zproject/computed_settings.py | 364 | # The default is null, which means no timeout; 2 is the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | corporate/tests/test_support_views.py | 36 | CODE | |
| LOW | corporate/tests/test_remote_billing.py | 42 | CODE | |
| LOW | corporate/models/__init__.py | 1 | CODE | |
| LOW | corporate/models/__init__.py | 2 | CODE | |
| LOW | corporate/models/__init__.py | 3 | CODE | |
| LOW | corporate/models/__init__.py | 4 | CODE | |
| LOW | corporate/models/__init__.py | 5 | CODE | |
| LOW | corporate/models/__init__.py | 6 | CODE | |
| LOW | corporate/models/__init__.py | 7 | CODE | |
| LOW | corporate/models/__init__.py | 8 | CODE | |
| LOW | corporate/models/__init__.py | 9 | CODE | |
| LOW | corporate/models/__init__.py | 10 | CODE | |
| LOW | corporate/models/__init__.py | 11 | CODE | |
| LOW | corporate/lib/test_stripe_class.py | 91 | CODE | |
| LOW | corporate/views/billing_page.py | 26 | CODE | |
| LOW | corporate/views/billing_page.py | 26 | CODE | |
| LOW | corporate/views/event_status.py | 18 | CODE | |
| LOW | corporate/views/event_status.py | 18 | CODE | |
| LOW | corporate/views/session.py | 17 | CODE | |
| LOW | corporate/views/session.py | 17 | CODE | |
| LOW | corporate/views/upgrade.py | 23 | CODE | |
| LOW | corporate/views/upgrade.py | 23 | CODE | |
| LOW | corporate/views/sponsorship.py | 16 | CODE | |
| LOW | corporate/views/sponsorship.py | 16 | CODE | |
| LOW | corporate/views/portico.py | 31 | CODE | |
| LOW | corporate/views/portico.py | 31 | CODE | |
| LOW | tools/linter_lib/custom_check.py | 1 | CODE | |
| LOW | confirmation/models.py | 36 | CODE | |
| LOW | confirmation/models.py | 36 | CODE | |
| LOW | zerver/decorator.py | 64 | CODE | |
| LOW | zerver/apps.py | 82 | CODE | |
| LOW | zerver/tests/test_channel_fetch.py | 35 | CODE | |
| LOW | zerver/tests/test_home.py | 40 | CODE | |
| LOW | zerver/tests/test_decorators.py | 64 | CODE | |
| LOW | zerver/tests/test_exception_filter.py | 1 | CODE | |
| LOW | zerver/tests/test_subs.py | 103 | CODE | |
| LOW | zerver/tests/test_docs.py | 32 | CODE | |
| LOW | zerver/tests/test_redis_utils.py | 3 | CODE | |
| LOW | zerver/tests/test_i18n.py | 19 | CODE | |
| LOW | zerver/tests/test_scheduled_messages.py | 27 | CODE | |
| LOW | zerver/tests/test_external.py | 25 | CODE | |
| LOW | zerver/tests/test_scim.py | 21 | CODE | |
| LOW | zerver/tests/test_signup.py | 97 | CODE | |
| LOW | zerver/tests/test_widgets.py | 13 | CODE | |
| LOW | zerver/tests/test_message_fetch.py | 80 | CODE | |
| LOW | zerver/tests/test_slack_importer.py | 85 | CODE | |
| LOW | zerver/tests/test_auth_backends.py | 124 | CODE | |
| LOW | zerver/tests/test_auth_backends.py | 174 | CODE | |
| LOW | zerver/tests/test_reminders.py | 24 | CODE | |
| LOW | zerver/tests/test_message_delete.py | 21 | CODE | |
| LOW | zerver/tests/test_invite.py | 82 | CODE | |
| LOW | zerver/tests/test_message_flags.py | 46 | CODE | |
| LOW | zerver/tests/test_settings.py | 19 | CODE | |
| LOW | zerver/tests/test_reactions.py | 25 | CODE | |
| LOW | zerver/models/__init__.py | 1 | CODE | |
| LOW | zerver/models/__init__.py | 2 | CODE | |
| LOW | zerver/models/__init__.py | 3 | CODE | |
| LOW | zerver/models/__init__.py | 4 | CODE | |
| LOW | zerver/models/__init__.py | 5 | CODE | |
| LOW | zerver/models/__init__.py | 6 | CODE | |
| 126 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/setup/emoji/custom_emoji_names.py | 677 | # potentially fun emoji to have in conjunction with ice_cream. Put in | COMMENT |
| LOW | tools/linter_lib/custom_check.py | 832 | # version of the tab-based whitespace rule (we can't just use | COMMENT |
| MEDIUM | web/src/user_group_edit_members.ts | 363 | // add member request as the endpoint is not so robust and | COMMENT |
| MEDIUM | zilencer/models.py | 405 | # are stats we track on the bouncer server itself, pertaining to the remote server. | COMMENT |
| MEDIUM | zilencer/models.py | 453 | # stats pertaining to a realm on a remote server. For such objects, we will link to | COMMENT |
| MEDIUM | zerver/decorator.py | 247 | # more robust to just key off whether it was a browser view | COMMENT |
| LOW | zerver/middleware.py | 407 | # just return the response without logging further. | COMMENT |
| LOW⚡ | zerver/tests/test_webhooks_common.py | 119 | # we just return a fixed dictionary. | COMMENT |
| MEDIUM | zerver/tests/test_presence.py | 369 | # here in the response - but it's still good to test the code is robust | COMMENT |
| LOW | zerver/tests/test_subs.py | 4318 | streams_to_sub = streams[:1] # just add one, to make the message easier to check | CODE |
| MEDIUM | zerver/tests/test_import_export.py | 1413 | # More general assertions on the entire sets of audit logs pertaining to our users. | COMMENT |
| MEDIUM | zerver/tests/test_message_fetch.py | 1369 | # Definitely forbid seeing history on private channels. | COMMENT |
| MEDIUM | zerver/tests/test_message_fetch.py | 1489 | # Definitely, a guest user can't access the unsubscribed private channel | COMMENT |
| LOW | zerver/tests/test_auth_backends.py | 3140 | # and we simply use one loaded from a fixture file. | COMMENT |
| LOW | zerver/tests/test_auth_backends.py | 4660 | # This URL isn't used in the Apple auth flow, so we just set a | COMMENT |
| LOW | zerver/tests/test_message_flags.py | 124 | # we should get the old message we just set to unread | COMMENT |
| LOW | zerver/models/messages.py | 511 | # Certain additional flags are just set once when the UserMessage | COMMENT |
| MEDIUM | zerver/models/realms.py | 75 | # We include a prefix to facilitate scanning for accidental | COMMENT |
| LOW | zerver/models/realms.py | 1378 | # that the previous enum setting allowed, then just return the | COMMENT |
| LOW | zerver/tornado/django_api.py | 180 | # Tornado process, we simply call the process_notification | COMMENT |
| LOW | zerver/data_import/slack.py | 2003 | # We're not using pagination, so we don't want to loop and should just return the result. | COMMENT |
| LOW | zerver/actions/user_settings.py | 681 | # their presence state intact - so just return without | COMMENT |
| LOW | zerver/actions/streams.py | 990 | # we can just return early. | COMMENT |
| LOW | zerver/actions/reactions.py | 157 | # deactivated custom emoji, so we just use the emoji name from | COMMENT |
| MEDIUM | zerver/actions/realm_settings.py | 842 | # more robust for ensuring no messages belonging to | COMMENT |
| MEDIUM | zerver/lib/event_schema.py | 255 | # robust. | STRING |
| MEDIUM | zerver/lib/event_schema.py | 258 | # simplify our types or make them more robust | STRING |
| LOW | zerver/lib/generate_test_data.py | 144 | # this is the hacky version where we just use inline image | COMMENT |
| LOW⚡ | zerver/lib/users.py | 993 | # We just set date_joined field to UNIX epoch. | COMMENT |
| LOW | zerver/lib/users.py | 971 | # just set bot_owner_id=None. | COMMENT |
| LOW | zerver/lib/users.py | 1142 | # in row object, so we can just add it to result directly. | COMMENT |
| LOW | zerver/lib/narrow.py | 1642 | # just return `None`. | COMMENT |
| MEDIUM | zerver/lib/events.py | 1815 | # from scratch. Definitely don't need to re-query everything, | COMMENT |
| LOW | zerver/lib/rest.py | 75 | # view function logic and just return the response. | COMMENT |
| LOW | zerver/lib/presence.py | 135 | # just set it to a fixed value for API format compatibility. | COMMENT |
| LOW | zerver/lib/scim.py | 742 | # we just add a hacky approach for detecting and handling this single, specific | COMMENT |
| LOW | zerver/lib/retention.py | 198 | # We can simply use LIMIT without worrying about OFFSETs and ordering | COMMENT |
| LOW | zerver/lib/soft_deactivation.py | 263 | # a message, we just use the overall max message ID. | COMMENT |
| LOW⚡ | zerver/lib/i18n.py | 95 | # browser/request associated with them, and should just use | COMMENT |
| LOW | zerver/lib/test_helpers.py | 395 | # get rid of this abstraction entirely and just use the HTTP | COMMENT |
| MEDIUM | zerver/lib/test_helpers.py | 594 | var_dir = "var" # TODO make sure path is robust here | CODE |
| MEDIUM | zerver/lib/email_notifications.py | 312 | # structure of the URL to leverage. We can't use `relative_to_full_url()` | COMMENT |
| MEDIUM | zerver/lib/mention.py | 104 | # In particular, user_cache is not robust to message_sender | COMMENT |
| LOW | zerver/lib/send_email.py | 155 | # out; as such, they just use a STATIC_URL prefix. | COMMENT |
| LOW | zerver/lib/push_notifications.py | 1124 | # just use a colon to indicate this is the sender. | COMMENT |
| LOW | zerver/lib/markdown/tabbed_sections.py | 102 | # Otherwise, just use the end of the entire section | STRING |
| LOW | zerver/lib/upload/s3.py | 190 | # no access key makes `generate_presigned_url` just return the | COMMENT |
| MEDIUM⚡ | zerver/webhooks/linear/tests.py | 31 | expected_message = "[Issue](https://linear.app/webhooks/issue/WEB-44/this-is-regarding-the-outage-that-we-faced- | CODE |
| MEDIUM⚡ | zerver/webhooks/linear/tests.py | 36 | expected_message = "Satyam Bansal [commented](https://linear.app/webhooks/issue/WEB-46#comment-c7cafc52) on issu | CODE |
| MEDIUM⚡ | zerver/webhooks/linear/tests.py | 46 | expected_message = "Satyam Bansal [updated comment](https://linear.app/webhooks/issue/WEB-46#comment-c7cafc52) o | CODE |
| MEDIUM⚡ | zerver/webhooks/linear/tests.py | 71 | expected_message = "[Issue](https://linear.app/webhooks/issue/WEB-44/this-is-regarding-the-outage-that-we-faced- | CODE |
| MEDIUM | zproject/prod_settings_template.py | 565 | ## For details on this, see the aforementioned python3-saml documentation | COMMENT |
| MEDIUM | zproject/backends.py | 4228 | # This is more robust than relying on storing variables in request.session. | COMMENT |
| LOW | zproject/backends.py | 2855 | # subdomain.zulip.example.com, we would just call | COMMENT |
| LOW | zproject/backends.py | 3179 | # we just use the primary email address, which is always verified. | COMMENT |
| LOW | zproject/backends.py | 3365 | # What we'd like to do with the payload is just pass it into | COMMENT |
| MEDIUM | zproject/backends.py | 3665 | """Get the URL to which we must redirect in order to | STRING |
| LOW | analytics/views/stats.py | 448 | # should simply use the first and last data points for the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | corporate/lib/stripe.py | 4670 | def update_license_ledger_if_needed(self, event_time: datetime) -> None: | CODE |
| LOW | …ickapps/prepare_digital_ocean_one_click_app_release.py | 58 | def set_api_request_retry_limits(api_object: digitalocean.baseapi.BaseAPI) -> None: | CODE |
| LOW | tools/lib/test_server.py | 26 | def set_up_django(external_host: str) -> None: | CODE |
| LOW⚡ | zilencer/auth.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | zilencer/views.py | 117 | logger = logging.getLogger(__name__) | CODE |
| LOW | zilencer/management/commands/add_mock_conversation.py | 38 | def set_avatar(self, user: UserProfile, filename: str) -> None: | STRING |
| LOW | zilencer/lib/push_notifications.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | zerver/tests/test_retention.py | 117 | def _set_realm_message_retention_value(self, realm: Realm, retention_period: int) -> None: | CODE |
| LOW⚡ | zerver/tests/test_realm.py | 2746 | def update_with_realm_default_api(self, name: str, val: Any) -> None: | CODE |
| LOW | zerver/tests/test_import_export.py | 3576 | def set_favorite_city(user: UserProfile, city: str) -> None: | STRING |
| LOW | zerver/tests/test_user_topics.py | 298 | def set_topic_visibility_for_user(user: UserProfile, visibility_policy: int) -> None: | CODE |
| LOW | zerver/tests/test_user_topics.py | 517 | def set_topic_visibility_for_user(user: UserProfile, visibility_policy: int) -> None: | CODE |
| LOW | zerver/tests/test_parallel.py | 254 | def set_file_logger(output_dir: str) -> None: | CODE |
| LOW⚡ | zerver/tests/test_message_fetch.py | 3027 | def _update_tsvector_index(self) -> None: | CODE |
| LOW | zerver/tests/test_message_fetch.py | 5819 | def update_message(self, msg: Message, content: str) -> None: | CODE |
| LOW⚡ | zerver/tests/test_markdown.py | 3191 | def update_message_and_check_flag(content: str, mentioned: bool) -> None: | STRING |
| LOW | zerver/tests/test_messages.py | 39 | def set_presence(user: UserProfile, client_name: str, ago: int) -> None: | CODE |
| LOW | zerver/management/commands/deliver_scheduled_emails.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | zerver/management/commands/enqueue_digest_emails.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | zerver/management/commands/update_subscriber_counts.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ment/commands/update_channel_recently_active_status.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | zerver/models/users.py | 965 | def set_password(self, password: str | None) -> None: | CODE |
| LOW | zerver/models/scheduled_jobs.py | 225 | def set_topic_name(self, topic_name: str) -> None: | CODE |
| LOW | zerver/models/messages.py | 282 | def set_topic_name(self, topic_name: str) -> None: | CODE |
| LOW | zerver/openapi/merge_api_changelogs.py | 99 | def update_feature_level_in_api_docs(new_feature_level: int) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 118 | def set_moderation_request_channel(client: Client, channel: str | None = "core team") -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 288 | def update_presence(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 324 | def update_status(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 552 | def update_user(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 696 | def update_realm_filter(client: Client, filter_id: int) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 857 | def update_bot_storage(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 956 | def update_stream(client: Client, stream_id: int) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 1081 | def update_user_topic(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 1176 | def update_subscription_settings(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 1204 | def update_subscription_property(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 1349 | def update_navigation_views(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 1546 | def update_message(client: Client, message_id: int, prev_content: str) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 1627 | def update_message_flags(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 1741 | def update_settings(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 1906 | def set_typing_status(client: Client) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 1964 | def set_message_edit_typing_status(client: Client, message_id: int) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 2072 | def update_user_group(client: Client, user_group_id: int) -> None: | CODE |
| LOW | zerver/openapi/python_examples.py | 2086 | def update_user_group_members(client: Client, user_group_id: int) -> None: | CODE |
| LOW⚡ | zerver/tornado/descriptors.py | 15 | def set_descriptor_by_handler_id(handler_id: int, client_descriptor: "ClientDescriptor") -> None: | CODE |
| LOW | zerver/tornado/descriptors.py | 30 | def set_current_port(port: int) -> None: | CODE |
| LOW | zerver/actions/user_settings.py | 410 | def set_avatar_to_default(user_profile: UserProfile, *, acting_user: UserProfile | None) -> None: | CODE |
| LOW | zerver/actions/message_edit.py | 428 | def update_flag(um: UserMessage, should_set: bool, flag: int) -> None: | CODE |
| LOW | zerver/actions/presence.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | zerver/actions/user_activity.py | 32 | def update_user_activity_interval(user_profile: UserProfile, log_time: datetime) -> None: | CODE |
| LOW | zerver/lib/queue.py | 365 | def set_qos(frame: Any) -> None: | CODE |
| LOW | zerver/lib/queue.py | 433 | def set_queue_client(queue_client: SimpleQueueClient | TornadoQueueClient) -> None: | CODE |
| LOW | zerver/lib/digest.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | zerver/lib/fix_unreads.py | 25 | def update_unread_flags(cursor: CursorWrapper, user_message_ids: list[int]) -> None: | CODE |
| LOW | zerver/lib/zstd_level9.py | 4 | __all__ = ["compress", "decompress"] | CODE |
| LOW | zerver/lib/rate_limiter.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | zerver/lib/message.py | 1392 | def update_first_visible_message_id(realm: Realm) -> None: | CODE |
| LOW | zerver/lib/avatar.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | zerver/lib/notes.py | 49 | def set_notes(cls, key: _KeyT, notes: _DataT) -> None: | CODE |
| LOW | zerver/lib/bot_storage.py | 36 | def set_bot_storage(bot_profile: UserProfile, entries: list[tuple[str, str]]) -> None: | CODE |
| LOW | zerver/lib/import_realm.py | 329 | def update_id_map(table: TableName, old_id: int, new_id: int) -> None: | CODE |
| 43 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | corporate/lib/stripe.py | 1363 | except Exception as e: | CODE |
| LOW | corporate/lib/stripe.py | 1667 | except Exception as e: # nocoverage | CODE |
| LOW | corporate/lib/stripe.py | 1694 | except Exception as e: | CODE |
| LOW | corporate/lib/stripe.py | 1729 | except Exception as e: # nocoverage | CODE |
| LOW | corporate/lib/stripe.py | 5998 | except Exception as e: | CODE |
| LOW | corporate/lib/stripe_event_handler.py | 67 | except Exception: | CODE |
| LOW | corporate/views/webhook.py | 47 | except Exception: | CODE |
| LOW | corporate/views/remote_billing_page.py | 221 | except Exception: # nocoverage | CODE |
| LOW | corporate/views/upgrade.py | 72 | except Exception: | CODE |
| LOW | corporate/views/upgrade.py | 122 | except Exception: # nocoverage | CODE |
| LOW | corporate/views/upgrade.py | 172 | except Exception: # nocoverage | CODE |
| LOW | corporate/views/installation_activity.py | 329 | except Exception: | CODE |
| LOW | tools/lib/provision_inner.py | 258 | except Exception: | CODE |
| LOW⚡ | zilencer/views.py | 469 | except Exception: # nocoverage | CODE |
| MEDIUM | …t/commands/manage_push_registration_encryption_keys.py | 39 | print("Error: Please provide either --add or --remove-key <public-key>.") | STRING |
| MEDIUM | …t/commands/manage_push_registration_encryption_keys.py | 66 | print("Error: No key pair found for the given public key.") | STRING |
| LOW | zerver/decorator.py | 400 | except Exception as err: | CODE |
| LOW | zerver/decorator.py | 829 | except Exception as err: | CODE |
| LOW | zerver/forms.py | 408 | except Exception: | CODE |
| MEDIUM | zerver/tests/test_docs.py | 42 | print("Error processing URL:", url) | CODE |
| LOW | zerver/tests/test_openapi.py | 481 | except Exception: # nocoverage | STRING |
| LOW | zerver/tests/test_queue.py | 74 | except Exception: | CODE |
| LOW | zerver/management/commands/register_server.py | 230 | except Exception: | CODE |
| LOW | zerver/management/commands/sync_ldap_user_data.py | 59 | except Exception: | CODE |
| LOW | zerver/management/commands/process_queue.py | 28 | except Exception: | CODE |
| LOW | zerver/tornado/handlers.py | 80 | except Exception as e: | CODE |
| LOW⚡ | zerver/tornado/event_queue.py | 1861 | except Exception: | CODE |
| LOW | zerver/tornado/event_queue.py | 237 | except Exception: | CODE |
| LOW | zerver/tornado/event_queue.py | 716 | except Exception: | CODE |
| LOW | zerver/data_import/microsoft_teams.py | 596 | except Exception: # nocoverage | STRING |
| LOW | zerver/data_import/slack.py | 1217 | except Exception: | CODE |
| LOW | zerver/actions/scheduled_messages.py | 459 | except Exception as e: | CODE |
| LOW | zerver/actions/data_import.py | 192 | except Exception as e: | CODE |
| LOW | zerver/lib/event_schema.py | 152 | except Exception: # nocoverage | CODE |
| LOW | zerver/lib/widget.py | 142 | except Exception: | CODE |
| LOW | zerver/lib/widget.py | 147 | except Exception: | CODE |
| LOW | zerver/lib/export.py | 829 | except Exception: | CODE |
| LOW | zerver/lib/export.py | 3158 | except Exception: | STRING |
| LOW | zerver/lib/logging_util.py | 64 | except Exception: | CODE |
| LOW | zerver/lib/import_realm.py | 647 | except Exception: | STRING |
| LOW | zerver/lib/attachments.py | 49 | except Exception: | CODE |
| LOW | zerver/lib/zulip_update_announcements.py | 812 | except Exception: # nocoverage | STRING |
| LOW | zerver/lib/mobile_auth_otp.py | 50 | except Exception: | CODE |
| LOW⚡ | zerver/lib/soft_deactivation.py | 391 | except Exception: # nocoverage | CODE |
| LOW | zerver/lib/email_notifications.py | 235 | except Exception as e: | CODE |
| LOW | zerver/lib/parallel.py | 38 | except Exception: | CODE |
| LOW | zerver/lib/send_email.py | 477 | except Exception: | CODE |
| LOW | zerver/lib/markdown/__init__.py | 2683 | except Exception: | CODE |
| LOW | zerver/lib/markdown/fenced_code.py | 515 | except Exception: | CODE |
| LOW | zerver/worker/missedmessage_emails.py | 143 | except Exception: | CODE |
| LOW | zerver/worker/missedmessage_emails.py | 266 | except Exception: | CODE |
| LOW | zerver/worker/deferred_work.py | 133 | except Exception: | CODE |
| LOW | zerver/worker/base.py | 85 | except Exception: | CODE |
| LOW | zerver/worker/base.py | 213 | except Exception as e: | CODE |
| MEDIUM | zerver/worker/base.py | 80 | def check_and_send_restart_signal() -> None: | CODE |
| LOW | zerver/webhooks/librato/view.py | 179 | except Exception as e: | CODE |
| LOW⚡ | zerver/webhooks/sentry/tests.py | 139 | except Exception as e: | CODE |
| LOW | zerver/webhooks/sentry/tests.py | 75 | except Exception as e: | CODE |
| LOW | zerver/views/home.py | 149 | except Exception: | CODE |
| LOW | zerver/views/health.py | 21 | except Exception: # nocoverage | CODE |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/droplets/README.md | 13 | ## Step 1: Join Zulip DigitalOcean team | COMMENT |
| LOW | tools/droplets/README.md | 19 | ## Step 2: Create your DigitalOcean API token | COMMENT |
| LOW | tools/droplets/README.md | 30 | ## Step 3: Configure create.py | COMMENT |
| LOW | web/src/sidebar_ui.ts | 554 | // NOTE: This function is designed to be used for keyboard navigation purposes. | COMMENT |
| LOW | web/src/dropdown_widget.ts | 794 | // NOTE: This function needs to be explicitly called when you want to update the | COMMENT |
| LOW | web/src/message_list_data.ts | 280 | // NOTE: This function returns the first unread that was fetched and is not | COMMENT |
| LOW | .claude/skills/debug-node-coverage/SKILL.md | 24 | ## Step 1: Read the uncovered lines | COMMENT |
| LOW | .claude/skills/debug-node-coverage/SKILL.md | 37 | ## Step 2: Find the test file | COMMENT |
| LOW⚡ | .claude/skills/debug-node-coverage/SKILL.md | 50 | ## Step 3: Add tests for testable code | COMMENT |
| LOW⚡ | .claude/skills/debug-node-coverage/SKILL.md | 57 | ## Step 4: Handle unreachable assertions | COMMENT |
| LOW⚡ | .claude/skills/debug-node-coverage/SKILL.md | 62 | ## Step 5: Verify | COMMENT |
| LOW | docs/development/setup-recommended.md | 90 | ### Step 0: Set up Git & GitHub | COMMENT |
| LOW | docs/development/setup-recommended.md | 101 | ### Step 1: Install prerequisites | COMMENT |
| LOW | docs/development/setup-recommended.md | 273 | ### Step 2: Get Zulip code | COMMENT |
| LOW | docs/development/setup-recommended.md | 307 | ### Step 3: Start the development environment | COMMENT |
| LOW | docs/development/setup-recommended.md | 438 | ### Step 4: Developing | COMMENT |
| LOW | docs/development/request-remote.md | 14 | ## Step 1: Join GitHub and create SSH keys | COMMENT |
| LOW | docs/development/request-remote.md | 23 | ## Step 2: Create a fork of zulip/zulip | COMMENT |
| LOW | docs/development/request-remote.md | 38 | ## Step 3: Make request via chat.zulip.org | COMMENT |
| LOW | docs/subsystems/onboarding-steps.md | 14 | ### Step 1: Add the Onboarding Step Name | COMMENT |
| LOW | docs/subsystems/onboarding-steps.md | 28 | ### Step 2: Display the Onboarding Step | COMMENT |
| LOW | docs/subsystems/onboarding-steps.md | 35 | ### Step 3: Mark the Onboarding Step as Read | COMMENT |
| LOW | docs/production/install.md | 36 | ## Step 0: Set up a base server | COMMENT |
| LOW | docs/production/install.md | 42 | ## Step 1: Download the latest release | COMMENT |
| LOW | docs/production/install.md | 57 | ## Step 2: Install Zulip | COMMENT |
| LOW | docs/production/install.md | 165 | ## Step 3: Create a Zulip organization, and log in | COMMENT |
| LOW | docs/production/postgresql.md | 41 | #### Step 1: Choose database name and username | COMMENT |
| LOW | docs/production/postgresql.md | 47 | #### Step 1: Set up Zulip | COMMENT |
| LOW | docs/production/postgresql.md | 62 | #### Step 3: Create the PostgreSQL database | COMMENT |
| LOW | docs/production/postgresql.md | 78 | #### Step 4: Configure Zulip to use the PostgreSQL database | COMMENT |
| LOW | docs/production/postgresql.md | 113 | #### Step 1: Set up Zulip | COMMENT |
| LOW | docs/production/postgresql.md | 124 | #### Step 2: Create the PostgreSQL database server | COMMENT |
| LOW | docs/production/postgresql.md | 143 | #### Step 3: Configure Zulip to use the PostgreSQL database | COMMENT |
| LOW | docs/webhooks/incoming-webhooks-walkthrough.md | 15 | ## Step 0: Create fixtures | COMMENT |
| LOW | docs/webhooks/incoming-webhooks-walkthrough.md | 57 | ## Step 1: Initialize the python package | COMMENT |
| LOW | docs/webhooks/incoming-webhooks-walkthrough.md | 65 | ## Step 2: Write the main webhook code | COMMENT |
| LOW | docs/webhooks/incoming-webhooks-walkthrough.md | 175 | ## Step 3: Create an API endpoint for the webhook | COMMENT |
| LOW | docs/webhooks/incoming-webhooks-walkthrough.md | 215 | ## Step 4: Manually test the webhook | COMMENT |
| LOW | docs/webhooks/incoming-webhooks-walkthrough.md | 295 | ## Step 5: Create automated tests | COMMENT |
| LOW | docs/webhooks/incoming-webhooks-walkthrough.md | 387 | ## Step 6: Document the integration | COMMENT |
| LOW | docs/webhooks/incoming-webhooks-walkthrough.md | 421 | ## Step 7: Prepare a pull request | COMMENT |
| LOW | docs/git/pull-requests.md | 28 | ### Step 0: Make sure you're on a feature branch (not `main`) | COMMENT |
| LOW | docs/git/pull-requests.md | 40 | ### Step 1: Update your branch with git rebase | COMMENT |
| LOW | docs/git/pull-requests.md | 66 | ### Step 2: Push your updated branch to your remote fork | COMMENT |
| LOW | docs/git/pull-requests.md | 103 | ### Step 3: Open the pull request | COMMENT |
| LOW | docs/git/cloning.md | 95 | ## Step 2: Set up the Zulip development environment | COMMENT |
| LOW | docs/git/cloning.md | 102 | ## Step 3: Configure continuous integration for your fork | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | corporate/tests/test_remote_billing.py | 812 | # Check if zephyr and lear were deactivated | COMMENT |
| LOW | corporate/lib/stripe.py | 807 | # Check if customer has any $0 invoices. | COMMENT |
| LOW | corporate/lib/stripe.py | 1984 | # Check if the customer is scheduled for an upgrade. | COMMENT |
| LOW | corporate/lib/stripe.py | 2508 | # Check if user has already paid for the plan by invoice. | COMMENT |
| LOW | corporate/lib/stripe.py | 2960 | # Check if user was successful in adding a card and we are rendering the page again. | COMMENT |
| LOW | zilencer/views.py | 259 | # Check if the domain has an MX record | COMMENT |
| LOW | zilencer/views.py | 269 | # Check if the A/AAAA exist, for better error reporting | COMMENT |
| LOW | scripts/lib/puppet_cache.py | 40 | # Check if a cached version already exists | COMMENT |
| LOW | zerver/context_processors.py | 102 | # Check if view function is in corporate app. | COMMENT |
| LOW | zerver/tests/test_user_status.py | 143 | # Set Hamlet to in a meeting. | COMMENT |
| LOW | zerver/tests/test_realm_playgrounds.py | 21 | # Check if the actual object exists | COMMENT |
| LOW | zerver/tests/test_audit_log.py | 1994 | # Set workplace_users_group to an anonymous group containing the group | COMMENT |
| LOW | zerver/tests/test_audit_log.py | 2163 | # Set workplace_users_group to an anonymous group containing the group | COMMENT |
| LOW | zerver/tests/test_user_topics.py | 356 | # Verify if events are sent properly | COMMENT |
| LOW | zerver/tests/test_user_topics.py | 424 | # Verify if events are sent properly | COMMENT |
| LOW | zerver/tests/test_user_topics.py | 575 | # Verify if events are sent properly | COMMENT |
| LOW | zerver/tests/test_user_topics.py | 643 | # Verify if events are sent properly | COMMENT |
| LOW | zerver/tests/test_tutorial.py | 191 | # Check if Welcome bot still replies for bot commands | COMMENT |
| LOW | zerver/tests/test_user_groups.py | 2647 | # Check if members of a NamedUserGroup are allowed to create user groups. | COMMENT |
| LOW | zerver/tests/test_user_groups.py | 2658 | # Check if members of an anonymous group are allowed to create user groups. | COMMENT |
| LOW | zerver/tests/test_user_groups.py | 2996 | # Check if members of a NamedUserGroup are allowed to add/remove members. | COMMENT |
| LOW | zerver/tests/test_user_groups.py | 3012 | # Check if members of an anonymous group are allowed to add/remove members. | COMMENT |
| LOW | zerver/tests/test_user_groups.py | 3311 | # Set permissions to manage the group and adding others to group | COMMENT |
| LOW | zerver/tests/test_scheduled_messages.py | 650 | # Check if another user can access these scheduled messages. | COMMENT |
| LOW | zerver/tests/test_queue_worker.py | 297 | # Set ourself to stop at the top of the next loop, but | COMMENT |
| LOW | zerver/tests/test_signup.py | 1896 | # Check if user is subscribed to the streams of default | COMMENT |
| LOW | zerver/tests/test_signup.py | 2035 | # Check if user is subscribed to the streams of default | COMMENT |
| LOW | zerver/tests/test_message_fetch.py | 4518 | # Check if the anchor value in response is correct for different | COMMENT |
| LOW | zerver/tests/test_slack_importer.py | 2812 | # Check if we cannot find the realm, preregistration_realm is revoked. | STRING |
| LOW | zerver/tests/test_slack_importer.py | 2838 | # Check if we render a form for user to select a user if there | STRING |
| LOW | zerver/tests/test_auth_backends.py | 370 | # Verify if a realm has password auth disabled, correct password is rejected | COMMENT |
| LOW | zerver/tests/test_example.py | 528 | # Set limit to edit message content. | COMMENT |
| LOW | zerver/openapi/test_curl_examples.py | 94 | # Set AUTHENTICATION_LINE to default_authentication_line. | COMMENT |
| LOW | zerver/data_import/slack_message_conversion.py | 162 | # Check if there's a pipe with text after it | STRING |
| LOW | zerver/actions/message_send.py | 1306 | # Check if this is a 1:1 DM between a user and the Welcome Bot, | COMMENT |
| LOW | zerver/actions/presence.py | 260 | # Check if the row was actually created or if we | STRING |
| LOW | zerver/lib/narrow.py | 1634 | # Check if channel exists. | COMMENT |
| LOW | zerver/lib/import_realm.py | 2270 | # Set it to the latest level to avoid receiving older update messages. | STRING |
| LOW | zerver/lib/test_runner.py | 314 | # Check if we are in serial mode to avoid unnecessarily making a directory. | COMMENT |
| LOW | zerver/lib/markdown/__init__.py | 1210 | # Set text to initial input, so simple clients translating | COMMENT |
| LOW | zerver/webhooks/teamcity/view.py | 113 | # Check if this is a personal build, and if so try to direct message the user who triggered it. | STRING |
| LOW | zerver/views/auth.py | 554 | # Check if the mobile URL is overridden in settings, if so, replace it | COMMENT |
| LOW | zerver/views/upload.py | 296 | # Check if this is something that we thumbnail at all | COMMENT |
| LOW | zerver/views/tusd.py | 335 | # Check if unauthenticated requests are for realm creation | COMMENT |
| LOW | zproject/default_settings.py | 100 | # Set this to True to enforce that any configured IdP needs to specify | COMMENT |
| LOW | zproject/default_settings.py | 778 | # Set it to None to disable it. | COMMENT |
| LOW | zproject/backends.py | 645 | # Check if the email ends with LDAP_APPEND_DOMAIN | COMMENT |
| LOW | zproject/dev_settings.py | 24 | # Check if test_settings.py set EXTERNAL_HOST. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | corporate/views/support.py | 159 | CODE | |
| LOW | corporate/views/support.py | 206 | CODE | |
| LOW | corporate/views/support.py | 259 | CODE | |
| LOW | corporate/views/support.py | 413 | CODE | |
| LOW | corporate/views/support.py | 768 | CODE | |
| LOW | corporate/views/upgrade.py | 223 | CODE | |
| LOW | corporate/views/upgrade.py | 258 | CODE | |
| LOW | corporate/views/upgrade.py | 293 | CODE | |
| LOW | confirmation/models.py | 200 | CODE | |
| LOW | zerver/forms.py | 517 | CODE | |
| LOW | zerver/tests/test_scheduled_messages.py | 59 | CODE | |
| LOW | zerver/tests/test_auth_backends.py | 815 | CODE | |
| LOW | zerver/tests/test_auth_backends.py | 872 | CODE | |
| LOW | zerver/tests/test_auth_backends.py | 882 | CODE | |
| LOW | zerver/tests/test_auth_backends.py | 3075 | CODE | |
| LOW | zerver/tests/test_auth_backends.py | 4680 | CODE | |
| LOW | zerver/tests/test_auth_backends.py | 4795 | CODE | |
| LOW | zerver/tests/test_auth_backends.py | 4839 | CODE | |
| LOW | zerver/tests/test_reminders.py | 44 | CODE | |
| LOW | zerver/tests/test_events.py | 345 | CODE | |
| LOW | zerver/tests/test_message_delete.py | 398 | CODE | |
| LOW | zerver/tests/test_message_delete.py | 403 | CODE | |
| LOW | zerver/tests/test_message_delete.py | 408 | CODE | |
| LOW | zerver/tests/test_message_delete.py | 413 | CODE | |
| LOW | zerver/tests/test_message_delete.py | 576 | CODE | |
| LOW | zerver/tests/test_message_delete.py | 580 | CODE | |
| LOW | zerver/tests/test_message_delete.py | 584 | CODE | |
| LOW | zerver/tests/test_message_delete.py | 588 | CODE | |
| LOW | zerver/tests/test_invite.py | 213 | CODE | |
| LOW | zerver/tests/test_email_change.py | 55 | CODE | |
| LOW | zerver/tests/test_settings.py | 529 | CODE | |
| LOW | zerver/tests/test_reactions.py | 701 | CODE | |
| LOW | zerver/tests/test_reactions.py | 709 | CODE | |
| LOW | zerver/tests/test_reactions.py | 717 | CODE | |
| LOW | zerver/tornado/django_api.py | 85 | CODE | |
| LOW | zerver/tornado/views.py | 140 | CODE | |
| LOW | zerver/actions/create_user.py | 504 | CODE | |
| LOW | zerver/actions/message_send.py | 647 | CODE | |
| LOW | zerver/actions/message_send.py | 1463 | CODE | |
| LOW | zerver/actions/message_send.py | 1737 | CODE | |
| LOW | zerver/actions/message_send.py | 1943 | CODE | |
| LOW | zerver/actions/create_realm.py | 190 | CODE | |
| LOW | zerver/lib/create_user.py | 150 | CODE | |
| LOW | zerver/lib/streams.py | 369 | CODE | |
| LOW | zerver/lib/streams.py | 2048 | CODE | |
| LOW | zerver/lib/events.py | 167 | CODE | |
| LOW | zerver/lib/events.py | 2103 | CODE | |
| LOW | zerver/lib/export.py | 570 | CODE | |
| LOW | zerver/lib/test_helpers.py | 378 | CODE | |
| LOW | zerver/lib/send_email.py | 88 | CODE | |
| LOW | zerver/lib/send_email.py | 272 | CODE | |
| LOW | zerver/lib/send_email.py | 360 | CODE | |
| LOW | zerver/lib/integrations.py | 151 | CODE | |
| LOW | zerver/lib/integrations.py | 284 | CODE | |
| LOW | zerver/lib/integrations.py | 326 | CODE | |
| LOW | zerver/lib/test_classes.py | 572 | CODE | |
| LOW | zerver/lib/test_classes.py | 888 | CODE | |
| LOW | zerver/lib/test_classes.py | 1347 | CODE | |
| LOW | zerver/lib/markdown/__init__.py | 2547 | CODE | |
| LOW | zerver/lib/markdown/__init__.py | 2718 | CODE | |
| 20 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | zerver/tests/test_submessage.py | 0 | tests that `send_event_rollback_unsafe` is hooked to `transaction.on_commit`. this is important, because we don't want t | STRING |
| HIGH | zerver/tests/test_message_delete.py | 0 | tests that `send_event_rollback_unsafe` is hooked to `transaction.on_commit`. this is important, because we don't want t | STRING |
| HIGH | zerver/tests/test_reactions.py | 0 | tests that `send_event_rollback_unsafe` is hooked to `transaction.on_commit`. this is important, because we don't want t | STRING |
| HIGH | zerver/webhooks/freshstatus/view.py | 0 | hi there! your bot {bot_name} just received a uptimerobot payload that is missing some data that zulip requires. this us | STRING |
| HIGH | zerver/webhooks/zabbix/view.py | 0 | hi there! your bot {bot_name} just received a uptimerobot payload that is missing some data that zulip requires. this us | STRING |
| HIGH | zerver/webhooks/uptimerobot/view.py | 0 | hi there! your bot {bot_name} just received a uptimerobot payload that is missing some data that zulip requires. this us | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/message_list_tooltips.ts | 155 | // Thus, we need to check if the date string contains a digit or not using regex, | COMMENT |
| LOW | web/src/popover_menus.ts | 394 | // For other browsers, we need to check if the focused element is an text field and | COMMENT |
| LOW | web/src/message_view.ts | 517 | // we need to check if the narrow is allowed for spectator here too. | COMMENT |
| LOW | web/src/message_parser.ts | 6 | // We need to check if the message content contains the specified HTML | COMMENT |
| LOW | web/src/inbox_ui.ts | 345 | // Before we set the filter, we need to check if the inbox view is already visible. | COMMENT |
| LOW | web/src/message_util.ts | 140 | // If not, we need to check if the current filter matches the DM view we | COMMENT |
| LOW | web/src/message_notifications.ts | 322 | // And then we need to check if the message is a direct message, | COMMENT |
| LOW | web/src/message_notifications.ts | 394 | // And then we need to check if the message is a direct message, | COMMENT |
| LOW | web/src/message_list.ts | 189 | // TODO: For supporting other narrows, we need to check if we have fetched the first | COMMENT |
| LOW | zerver/lib/message.py | 1647 | # Now we need to check if the user initiated the topic. | COMMENT |
| LOW | zerver/lib/send_email.py | 842 | The purpose of this function is to log (potential) config errors, | STRING |
| LOW | zproject/backends.py | 1573 | The purpose of this function is to take a UserProfile meant for syncing with LDAP, | STRING |
| LOW | zproject/backends.py | 3487 | to note this detail. The purpose of this function is merely as a helper to figure out which | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/screenshots/for-events.json | 15 | "content": "Welcome everyone! Here are the slides for the keynote talk: [keynote-slides.ppt](#). Don't f | CODE |
| LOW | zerver/tornado/event_queue.py | 146 | # If you add a new key to this dict, make sure you add appropriate | COMMENT |
| LOW | zerver/tornado/event_queue.py | 370 | # If you add a new key to this dict, make sure you add appropriate | COMMENT |
| LOW | zerver/tornado/django_api.py | 109 | # We make sure to pre-fill the narrow user cache, to save | COMMENT |
| MEDIUM | zerver/lib/export.py | 388 | # you can add your new table to `ALL_ZULIP_TABLES` and | COMMENT |
| LOW | zerver/lib/import_realm.py | 152 | # make sure to reload related tables AFTER we re-map the ids. | COMMENT |
| LOW | puppet/kandra/files/nagios4/nagios.cfg | 717 | # patches to Nagios. Nagios is critical to you - make sure you keep it in | COMMENT |
| LOW | puppet/kandra/files/nagios4/nagios.cfg | 994 | # rescheduled, make sure you have orphaned service checks enabled. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | corporate/tests/test_stripe.py | 7210 | # TODO: Add test for invoice generation once that's implemented. | COMMENT |
| LOW | corporate/tests/test_stripe.py | 9393 | # TODO: Add test for invoice generation once that's implemented. | COMMENT |
| LOW | corporate/tests/test_remote_billing.py | 612 | # TODO: Add test for the case when redirected to error page (not yet implemented) | COMMENT |
| LOW | corporate/tests/test_remote_billing.py | 1443 | # TODO: Add test for the case when redirected to error page (not yet implemented) | COMMENT |
| LOW | corporate/tests/test_remote_billing.py | 1565 | # TODO: Add test for the case when redirected to error page (Not yet implemented) | COMMENT |
| LOW | corporate/models/stripe_state.py | 130 | # TODO: Add test for this case. Not sure how to trigger naturally. | COMMENT |
| LOW | corporate/models/stripe_state.py | 165 | # TODO: Add test for this case. Not sure how to trigger naturally. | COMMENT |
| LOW | corporate/lib/stripe.py | 3149 | # TODO: Add test coverage. Right now, this logic is used | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | web/src/info_overlay.ts | 175 | print("Zulip") | CODE |
| HIGH | web/src/info_overlay.ts | 183 | print("Zulip") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | analytics/lib/counts.py | 1012 | # mobile devices, as requested by the remote server. Therefore | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | zerver/tests/test_decorators.py | 1395 | def test_function(request: HttpRequest) -> HttpResponse: | CODE |
| LOW⚡ | zerver/tests/test_decorators.py | 1411 | def test_function(request: HttpRequest) -> HttpResponse: | CODE |
| LOW | zerver/tests/test_outgoing_webhook_system.py | 255 | def helper(side_effect: Any, error_text: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | zerver/lib/markdown/__init__.py | 2282 | # --------------------------------------------------- | COMMENT |