Web based localization tool with tight version control integration.
This report summarizes scanner evidence for WeblateOrg/weblate, a Python project with 6,110 GitHub stars. SynthScan examined 459,344 lines of code across 1503 source files, recording 8798 pattern matches distributed across 20 syntactic categories. The legacy adjusted pattern signal is 20.8 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 7163 finding(s).
Are imports declared and package/API names verified? 1305 finding(s).
Are wrappers, guards, and repeated structures necessary? 6971 finding(s).
Which changes need focused human review? 8798 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 8798 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/middleware.py | 138 | def should_redirect_with_slash(self, request: AuthenticatedHttpRequest) -> bool: | CODE |
| LOW | weblate/middleware.py | 207 | def check_existing_translations(self, language: Language, project: Project) -> bool: | CODE |
| LOW | weblate/middleware.py | 339 | def apply_request_csp_settings(self) -> None: | CODE |
| LOW | weblate/middleware.py | 399 | def build_csp_google_analytics(self) -> None: | CODE |
| LOW | weblate/metrics/wrapper.py | 277 | def populate_month_activity_cache( | CODE |
| LOW | weblate/metrics/tasks.py | 73 | def collect_workspace_metrics(date_value: str) -> None: | CODE |
| LOW | weblate/metrics/tasks.py | 97 | def collect_component_metrics(date_value: str) -> None: | CODE |
| LOW | weblate/metrics/tasks.py | 109 | def collect_component_list_metrics(date_value: str) -> None: | CODE |
| LOW | weblate/metrics/tasks.py | 121 | def collect_translation_metrics(date_value: str) -> None: | CODE |
| LOW | weblate/metrics/models.py | 129 | def get_language_change_metric_data( | CODE |
| LOW | weblate/metrics/models.py | 366 | def collect_category_language( | CODE |
| LOW | weblate/metrics/models.py | 700 | def create_metrics_translation(sender, instance, created=False, **kwargs) -> None: | CODE |
| LOW | weblate/metrics/models.py | 748 | def delete_metrics_component_list(sender, instance, **kwargs) -> None: | CODE |
| LOW | weblate/metrics/models.py | 756 | def delete_metrics_translation(sender, instance, **kwargs) -> None: | CODE |
| LOW | weblate/metrics/tests.py | 32 | def test_collect_schedules_scope_tasks(self) -> None: | CODE |
| LOW | weblate/metrics/tests.py | 64 | def test_collect_nested_shared_category(self) -> None: | CODE |
| LOW | weblate/metrics/tests.py | 108 | def test_cleanup_legacy_category_language_metric_keys(self) -> None: | CODE |
| LOW | weblate/metrics/tests.py | 135 | def test_collect_uses_requested_date(self) -> None: | CODE |
| LOW | weblate/metrics/tests.py | 142 | def test_change_metric_aggregates(self) -> None: | CODE |
| LOW | weblate/metrics/tests.py | 189 | def test_workspace_metric_lifecycle(self) -> None: | CODE |
| LOW | weblate/metrics/tests.py | 209 | def test_wrapper_prefers_today_metric(self) -> None: | CODE |
| LOW | weblate/screenshots/models.py | 183 | def change_screenshot_assignment(sender, instance, action, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/screenshots/models.py | 194 | def update_alerts_on_screenshot_save(sender, instance: Screenshot, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/screenshots/models.py | 202 | def update_alerts_on_screenshot_delete(sender, instance: Screenshot, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/screenshots/models.py | 210 | def update_screenshot_coverage_on_component_update( | CODE |
| LOW⚡ | weblate/screenshots/models.py | 216 | def validate_screenshot_image(component: Component, filename: str) -> str | None: | CODE |
| LOW | weblate/screenshots/models.py | 249 | def sync_screenshots_from_repo( | CODE |
| LOW | weblate/screenshots/tests.py | 58 | def test_rejects_invalid_extension(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 72 | def test_norwegian_ocr_language(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 108 | def test_cache_directory_creation_is_race_safe(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 121 | def test_transient_errors_are_retried(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 154 | def test_permanent_error_is_not_retried(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 170 | def test_exhausted_retries_leave_no_file(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 187 | def test_interrupted_install_removes_temporary_file(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 208 | def make_language_scoped_user(self, language_code: str, *permissions: str) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 276 | def test_upload_language_scope(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 324 | def test_upload_redirect_next(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 340 | def test_upload_redirect_next_invalid(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 394 | def test_upload_source_invalid(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 409 | def test_detail_has_documentation_link(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 450 | def test_edit_metadata_with_existing_oversized_image(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 519 | def test_view_uses_image_content_type(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 533 | def test_private_screenshot_actions_hidden(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 593 | def test_delete_redirect_next(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 612 | def test_delete_redirect_next_strips_page(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 641 | def test_delete_redirect_next_invalid(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 655 | def test_async_source_changes_use_screenshot_owner(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 682 | def test_source_manipulations(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 786 | def test_source_manipulations_language_scope(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 836 | def test_language_scoped_controls(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 868 | def test_source_bulk_manipulations(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 931 | def test_source_bulk_updates_alerts_once(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 967 | def test_list_coverage_summary(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 985 | def test_list_unassigned_filter(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 1058 | def test_list_search_invalid_regex_on_non_text_fields(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 1067 | def test_list_search_takes_precedence_over_legacy_unassigned_filter(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 1081 | def test_list_queries_do_not_scale_with_screenshots(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 1184 | def test_ocr_tesseract_error_propagates(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 1209 | def test_ocr_tesseract_download_error(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 1233 | def test_translation_manipulations(self) -> None: | CODE |
| 6549 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | weblate/urls.py | 311 | weblate.trans.views.settings.BackupsView.as_view(), | CODE |
| CRITICAL | weblate/urls.py | 316 | weblate.trans.views.settings.BackupsDownloadView.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 351 | weblate.trans.views.create.CreateProject.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 356 | weblate.trans.views.create.ImportProject.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 361 | weblate.trans.views.create.CreateComponentSelection.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 366 | weblate.trans.views.create.CreateComponent.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 371 | weblate.trans.views.create.CreateFromZip.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 376 | weblate.trans.views.create.CreateFromDoc.as_view(), | CODE |
| CRITICAL | weblate/urls.py | 771 | weblate.trans.views.basic.ProjectLanguageRedirectView.as_view(), | CODE |
| CRITICAL | weblate/urls.py | 776 | weblate.trans.views.basic.ProjectLanguageRedirectView.as_view( | CODE |
| CRITICAL⚡ | weblate/urls.py | 836 | weblate.trans.views.widgets.WidgetRedirectView.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 840 | weblate.trans.views.widgets.WidgetRedirectView.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 844 | weblate.trans.views.widgets.WidgetRedirectView.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 848 | weblate.trans.views.widgets.WidgetRedirectView.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 1065 | path("about/", weblate.trans.views.about.AboutView.as_view(), name="about"), | CODE |
| CRITICAL⚡ | weblate/urls.py | 1066 | path("donate/", weblate.trans.views.about.DonateView.as_view(), name="donate"), | CODE |
| CRITICAL⚡ | weblate/urls.py | 1067 | path("keys/", weblate.trans.views.about.KeysView.as_view(), name="keys"), | CODE |
| CRITICAL⚡ | weblate/urls.py | 1068 | path("stats/", weblate.trans.views.about.StatsView.as_view(), name="stats"), | CODE |
| CRITICAL | weblate/middleware.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/screenshots/models.py | 12 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/screenshots/tests.py | 18 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/formats/ttkit.py | 22 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/formats/source_edit.py | 13 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/formats/tests/test_txt.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/formats/tests/test_source_edit.py | 11 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/formats/tests/test_tbx_multivalue.py | 16 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/formats/tests/test_formats.py | 22 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/auth/models.py | 23 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/auth/forms.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/auth/utils.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/auth/tests/test_group_concurrency.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/auth/tests/test_models.py | 13 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/checks/flags.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/checks/markup.py | 16 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/checks/same.py | 133 | unit.translation.component.project.name.lower().split() | CODE |
| CRITICAL | weblate/checks/tests/test_flags.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/tasks.py | 15 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/models.py | 13 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/gettext.py | 19 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/consistency.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/test_gettext_rules.py | 13 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/fedora_messaging.py | 23 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/gettext_rules.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/forms.py | 1785 | queryset = self._addon.instance.component.translation_set.all() | CODE |
| CRITICAL | weblate/addons/webhooks.py | 17 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/tests.py | 34 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/base.py | 17 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/management/commands/install_addon.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/files.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/params.py | 20 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/render.py | 11 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/validators.py | 26 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/djangosaml2idp.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/forms.py | 11 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/outbound.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/stats.py | 966 | self._object.component.project.label_set.values_list("name", flat=True) | CODE |
| CRITICAL | weblate/utils/requests.py | 19 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/tests/test_validators.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/tests/test_files.py | 15 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/tests/test_requests.py | 14 | from django.core.exceptions import ValidationError | CODE |
| 64 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | weblate/formats/tests/test_formats.py | 1462 | "(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && n % 10 == 0) ? 2 : 3))", | CODE |
| HIGH | weblate/memory/tests.py | 1715 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" | CODE |
| HIGH | weblate/checks/tests/test_chars_checks.py | 92 | self.do_test(False, ("Save && Exit", "Save && Exit", "accelerator:&")) | CODE |
| HIGH⚡ | weblate/checks/tests/test_mdx.py | 142 | "{cond ? <p>{a}</p> : null}", | CODE |
| HIGH⚡ | weblate/checks/tests/test_mdx.py | 143 | ["{cond ? <p>{a}</p> : null}"], | CODE |
| HIGH | weblate/checks/tests/test_flags.py | 37 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" | CODE |
| HIGH | weblate/addons/test_ai.py | 80 | '{"results": null}', | CODE |
| HIGH⚡ | weblate/addons/tests.py | 10250 | repo.push("") | STRING |
| HIGH | weblate/utils/tests/test_api_ratelimits.py | 307 | "WEBLATE_API_RATELIMIT_IP_OVERRIDES": '{"192.0.2.42":null}', | CODE |
| HIGH⚡ | weblate/lang/tests.py | 45 | ("cs_CZ", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 46 | ("cze_CZ", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 47 | ("ces_CZ", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 52 | "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 56 | ("cs (2)", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 57 | ("cscz", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 58 | ("czech", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 63 | "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 77 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 77 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 85 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 85 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 93 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 93 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 101 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 101 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 148 | "n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 156 | "n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 164 | "n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 737 | "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)" | CODE |
| HIGH⚡ | weblate/lang/tests.py | 737 | "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)" | CODE |
| HIGH | weblate/lang/tests.py | 185 | "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH | weblate/lang/tests.py | 185 | "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH | weblate/lang/tests.py | 387 | "czech", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False | CODE |
| HIGH | weblate/lang/tests.py | 681 | "(n%10==1 ? 0 : n%10==1 && n%100!=11 ? 1 : n %10>=2 && (n%100<10 || n%100>=20) ? 2 : 3)", | CODE |
| HIGH | weblate/lang/tests.py | 681 | "(n%10==1 ? 0 : n%10==1 && n%100!=11 ? 1 : n %10>=2 && (n%100<10 || n%100>=20) ? 2 : 3)", | CODE |
| HIGH | weblate/lang/tests.py | 703 | "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;", | CODE |
| HIGH | weblate/lang/tests.py | 872 | "Created plural (n == 1) ? 0 : ((n != 0 && n % 1000000 == 0) ? 1 : 2) for language es_ZZ", | CODE |
| HIGH | weblate/lang/tests.py | 1118 | legacy_formula = "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2" | CODE |
| HIGH⚡ | weblate/lang/data.py | 63 | "n==1 || n%10==1 ? 0 : 1", | CODE |
| HIGH⚡ | weblate/lang/data.py | 68 | "n >= 2 && (n < 11 || n > 99)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 69 | "n % 10 != 1 || n % 100 == 11", | CODE |
| HIGH⚡ | weblate/lang/data.py | 70 | "(n % 10 == 1 && n % 100 != 11) ? 0 : 1", | CODE |
| HIGH⚡ | weblate/lang/data.py | 71 | "n != 1 && n != 2 && n != 3 && (n % 10 == 4 || n % 10 == 6 || n % 10 == 9)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 71 | "n != 1 && n != 2 && n != 3 && (n % 10 == 4 || n % 10 == 6 || n % 10 == 9)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 72 | "(n==0 || n==1)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 73 | "(n%10==1 && n%100!=11 ? 0 : 1)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 79 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 79 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 80 | "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 81 | "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 81 | "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 82 | "(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 82 | "(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 83 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 83 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 84 | "(n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19 | CODE |
| HIGH⚡ | weblate/lang/data.py | 84 | "(n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19 | CODE |
| HIGH⚡ | weblate/lang/data.py | 85 | "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 85 | "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 86 | "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", | CODE |
| 171 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 6 | CODE | |
| LOW | weblate/runner.py | 5 | CODE | |
| LOW | weblate/settings_test.py | 14 | CODE | |
| LOW | weblate/asgi.py | 7 | CODE | |
| LOW | weblate/settings_example.py | 6 | CODE | |
| LOW | weblate/urls.py | 5 | CODE | |
| LOW | weblate/sitemaps.py | 5 | CODE | |
| LOW | weblate/middleware.py | 5 | CODE | |
| LOW | weblate/wsgi.py | 20 | CODE | |
| LOW | weblate/metrics/wrapper.py | 5 | CODE | |
| LOW | weblate/metrics/tasks.py | 5 | CODE | |
| LOW | weblate/metrics/models.py | 5 | CODE | |
| LOW | weblate/configuration/models.py | 5 | CODE | |
| LOW | weblate/configuration/views.py | 5 | CODE | |
| LOW | weblate/configuration/templatetags/colors.py | 7 | CODE | |
| LOW | weblate/screenshots/tasks.py | 5 | CODE | |
| LOW | weblate/screenshots/tasks.py | 18 | CODE | |
| LOW | weblate/screenshots/models.py | 5 | CODE | |
| LOW | weblate/screenshots/forms.py | 5 | CODE | |
| LOW | weblate/screenshots/tests.py | 5 | CODE | |
| LOW | weblate/formats/ttkit.py | 8 | CODE | |
| LOW | weblate/formats/ttkit.py | 130 | CODE | |
| LOW | weblate/formats/convert.py | 7 | CODE | |
| LOW | weblate/formats/multi.py | 7 | CODE | |
| LOW | weblate/formats/txt.py | 7 | CODE | |
| LOW | weblate/formats/source_edit.py | 7 | CODE | |
| LOW | weblate/formats/defaults.py | 5 | CODE | |
| LOW | weblate/formats/exporters.py | 7 | CODE | |
| LOW | weblate/formats/exporters.py | 51 | CODE | |
| LOW | weblate/formats/exporters.py | 52 | CODE | |
| LOW | weblate/formats/external.py | 7 | CODE | |
| LOW | weblate/formats/helpers.py | 5 | CODE | |
| LOW | weblate/formats/base.py | 7 | CODE | |
| LOW | weblate/formats/auto.py | 7 | CODE | |
| LOW | weblate/formats/tests/test_txt.py | 7 | CODE | |
| LOW | weblate/formats/tests/test_source_edit.py | 5 | CODE | |
| LOW | weblate/formats/tests/test_source_edit.py | 24 | CODE | |
| LOW | weblate/formats/tests/test_languages.py | 7 | CODE | |
| LOW | weblate/formats/tests/test_tbx_multivalue.py | 7 | CODE | |
| LOW | weblate/formats/tests/test_convert.py | 7 | CODE | |
| LOW | weblate/formats/tests/test_exporters.py | 4 | CODE | |
| LOW | weblate/formats/tests/test_formats.py | 8 | CODE | |
| LOW | weblate/formats/tests/test_formats.py | 107 | CODE | |
| LOW | weblate/formats/tests/test_external.py | 7 | CODE | |
| LOW | weblate/formats/tests/test_multi.py | 7 | CODE | |
| LOW | weblate/formats/tests/test_multivalue.py | 8 | CODE | |
| LOW | weblate/memory/tasks.py | 4 | CODE | |
| LOW | weblate/memory/models.py | 5 | CODE | |
| LOW | weblate/memory/apps.py | 4 | CODE | |
| LOW | weblate/memory/forms.py | 5 | CODE | |
| LOW | weblate/memory/machine.py | 4 | CODE | |
| LOW | weblate/memory/utils.py | 5 | CODE | |
| LOW | weblate/memory/views.py | 4 | CODE | |
| LOW | weblate/memory/management/commands/import_memory.py | 4 | CODE | |
| LOW | weblate/memory/management/commands/dump_memory.py | 4 | CODE | |
| LOW | weblate/memory/management/commands/cleanup_memory.py | 5 | CODE | |
| LOW | weblate/auth/tasks.py | 5 | CODE | |
| LOW | weblate/auth/results.py | 5 | CODE | |
| LOW | weblate/auth/bots.py | 7 | CODE | |
| LOW | weblate/auth/forms.py | 5 | CODE | |
| 675 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/middleware.py | 216 | CODE | |
| LOW | weblate/middleware.py | 422 | CODE | |
| LOW | weblate/metrics/models.py | 258 | CODE | |
| LOW | weblate/screenshots/views.py | 190 | CODE | |
| LOW | weblate/screenshots/views.py | 743 | CODE | |
| LOW | weblate/formats/ttkit.py | 159 | CODE | |
| LOW | weblate/formats/ttkit.py | 624 | CODE | |
| LOW | weblate/formats/ttkit.py | 1076 | CODE | |
| LOW | weblate/formats/ttkit.py | 3526 | CODE | |
| LOW | weblate/formats/ttkit.py | 3605 | CODE | |
| LOW | weblate/formats/ttkit.py | 3610 | CODE | |
| LOW | weblate/formats/convert.py | 294 | CODE | |
| LOW | weblate/formats/exporters.py | 508 | CODE | |
| LOW | weblate/formats/base.py | 244 | CODE | |
| LOW | weblate/formats/auto.py | 116 | CODE | |
| LOW | weblate/formats/tests/test_tbx_multivalue.py | 193 | CODE | |
| LOW | weblate/formats/tests/test_tbx_multivalue.py | 620 | CODE | |
| LOW | weblate/formats/tests/test_formats.py | 3423 | CODE | |
| LOW | weblate/formats/tests/test_multivalue.py | 108 | CODE | |
| LOW | weblate/formats/tests/test_multivalue.py | 233 | CODE | |
| LOW | weblate/formats/tests/test_multivalue.py | 290 | CODE | |
| LOW | weblate/memory/tasks.py | 79 | CODE | |
| LOW | weblate/memory/tasks.py | 1123 | CODE | |
| LOW | weblate/memory/models.py | 1169 | CODE | |
| LOW | weblate/auth/models.py | 1399 | CODE | |
| LOW | weblate/auth/models.py | 1506 | CODE | |
| LOW | weblate/auth/permissions.py | 619 | CODE | |
| LOW | weblate/auth/permissions.py | 761 | CODE | |
| LOW | weblate/auth/permissions.py | 1496 | CODE | |
| LOW | weblate/auth/permissions.py | 1551 | CODE | |
| LOW | weblate/auth/tests/test_group_concurrency.py | 29 | CODE | |
| LOW | weblate/auth/management/commands/importusers.py | 34 | CODE | |
| LOW | weblate/checks/mdx.py | 45 | CODE | |
| LOW | weblate/checks/mdx.py | 164 | CODE | |
| LOW | weblate/checks/mdx.py | 208 | CODE | |
| LOW | weblate/checks/mdx.py | 243 | CODE | |
| LOW | weblate/checks/mdx.py | 325 | CODE | |
| LOW | weblate/checks/mdx.py | 423 | CODE | |
| LOW | weblate/checks/tasks.py | 54 | CODE | |
| LOW | weblate/checks/tasks.py | 179 | CODE | |
| LOW | weblate/checks/tasks.py | 271 | CODE | |
| LOW | weblate/checks/icu.py | 442 | CODE | |
| LOW | weblate/checks/flags.py | 180 | CODE | |
| LOW | weblate/checks/flags.py | 302 | CODE | |
| LOW | weblate/checks/format.py | 479 | CODE | |
| LOW | weblate/checks/format.py | 924 | CODE | |
| LOW | weblate/checks/markup.py | 83 | CODE | |
| LOW | weblate/checks/markup.py | 250 | CODE | |
| LOW | weblate/checks/markup.py | 902 | CODE | |
| LOW | weblate/checks/markup.py | 522 | CODE | |
| LOW | weblate/checks/utils.py | 45 | CODE | |
| LOW | weblate/checks/utils.py | 91 | CODE | |
| LOW | weblate/checks/utils.py | 137 | CODE | |
| LOW | weblate/checks/chars.py | 665 | CODE | |
| LOW | weblate/checks/placeholders.py | 118 | CODE | |
| LOW | weblate/checks/base.py | 133 | CODE | |
| LOW | weblate/checks/views.py | 113 | CODE | |
| LOW | weblate/checks/views.py | 142 | CODE | |
| LOW | weblate/checks/views.py | 270 | CODE | |
| LOW | weblate/checks/fluent/inner_html.py | 458 | CODE | |
| 307 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | weblate/screenshots/views.py | 748 | except RuntimeError: | CODE |
| HIGH | weblate/screenshots/views.py | 514 | except (KeyError, ValueError): | CODE |
| HIGH | weblate/formats/txt.py | 154 | except ValueError: | CODE |
| HIGH | weblate/addons/generate.py | 338 | except Translation.DoesNotExist: | CODE |
| HIGH | weblate/addons/generate.py | 354 | except Translation.DoesNotExist: | CODE |
| HIGH | weblate/utils/validators.py | 505 | except ValidationError: | CODE |
| HIGH | weblate/utils/filesystem.py | 53 | except FileNotFoundError: | CODE |
| HIGH | weblate/utils/outbound.py | 70 | except ValueError: | CODE |
| HIGH | weblate/utils/stats.py | 887 | except Change.DoesNotExist: | CODE |
| HIGH | weblate/accounts/utils.py | 136 | except ObjectDoesNotExist: | CODE |
| HIGH | weblate/accounts/pipeline.py | 373 | except strategy.storage.code.DoesNotExist: | CODE |
| HIGH | weblate/accounts/views.py | 379 | except (ObjectDoesNotExist, ValueError): | CODE |
| HIGH | weblate/accounts/views.py | 394 | except (ObjectDoesNotExist, ValueError): | CODE |
| HIGH | weblate/accounts/views.py | 2114 | except ValidationError: | CODE |
| HIGH | weblate/vcs/git.py | 766 | except OSError: | CODE |
| HIGH | weblate/vcs/git.py | 862 | except NoOptionError: | CODE |
| HIGH | weblate/api/serializers.py | 2410 | except FileNotFoundError: | CODE |
| HIGH | weblate/trans/discovery.py | 740 | except OSError: | CODE |
| HIGH | weblate/trans/debug.py | 35 | except FileNotFoundError: | CODE |
| HIGH | weblate/trans/debug.py | 39 | except OSError: | CODE |
| HIGH | weblate/trans/management/commands/import_demo.py | 41 | except Project.DoesNotExist: | CODE |
| HIGH | weblate/trans/models/unit.py | 688 | except KeyError: | CODE |
| HIGH | weblate/trans/models/translation.py | 2581 | except (ValueError, KeyError): | CODE |
| HIGH | weblate/trans/models/translation.py | 3262 | except ObjectDoesNotExist: | CODE |
| HIGH | weblate/trans/models/translation.py | 675 | except UnitNotFoundError: | CODE |
| HIGH | weblate/trans/models/translation.py | 3034 | except Unit.DoesNotExist: | CODE |
| HIGH | weblate/trans/models/component.py | 6410 | except RepositoryError: | CODE |
| HIGH | weblate/trans/models/component.py | 2272 | except self.translation_set.model.DoesNotExist: | CODE |
| HIGH | weblate/trans/views/changes.py | 157 | except Unit.DoesNotExist: | CODE |
| HIGH | weblate/trans/views/dashboard.py | 106 | except Language.DoesNotExist: | CODE |
| HIGH | weblate/trans/views/settings.py | 268 | except ObjectDoesNotExist: | CODE |
| HIGH | weblate/billing/management/commands/billing_demo.py | 62 | except IndexError: | CODE |
| HIGH | weblate/machinery/yandex.py | 88 | except Exception: | CODE |
| HIGH | weblate/machinery/google.py | 114 | except KeyError: | CODE |
| HIGH | weblate/machinery/deepl.py | 195 | except ValueError: | CODE |
| HIGH | weblate/machinery/deepl.py | 200 | except KeyError: | CODE |
| HIGH | weblate/machinery/yandexv2.py | 92 | except Exception: | CODE |
| HIGH | weblate/machinery/modernmt.py | 160 | except KeyError: | CODE |
| HIGH | weblate/machinery/baidu.py | 96 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | weblate/memory/machine.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/youdao.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/microsoft.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/tmserver.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/glosbe.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/cyrtranslit.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/saptranslationhub.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/systran.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/yandex.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/google.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/libretranslate.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/netease.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/yandexv2.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/modernmt.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/weblatetm.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/alibaba.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/baidu.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/machinery/googlev3.py | 0 | download list of possible translations from a service. | STRING |
| HIGH | weblate/vcs/git.py | 0 | remove stale branches and tags from the repository. | STRING |
| HIGH | weblate/vcs/mercurial.py | 0 | remove stale branches and tags from the repository. | STRING |
| HIGH | weblate/vcs/base.py | 0 | remove stale branches and tags from the repository. | STRING |
| HIGH | weblate/trans/models/translation.py | 0 | check whether there are some not committed changes. | STRING |
| HIGH | weblate/trans/models/component.py | 0 | check whether there are some not committed changes. | STRING |
| HIGH | weblate/trans/models/project.py | 0 | check whether there are some not committed changes. | STRING |
| HIGH | weblate/machinery/tmserver.py | 0 | download list of supported languages from a service. | STRING |
| HIGH | weblate/machinery/systran.py | 0 | download list of supported languages from a service. | STRING |
| HIGH | weblate/machinery/yandex.py | 0 | download list of supported languages from a service. | STRING |
| HIGH | weblate/machinery/yandexv2.py | 0 | download list of supported languages from a service. | STRING |
| HIGH | weblate/machinery/apertium.py | 0 | download list of supported languages from a service. | STRING |
| HIGH | weblate/machinery/base.py | 0 | download list of supported languages from a service. | STRING |
| HIGH | weblate/machinery/tmserver.py | 0 | check whether given language combination is supported. | STRING |
| HIGH | weblate/machinery/cyrtranslit.py | 0 | check whether given language combination is supported. | STRING |
| HIGH | weblate/machinery/systran.py | 0 | check whether given language combination is supported. | STRING |
| HIGH | weblate/machinery/mymemory.py | 0 | check whether given language combination is supported. | STRING |
| HIGH | weblate/machinery/deepl.py | 0 | check whether given language combination is supported. | STRING |
| HIGH | weblate/machinery/apertium.py | 0 | check whether given language combination is supported. | STRING |
| HIGH | weblate/machinery/base.py | 0 | check whether given language combination is supported. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/screenshots/forms.py | 250 | "placeholder": gettext_lazy("Search screenshots"), | CODE |
| LOW⚡ | weblate/formats/tests/test_exporters.py | 212 | long_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * 3 | CODE |
| LOW⚡ | weblate/formats/tests/test_exporters.py | 212 | long_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * 3 | CODE |
| LOW⚡ | weblate/auth/tests/test_admin.py | 23 | self.actor = User.objects.create_user("admin", "admin@example.com", "x") | CODE |
| LOW⚡ | weblate/auth/tests/test_admin.py | 38 | email="addon-test@example.org", | CODE |
| LOW⚡ | weblate/auth/tests/test_admin.py | 68 | email="bot-test-token@example.org", | CODE |
| LOW⚡ | weblate/auth/tests/test_views.py | 372 | "inactive-user", "inactive-user@example.org", "testpassword" | CODE |
| LOW⚡ | weblate/auth/tests/test_views.py | 379 | email="bot-user@example.org", | CODE |
| LOW | weblate/auth/tests/test_permissions.py | 34 | self.admin = User.objects.create_user("admin", "admin@example.com") | CODE |
| LOW | weblate/auth/management/commands/createadmin.py | 39 | default="admin@example.com", | CODE |
| LOW | weblate/auth/management/commands/createadmin.py | 40 | help='Admin email, defaults to "admin@example.com"', | CODE |
| LOW | weblate/auth/management/commands/createadmin.py | 64 | email = "admin@example.com" | CODE |
| LOW | weblate/checks/placeholders.py | 208 | merge_highlight_spans(source, spans), group_prefix="placeholder" | CODE |
| LOW⚡ | weblate/checks/tests/test_chars_checks.py | 192 | ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."], | CODE |
| LOW⚡ | weblate/checks/tests/test_chars_checks.py | 192 | ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."], | CODE |
| LOW⚡ | weblate/checks/tests/test_chars_checks.py | 199 | ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."], | CODE |
| LOW⚡ | weblate/checks/tests/test_chars_checks.py | 199 | ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."], | CODE |
| LOW | weblate/checks/tests/test_flags.py | 244 | {("placeholder", "zkouška sirén")}, | CODE |
| LOW | weblate/utils/tests/test_list_contributors.py | 99 | "Jane Doe", | CODE |
| LOW⚡ | weblate/utils/tests/test_validators.py | 791 | "https://social.example/@example@example.org", | CODE |
| LOW | weblate/utils/tests/test_environment.py | 353 | os.environ["REDIS_USER"] = "user@example.com" | CODE |
| LOW | weblate/workspaces/forms.py | 62 | "placeholder": gettext_lazy("Search workspaces"), | CODE |
| LOW | weblate/accounts/tests/test_views.py | 402 | email="addon-test@example.org", | CODE |
| LOW | weblate/accounts/tests/test_views.py | 990 | "email": "weblate@example.org", | CODE |
| LOW | weblate/accounts/tests/test_views.py | 1026 | "email": "weblate@example.org", | CODE |
| LOW | weblate/accounts/tests/test_views.py | 1272 | "email": "weblate@example.org", | CODE |
| LOW | weblate/accounts/tests/test_notifications.py | 258 | "thirduser", "noreply+third@example.org", "testpassword" | CODE |
| LOW⚡ | weblate/accounts/tests/test_models.py | 227 | actor = User.objects.create_user("admin", "admin@example.com") | CODE |
| LOW | weblate/accounts/tests/test_models.py | 178 | actor = User.objects.create_user("admin", "admin@example.com") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1441 | user = User.objects.create_user("username", "primary@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1448 | VerifiedEmail.objects.create(social=first_social, email="primary@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1449 | VerifiedEmail.objects.create(social=second_social, email="second@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1585 | "email": "noreply2@example.org", | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1591 | "email": "noreply-other@example.org", | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1597 | "email": "noreply-weblate@example.org", | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1637 | self.assertEqual(user.email, "noreply-weblate@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1645 | ("noreply-other@example.org", True), | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1646 | ("noreply-weblate@example.org", True), | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1653 | user = User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1655 | VerifiedEmail.objects.create(social=social, email="old@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1658 | email="noreply-weblate@example.org", | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1667 | {"email": "noreply-weblate@example.org"}, | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1673 | social=social, email="noreply-weblate@example.org" | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1678 | social=social, email="old@example.org" | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1684 | user = User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1686 | VerifiedEmail.objects.create(social=social, email="old@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1687 | VerifiedEmail.objects.create(social=social, email="second@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1694 | {"email": "noreply-weblate@example.org"}, | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1704 | {("noreply-weblate@example.org", True)}, | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1709 | user = User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1711 | VerifiedEmail.objects.create(social=social, email="old@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1712 | VerifiedEmail.objects.create(social=social, email="first@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1713 | VerifiedEmail.objects.create(social=social, email="first@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1722 | ("first@example.org", True), | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1723 | ("second@example.org", False), | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1734 | {("first@example.org", True), ("second@example.org", False)}, | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1739 | User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1744 | User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1756 | User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1760 | User.objects.create_user("second", "noreply-second@example.org", "x") | CODE |
| 155 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .yamllint.yml | 5 | # This file is maintained in https://github.com/WeblateOrg/meta/ | COMMENT |
| MEDIUM | weblate/formats/exporters.py | 523 | # Create a temporary unit with this specific target | COMMENT |
| MEDIUM | weblate/formats/tests/test_exporters.py | 564 | # Create a translation with multiple units having the same id_hash | COMMENT |
| MEDIUM | weblate/formats/tests/test_exporters.py | 637 | # Create a temporary directory for the git repository | COMMENT |
| MEDIUM | weblate/formats/tests/test_exporters.py | 661 | # Create the CSV file with real data | COMMENT |
| MEDIUM | weblate/formats/tests/test_exporters.py | 708 | # Create a format instance and load the file | COMMENT |
| MEDIUM | weblate/formats/tests/test_formats.py | 1317 | # Create the template under test with a single string | COMMENT |
| MEDIUM | weblate/formats/tests/test_formats.py | 4027 | # Create a storage class | COMMENT |
| MEDIUM | weblate/addons/gettext.py | 66 | "# This file is distributed under the same license as the", | CODE |
| MEDIUM⚡ | weblate/addons/tests.py | 3657 | """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file i | STRING |
| MEDIUM | weblate/addons/tests.py | 3617 | """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file i | STRING |
| MEDIUM | weblate/addons/tests.py | 3685 | """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file i | STRING |
| MEDIUM | weblate/utils/backup.py | 38 | # This file is a cache directory tag created by Weblate | COMMENT |
| MEDIUM | weblate/utils/unicodechars.py | 5 | # This file is generated using ./scripts/generate-unicodechars.py | COMMENT |
| MEDIUM | weblate/accounts/forms.py | 313 | # Create a mapping of project IDs to slugs | COMMENT |
| MEDIUM | weblate/accounts/tests/test_views.py | 244 | # Creating a trial | COMMENT |
| MEDIUM | weblate/vcs/tests/test_vcs.py | 5324 | # Create a different branch name | COMMENT |
| MEDIUM⚡ | weblate/api/tests.py | 3811 | # Create a non-superuser with project admin rights | COMMENT |
| MEDIUM⚡ | weblate/api/tests.py | 3815 | # Create a project-scoped group | COMMENT |
| MEDIUM⚡ | weblate/api/tests.py | 19047 | # Create a label in one project | COMMENT |
| MEDIUM | weblate/api/tests.py | 4041 | # Create a project-scoped group via the API as superuser | COMMENT |
| MEDIUM | weblate/api/tests.py | 18925 | # Create a category to get the statistics from | COMMENT |
| MEDIUM | weblate/glossary/views.py | 76 | # Create a set of existing term IDs | COMMENT |
| MEDIUM | weblate/trans/backups.py | 1077 | # Create the zip with the content | COMMENT |
| MEDIUM⚡ | weblate/trans/tests/test_bulk_suggestions.py | 488 | # Create a user WITHOUT project permissions (no add_user call) | COMMENT |
| MEDIUM⚡ | weblate/trans/tests/test_bulk_suggestions.py | 491 | # Create a suggester user | COMMENT |
| MEDIUM | weblate/trans/tests/test_bulk_suggestions.py | 60 | # Create a user without permissions | COMMENT |
| MEDIUM | weblate/trans/tests/test_bulk_suggestions.py | 155 | # Create a suggestion user | COMMENT |
| MEDIUM | weblate/trans/tests/test_views.py | 1249 | # Create a component in the same project but outside the category | COMMENT |
| MEDIUM | weblate/trans/management/commands/import_demo.py | 51 | # Create main component | COMMENT |
| MEDIUM | weblate/trans/models/suggestion.py | 98 | # Create the suggestion | COMMENT |
| MEDIUM | weblate/trans/models/component.py | 6835 | # Create the file | COMMENT |
| MEDIUM | weblate/trans/views/edit.py | 934 | # Create the suggestion | COMMENT |
| MEDIUM | weblate/billing/tests.py | 2269 | # Creating a trial | COMMENT |
| MEDIUM | docs/conf.py | 162 | # Define the canonical URL if you are using a custom domain on Read the Docs | COMMENT |
| MEDIUM | scripts/generate-unicodechars.py | 38 | # This file is generated using ./scripts/generate-unicodechars.py | COMMENT |
| MEDIUM | .github/FUNDING.yml | 5 | # This file is maintained in https://github.com/WeblateOrg/meta/ | COMMENT |
| MEDIUM | .github/workflows/labels.yml | 5 | # This file is maintained in https://github.com/WeblateOrg/meta/ | COMMENT |
| MEDIUM | .github/workflows/dependency-review.yml | 5 | # This file is maintained in https://github.com/WeblateOrg/meta/ | COMMENT |
| MEDIUM | .github/workflows/pre-commit.yml | 5 | # This file is maintained in https://github.com/WeblateOrg/meta/ | COMMENT |
| MEDIUM | .github/actions/pre-commit-setup/action.yml | 5 | # This file is maintained in https://github.com/WeblateOrg/meta/ | COMMENT |
| MEDIUM | .github/ISSUE_TEMPLATE/feature_request.yml | 5 | # This file is maintained in https://github.com/WeblateOrg/meta/ | COMMENT |
| MEDIUM | .github/ISSUE_TEMPLATE/bug_report.yml | 5 | # This file is maintained in https://github.com/WeblateOrg/meta/ | COMMENT |
| MEDIUM | .github/ISSUE_TEMPLATE/config.yml | 5 | # This file is maintained in https://github.com/WeblateOrg/meta/ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | weblate/screenshots/models.py | 194 | def update_alerts_on_screenshot_save(sender, instance: Screenshot, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/screenshots/models.py | 202 | def update_alerts_on_screenshot_delete(sender, instance: Screenshot, **kwargs) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 665 | async def update_sources() -> None: | CODE |
| LOW⚡ | weblate/formats/ttkit.py | 1031 | def set_automatically_translated(self, value: bool) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 388 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 395 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 481 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 903 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 973 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1076 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1125 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1230 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1426 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1432 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1475 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1844 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1861 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1948 | def update_header(self, file_format_params: FileFormatParams, **kwargs) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 3666 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 3674 | def set_explanation(self, explanation: str) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 3687 | def set_source_explanation(self, explanation: str) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 3874 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1681 | def set_target(self, target: str | list[str]) -> None: | STRING |
| LOW | weblate/formats/ttkit.py | 1719 | def set_state(self, state) -> None: | STRING |
| LOW | weblate/formats/multi.py | 85 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/multi.py | 111 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/txt.py | 193 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/txt.py | 199 | def set_state(self, state) -> None: | CODE |
| LOW⚡ | weblate/formats/base.py | 382 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW⚡ | weblate/formats/base.py | 386 | def set_explanation(self, explanation: str) -> None: | CODE |
| LOW⚡ | weblate/formats/base.py | 389 | def set_source_explanation(self, explanation: str) -> None: | CODE |
| LOW⚡ | weblate/formats/base.py | 392 | def set_state(self, state) -> None: | CODE |
| LOW⚡ | weblate/formats/base.py | 396 | def set_automatically_translated(self, value: bool) -> None: | CODE |
| LOW | weblate/formats/base.py | 688 | def update_header(self, file_format_params: FileFormatParams, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/memory/tasks.py | 233 | def set_scope_source_project_ids(memories: list[Memory]) -> None: | CODE |
| LOW⚡ | weblate/memory/tasks.py | 443 | def set_memory_scope_backfill_completed() -> None: | CODE |
| LOW | weblate/memory/tasks.py | 1303 | def update_memory_bulk(entries: list[MemoryUpdatePayload]) -> None: | CODE |
| LOW | weblate/checks/models.py | 157 | def set_dismiss(self, *, state: bool = True, recurse: bool = True) -> None: | CODE |
| LOW⚡ | weblate/checks/flags.py | 434 | def set_value(self, name: str, value: str) -> None: | CODE |
| LOW⚡ | weblate/checks/flags.py | 437 | def set_values(self, name: str, *values: FlagValue) -> None: | CODE |
| LOW | weblate/checks/fluent/references.py | 191 | def _set_refs(self, branch: FluentSelectorBranch) -> None: | CODE |
| LOW | weblate/addons/models.py | 1114 | def update_result(self, result: object) -> None: | CODE |
| LOW | weblate/addons/fedora_messaging.py | 859 | def _set_broker_tls_timeout(connection: socket.socket, deadline: float) -> None: | CODE |
| LOW | weblate/gitexport/tasks.py | 19 | def update_gitexport_urls() -> None: | CODE |
| LOW⚡ | weblate/gitexport/models.py | 34 | def update_component_git_export(sender, instance, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/gitexport/models.py | 39 | def update_components(matching: ComponentQuerySet) -> None: | CODE |
| LOW⚡ | weblate/gitexport/models.py | 60 | def update_project_git_export(sender, instance, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/gitexport/models.py | 64 | def update_all_components() -> None: | CODE |
| LOW | weblate/utils/tracing.py | 23 | def set_attribute(self, key: str, value: bool | float | str) -> None: ... | CODE |
| LOW | weblate/utils/tracing.py | 39 | def set_status(self, status: object) -> None: ... | CODE |
| LOW⚡ | weblate/utils/tracing.py | 64 | def _set_opentelemetry_attribute(span: AttributeSpan, name: str, value: object) -> None: | CODE |
| LOW⚡ | weblate/utils/tasks.py | 96 | def update_translation_stats_parents(pk: int) -> None: | CODE |
| LOW⚡ | weblate/utils/tasks.py | 105 | def update_language_stats_parents(pk: int) -> None: | CODE |
| LOW⚡ | weblate/utils/tasks.py | 114 | def update_project_stats_link(pk: int) -> None: | CODE |
| LOW | weblate/utils/tasks.py | 125 | def update_workspace_stats(workspace_ids: list[str]) -> None: | CODE |
| LOW | weblate/utils/tasks.py | 192 | def update_translation_stats(pks: list[int]) -> None: | CODE |
| LOW | weblate/utils/forms.py | 377 | def _set_queryset(self, queryset) -> None: | CODE |
| LOW | weblate/utils/stats.py | 258 | def set_data(self, data: StatDict) -> None: | CODE |
| LOW | weblate/utils/stats.py | 478 | def update_stats(self, update_parents: bool = True) -> None: | CODE |
| LOW⚡ | weblate/utils/stats.py | 1165 | def update_language_stats_parents(self) -> None: | CODE |
| 72 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/runner.py | 26 | except Exception: | CODE |
| LOW | weblate/formats/ttkit.py | 755 | except Exception as exception: | CODE |
| LOW | weblate/formats/ttkit.py | 2237 | except Exception as exception: | CODE |
| LOW | weblate/formats/ttkit.py | 2608 | except Exception as error: | CODE |
| LOW | weblate/formats/ttkit.py | 3882 | except Exception: | CODE |
| LOW | weblate/formats/convert.py | 245 | except Exception as exception: | CODE |
| LOW | weblate/formats/txt.py | 122 | except Exception as error: | CODE |
| LOW | weblate/formats/txt.py | 304 | except Exception as exception: | CODE |
| LOW | weblate/formats/auto.py | 160 | except Exception as error: | CODE |
| LOW | weblate/memory/models.py | 849 | except Exception as error: | CODE |
| LOW⚡ | weblate/checks/flags.py | 425 | except Exception as error: | CODE |
| LOW | weblate/addons/git.py | 350 | except Exception: | CODE |
| LOW | weblate/addons/models.py | 754 | except Exception as error: | CODE |
| LOW | weblate/addons/fedora_messaging.py | 230 | except Exception as error: | CODE |
| LOW | weblate/addons/fedora_messaging.py | 380 | except Exception: | CODE |
| LOW | weblate/addons/fedora_messaging.py | 428 | except Exception: | CODE |
| MEDIUM | weblate/addons/forms.py | 1671 | def clean_css_selector(self): | CODE |
| LOW | weblate/addons/forms.py | 1674 | except Exception as error: | CODE |
| LOW⚡ | weblate/addons/base.py | 977 | except Exception: | CODE |
| LOW | weblate/addons/base.py | 998 | except Exception: | CODE |
| LOW | weblate/utils/tracing.py | 120 | except Exception: | CODE |
| MEDIUM | weblate/utils/tracing.py | 46 | def get_sentry_sdk() -> ModuleType: | CODE |
| LOW | weblate/utils/render.py | 113 | except Exception as err: | CODE |
| LOW | weblate/utils/validators.py | 215 | except Exception as exc: | CODE |
| LOW | weblate/utils/validators.py | 351 | except Exception as error: | CODE |
| LOW | weblate/utils/apps.py | 127 | except Exception as error: | CODE |
| LOW | weblate/utils/markdown.py | 177 | except Exception: | CODE |
| LOW | weblate/utils/views.py | 729 | except Exception: | CODE |
| LOW | weblate/utils/views.py | 896 | except Exception: | CODE |
| LOW | weblate/accounts/tasks.py | 488 | except Exception: | CODE |
| LOW | weblate/accounts/notifications.py | 543 | except Exception: | CODE |
| MEDIUM | weblate/accounts/tests/test_registration.py | 1795 | def test_saml(self) -> None: | CODE |
| LOW | weblate/accounts/tests/test_registration.py | 1799 | except Exception as error: | CODE |
| LOW | weblate/vcs/apps.py | 91 | except Exception as error: | CODE |
| LOW | weblate/vcs/github.py | 1304 | except Exception as error: | CODE |
| LOW | weblate/vcs/base.py | 481 | except Exception as error: | CODE |
| LOW | weblate/vcs/base.py | 1051 | except Exception as error: | CODE |
| LOW | weblate/vcs/base.py | 1461 | except Exception: | CODE |
| LOW | weblate/vcs/base.py | 1472 | except Exception as error: | CODE |
| MEDIUM | weblate/vcs/views.py | 182 | def _get_workspace(workspaces, workspace_id) -> Workspace: | CODE |
| LOW | weblate/vcs/views.py | 733 | except Exception as error: | CODE |
| LOW | weblate/vcs/views.py | 825 | except Exception as error: | CODE |
| LOW | weblate/vcs/views.py | 1014 | except Exception as error: | CODE |
| LOW | weblate/vcs/views.py | 1030 | except Exception as error: | CODE |
| LOW | weblate/vcs/views.py | 1589 | except Exception as error: | CODE |
| LOW | …vcs/management/commands/refresh_github_repositories.py | 25 | except Exception as error: | CODE |
| LOW⚡ | weblate/wladmin/middleware.py | 53 | except Exception: | CODE |
| LOW | weblate/wladmin/middleware.py | 103 | except Exception: | CODE |
| LOW | weblate/wladmin/views.py | 297 | except Exception as error: | CODE |
| LOW | weblate/wladmin/views.py | 421 | except Exception: | CODE |
| LOW | weblate/wladmin/views.py | 522 | except Exception as error: | CODE |
| MEDIUM | weblate/api/serializers.py | 700 | def validate_code(self, value): | CODE |
| LOW⚡ | weblate/api/serializers.py | 2412 | except Exception: | CODE |
| LOW | weblate/api/views.py | 4069 | except Exception as error: | CODE |
| LOW | weblate/automation/runner.py | 230 | except Exception as error: | CODE |
| LOW | weblate/automation/runner.py | 262 | except Exception as error: | CODE |
| LOW | weblate/automation/runner.py | 291 | except Exception as error: | CODE |
| LOW | weblate/automation/runner.py | 316 | except Exception as error: | CODE |
| LOW | weblate/automation/runner.py | 380 | except Exception as error: | CODE |
| LOW | weblate/automation/cel.py | 22 | except Exception as error: | CODE |
| 61 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/middleware.py | 252 | # Check if project exists | COMMENT |
| LOW | weblate/middleware.py | 266 | # Check if component exists | COMMENT |
| LOW | weblate/formats/ttkit.py | 1998 | # Check if there is matching obsolete unit | COMMENT |
| LOW | weblate/formats/ttkit.py | 3210 | # Check if the file is not two column only, in that case translate-toolkit detection | COMMENT |
| LOW⚡ | weblate/formats/exporters.py | 537 | # Set source_unit to the original unit's source_unit to avoid None issues | COMMENT |
| LOW⚡ | weblate/formats/exporters.py | 539 | # Set unresolved_comments to empty list to avoid query issues | COMMENT |
| LOW⚡ | weblate/formats/exporters.py | 541 | # Set suggestions to empty list to avoid database query issues | COMMENT |
| LOW | weblate/formats/tests/test_exporters.py | 586 | unit1.source_unit = unit1 # Set source_unit to itself | CODE |
| LOW | weblate/formats/tests/test_exporters.py | 597 | unit2.source_unit = unit2 # Set source_unit to itself | CODE |
| LOW | weblate/formats/tests/test_formats.py | 1161 | # Check if content matches | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 1259 | # Check if content matches | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 1570 | # Check if content matches | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 1623 | # Check if content matches | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 3768 | # Check if content matches | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 3890 | # Check if content matches | COMMENT |
| LOW | weblate/auth/permissions.py | 873 | # Check if adding is generally allowed | COMMENT |
| LOW | weblate/auth/permissions.py | 931 | # Check if removing is generally allowed | COMMENT |
| LOW | weblate/auth/permissions.py | 950 | # Check if adding is generally allowed | COMMENT |
| LOW | weblate/auth/views.py | 300 | # Check if invitation can be accepted | COMMENT |
| LOW | weblate/auth/views.py | 304 | # Check if this is for us | COMMENT |
| LOW | weblate/checks/markup.py | 442 | # Check if source is XML | COMMENT |
| LOW | weblate/checks/markup.py | 467 | # Check if source is XML | COMMENT |
| LOW | weblate/checks/chars.py | 288 | # Check if target contains double space | COMMENT |
| LOW | weblate/checks/same.py | 170 | # Check if we have any word which is not in exceptions list | COMMENT |
| LOW | weblate/addons/models.py | 773 | # Check if add-on is still installed and log activity | COMMENT |
| LOW | weblate/utils/ratelimit.py | 71 | # Set key to longer expiry for lockout period | COMMENT |
| LOW | weblate/utils/celery.py | 292 | # Check if any queue got bigger | COMMENT |
| LOW | weblate/accounts/pipeline.py | 450 | # Verify if this mail is not used on other accounts | COMMENT |
| LOW | weblate/vcs/git.py | 1510 | # Set branch to track | COMMENT |
| LOW | weblate/vcs/git.py | 2141 | # Check if fork is used for this branch (default and matching branches use fork) | COMMENT |
| LOW | weblate/vcs/git.py | 2153 | # Check if commits are in the fork (already pushed) | COMMENT |
| LOW | weblate/vcs/git.py | 4021 | # Check if a fork already exists owned by the current user. | COMMENT |
| LOW | weblate/trans/forms.py | 3185 | # Check if category is from this project | COMMENT |
| LOW⚡ | weblate/trans/tests/test_hooks.py | 2478 | # Set full_name to empty string (too short, will skip repo construction) | COMMENT |
| LOW | weblate/trans/models/unit.py | 1849 | # Check if we actually need to change anything | COMMENT |
| LOW | weblate/trans/models/unit.py | 2220 | # Check if we have expected number of them | COMMENT |
| LOW | weblate/trans/models/translation.py | 844 | # Check if we're not already up to date | COMMENT |
| LOW | weblate/trans/models/translation.py | 1752 | # Check if context has changed while adding to storage | COMMENT |
| LOW | weblate/trans/models/translation.py | 2460 | # Iterate over list to copy set that will be changed | COMMENT |
| LOW | weblate/trans/models/component.py | 6005 | # Check if we should rename | COMMENT |
| LOW | weblate/trans/models/component.py | 6701 | # Check if template can be parsed | COMMENT |
| LOW | weblate/trans/models/component.py | 6773 | # Check if resulting language is not present | COMMENT |
| LOW | weblate/trans/models/component.py | 6793 | # Check if language code is valid | COMMENT |
| LOW | weblate/machinery/base.py | 1578 | # Check if there is a glossary | COMMENT |
| LOW | scripts/list-translated-languages.py | 59 | # Print results | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/models.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/settings_example.py | 741 | ENABLE_HOOKS = True | COMMENT |
| LOW | weblate/settings_example.py | 761 | # "weblate.checks.chars.BeginSpaceCheck", | COMMENT |
| LOW | weblate/settings_example.py | 781 | # "weblate.checks.format.PerlBraceFormatCheck", | COMMENT |
| LOW | weblate/settings_example.py | 801 | # "weblate.checks.consistency.PluralsCheck", | COMMENT |
| LOW | weblate/settings_example.py | 821 | # "weblate.checks.placeholders.PlaceholderCheck", | COMMENT |
| LOW | weblate/settings_example.py | 841 | # AUTOFIX_LIST = ( | COMMENT |
| LOW | weblate/settings_example.py | 861 | # "weblate.addons.gettext.SphinxAddon", | COMMENT |
| LOW | weblate/settings_example.py | 881 | # "weblate.addons.resx.ResxUpdateAddon", | COMMENT |
| LOW | weblate/metrics/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/configuration/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/screenshots/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/formats/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 1301 | # This structural sharing can lead to mutations leaking back to the | COMMENT |
| LOW | weblate/memory/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/auth/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/auth/tests/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/checks/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/checks/fluent/inner_html.py | 621 | end_tag_match = source.match(cls._END_TAG_REGEX) | COMMENT |
| LOW | weblate/checks/fluent/inner_html.py | 701 | # contact <{ $name } | COMMENT |
| LOW | weblate/checks/fluent/references.py | 281 | ref: { | COMMENT |
| LOW | weblate/checks/fluent/__init__.py | 1 | # Copyright © Henry Wilkes <henry@torproject.org> | COMMENT |
| LOW | weblate/addons/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/gitexport/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/utils/tests/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/workspaces/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/lang/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/accounts/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/accounts/tests/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/vcs/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/examples/weblate.uwsgi.ini | 1 | # | COMMENT |
| LOW | weblate/wladmin/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/api/models.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/api/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/glossary/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/glossary/admin.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/automation/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/automation/management/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/automation/management/commands/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/trans/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/trans/tests/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/trans/hooks/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/legal/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/fonts/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/kotlin_sdk/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/billing/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/machinery/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | docs/conf.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | scripts/filter-mypy.sh | 1 | #!/bin/sh | COMMENT |
| LOW | .github/workflows/scorecards.yml | 41 | - name: Run analysis | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/formats/ttkit.py | 2878 | CODE | |
| LOW | weblate/formats/ttkit.py | 3780 | CODE | |
| LOW | weblate/formats/base.py | 480 | CODE | |
| LOW | weblate/memory/models.py | 129 | CODE | |
| LOW | weblate/memory/models.py | 193 | CODE | |
| LOW | weblate/memory/models.py | 235 | CODE | |
| LOW | weblate/auth/forms.py | 164 | CODE | |
| LOW | weblate/addons/generate.py | 207 | CODE | |
| LOW | weblate/vcs/base.py | 944 | CODE | |
| LOW | weblate/api/tests.py | 369 | CODE | |
| LOW | weblate/api/tests.py | 12309 | CODE | |
| LOW | weblate/trans/tasks.py | 229 | CODE | |
| LOW | weblate/trans/tasks.py | 1473 | CODE | |
| LOW | weblate/trans/translator_analysis.py | 84 | CODE | |
| LOW | weblate/trans/formatting.py | 522 | CODE | |
| LOW | weblate/trans/formatting.py | 604 | CODE | |
| LOW | weblate/trans/templatetags/translations.py | 1117 | CODE | |
| LOW | weblate/trans/tests/test_backups.py | 287 | CODE | |
| LOW | weblate/trans/tests/factories.py | 129 | CODE | |
| LOW | weblate/trans/models/pending.py | 492 | CODE | |
| LOW | weblate/trans/models/unit.py | 1003 | CODE | |
| LOW | weblate/trans/models/unit.py | 2997 | CODE | |
| LOW | weblate/trans/models/translation.py | 2856 | CODE | |
| LOW | weblate/trans/models/translation.py | 2873 | CODE | |
| LOW | weblate/trans/models/translation.py | 2889 | CODE | |
| LOW | weblate/trans/models/translation.py | 2923 | CODE | |
| LOW | weblate/trans/models/component.py | 4143 | CODE | |
| LOW | weblate/trans/models/component.py | 4777 | CODE | |
| LOW | weblate/trans/models/component.py | 4865 | CODE | |
| LOW | weblate/trans/models/component.py | 4929 | CODE | |
| LOW | weblate/fonts/utils.py | 45 | CODE | |
| LOW | weblate/fonts/utils.py | 151 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 452 | # Mail templates need inline CSS and do not utilize description | COMMENT |
| MEDIUM | weblate/memory/models.py | 356 | # Use MD5 for filtering to utilize MD5 index | COMMENT |
| MEDIUM | weblate/checks/consistency.py | 351 | # Lower has no effect here, but we want to utilize index | COMMENT |
| MEDIUM | weblate/lang/models.py | 1171 | # Use own manager to utilize caching of English | COMMENT |
| LOW | weblate/vcs/git.py | 2888 | # If the fork was deleted, we just create another fork | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/settings_docker.py | 213 | # Don't forget to use absolute paths, not relative paths. | COMMENT |
| MEDIUM | weblate/settings_example.py | 68 | # Data directory, you can use following for the development purposes: | COMMENT |
| LOW | weblate/settings_example.py | 167 | # Don't forget to use absolute paths, not relative paths. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/utils/requests.py | 505 | def handle_request(self, request: httpx2.Request) -> httpx2.Response: | CODE |
| LOW⚡ | weblate/utils/tests/test_requests.py | 99 | def handle_request(request): | CODE |
| LOW | weblate/utils/tests/test_requests.py | 122 | def handle_request(request): | CODE |
| LOW | weblate/utils/tests/test_requests.py | 151 | def handle_request(_request): | CODE |
| LOW | weblate/utils/tests/test_requests.py | 224 | def handle_request(request): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | AGENTS.md | 92 | ## Weblate-specific guardrails | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | weblate/trans/tests/test_selenium.py | 228 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/trans/tests/test_remote.py | 1101 | # TODO: add tests for the monolingual and monolingual with intermediate. | COMMENT |