Web based localization tool with tight version control integration.
This report presents the forensic synthetic code analysis of WeblateOrg/weblate, a Python project with 5,977 GitHub stars. SynthScan v2.0 examined 350,754 lines of code across 1343 source files, recording 5799 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 19.5 places this repository in the Moderate 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 5799 distinct pattern matches across 17 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⚡ | fuzzing/targets.py | 94 | def _compact_url_for_xss_check(value: str) -> str: | CODE |
| LOW⚡ | fuzzing/targets.py | 102 | def _assert_markdown_output_has_no_xss(rendered: str) -> None: | CODE |
| LOW⚡ | fuzzing/targets.py | 112 | def _build_markdown_xss_probe(payload: str) -> str: | CODE |
| LOW | fuzzing/targets.py | 246 | def _build_gitea_like_payload(fdp: FuzzedDataProvider, host: str) -> dict[str, object]: | CODE |
| LOW | fuzzing/targets.py | 436 | def _is_invalid_iso_timestamp(error: ValueError) -> bool: | CODE |
| LOW | fuzzing/findings_reporter.py | 126 | def is_directly_captured_python_exception( | CODE |
| LOW | fuzzing/findings_reporter.py | 585 | def format_findings_step_summary( | CODE |
| LOW | fuzzing/findings_reporter.py | 649 | def write_github_step_summary( | CODE |
| LOW | fuzzing/atheris_compat.py | 67 | def consume_unicode_no_surrogates(self, count: int) -> str: | CODE |
| LOW | fuzzing/tests/test_targets.py | 20 | def test_duplicate_zip_members_are_ignored(self) -> None: | CODE |
| LOW | fuzzing/tests/test_targets.py | 29 | def test_invalid_member_paths_are_ignored(self) -> None: | CODE |
| LOW | fuzzing/tests/test_targets.py | 40 | def test_invalid_backup_timestamp_is_ignored(self) -> None: | CODE |
| LOW | fuzzing/tests/test_targets.py | 47 | def test_unexpected_backup_value_error_is_not_ignored(self) -> None: | CODE |
| LOW⚡ | fuzzing/tests/test_targets.py | 59 | def test_csv_parser_error_is_ignored(self) -> None: | CODE |
| LOW⚡ | fuzzing/tests/test_targets.py | 64 | def test_empty_csv_header_error_is_ignored(self) -> None: | CODE |
| LOW⚡ | fuzzing/tests/test_targets.py | 71 | def test_markdown_xss_payloads_are_safe(self) -> None: | CODE |
| LOW⚡ | fuzzing/tests/test_targets.py | 76 | def test_markdown_xss_assertion_rejects_event_handlers(self) -> None: | CODE |
| LOW⚡ | fuzzing/tests/test_targets.py | 80 | def test_markdown_xss_assertion_rejects_dangerous_urls(self) -> None: | CODE |
| LOW⚡ | fuzzing/tests/test_targets.py | 84 | def test_markdown_fuzzer_rejects_unsafe_renderer_output(self) -> None: | CODE |
| LOW | fuzzing/tests/test_sentry.py | 22 | def test_wrap_target_reports_exception(self) -> None: | CODE |
| LOW | fuzzing/tests/test_sentry.py | 72 | def test_wrap_target_skips_sentry_without_dsn(self) -> None: | CODE |
| LOW | fuzzing/tests/test_sentry.py | 86 | def test_wrap_target_does_not_mask_fuzz_exception_on_sentry_failure(self) -> None: | CODE |
| LOW | fuzzing/tests/test_sentry.py | 103 | def test_fuzz_input_attachment_is_limited_and_named(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 30 | def test_collect_sarif_findings(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 95 | def test_collect_findings_skips_directly_captured_python_sarif(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 134 | def test_collect_findings_includes_summary_only_crashes_with_sarif(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 194 | def test_collect_findings_does_not_match_unrelated_target_summary( | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 258 | def test_collect_summary_findings_skips_directly_captured_python_exception( | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 279 | def test_collect_summary_findings_skips_bare_python_exception(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 299 | def test_collect_summary_findings_without_sarif(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 322 | def test_format_findings_report_includes_location_and_summary(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 395 | def test_format_findings_report_includes_additional_summaries(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 422 | def test_format_findings_report_labels_summary_only_findings(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 448 | def test_format_findings_step_summary_uses_markdown(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 522 | def test_write_github_step_summary_appends_report(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 535 | def test_write_github_step_summary_skips_without_path(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 538 | def test_build_event_uses_stable_fingerprint_and_metadata(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 583 | def test_build_event_truncates_summary(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 618 | def test_parse_dsn_supports_path_prefix(self) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 639 | def test_report_findings_sends_sentry_events(self, send_sentry_event_mock) -> None: | CODE |
| LOW | fuzzing/tests/test_findings_reporter.py | 671 | def test_report_findings_ignores_sentry_transport_errors( | CODE |
| LOW | weblate/middleware.py | 144 | def should_redirect_with_slash(self, request: AuthenticatedHttpRequest) -> bool: | CODE |
| LOW | weblate/middleware.py | 211 | def check_existing_translations(self, language: Language, project: Project) -> bool: | CODE |
| LOW | weblate/middleware.py | 343 | def apply_request_csp_settings(self) -> None: | CODE |
| LOW | weblate/middleware.py | 401 | def build_csp_google_analytics(self) -> None: | CODE |
| LOW | weblate/metrics/wrapper.py | 276 | def populate_month_activity_cache( | CODE |
| LOW | weblate/metrics/models.py | 299 | def collect_category_language(self, category_language: CategoryLanguage): | CODE |
| LOW | weblate/metrics/models.py | 568 | def create_metrics_translation(sender, instance, created=False, **kwargs) -> None: | CODE |
| LOW | weblate/metrics/models.py | 608 | def delete_metrics_component_list(sender, instance, **kwargs) -> None: | CODE |
| LOW | weblate/metrics/models.py | 616 | def delete_metrics_translation(sender, instance, **kwargs) -> None: | CODE |
| LOW | weblate/metrics/tests.py | 25 | def test_wrapper_prefers_today_metric(self) -> None: | CODE |
| LOW | weblate/screenshots/models.py | 129 | def change_screenshot_assignment(sender, instance, action, **kwargs) -> None: | CODE |
| LOW | weblate/screenshots/models.py | 139 | def clear_missing_screenshots_alert(sender, instance: Screenshot, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/screenshots/models.py | 150 | def update_alerts_on_screenshot_delete(sender, instance: Screenshot, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/screenshots/models.py | 158 | def validate_screenshot_image(component: Component, filename: str) -> str | None: | CODE |
| LOW | weblate/screenshots/models.py | 191 | def sync_screenshots_from_repo( | CODE |
| LOW | weblate/screenshots/tests.py | 90 | def test_upload_redirect_next(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 106 | def test_upload_redirect_next_invalid(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 160 | def test_upload_source_invalid(self) -> None: | CODE |
| LOW | weblate/screenshots/tests.py | 175 | def test_detail_has_documentation_link(self) -> None: | CODE |
| 4080 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | fuzzing/targets.py | 17 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/urls.py | 277 | weblate.trans.views.settings.BackupsView.as_view(), | CODE |
| CRITICAL | weblate/urls.py | 282 | weblate.trans.views.settings.BackupsDownloadView.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 317 | weblate.trans.views.create.CreateProject.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 322 | weblate.trans.views.create.ImportProject.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 327 | weblate.trans.views.create.CreateComponentSelection.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 332 | weblate.trans.views.create.CreateComponent.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 337 | weblate.trans.views.create.CreateFromZip.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 342 | weblate.trans.views.create.CreateFromDoc.as_view(), | CODE |
| CRITICAL | weblate/urls.py | 712 | weblate.trans.views.basic.ProjectLanguageRedirectView.as_view(), | CODE |
| CRITICAL | weblate/urls.py | 717 | weblate.trans.views.basic.ProjectLanguageRedirectView.as_view( | CODE |
| CRITICAL⚡ | weblate/urls.py | 777 | weblate.trans.views.widgets.WidgetRedirectView.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 781 | weblate.trans.views.widgets.WidgetRedirectView.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 785 | weblate.trans.views.widgets.WidgetRedirectView.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 789 | weblate.trans.views.widgets.WidgetRedirectView.as_view(), | CODE |
| CRITICAL⚡ | weblate/urls.py | 992 | path("about/", weblate.trans.views.about.AboutView.as_view(), name="about"), | CODE |
| CRITICAL⚡ | weblate/urls.py | 993 | path("donate/", weblate.trans.views.about.DonateView.as_view(), name="donate"), | CODE |
| CRITICAL⚡ | weblate/urls.py | 994 | path("keys/", weblate.trans.views.about.KeysView.as_view(), name="keys"), | CODE |
| CRITICAL⚡ | weblate/urls.py | 995 | 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/formats/ttkit.py | 22 | 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 | 21 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/auth/forms.py | 13 | 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_models.py | 10 | 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 | 130 | unit.translation.component.project.name.lower().split() | CODE |
| CRITICAL | weblate/checks/tests/test_flags.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/tasks.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/fedora_messaging.py | 23 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/forms.py | 1487 | 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 | 33 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/addons/base.py | 16 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/files.py | 13 | 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 | 25 | 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 | 11 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/stats.py | 1026 | self._object.component.project.label_set.values_list("name", flat=True) | CODE |
| CRITICAL | weblate/utils/requests.py | 15 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/tests/test_validators.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/tests/test_files.py | 13 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/utils/tests/test_requests.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/workspaces/tests.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/lang/tests.py | 13 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/accounts/password_validation.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/accounts/models.py | 19 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/accounts/tests/test_password_validation.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/vcs/forms.py | 12 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/vcs/ssh.py | 17 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/vcs/github.py | 21 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | weblate/vcs/base.py | 698 | from django.core.exceptions import ValidationError # ruff: ignore[import-outside-top-level, unsorted-imports] | CODE |
| CRITICAL | weblate/api/serializers.py | 14 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| 33 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | weblate/formats/tests/test_formats.py | 1343 | "(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && n % 10 == 0) ? 2 : 3))", | CODE |
| HIGH | weblate/memory/tests.py | 757 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" | CODE |
| HIGH | weblate/checks/tests/test_chars_checks.py | 57 | self.do_test(False, ("Save && Exit", "Save && Exit", "accelerator:&")) | CODE |
| HIGH⚡ | weblate/checks/tests/test_mdx.py | 130 | "{cond ? <p>{a}</p> : null}", | CODE |
| HIGH⚡ | weblate/checks/tests/test_mdx.py | 131 | ["{cond ? <p>{a}</p> : null}"], | CODE |
| HIGH | weblate/checks/tests/test_flags.py | 35 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" | CODE |
| HIGH⚡ | weblate/addons/tests.py | 8391 | repo.push("") | STRING |
| HIGH⚡ | weblate/lang/tests.py | 43 | ("cs_CZ", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 44 | ("cze_CZ", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 45 | ("ces_CZ", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 50 | "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 54 | ("cs (2)", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 55 | ("cscz", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 56 | ("czech", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False), | CODE |
| HIGH⚡ | weblate/lang/tests.py | 61 | "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/tests.py | 75 | "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 | 75 | "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 | 83 | "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 | 83 | "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 | 91 | "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 | 91 | "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 | 99 | "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 | 99 | "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 | 146 | "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 | 154 | "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 | 162 | "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 | 718 | "(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 | 718 | "(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 | 183 | "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH | weblate/lang/tests.py | 183 | "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH | weblate/lang/tests.py | 380 | "czech", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False | CODE |
| HIGH | weblate/lang/tests.py | 662 | "(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 | 662 | "(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 | 684 | "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;", | CODE |
| HIGH | weblate/lang/tests.py | 853 | "Created plural (n == 1) ? 0 : ((n != 0 && n % 1000000 == 0) ? 1 : 2) for language es_ZZ", | CODE |
| HIGH | weblate/lang/tests.py | 1099 | legacy_formula = "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2" | CODE |
| HIGH⚡ | weblate/lang/data.py | 57 | "n==1 || n%10==1 ? 0 : 1", | CODE |
| HIGH⚡ | weblate/lang/data.py | 62 | "n >= 2 && (n < 11 || n > 99)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 63 | "n % 10 != 1 || n % 100 == 11", | CODE |
| HIGH⚡ | weblate/lang/data.py | 64 | "(n % 10 == 1 && n % 100 != 11) ? 0 : 1", | CODE |
| HIGH⚡ | weblate/lang/data.py | 65 | "n != 1 && n != 2 && n != 3 && (n % 10 == 4 || n % 10 == 6 || n % 10 == 9)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 65 | "n != 1 && n != 2 && n != 3 && (n % 10 == 4 || n % 10 == 6 || n % 10 == 9)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 66 | "(n==0 || n==1)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 67 | "(n%10==1 && n%100!=11 ? 0 : 1)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 73 | "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 | 73 | "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 | 74 | "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 75 | "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 75 | "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 76 | "(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 76 | "(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 77 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 77 | "n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2", | CODE |
| HIGH⚡ | weblate/lang/data.py | 78 | "(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 | 78 | "(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 | 79 | "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (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%100<10 || n%100>=20) ? 1 : 2)", | CODE |
| HIGH⚡ | weblate/lang/data.py | 80 | "(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%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 | 81 | "((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2)", | CODE |
| 150 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 6 | CODE | |
| LOW | fuzzing/bootstrap.py | 4 | CODE | |
| LOW | fuzzing/runner.py | 6 | CODE | |
| LOW | fuzzing/targets.py | 4 | CODE | |
| LOW | fuzzing/findings_reporter.py | 4 | CODE | |
| LOW | fuzzing/sentry.py | 4 | CODE | |
| LOW | fuzzing/atheris_compat.py | 4 | CODE | |
| LOW | fuzzing/urls.py | 4 | CODE | |
| LOW | fuzzing/tests/test_targets.py | 4 | CODE | |
| LOW | fuzzing/tests/test_sentry.py | 4 | CODE | |
| LOW | fuzzing/tests/test_findings_reporter.py | 4 | CODE | |
| LOW | weblate/settings_test.py | 14 | CODE | |
| LOW | weblate/settings_example.py | 6 | CODE | |
| LOW | weblate/urls.py | 5 | CODE | |
| LOW | weblate/settings_fuzz.py | 6 | CODE | |
| LOW | weblate/settings_fuzz.py | 9 | CODE | |
| LOW | weblate/middleware.py | 5 | CODE | |
| LOW | weblate/wsgi.py | 20 | CODE | |
| LOW | weblate/metrics/wrapper.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/screenshots/tasks.py | 15 | CODE | |
| LOW | weblate/screenshots/models.py | 5 | CODE | |
| LOW | weblate/formats/ttkit.py | 8 | 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/defaults.py | 5 | CODE | |
| LOW | weblate/formats/exporters.py | 7 | CODE | |
| LOW | weblate/formats/exporters.py | 49 | CODE | |
| LOW | weblate/formats/external.py | 7 | CODE | |
| LOW | weblate/formats/base.py | 7 | CODE | |
| LOW | weblate/formats/auto.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 | 106 | CODE | |
| LOW | weblate/formats/tests/test_multi.py | 7 | 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/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/auth/results.py | 5 | CODE | |
| LOW | weblate/auth/forms.py | 5 | CODE | |
| LOW | weblate/auth/admin.py | 5 | CODE | |
| LOW | weblate/auth/utils.py | 5 | CODE | |
| LOW | weblate/auth/permissions.py | 5 | CODE | |
| LOW | weblate/auth/defaults.py | 5 | CODE | |
| LOW | weblate/auth/data.py | 7 | CODE | |
| LOW | weblate/auth/views.py | 4 | CODE | |
| LOW | weblate/auth/decorators.py | 5 | CODE | |
| LOW | weblate/auth/tests/test_admin.py | 5 | CODE | |
| LOW | weblate/auth/management/commands/importusers.py | 4 | CODE | |
| LOW | weblate/auth/management/commands/setupgroups.py | 4 | CODE | |
| LOW | weblate/auth/management/commands/createadmin.py | 4 | CODE | |
| 445 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fuzzing/targets.py | 363 | CODE | |
| LOW | weblate/middleware.py | 220 | CODE | |
| LOW | weblate/middleware.py | 425 | CODE | |
| LOW | weblate/metrics/models.py | 191 | CODE | |
| LOW | weblate/screenshots/views.py | 579 | CODE | |
| LOW | weblate/formats/ttkit.py | 530 | CODE | |
| LOW | weblate/formats/ttkit.py | 977 | CODE | |
| LOW | weblate/formats/ttkit.py | 3029 | CODE | |
| LOW | weblate/formats/convert.py | 291 | CODE | |
| LOW | weblate/formats/exporters.py | 360 | CODE | |
| LOW | weblate/formats/base.py | 239 | CODE | |
| LOW | weblate/formats/auto.py | 85 | CODE | |
| LOW | weblate/formats/tests/test_formats.py | 2966 | CODE | |
| LOW | weblate/memory/tasks.py | 842 | CODE | |
| LOW | weblate/memory/models.py | 1044 | CODE | |
| LOW | weblate/auth/models.py | 1330 | CODE | |
| LOW | weblate/auth/models.py | 1435 | CODE | |
| LOW | weblate/auth/permissions.py | 335 | CODE | |
| LOW | weblate/auth/permissions.py | 469 | CODE | |
| LOW | weblate/auth/permissions.py | 1123 | CODE | |
| LOW | weblate/auth/permissions.py | 1168 | CODE | |
| LOW | weblate/auth/management/commands/importusers.py | 34 | CODE | |
| LOW | weblate/checks/mdx.py | 44 | CODE | |
| LOW | weblate/checks/mdx.py | 168 | CODE | |
| LOW | weblate/checks/mdx.py | 212 | CODE | |
| LOW | weblate/checks/mdx.py | 243 | CODE | |
| LOW | weblate/checks/mdx.py | 320 | CODE | |
| LOW | weblate/checks/mdx.py | 413 | CODE | |
| LOW | weblate/checks/tasks.py | 29 | CODE | |
| LOW | weblate/checks/icu.py | 440 | CODE | |
| LOW | weblate/checks/flags.py | 176 | CODE | |
| LOW | weblate/checks/flags.py | 298 | CODE | |
| LOW | weblate/checks/format.py | 466 | CODE | |
| LOW | weblate/checks/format.py | 911 | CODE | |
| LOW | weblate/checks/markup.py | 195 | CODE | |
| LOW | weblate/checks/markup.py | 821 | CODE | |
| LOW | weblate/checks/markup.py | 462 | 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 | 615 | CODE | |
| LOW | weblate/checks/views.py | 91 | CODE | |
| LOW | weblate/checks/views.py | 118 | CODE | |
| LOW | weblate/checks/views.py | 246 | CODE | |
| LOW | weblate/checks/fluent/inner_html.py | 461 | CODE | |
| LOW | weblate/checks/fluent/inner_html.py | 693 | CODE | |
| LOW | weblate/checks/fluent/inner_html.py | 1065 | CODE | |
| LOW | weblate/checks/fluent/references.py | 88 | CODE | |
| LOW | weblate/checks/fluent/references.py | 111 | CODE | |
| LOW | weblate/checks/fluent/references.py | 191 | CODE | |
| LOW | weblate/checks/fluent/references.py | 213 | CODE | |
| LOW | weblate/checks/fluent/references.py | 453 | CODE | |
| LOW | weblate/checks/fluent/utils.py | 143 | CODE | |
| LOW | weblate/addons/git.py | 219 | CODE | |
| LOW | weblate/addons/tasks.py | 56 | CODE | |
| LOW | weblate/addons/tasks.py | 123 | CODE | |
| LOW | weblate/addons/models.py | 538 | CODE | |
| LOW | weblate/addons/models.py | 682 | CODE | |
| LOW | weblate/addons/models.py | 144 | CODE | |
| LOW | weblate/addons/models.py | 404 | CODE | |
| 172 more matches not shown… | ||||
| 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/deepl.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 | 219 | "placeholder": gettext_lazy("Search screenshots"), | CODE |
| LOW⚡ | weblate/formats/tests/test_exporters.py | 172 | long_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * 3 | CODE |
| LOW⚡ | weblate/formats/tests/test_exporters.py | 172 | 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 | 271 | "inactive-user", "inactive-user@example.org", "testpassword" | CODE |
| LOW⚡ | weblate/auth/tests/test_views.py | 278 | email="bot-user@example.org", | CODE |
| LOW | weblate/auth/tests/test_permissions.py | 28 | 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 | 184 | merge_highlight_spans(source, spans), group_prefix="placeholder" | CODE |
| LOW⚡ | weblate/checks/tests/test_chars_checks.py | 157 | ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."], | CODE |
| LOW⚡ | weblate/checks/tests/test_chars_checks.py | 157 | ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."], | CODE |
| LOW⚡ | weblate/checks/tests/test_chars_checks.py | 164 | ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."], | CODE |
| LOW⚡ | weblate/checks/tests/test_chars_checks.py | 164 | ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."], | CODE |
| LOW | weblate/checks/tests/test_flags.py | 242 | {("placeholder", "zkouška sirén")}, | CODE |
| LOW⚡ | weblate/utils/tests/test_validators.py | 729 | "https://social.example/@example@example.org", | CODE |
| LOW | weblate/utils/tests/test_environment.py | 325 | os.environ["REDIS_USER"] = "user@example.com" | CODE |
| LOW | weblate/accounts/tests/test_views.py | 317 | email="addon-test@example.org", | CODE |
| LOW | weblate/accounts/tests/test_views.py | 744 | "email": "weblate@example.org", | CODE |
| LOW | weblate/accounts/tests/test_views.py | 980 | "email": "weblate@example.org", | CODE |
| LOW | weblate/accounts/tests/test_notifications.py | 217 | "thirduser", "noreply+third@example.org", "testpassword" | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1225 | user = User.objects.create_user("username", "primary@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1230 | VerifiedEmail.objects.create(social=first_social, email="primary@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1231 | VerifiedEmail.objects.create(social=second_social, email="second@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1367 | "email": "noreply2@example.org", | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1373 | "email": "noreply-other@example.org", | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1379 | "email": "noreply-weblate@example.org", | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1419 | self.assertEqual(user.email, "noreply-weblate@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1427 | ("noreply-other@example.org", True), | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1428 | ("noreply-weblate@example.org", True), | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1435 | user = User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1437 | VerifiedEmail.objects.create(social=social, email="old@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1440 | email="noreply-weblate@example.org", | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1449 | {"email": "noreply-weblate@example.org"}, | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1455 | social=social, email="noreply-weblate@example.org" | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1460 | social=social, email="old@example.org" | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1466 | user = User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1468 | VerifiedEmail.objects.create(social=social, email="old@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1469 | VerifiedEmail.objects.create(social=social, email="second@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1476 | {"email": "noreply-weblate@example.org"}, | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1486 | {("noreply-weblate@example.org", True)}, | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1491 | user = User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1493 | VerifiedEmail.objects.create(social=social, email="old@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1494 | VerifiedEmail.objects.create(social=social, email="first@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1495 | VerifiedEmail.objects.create(social=social, email="first@example.org") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1504 | ("first@example.org", True), | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1505 | ("second@example.org", False), | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1516 | {("first@example.org", True), ("second@example.org", False)}, | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1521 | User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1526 | User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1538 | User.objects.create_user("weblate", "noreply-weblate@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1542 | User.objects.create_user("second", "noreply-second@example.org", "x") | CODE |
| LOW⚡ | weblate/accounts/tests/test_registration.py | 1549 | self.assertEqual(mail.outbox[0].to, ["noreply-weblate@example.org"]) | CODE |
| LOW | weblate/accounts/tests/test_registration.py | 64 | "email": "noreply-weblate@example.org", | CODE |
| LOW | weblate/accounts/tests/test_registration.py | 390 | data["email"] = "attacker@example.org" | CODE |
| LOW | weblate/accounts/tests/test_registration.py | 738 | User.objects.filter(email="noreply-weblate@example.org").exists() | CODE |
| LOW | weblate/accounts/tests/test_registration.py | 1207 | social = user.social_auth.get(uid="noreply-weblate@example.org") | CODE |
| 131 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 | 375 | # Create a temporary unit with this specific target | COMMENT |
| MEDIUM | weblate/formats/tests/test_exporters.py | 579 | # Create a translation with multiple units having the same id_hash | COMMENT |
| MEDIUM | weblate/formats/tests/test_exporters.py | 652 | # Create a temporary directory for the git repository | COMMENT |
| MEDIUM | weblate/formats/tests/test_exporters.py | 676 | # Create the CSV file with real data | COMMENT |
| MEDIUM | weblate/formats/tests/test_exporters.py | 723 | # Create a format instance and load the file | COMMENT |
| MEDIUM | weblate/formats/tests/test_formats.py | 1233 | # Create the template under test with a single string | COMMENT |
| MEDIUM | weblate/formats/tests/test_formats.py | 3562 | # Create a storage class | COMMENT |
| MEDIUM | weblate/addons/gettext.py | 55 | "# This file is distributed under the same license as the", | CODE |
| MEDIUM⚡ | weblate/addons/tests.py | 3236 | """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file i | STRING |
| MEDIUM | weblate/addons/tests.py | 3196 | """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file i | STRING |
| MEDIUM | weblate/addons/tests.py | 3264 | """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file i | STRING |
| MEDIUM | weblate/utils/backup.py | 36 | # 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 | 327 | # Create a mapping of project IDs to slugs | COMMENT |
| MEDIUM | weblate/accounts/tests/test_views.py | 216 | # Creating a trial | COMMENT |
| MEDIUM | weblate/vcs/tests/test_vcs.py | 3400 | # Create a different branch name | COMMENT |
| MEDIUM⚡ | weblate/api/tests.py | 2500 | # Create a non-superuser with project admin rights | COMMENT |
| MEDIUM⚡ | weblate/api/tests.py | 2504 | # Create a project-scoped group | COMMENT |
| MEDIUM⚡ | weblate/api/tests.py | 13483 | # Create a label in one project | COMMENT |
| MEDIUM | weblate/api/tests.py | 2730 | # Create a project-scoped group via the API as superuser | COMMENT |
| MEDIUM | weblate/api/tests.py | 13374 | # 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 | 602 | # Create the zip with the content | COMMENT |
| MEDIUM⚡ | weblate/trans/tests/test_bulk_suggestions.py | 460 | # Create a user WITHOUT project permissions (no add_user call) | COMMENT |
| MEDIUM⚡ | weblate/trans/tests/test_bulk_suggestions.py | 463 | # Create a suggester user | COMMENT |
| MEDIUM | weblate/trans/tests/test_bulk_suggestions.py | 58 | # Create a user without permissions | COMMENT |
| MEDIUM | weblate/trans/tests/test_bulk_suggestions.py | 153 | # Create a suggestion user | COMMENT |
| MEDIUM | weblate/trans/tests/test_views.py | 804 | # 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 | 68 | # Create the suggestion | COMMENT |
| MEDIUM | weblate/trans/models/component.py | 6006 | # Create the file | COMMENT |
| MEDIUM | weblate/trans/views/edit.py | 815 | # Create the suggestion | COMMENT |
| MEDIUM | weblate/billing/tests.py | 1717 | # Creating a trial | COMMENT |
| MEDIUM | docs/conf.py | 151 | # 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/workflows/pull_requests.yaml | 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 | 150 | def update_alerts_on_screenshot_delete(sender, instance: Screenshot, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/formats/ttkit.py | 932 | def set_automatically_translated(self, value: bool) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 308 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 315 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 387 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 804 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 874 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 977 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1026 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1104 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1197 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1566 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1583 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1670 | def update_header(self, file_format_params: FileFormatParams, **kwargs) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 3116 | def set_explanation(self, explanation: str) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 3125 | def set_source_explanation(self, explanation: str) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 3290 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/ttkit.py | 1403 | def set_target(self, target: str | list[str]) -> None: | STRING |
| LOW | weblate/formats/ttkit.py | 1441 | 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 | 109 | def set_state(self, state) -> None: | CODE |
| LOW | weblate/formats/txt.py | 191 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW | weblate/formats/txt.py | 197 | def set_state(self, state) -> None: | CODE |
| LOW⚡ | weblate/formats/base.py | 354 | def set_target(self, target: str | list[str]) -> None: | CODE |
| LOW⚡ | weblate/formats/base.py | 358 | def set_explanation(self, explanation: str) -> None: | CODE |
| LOW⚡ | weblate/formats/base.py | 361 | def set_source_explanation(self, explanation: str) -> None: | CODE |
| LOW⚡ | weblate/formats/base.py | 364 | def set_state(self, state) -> None: | CODE |
| LOW⚡ | weblate/formats/base.py | 368 | def set_automatically_translated(self, value: bool) -> None: | CODE |
| LOW | weblate/formats/base.py | 629 | def update_header(self, file_format_params: FileFormatParams, **kwargs) -> None: | CODE |
| LOW⚡ | weblate/memory/tasks.py | 284 | def set_memory_scope_backfill_completed() -> None: | CODE |
| LOW | weblate/memory/tasks.py | 210 | def set_scope_source_project_ids(memories: list[Memory]) -> None: | CODE |
| LOW | weblate/memory/tasks.py | 1004 | def update_memory_bulk(entries: list[MemoryUpdatePayload]) -> None: | CODE |
| LOW | weblate/checks/models.py | 146 | def set_dismiss(self, *, state: bool = True, recurse: bool = True) -> None: | CODE |
| LOW⚡ | weblate/checks/flags.py | 430 | def set_value(self, name: str, value: str) -> None: | CODE |
| LOW⚡ | weblate/checks/flags.py | 433 | 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 | 953 | def update_result(self, result: object) -> None: | CODE |
| LOW | weblate/addons/fedora_messaging.py | 855 | def _set_broker_tls_timeout(connection: socket.socket, deadline: float) -> None: | CODE |
| LOW | weblate/gitexport/tasks.py | 12 | 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 | 22 | def set_attribute(self, key: str, value: bool | float | str) -> None: ... | CODE |
| LOW | weblate/utils/tracing.py | 38 | def set_status(self, status: object) -> None: ... | CODE |
| LOW⚡ | weblate/utils/tracing.py | 58 | def _set_opentelemetry_attribute(span: AttributeSpan, name: str, value: object) -> None: | CODE |
| LOW⚡ | weblate/utils/tasks.py | 89 | def update_translation_stats_parents(pk: int) -> None: | CODE |
| LOW⚡ | weblate/utils/tasks.py | 98 | def update_language_stats_parents(pk: int) -> None: | CODE |
| LOW⚡ | weblate/utils/tasks.py | 107 | def update_project_stats_link(pk: int) -> None: | CODE |
| LOW | weblate/utils/forms.py | 353 | def _set_queryset(self, queryset) -> None: | CODE |
| LOW | weblate/utils/stats.py | 229 | def set_data(self, data: StatDict) -> None: | CODE |
| LOW | weblate/utils/stats.py | 439 | def update_stats(self, update_parents: bool = True) -> None: | CODE |
| LOW | weblate/utils/stats.py | 1179 | def update_language_stats_parents(self) -> None: | CODE |
| LOW | weblate/utils/stats.py | 1191 | def update_language_stats(self) -> None: | CODE |
| LOW | weblate/utils/tests/test_checks.py | 36 | def set_cache(value) -> None: | CODE |
| LOW | weblate/accounts/models.py | 1362 | def set_lang_cookie(response, profile) -> None: | CODE |
| LOW | weblate/accounts/forms.py | 567 | def set_label(self) -> None: | CODE |
| LOW | weblate/accounts/management/commands/importuserdata.py | 42 | def update_languages(profile, userprofile) -> None: | CODE |
| LOW | weblate/vcs/git.py | 571 | def set_committer(self, name, mail) -> None: | CODE |
| LOW | weblate/vcs/git.py | 1082 | def update_remote(self) -> None: | CODE |
| 52 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fuzzing/sentry.py | 188 | except Exception as error: | CODE |
| LOW | fuzzing/sentry.py | 191 | except Exception as reporting_error: | CODE |
| LOW | weblate/runner.py | 24 | except Exception: | CODE |
| LOW | weblate/formats/ttkit.py | 656 | except Exception as exception: | CODE |
| LOW | weblate/formats/ttkit.py | 2133 | except Exception as error: | CODE |
| LOW | weblate/formats/ttkit.py | 3298 | except Exception: | CODE |
| LOW | weblate/formats/convert.py | 242 | except Exception as exception: | CODE |
| LOW | weblate/formats/txt.py | 120 | except Exception as error: | CODE |
| LOW | weblate/formats/txt.py | 287 | except Exception as exception: | CODE |
| LOW | weblate/formats/auto.py | 126 | except Exception as error: | CODE |
| LOW | weblate/memory/models.py | 747 | except Exception as error: | CODE |
| LOW⚡ | weblate/checks/flags.py | 421 | except Exception as error: | CODE |
| LOW | weblate/addons/git.py | 305 | except Exception: | CODE |
| LOW | weblate/addons/tasks.py | 215 | except Exception as error: | CODE |
| LOW | weblate/addons/models.py | 613 | except Exception as error: | CODE |
| LOW | weblate/addons/fedora_messaging.py | 229 | except Exception as error: | CODE |
| LOW | weblate/addons/fedora_messaging.py | 379 | except Exception: | CODE |
| LOW | weblate/addons/fedora_messaging.py | 426 | except Exception: | CODE |
| MEDIUM | weblate/addons/forms.py | 1386 | def clean_css_selector(self): | CODE |
| LOW | weblate/addons/forms.py | 1389 | except Exception as error: | CODE |
| LOW⚡ | weblate/addons/base.py | 804 | except Exception: | CODE |
| LOW | weblate/addons/base.py | 825 | except Exception: | CODE |
| LOW | weblate/utils/tracing.py | 114 | except Exception: | CODE |
| MEDIUM | weblate/utils/tracing.py | 45 | def get_sentry_sdk(): | CODE |
| LOW | weblate/utils/render.py | 113 | except Exception as err: | CODE |
| LOW | weblate/utils/validators.py | 202 | except Exception as exc: | CODE |
| LOW | weblate/utils/validators.py | 338 | except Exception as error: | CODE |
| LOW | weblate/utils/apps.py | 117 | except Exception as error: | CODE |
| LOW | weblate/utils/markdown.py | 163 | except Exception: | CODE |
| LOW | weblate/utils/requests.py | 237 | except Exception: | CODE |
| LOW | weblate/utils/requests.py | 251 | except Exception: | CODE |
| LOW | weblate/utils/views.py | 535 | except Exception: | CODE |
| LOW | weblate/utils/views.py | 698 | except Exception: | CODE |
| LOW | weblate/accounts/tasks.py | 268 | except Exception: | CODE |
| LOW | weblate/accounts/notifications.py | 501 | except Exception: | CODE |
| MEDIUM | weblate/accounts/tests/test_registration.py | 1577 | def test_saml(self) -> None: | CODE |
| LOW | weblate/accounts/tests/test_registration.py | 1581 | except Exception as error: | CODE |
| LOW | weblate/vcs/models.py | 204 | except Exception as error: | CODE |
| LOW | weblate/vcs/github.py | 122 | except Exception: | CODE |
| LOW | weblate/vcs/base.py | 181 | except Exception as error: | CODE |
| LOW | weblate/vcs/base.py | 609 | except Exception as error: | CODE |
| LOW | weblate/vcs/base.py | 883 | except Exception: | CODE |
| LOW | weblate/vcs/base.py | 896 | except Exception as error: | CODE |
| MEDIUM | weblate/vcs/views.py | 134 | def _get_workspace(workspaces, workspace_id) -> Workspace: | CODE |
| LOW | weblate/vcs/views.py | 531 | except Exception: | CODE |
| LOW | weblate/vcs/views.py | 619 | except Exception: | CODE |
| LOW | weblate/vcs/views.py | 790 | except Exception: | CODE |
| LOW | weblate/vcs/views.py | 804 | except Exception: | CODE |
| LOW | weblate/vcs/views.py | 1216 | except Exception: | CODE |
| LOW | weblate/wladmin/views.py | 285 | except Exception as error: | CODE |
| LOW | weblate/wladmin/views.py | 409 | except Exception: | CODE |
| LOW | weblate/wladmin/views.py | 484 | except Exception as error: | CODE |
| LOW | weblate/api/views.py | 3230 | except Exception as error: | CODE |
| LOW | weblate/trans/tasks.py | 208 | except Exception: | CODE |
| LOW | weblate/trans/discovery.py | 455 | except Exception: # pragma: no cover - defensive fallback | CODE |
| MEDIUM | weblate/trans/forms.py | 2002 | def _post_clean(self) -> None: | CODE |
| LOW | weblate/trans/forms.py | 3768 | except Exception as error: | CODE |
| LOW | weblate/trans/models/unit.py | 1161 | except Exception as error: | CODE |
| LOW | weblate/trans/models/translation.py | 456 | except Exception as error: | CODE |
| LOW | weblate/trans/models/translation.py | 528 | except Exception as exc: | CODE |
| 39 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/middleware.py | 256 | # Check if project exists | COMMENT |
| LOW | weblate/middleware.py | 270 | # Check if component exists | COMMENT |
| LOW | weblate/formats/ttkit.py | 1704 | # Check if there is matching obsolete unit | COMMENT |
| LOW | weblate/formats/ttkit.py | 2719 | # Check if the file is not two column only, in that case translate-toolkit detection | COMMENT |
| LOW⚡ | weblate/formats/exporters.py | 389 | # Set source_unit to the original unit's source_unit to avoid None issues | COMMENT |
| LOW⚡ | weblate/formats/exporters.py | 391 | # Set unresolved_comments to empty list to avoid query issues | COMMENT |
| LOW⚡ | weblate/formats/exporters.py | 393 | # Set suggestions to empty list to avoid database query issues | COMMENT |
| LOW | weblate/formats/tests/test_exporters.py | 601 | unit1.source_unit = unit1 # Set source_unit to itself | CODE |
| LOW | weblate/formats/tests/test_exporters.py | 612 | unit2.source_unit = unit2 # Set source_unit to itself | CODE |
| LOW | weblate/formats/tests/test_formats.py | 1077 | # Check if content matches | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 1175 | # Check if content matches | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 1451 | # Check if content matches | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 1504 | # Check if content matches | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 3302 | # Check if content matches | COMMENT |
| LOW | weblate/formats/tests/test_formats.py | 3425 | # Check if content matches | COMMENT |
| LOW | weblate/auth/permissions.py | 581 | # Check if adding is generally allowed | COMMENT |
| LOW | weblate/auth/permissions.py | 606 | # Check if removing is generally allowed | COMMENT |
| LOW | weblate/auth/permissions.py | 625 | # Check if adding is generally allowed | COMMENT |
| LOW | weblate/auth/views.py | 295 | # Check if invitation can be accepted | COMMENT |
| LOW | weblate/auth/views.py | 299 | # Check if this is for us | COMMENT |
| LOW | weblate/checks/markup.py | 382 | # Check if source is XML | COMMENT |
| LOW | weblate/checks/markup.py | 407 | # Check if source is XML | COMMENT |
| LOW | weblate/checks/chars.py | 271 | # Check if target contains double space | COMMENT |
| LOW | weblate/checks/same.py | 164 | # Check if we have any word which is not in exceptions list | COMMENT |
| LOW | weblate/addons/models.py | 628 | # Check if add-on is still installed and log activity | COMMENT |
| LOW | weblate/utils/ratelimit.py | 65 | # Set key to longer expiry for lockout period | COMMENT |
| LOW | weblate/utils/celery.py | 212 | # Check if any queue got bigger | COMMENT |
| LOW | weblate/accounts/pipeline.py | 446 | # Verify if this mail is not used on other accounts | COMMENT |
| LOW | weblate/vcs/git.py | 907 | # Set branch to track | COMMENT |
| LOW | weblate/vcs/git.py | 1472 | # Check if fork is used for this branch (default and matching branches use fork) | COMMENT |
| LOW | weblate/vcs/git.py | 1484 | # Check if commits are in the fork (already pushed) | COMMENT |
| LOW | weblate/vcs/git.py | 2902 | # Check if a fork already exists owned by the current user. | COMMENT |
| LOW | weblate/trans/forms.py | 2839 | # Check if category is from this project | COMMENT |
| LOW⚡ | weblate/trans/tests/test_hooks.py | 2592 | # Set full_name to empty string (too short, will skip repo construction) | COMMENT |
| LOW | weblate/trans/models/unit.py | 1355 | # Check if we actually need to change anything | COMMENT |
| LOW | weblate/trans/models/unit.py | 1522 | # Check if we have expected number of them | COMMENT |
| LOW | weblate/trans/models/translation.py | 721 | # Check if we're not already up to date | COMMENT |
| LOW | weblate/trans/models/translation.py | 1469 | # Check if context has changed while adding to storage | COMMENT |
| LOW | weblate/trans/models/translation.py | 2008 | # Iterate over list to copy set that will be changed | COMMENT |
| LOW | weblate/trans/models/component.py | 5235 | # Check if we should rename | COMMENT |
| LOW | weblate/trans/models/component.py | 5878 | # Check if template can be parsed | COMMENT |
| LOW | weblate/trans/models/component.py | 5944 | # Check if resulting language is not present | COMMENT |
| LOW | weblate/trans/models/component.py | 5964 | # Check if language code is valid | COMMENT |
| LOW | weblate/machinery/base.py | 1223 | # Check if there is a glossary | COMMENT |
| LOW | scripts/list-translated-languages.py | 57 | # Print results | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fuzzing/__init__.py | 1 | # Copyright © Weblate contributors | COMMENT |
| LOW | fuzzing/tests/__init__.py | 1 | # Copyright © Weblate contributors | COMMENT |
| 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 | 221 | COMMENT | |
| LOW | weblate/settings_example.py | 381 | REGISTRATION_ALLOW_DISPOSABLE_EMAILS = False | COMMENT |
| LOW | weblate/settings_example.py | 721 | ENABLE_HOOKS = True | COMMENT |
| LOW | weblate/settings_example.py | 741 | # "weblate.checks.chars.BeginSpaceCheck", | COMMENT |
| LOW | weblate/settings_example.py | 761 | # "weblate.checks.format.PerlBraceFormatCheck", | COMMENT |
| LOW | weblate/settings_example.py | 781 | # "weblate.checks.consistency.PluralsCheck", | COMMENT |
| LOW | weblate/settings_example.py | 801 | # "weblate.checks.placeholders.PlaceholderCheck", | COMMENT |
| LOW | weblate/settings_example.py | 821 | # AUTOFIX_LIST = ( | COMMENT |
| LOW | weblate/settings_example.py | 841 | # "weblate.addons.gettext.GettextAuthorComments", | COMMENT |
| LOW | weblate/settings_example.py | 861 | # "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 | 1221 | # Unfortunately, we must accept this structural sharing for performance | 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/icu.py | 21 | # Unique value for checking tags. Since types are | COMMENT |
| LOW | weblate/checks/__init__.py | 1 | # Copyright © Michal Čihař <michal@weblate.org> | COMMENT |
| LOW | weblate/checks/fluent/inner_html.py | 621 | cls, source: _HTMLSourcePosition, open_nodes: list[_HTMLNode] | COMMENT |
| LOW | weblate/checks/fluent/inner_html.py | 701 | and source.peak_matches(cls._FLUENT_REF_FIRST_CHAR_REGEX) | 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/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/models/translation.py | 1161 | user, author_name, timestamp, skip_push=True, signals=False | 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/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 | dev-docker/docker-compose.yml | 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 |
| LOW | .clusterfuzzlite/project.yaml | 1 | # Copyright © Weblate contributors | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fuzzing/bootstrap.py | 63 | CODE | |
| LOW | weblate/auth/forms.py | 163 | CODE | |
| LOW | weblate/addons/generate.py | 116 | CODE | |
| LOW | weblate/vcs/base.py | 502 | CODE | |
| LOW | weblate/api/tests.py | 158 | CODE | |
| LOW | weblate/api/tests.py | 8758 | CODE | |
| LOW | weblate/trans/tasks.py | 144 | CODE | |
| LOW | weblate/trans/tasks.py | 957 | CODE | |
| LOW | weblate/trans/translator_analysis.py | 84 | CODE | |
| LOW | weblate/trans/templatetags/translations.py | 543 | CODE | |
| LOW | weblate/trans/templatetags/translations.py | 612 | CODE | |
| LOW | weblate/trans/templatetags/translations.py | 1705 | CODE | |
| LOW | weblate/trans/tests/factories.py | 129 | CODE | |
| LOW | weblate/trans/models/pending.py | 440 | CODE | |
| LOW | weblate/trans/models/unit.py | 705 | CODE | |
| LOW | weblate/trans/models/translation.py | 2374 | CODE | |
| LOW | weblate/trans/models/translation.py | 2405 | CODE | |
| LOW | weblate/trans/models/translation.py | 2436 | CODE | |
| LOW | weblate/trans/models/component.py | 3591 | CODE | |
| LOW | weblate/trans/models/component.py | 4164 | CODE | |
| LOW | weblate/trans/models/component.py | 4232 | CODE | |
| LOW | weblate/trans/models/component.py | 4288 | CODE | |
| LOW | weblate/fonts/utils.py | 142 | CODE | |
| LOW | weblate/fonts/utils.py | 279 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 447 | # Mail templates need inline CSS and do not utilize description | COMMENT |
| MEDIUM | fuzzing/targets.py | 525 | # Keep other ValueError cases visible so the harness still catches real bugs. | COMMENT |
| MEDIUM | weblate/memory/models.py | 243 | # Use MD5 for filtering to utilize MD5 index | COMMENT |
| MEDIUM | weblate/checks/consistency.py | 222 | # Lower has no effect here, but we want to utilize index | COMMENT |
| MEDIUM | weblate/lang/models.py | 1035 | # Use own manager to utilize caching of English | COMMENT |
| LOW | weblate/vcs/git.py | 2146 | # If the fork was deleted, we just create another fork | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/settings_docker.py | 211 | # 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 | 166 | # Don't forget to use absolute paths, not relative paths. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | AGENTS.md | 61 | ## Weblate-specific guardrails | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | weblate/trans/tests/test_remote.py | 1034 | # TODO: add tests for the monolingual and monolingual with intermediate. | COMMENT |