Repository Analysis

WeblateOrg/weblate

Web based localization tool with tight version control integration.

19.5 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of WeblateOrg/weblate, a Python project with 6,043 GitHub stars. SynthScan v2.0 examined 384,468 lines of code across 1376 source files, recording 6667 pattern matches distributed across 18 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).

19.5
Adjusted Score
19.5
Raw Score
100%
Time Factor
2026-08-28
Last Push
6.0K
Stars
Python
Language
384.5K
Lines of Code
1.4K
Files
6.7K
Pattern Hits
2026-08-29
Scan Date
0.26
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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.

Severity Breakdown

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.

CRITICAL 98HIGH 256MEDIUM 59LOW 6254

Directory Score Breakdown

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.

Pattern Findings

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

Hyper-Verbose Identifiers4926 hits · 3876 pts
SeverityFileLineSnippetContext
LOWfuzzing/targets.py94def _compact_url_for_xss_check(value: str) -> str:CODE
LOWfuzzing/targets.py102def _assert_markdown_output_has_no_xss(rendered: str) -> None:CODE
LOWfuzzing/targets.py112def _build_markdown_xss_probe(payload: str) -> str:CODE
LOWfuzzing/targets.py246def _build_gitea_like_payload(fdp: FuzzedDataProvider, host: str) -> dict[str, object]:CODE
LOWfuzzing/targets.py436def _is_invalid_iso_timestamp(error: ValueError) -> bool:CODE
LOWfuzzing/findings_reporter.py126def is_directly_captured_python_exception(CODE
LOWfuzzing/findings_reporter.py585def format_findings_step_summary(CODE
LOWfuzzing/findings_reporter.py649def write_github_step_summary(CODE
LOWfuzzing/atheris_compat.py67 def consume_unicode_no_surrogates(self, count: int) -> str:CODE
LOWfuzzing/tests/test_targets.py20 def test_duplicate_zip_members_are_ignored(self) -> None:CODE
LOWfuzzing/tests/test_targets.py29 def test_invalid_member_paths_are_ignored(self) -> None:CODE
LOWfuzzing/tests/test_targets.py40 def test_invalid_backup_timestamp_is_ignored(self) -> None:CODE
LOWfuzzing/tests/test_targets.py47 def test_unexpected_backup_value_error_is_not_ignored(self) -> None:CODE
LOWfuzzing/tests/test_targets.py59 def test_csv_parser_error_is_ignored(self) -> None:CODE
LOWfuzzing/tests/test_targets.py64 def test_empty_csv_header_error_is_ignored(self) -> None:CODE
LOWfuzzing/tests/test_targets.py71 def test_markdown_xss_payloads_are_safe(self) -> None:CODE
LOWfuzzing/tests/test_targets.py76 def test_markdown_xss_assertion_rejects_event_handlers(self) -> None:CODE
LOWfuzzing/tests/test_targets.py80 def test_markdown_xss_assertion_rejects_dangerous_urls(self) -> None:CODE
LOWfuzzing/tests/test_targets.py84 def test_markdown_fuzzer_rejects_unsafe_renderer_output(self) -> None:CODE
LOWfuzzing/tests/test_sentry.py22 def test_wrap_target_reports_exception(self) -> None:CODE
LOWfuzzing/tests/test_sentry.py72 def test_wrap_target_skips_sentry_without_dsn(self) -> None:CODE
LOWfuzzing/tests/test_sentry.py86 def test_wrap_target_does_not_mask_fuzz_exception_on_sentry_failure(self) -> None:CODE
LOWfuzzing/tests/test_sentry.py103 def test_fuzz_input_attachment_is_limited_and_named(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py30 def test_collect_sarif_findings(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py95 def test_collect_findings_skips_directly_captured_python_sarif(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py134 def test_collect_findings_includes_summary_only_crashes_with_sarif(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py194 def test_collect_findings_does_not_match_unrelated_target_summary(CODE
LOWfuzzing/tests/test_findings_reporter.py258 def test_collect_summary_findings_skips_directly_captured_python_exception(CODE
LOWfuzzing/tests/test_findings_reporter.py279 def test_collect_summary_findings_skips_bare_python_exception(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py299 def test_collect_summary_findings_without_sarif(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py322 def test_format_findings_report_includes_location_and_summary(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py395 def test_format_findings_report_includes_additional_summaries(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py422 def test_format_findings_report_labels_summary_only_findings(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py448 def test_format_findings_step_summary_uses_markdown(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py522 def test_write_github_step_summary_appends_report(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py535 def test_write_github_step_summary_skips_without_path(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py538 def test_build_event_uses_stable_fingerprint_and_metadata(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py583 def test_build_event_truncates_summary(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py618 def test_parse_dsn_supports_path_prefix(self) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py639 def test_report_findings_sends_sentry_events(self, send_sentry_event_mock) -> None:CODE
LOWfuzzing/tests/test_findings_reporter.py671 def test_report_findings_ignores_sentry_transport_errors(CODE
LOWweblate/middleware.py138 def should_redirect_with_slash(self, request: AuthenticatedHttpRequest) -> bool:CODE
LOWweblate/middleware.py205 def check_existing_translations(self, language: Language, project: Project) -> bool:CODE
LOWweblate/middleware.py337 def apply_request_csp_settings(self) -> None:CODE
LOWweblate/middleware.py397 def build_csp_google_analytics(self) -> None:CODE
LOWweblate/metrics/wrapper.py276 def populate_month_activity_cache(CODE
LOWweblate/metrics/tasks.py69def collect_workspace_metrics(date_value: str) -> None:CODE
LOWweblate/metrics/tasks.py93def collect_component_metrics(date_value: str) -> None:CODE
LOWweblate/metrics/tasks.py105def collect_component_list_metrics(date_value: str) -> None:CODE
LOWweblate/metrics/tasks.py117def collect_translation_metrics(date_value: str) -> None:CODE
LOWweblate/metrics/models.py133def get_language_change_metric_data(CODE
LOWweblate/metrics/models.py372 def collect_category_language(CODE
LOWweblate/metrics/models.py714def create_metrics_translation(sender, instance, created=False, **kwargs) -> None:CODE
LOWweblate/metrics/models.py762def delete_metrics_component_list(sender, instance, **kwargs) -> None:CODE
LOWweblate/metrics/models.py770def delete_metrics_translation(sender, instance, **kwargs) -> None:CODE
LOWweblate/metrics/tests.py32 def test_collect_schedules_scope_tasks(self) -> None:CODE
LOWweblate/metrics/tests.py64 def test_collect_nested_shared_category(self) -> None:CODE
LOWweblate/metrics/tests.py108 def test_cleanup_legacy_category_language_metric_keys(self) -> None:CODE
LOWweblate/metrics/tests.py135 def test_collect_uses_requested_date(self) -> None:CODE
LOWweblate/metrics/tests.py142 def test_change_metric_aggregates(self) -> None:CODE
4866 more matches not shown…
Hallucination Indicators98 hits · 1045 pts
SeverityFileLineSnippetContext
CRITICALfuzzing/targets.py17from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/urls.py287 weblate.trans.views.settings.BackupsView.as_view(),CODE
CRITICALweblate/urls.py292 weblate.trans.views.settings.BackupsDownloadView.as_view(),CODE
CRITICALweblate/urls.py327 weblate.trans.views.create.CreateProject.as_view(),CODE
CRITICALweblate/urls.py332 weblate.trans.views.create.ImportProject.as_view(),CODE
CRITICALweblate/urls.py337 weblate.trans.views.create.CreateComponentSelection.as_view(),CODE
CRITICALweblate/urls.py342 weblate.trans.views.create.CreateComponent.as_view(),CODE
CRITICALweblate/urls.py347 weblate.trans.views.create.CreateFromZip.as_view(),CODE
CRITICALweblate/urls.py352 weblate.trans.views.create.CreateFromDoc.as_view(),CODE
CRITICALweblate/urls.py742 weblate.trans.views.basic.ProjectLanguageRedirectView.as_view(),CODE
CRITICALweblate/urls.py747 weblate.trans.views.basic.ProjectLanguageRedirectView.as_view(CODE
CRITICALweblate/urls.py807 weblate.trans.views.widgets.WidgetRedirectView.as_view(),CODE
CRITICALweblate/urls.py811 weblate.trans.views.widgets.WidgetRedirectView.as_view(),CODE
CRITICALweblate/urls.py815 weblate.trans.views.widgets.WidgetRedirectView.as_view(),CODE
CRITICALweblate/urls.py819 weblate.trans.views.widgets.WidgetRedirectView.as_view(),CODE
CRITICALweblate/urls.py1021 path("about/", weblate.trans.views.about.AboutView.as_view(), name="about"),CODE
CRITICALweblate/urls.py1022 path("donate/", weblate.trans.views.about.DonateView.as_view(), name="donate"),CODE
CRITICALweblate/urls.py1023 path("keys/", weblate.trans.views.about.KeysView.as_view(), name="keys"),CODE
CRITICALweblate/urls.py1024 path("stats/", weblate.trans.views.about.StatsView.as_view(), name="stats"),CODE
CRITICALweblate/middleware.py14from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/screenshots/models.py12from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/screenshots/tests.py16from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/formats/ttkit.py22from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/formats/tests/test_formats.py22from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/auth/models.py22from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/auth/forms.py14from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/auth/utils.py14from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/auth/tests/test_models.py10from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/checks/flags.py14from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/checks/markup.py16from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/checks/same.py130 unit.translation.component.project.name.lower().split()CODE
CRITICALweblate/checks/tests/test_flags.py5from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/addons/tasks.py15from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/addons/gettext.py19from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/addons/consistency.py10from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/addons/fedora_messaging.py23from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/addons/forms.py1611 queryset = self._addon.instance.component.translation_set.all()CODE
CRITICALweblate/addons/webhooks.py17from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/addons/tests.py33from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/addons/base.py17from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/files.py13from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/params.py20from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/render.py11from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/validators.py26from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/djangosaml2idp.py9from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/forms.py11from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/outbound.py14from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/stats.py941 self._object.component.project.label_set.values_list("name", flat=True)CODE
CRITICALweblate/utils/requests.py19from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/tests/test_validators.py11from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/tests/test_files.py13from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/tests/test_requests.py11from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/workspaces/forms.py10from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/workspaces/tests.py10from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/lang/tests.py13from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/accounts/password_validation.py7from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/accounts/models.py19from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/accounts/tests/test_password_validation.py9from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/accounts/tests/test_models.py12from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/vcs/forms.py12from django.core.exceptions import ValidationErrorCODE
38 more matches not shown…
Cross-Language Confusion219 hits · 1000 pts
SeverityFileLineSnippetContext
HIGHweblate/formats/tests/test_formats.py1346 "(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && n % 10 == 0) ? 2 : 3))",CODE
HIGHweblate/memory/tests.py1579"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"CODE
HIGHweblate/checks/tests/test_chars_checks.py58 self.do_test(False, ("Save && Exit", "Save && Exit", "accelerator:&"))CODE
HIGHweblate/checks/tests/test_mdx.py130 "{cond ? <p>{a}</p> : null}",CODE
HIGHweblate/checks/tests/test_mdx.py131 ["{cond ? <p>{a}</p> : null}"],CODE
HIGHweblate/checks/tests/test_flags.py35"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"CODE
HIGHweblate/addons/tests.py9511 repo.push("")STRING
HIGHweblate/lang/tests.py43 ("cs_CZ", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False),CODE
HIGHweblate/lang/tests.py44 ("cze_CZ", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False),CODE
HIGHweblate/lang/tests.py45 ("ces_CZ", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False),CODE
HIGHweblate/lang/tests.py50 "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2",CODE
HIGHweblate/lang/tests.py54 ("cs (2)", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False),CODE
HIGHweblate/lang/tests.py55 ("cscz", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False),CODE
HIGHweblate/lang/tests.py56 ("czech", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", False),CODE
HIGHweblate/lang/tests.py61 "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2",CODE
HIGHweblate/lang/tests.py75 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/tests.py75 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/tests.py83 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/tests.py83 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/tests.py91 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/tests.py91 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/tests.py99 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/tests.py99 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/tests.py146 "n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5",CODE
HIGHweblate/lang/tests.py154 "n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5",CODE
HIGHweblate/lang/tests.py162 "n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5",CODE
HIGHweblate/lang/tests.py725 "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"CODE
HIGHweblate/lang/tests.py725 "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"CODE
HIGHweblate/lang/tests.py183 "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/tests.py183 "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/tests.py380 "czech", "cs", "ltr", "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", "Czech", FalseCODE
HIGHweblate/lang/tests.py669 "(n%10==1 ? 0 : n%10==1 && n%100!=11 ? 1 : n %10>=2 && (n%100<10 || n%100>=20) ? 2 : 3)",CODE
HIGHweblate/lang/tests.py669 "(n%10==1 ? 0 : n%10==1 && n%100!=11 ? 1 : n %10>=2 && (n%100<10 || n%100>=20) ? 2 : 3)",CODE
HIGHweblate/lang/tests.py691 "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;",CODE
HIGHweblate/lang/tests.py860 "Created plural (n == 1) ? 0 : ((n != 0 && n % 1000000 == 0) ? 1 : 2) for language es_ZZ",CODE
HIGHweblate/lang/tests.py1106 legacy_formula = "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2"CODE
HIGHweblate/lang/data.py57 "n==1 || n%10==1 ? 0 : 1",CODE
HIGHweblate/lang/data.py62 "n >= 2 && (n < 11 || n > 99)",CODE
HIGHweblate/lang/data.py63 "n % 10 != 1 || n % 100 == 11",CODE
HIGHweblate/lang/data.py64 "(n % 10 == 1 && n % 100 != 11) ? 0 : 1",CODE
HIGHweblate/lang/data.py65 "n != 1 && n != 2 && n != 3 && (n % 10 == 4 || n % 10 == 6 || n % 10 == 9)",CODE
HIGHweblate/lang/data.py65 "n != 1 && n != 2 && n != 3 && (n % 10 == 4 || n % 10 == 6 || n % 10 == 9)",CODE
HIGHweblate/lang/data.py66 "(n==0 || n==1)",CODE
HIGHweblate/lang/data.py67 "(n%10==1 && n%100!=11 ? 0 : 1)",CODE
HIGHweblate/lang/data.py73 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/data.py73 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/data.py74 "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2",CODE
HIGHweblate/lang/data.py75 "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/data.py75 "n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/data.py76 "(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)",CODE
HIGHweblate/lang/data.py76 "(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)",CODE
HIGHweblate/lang/data.py77 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/data.py77 "n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2",CODE
HIGHweblate/lang/data.py78 "(n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19CODE
HIGHweblate/lang/data.py78 "(n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19CODE
HIGHweblate/lang/data.py79 "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)",CODE
HIGHweblate/lang/data.py79 "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)",CODE
HIGHweblate/lang/data.py80 "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)",CODE
HIGHweblate/lang/data.py80 "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)",CODE
HIGHweblate/lang/data.py81 "((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2)",CODE
159 more matches not shown…
Unused Imports526 hits · 494 pts
SeverityFileLineSnippetContext
LOWsetup.py6CODE
LOWfuzzing/bootstrap.py4CODE
LOWfuzzing/runner.py6CODE
LOWfuzzing/targets.py4CODE
LOWfuzzing/findings_reporter.py4CODE
LOWfuzzing/sentry.py4CODE
LOWfuzzing/atheris_compat.py4CODE
LOWfuzzing/urls.py4CODE
LOWfuzzing/tests/test_targets.py4CODE
LOWfuzzing/tests/test_sentry.py4CODE
LOWfuzzing/tests/test_findings_reporter.py4CODE
LOWweblate/settings_test.py14CODE
LOWweblate/asgi.py7CODE
LOWweblate/settings_example.py6CODE
LOWweblate/urls.py5CODE
LOWweblate/settings_fuzz.py6CODE
LOWweblate/settings_fuzz.py9CODE
LOWweblate/middleware.py5CODE
LOWweblate/wsgi.py20CODE
LOWweblate/metrics/wrapper.py5CODE
LOWweblate/metrics/tasks.py5CODE
LOWweblate/metrics/models.py5CODE
LOWweblate/configuration/models.py5CODE
LOWweblate/configuration/views.py5CODE
LOWweblate/screenshots/tasks.py15CODE
LOWweblate/screenshots/models.py5CODE
LOWweblate/formats/ttkit.py8CODE
LOWweblate/formats/ttkit.py118CODE
LOWweblate/formats/convert.py7CODE
LOWweblate/formats/multi.py7CODE
LOWweblate/formats/txt.py7CODE
LOWweblate/formats/defaults.py5CODE
LOWweblate/formats/exporters.py7CODE
LOWweblate/formats/exporters.py49CODE
LOWweblate/formats/external.py7CODE
LOWweblate/formats/base.py7CODE
LOWweblate/formats/auto.py7CODE
LOWweblate/formats/tests/test_convert.py7CODE
LOWweblate/formats/tests/test_exporters.py4CODE
LOWweblate/formats/tests/test_formats.py8CODE
LOWweblate/formats/tests/test_formats.py107CODE
LOWweblate/formats/tests/test_multi.py7CODE
LOWweblate/memory/tasks.py4CODE
LOWweblate/memory/models.py5CODE
LOWweblate/memory/apps.py4CODE
LOWweblate/memory/machine.py4CODE
LOWweblate/memory/utils.py5CODE
LOWweblate/memory/views.py4CODE
LOWweblate/memory/management/commands/import_memory.py4CODE
LOWweblate/memory/management/commands/dump_memory.py4CODE
LOWweblate/auth/results.py5CODE
LOWweblate/auth/forms.py5CODE
LOWweblate/auth/admin.py5CODE
LOWweblate/auth/utils.py5CODE
LOWweblate/auth/permissions.py5CODE
LOWweblate/auth/defaults.py5CODE
LOWweblate/auth/data.py7CODE
LOWweblate/auth/views.py4CODE
LOWweblate/auth/decorators.py5CODE
LOWweblate/auth/tests/test_admin.py5CODE
466 more matches not shown…
Deep Nesting250 hits · 210 pts
SeverityFileLineSnippetContext
LOWfuzzing/targets.py363CODE
LOWweblate/middleware.py214CODE
LOWweblate/middleware.py420CODE
LOWweblate/metrics/models.py264CODE
LOWweblate/screenshots/views.py185CODE
LOWweblate/screenshots/views.py717CODE
LOWweblate/formats/ttkit.py534CODE
LOWweblate/formats/ttkit.py981CODE
LOWweblate/formats/ttkit.py3286CODE
LOWweblate/formats/convert.py291CODE
LOWweblate/formats/exporters.py360CODE
LOWweblate/formats/base.py240CODE
LOWweblate/formats/auto.py85CODE
LOWweblate/formats/tests/test_formats.py3059CODE
LOWweblate/memory/tasks.py78CODE
LOWweblate/memory/tasks.py1109CODE
LOWweblate/memory/models.py1146CODE
LOWweblate/auth/models.py1358CODE
LOWweblate/auth/models.py1463CODE
LOWweblate/auth/permissions.py612CODE
LOWweblate/auth/permissions.py754CODE
LOWweblate/auth/permissions.py1446CODE
LOWweblate/auth/permissions.py1491CODE
LOWweblate/auth/management/commands/importusers.py34CODE
LOWweblate/checks/mdx.py44CODE
LOWweblate/checks/mdx.py168CODE
LOWweblate/checks/mdx.py212CODE
LOWweblate/checks/mdx.py243CODE
LOWweblate/checks/mdx.py320CODE
LOWweblate/checks/mdx.py413CODE
LOWweblate/checks/tasks.py29CODE
LOWweblate/checks/icu.py440CODE
LOWweblate/checks/flags.py178CODE
LOWweblate/checks/flags.py300CODE
LOWweblate/checks/format.py466CODE
LOWweblate/checks/format.py911CODE
LOWweblate/checks/markup.py192CODE
LOWweblate/checks/markup.py818CODE
LOWweblate/checks/markup.py459CODE
LOWweblate/checks/utils.py45CODE
LOWweblate/checks/utils.py91CODE
LOWweblate/checks/utils.py137CODE
LOWweblate/checks/chars.py645CODE
LOWweblate/checks/views.py91CODE
LOWweblate/checks/views.py118CODE
LOWweblate/checks/views.py246CODE
LOWweblate/checks/fluent/inner_html.py461CODE
LOWweblate/checks/fluent/inner_html.py693CODE
LOWweblate/checks/fluent/inner_html.py1065CODE
LOWweblate/checks/fluent/references.py88CODE
LOWweblate/checks/fluent/references.py111CODE
LOWweblate/checks/fluent/references.py191CODE
LOWweblate/checks/fluent/references.py213CODE
LOWweblate/checks/fluent/references.py453CODE
LOWweblate/checks/fluent/utils.py143CODE
LOWweblate/addons/git.py224CODE
LOWweblate/addons/tasks.py151CODE
LOWweblate/addons/models.py765CODE
LOWweblate/addons/models.py154CODE
LOWweblate/addons/models.py434CODE
190 more matches not shown…
Cross-File Repetition37 hits · 185 pts
SeverityFileLineSnippetContext
HIGHweblate/memory/machine.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/youdao.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/microsoft.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/tmserver.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/glosbe.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/cyrtranslit.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/saptranslationhub.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/systran.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/yandex.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/google.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/libretranslate.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/netease.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/yandexv2.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/modernmt.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/weblatetm.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/alibaba.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/baidu.py0download list of possible translations from a service.STRING
HIGHweblate/machinery/googlev3.py0download list of possible translations from a service.STRING
HIGHweblate/vcs/git.py0remove stale branches and tags from the repository.STRING
HIGHweblate/vcs/mercurial.py0remove stale branches and tags from the repository.STRING
HIGHweblate/vcs/base.py0remove stale branches and tags from the repository.STRING
HIGHweblate/trans/models/translation.py0check whether there are some not committed changes.STRING
HIGHweblate/trans/models/component.py0check whether there are some not committed changes.STRING
HIGHweblate/trans/models/project.py0check whether there are some not committed changes.STRING
HIGHweblate/machinery/tmserver.py0download list of supported languages from a service.STRING
HIGHweblate/machinery/systran.py0download list of supported languages from a service.STRING
HIGHweblate/machinery/yandex.py0download list of supported languages from a service.STRING
HIGHweblate/machinery/yandexv2.py0download list of supported languages from a service.STRING
HIGHweblate/machinery/apertium.py0download list of supported languages from a service.STRING
HIGHweblate/machinery/base.py0download list of supported languages from a service.STRING
HIGHweblate/machinery/tmserver.py0check whether given language combination is supported.STRING
HIGHweblate/machinery/cyrtranslit.py0check whether given language combination is supported.STRING
HIGHweblate/machinery/systran.py0check whether given language combination is supported.STRING
HIGHweblate/machinery/mymemory.py0check whether given language combination is supported.STRING
HIGHweblate/machinery/deepl.py0check whether given language combination is supported.STRING
HIGHweblate/machinery/apertium.py0check whether given language combination is supported.STRING
HIGHweblate/machinery/base.py0check whether given language combination is supported.STRING
Fake / Example Data203 hits · 162 pts
SeverityFileLineSnippetContext
LOWweblate/screenshots/forms.py228 "placeholder": gettext_lazy("Search screenshots"),CODE
LOWweblate/formats/tests/test_exporters.py172 long_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * 3CODE
LOWweblate/formats/tests/test_exporters.py172 long_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * 3CODE
LOWweblate/auth/tests/test_admin.py23 self.actor = User.objects.create_user("admin", "admin@example.com", "x")CODE
LOWweblate/auth/tests/test_admin.py38 email="addon-test@example.org",CODE
LOWweblate/auth/tests/test_admin.py68 email="bot-test-token@example.org",CODE
LOWweblate/auth/tests/test_views.py372 "inactive-user", "inactive-user@example.org", "testpassword"CODE
LOWweblate/auth/tests/test_views.py379 email="bot-user@example.org",CODE
LOWweblate/auth/tests/test_permissions.py28 self.admin = User.objects.create_user("admin", "admin@example.com")CODE
LOWweblate/auth/management/commands/createadmin.py39 default="admin@example.com",CODE
LOWweblate/auth/management/commands/createadmin.py40 help='Admin email, defaults to "admin@example.com"',CODE
LOWweblate/auth/management/commands/createadmin.py64 email = "admin@example.com"CODE
LOWweblate/checks/placeholders.py184 merge_highlight_spans(source, spans), group_prefix="placeholder"CODE
LOWweblate/checks/tests/test_chars_checks.py158 ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."],CODE
LOWweblate/checks/tests/test_chars_checks.py158 ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."],CODE
LOWweblate/checks/tests/test_chars_checks.py165 ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."],CODE
LOWweblate/checks/tests/test_chars_checks.py165 ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."],CODE
LOWweblate/checks/tests/test_flags.py242 {("placeholder", "zkouška sirén")},CODE
LOWweblate/utils/tests/test_validators.py756 "https://social.example/@example@example.org",CODE
LOWweblate/utils/tests/test_environment.py325 os.environ["REDIS_USER"] = "user@example.com"CODE
LOWweblate/workspaces/forms.py57 "placeholder": gettext_lazy("Search workspaces"),CODE
LOWweblate/accounts/tests/test_views.py337 email="addon-test@example.org",CODE
LOWweblate/accounts/tests/test_views.py767 "email": "weblate@example.org",CODE
LOWweblate/accounts/tests/test_views.py803 "email": "weblate@example.org",CODE
LOWweblate/accounts/tests/test_views.py1049 "email": "weblate@example.org",CODE
LOWweblate/accounts/tests/test_notifications.py222 "thirduser", "noreply+third@example.org", "testpassword"CODE
LOWweblate/accounts/tests/test_registration.py1225 user = User.objects.create_user("username", "primary@example.org")CODE
LOWweblate/accounts/tests/test_registration.py1230 VerifiedEmail.objects.create(social=first_social, email="primary@example.org")CODE
LOWweblate/accounts/tests/test_registration.py1231 VerifiedEmail.objects.create(social=second_social, email="second@example.org")CODE
LOWweblate/accounts/tests/test_registration.py1367 "email": "noreply2@example.org",CODE
LOWweblate/accounts/tests/test_registration.py1373 "email": "noreply-other@example.org",CODE
LOWweblate/accounts/tests/test_registration.py1379 "email": "noreply-weblate@example.org",CODE
LOWweblate/accounts/tests/test_registration.py1419 self.assertEqual(user.email, "noreply-weblate@example.org")CODE
LOWweblate/accounts/tests/test_registration.py1427 ("noreply-other@example.org", True),CODE
LOWweblate/accounts/tests/test_registration.py1428 ("noreply-weblate@example.org", True),CODE
LOWweblate/accounts/tests/test_registration.py1435 user = User.objects.create_user("weblate", "noreply-weblate@example.org", "x")CODE
LOWweblate/accounts/tests/test_registration.py1437 VerifiedEmail.objects.create(social=social, email="old@example.org")CODE
LOWweblate/accounts/tests/test_registration.py1440 email="noreply-weblate@example.org",CODE
LOWweblate/accounts/tests/test_registration.py1449 {"email": "noreply-weblate@example.org"},CODE
LOWweblate/accounts/tests/test_registration.py1455 social=social, email="noreply-weblate@example.org"CODE
LOWweblate/accounts/tests/test_registration.py1460 social=social, email="old@example.org"CODE
LOWweblate/accounts/tests/test_registration.py1466 user = User.objects.create_user("weblate", "noreply-weblate@example.org", "x")CODE
LOWweblate/accounts/tests/test_registration.py1468 VerifiedEmail.objects.create(social=social, email="old@example.org")CODE
LOWweblate/accounts/tests/test_registration.py1469 VerifiedEmail.objects.create(social=social, email="second@example.org")CODE
LOWweblate/accounts/tests/test_registration.py1476 {"email": "noreply-weblate@example.org"},CODE
LOWweblate/accounts/tests/test_registration.py1486 {("noreply-weblate@example.org", True)},CODE
LOWweblate/accounts/tests/test_registration.py1491 user = User.objects.create_user("weblate", "noreply-weblate@example.org", "x")CODE
LOWweblate/accounts/tests/test_registration.py1493 VerifiedEmail.objects.create(social=social, email="old@example.org")CODE
LOWweblate/accounts/tests/test_registration.py1494 VerifiedEmail.objects.create(social=social, email="first@example.org")CODE
LOWweblate/accounts/tests/test_registration.py1495 VerifiedEmail.objects.create(social=social, email="first@example.org")CODE
LOWweblate/accounts/tests/test_registration.py1504 ("first@example.org", True),CODE
LOWweblate/accounts/tests/test_registration.py1505 ("second@example.org", False),CODE
LOWweblate/accounts/tests/test_registration.py1516 {("first@example.org", True), ("second@example.org", False)},CODE
LOWweblate/accounts/tests/test_registration.py1521 User.objects.create_user("weblate", "noreply-weblate@example.org", "x")CODE
LOWweblate/accounts/tests/test_registration.py1526 User.objects.create_user("weblate", "noreply-weblate@example.org", "x")CODE
LOWweblate/accounts/tests/test_registration.py1538 User.objects.create_user("weblate", "noreply-weblate@example.org", "x")CODE
LOWweblate/accounts/tests/test_registration.py1542 User.objects.create_user("second", "noreply-second@example.org", "x")CODE
LOWweblate/accounts/tests/test_registration.py1549 self.assertEqual(mail.outbox[0].to, ["noreply-weblate@example.org"])CODE
LOWweblate/accounts/tests/test_registration.py64 "email": "noreply-weblate@example.org",CODE
LOWweblate/accounts/tests/test_registration.py390 data["email"] = "attacker@example.org"CODE
143 more matches not shown…
Self-Referential Comments44 hits · 132 pts
SeverityFileLineSnippetContext
MEDIUM.yamllint.yml5# This file is maintained in https://github.com/WeblateOrg/meta/COMMENT
MEDIUMweblate/formats/exporters.py375 # Create a temporary unit with this specific targetCOMMENT
MEDIUMweblate/formats/tests/test_exporters.py579 # Create a translation with multiple units having the same id_hashCOMMENT
MEDIUMweblate/formats/tests/test_exporters.py652 # Create a temporary directory for the git repositoryCOMMENT
MEDIUMweblate/formats/tests/test_exporters.py676 # Create the CSV file with real dataCOMMENT
MEDIUMweblate/formats/tests/test_exporters.py723 # Create a format instance and load the fileCOMMENT
MEDIUMweblate/formats/tests/test_formats.py1236 # Create the template under test with a single stringCOMMENT
MEDIUMweblate/formats/tests/test_formats.py3653 # Create a storage classCOMMENT
MEDIUMweblate/addons/gettext.py60 "# This file is distributed under the same license as the",CODE
MEDIUMweblate/addons/tests.py3631 """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file iSTRING
MEDIUMweblate/addons/tests.py3591 """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file iSTRING
MEDIUMweblate/addons/tests.py3659 """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file iSTRING
MEDIUMweblate/utils/backup.py36# This file is a cache directory tag created by WeblateCOMMENT
MEDIUMweblate/utils/unicodechars.py5# This file is generated using ./scripts/generate-unicodechars.pyCOMMENT
MEDIUMweblate/accounts/forms.py304 # Create a mapping of project IDs to slugsCOMMENT
MEDIUMweblate/accounts/tests/test_views.py236 # Creating a trialCOMMENT
MEDIUMweblate/vcs/tests/test_vcs.py4897 # Create a different branch nameCOMMENT
MEDIUMweblate/api/tests.py3003 # Create a non-superuser with project admin rightsCOMMENT
MEDIUMweblate/api/tests.py3007 # Create a project-scoped groupCOMMENT
MEDIUMweblate/api/tests.py15838 # Create a label in one projectCOMMENT
MEDIUMweblate/api/tests.py3233 # Create a project-scoped group via the API as superuserCOMMENT
MEDIUMweblate/api/tests.py15729 # Create a category to get the statistics fromCOMMENT
MEDIUMweblate/glossary/views.py76 # Create a set of existing term IDsCOMMENT
MEDIUMweblate/trans/backups.py898 # Create the zip with the contentCOMMENT
MEDIUMweblate/trans/tests/test_bulk_suggestions.py460 # Create a user WITHOUT project permissions (no add_user call)COMMENT
MEDIUMweblate/trans/tests/test_bulk_suggestions.py463 # Create a suggester userCOMMENT
MEDIUMweblate/trans/tests/test_bulk_suggestions.py58 # Create a user without permissionsCOMMENT
MEDIUMweblate/trans/tests/test_bulk_suggestions.py153 # Create a suggestion userCOMMENT
MEDIUMweblate/trans/tests/test_views.py822 # Create a component in the same project but outside the categoryCOMMENT
MEDIUMweblate/trans/management/commands/import_demo.py51 # Create main componentCOMMENT
MEDIUMweblate/trans/models/suggestion.py98 # Create the suggestionCOMMENT
MEDIUMweblate/trans/models/component.py6392 # Create the fileCOMMENT
MEDIUMweblate/trans/views/edit.py825 # Create the suggestionCOMMENT
MEDIUMweblate/billing/tests.py1961 # Creating a trialCOMMENT
MEDIUMdocs/conf.py151# Define the canonical URL if you are using a custom domain on Read the DocsCOMMENT
MEDIUMscripts/generate-unicodechars.py38# This file is generated using ./scripts/generate-unicodechars.pyCOMMENT
MEDIUM.github/FUNDING.yml5# This file is maintained in https://github.com/WeblateOrg/meta/COMMENT
MEDIUM.github/workflows/labels.yml5# This file is maintained in https://github.com/WeblateOrg/meta/COMMENT
MEDIUM.github/workflows/dependency-review.yml5# This file is maintained in https://github.com/WeblateOrg/meta/COMMENT
MEDIUM.github/workflows/pre-commit.yml5# This file is maintained in https://github.com/WeblateOrg/meta/COMMENT
MEDIUM.github/actions/pre-commit-setup/action.yml5# This file is maintained in https://github.com/WeblateOrg/meta/COMMENT
MEDIUM.github/ISSUE_TEMPLATE/feature_request.yml5# This file is maintained in https://github.com/WeblateOrg/meta/COMMENT
MEDIUM.github/ISSUE_TEMPLATE/bug_report.yml5# This file is maintained in https://github.com/WeblateOrg/meta/COMMENT
MEDIUM.github/ISSUE_TEMPLATE/config.yml5# This file is maintained in https://github.com/WeblateOrg/meta/COMMENT
Modern Structural Boilerplate121 hits · 121 pts
SeverityFileLineSnippetContext
LOWweblate/screenshots/models.py193def update_alerts_on_screenshot_save(sender, instance: Screenshot, **kwargs) -> None:CODE
LOWweblate/screenshots/models.py201def update_alerts_on_screenshot_delete(sender, instance: Screenshot, **kwargs) -> None:CODE
LOWweblate/screenshots/tests.py600 async def update_sources() -> None:CODE
LOWweblate/formats/ttkit.py936 def set_automatically_translated(self, value: bool) -> None:CODE
LOWweblate/formats/ttkit.py312 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py319 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py391 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py808 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py878 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py981 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py1030 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py1108 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py1295 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py1301 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py1344 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py1713 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py1730 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py1817 def update_header(self, file_format_params: FileFormatParams, **kwargs) -> None:CODE
LOWweblate/formats/ttkit.py3373 def set_explanation(self, explanation: str) -> None:CODE
LOWweblate/formats/ttkit.py3382 def set_source_explanation(self, explanation: str) -> None:CODE
LOWweblate/formats/ttkit.py3547 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py1550 def set_target(self, target: str | list[str]) -> None:STRING
LOWweblate/formats/ttkit.py1588 def set_state(self, state) -> None:STRING
LOWweblate/formats/multi.py85 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/multi.py109 def set_state(self, state) -> None:CODE
LOWweblate/formats/txt.py191 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/txt.py197 def set_state(self, state) -> None:CODE
LOWweblate/formats/base.py357 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/base.py361 def set_explanation(self, explanation: str) -> None:CODE
LOWweblate/formats/base.py364 def set_source_explanation(self, explanation: str) -> None:CODE
LOWweblate/formats/base.py367 def set_state(self, state) -> None:CODE
LOWweblate/formats/base.py371 def set_automatically_translated(self, value: bool) -> None:CODE
LOWweblate/formats/base.py632 def update_header(self, file_format_params: FileFormatParams, **kwargs) -> None:CODE
LOWweblate/memory/tasks.py219def set_scope_source_project_ids(memories: list[Memory]) -> None:CODE
LOWweblate/memory/tasks.py429def set_memory_scope_backfill_completed() -> None:CODE
LOWweblate/memory/tasks.py1289def update_memory_bulk(entries: list[MemoryUpdatePayload]) -> None:CODE
LOWweblate/checks/models.py147 def set_dismiss(self, *, state: bool = True, recurse: bool = True) -> None:CODE
LOWweblate/checks/flags.py432 def set_value(self, name: str, value: str) -> None:CODE
LOWweblate/checks/flags.py435 def set_values(self, name: str, *values: FlagValue) -> None:CODE
LOWweblate/checks/fluent/references.py191 def _set_refs(self, branch: FluentSelectorBranch) -> None:CODE
LOWweblate/addons/models.py1051 def update_result(self, result: object) -> None:CODE
LOWweblate/addons/fedora_messaging.py858 def _set_broker_tls_timeout(connection: socket.socket, deadline: float) -> None:CODE
LOWweblate/gitexport/tasks.py12def update_gitexport_urls() -> None:CODE
LOWweblate/gitexport/models.py34def update_component_git_export(sender, instance, **kwargs) -> None:CODE
LOWweblate/gitexport/models.py39def update_components(matching: ComponentQuerySet) -> None:CODE
LOWweblate/gitexport/models.py60def update_project_git_export(sender, instance, **kwargs) -> None:CODE
LOWweblate/gitexport/models.py64def update_all_components() -> None:CODE
LOWweblate/utils/tracing.py22 def set_attribute(self, key: str, value: bool | float | str) -> None: ...CODE
LOWweblate/utils/tracing.py38 def set_status(self, status: object) -> None: ...CODE
LOWweblate/utils/tracing.py63def _set_opentelemetry_attribute(span: AttributeSpan, name: str, value: object) -> None:CODE
LOWweblate/utils/tasks.py92def update_translation_stats_parents(pk: int) -> None:CODE
LOWweblate/utils/tasks.py101def update_language_stats_parents(pk: int) -> None:CODE
LOWweblate/utils/tasks.py110def update_project_stats_link(pk: int) -> None:CODE
LOWweblate/utils/tasks.py121def update_workspace_stats(workspace_ids: list[str]) -> None:CODE
LOWweblate/utils/tasks.py188def update_translation_stats(pks: list[int]) -> None:CODE
LOWweblate/utils/forms.py368 def _set_queryset(self, queryset) -> None:CODE
LOWweblate/utils/stats.py258 def set_data(self, data: StatDict) -> None:CODE
LOWweblate/utils/stats.py483 def update_stats(self, update_parents: bool = True) -> None:CODE
LOWweblate/utils/stats.py1132 def update_language_stats_parents(self) -> None:CODE
LOWweblate/utils/stats.py1136 def update_language_stats(self) -> None:CODE
61 more matches not shown…
Excessive Try-Catch Wrapping105 hits · 106 pts
SeverityFileLineSnippetContext
LOWfuzzing/sentry.py188 except Exception as error:CODE
LOWfuzzing/sentry.py191 except Exception as reporting_error:CODE
LOWweblate/runner.py24 except Exception:CODE
LOWweblate/formats/ttkit.py660 except Exception as exception:CODE
LOWweblate/formats/ttkit.py2080 except Exception as exception:CODE
LOWweblate/formats/ttkit.py2390 except Exception as error:CODE
LOWweblate/formats/ttkit.py3555 except Exception:CODE
LOWweblate/formats/convert.py242 except Exception as exception:CODE
LOWweblate/formats/txt.py120 except Exception as error:CODE
LOWweblate/formats/txt.py287 except Exception as exception:CODE
LOWweblate/formats/auto.py126 except Exception as error:CODE
LOWweblate/memory/models.py848 except Exception as error:CODE
LOWweblate/checks/flags.py423 except Exception as error:CODE
LOWweblate/addons/git.py310 except Exception:CODE
LOWweblate/addons/models.py693 except Exception as error:CODE
LOWweblate/addons/fedora_messaging.py230 except Exception as error:CODE
LOWweblate/addons/fedora_messaging.py380 except Exception:CODE
LOWweblate/addons/fedora_messaging.py427 except Exception:CODE
MEDIUMweblate/addons/forms.py1497def clean_css_selector(self):CODE
LOWweblate/addons/forms.py1500 except Exception as error:CODE
LOWweblate/addons/base.py931 except Exception:CODE
LOWweblate/addons/base.py952 except Exception:CODE
LOWweblate/utils/tracing.py119 except Exception:CODE
MEDIUMweblate/utils/tracing.py45def get_sentry_sdk():CODE
LOWweblate/utils/render.py113 except Exception as err:CODE
LOWweblate/utils/validators.py205 except Exception as exc:CODE
LOWweblate/utils/validators.py341 except Exception as error:CODE
LOWweblate/utils/apps.py125 except Exception as error:CODE
LOWweblate/utils/markdown.py163 except Exception:CODE
LOWweblate/utils/views.py712 except Exception:CODE
LOWweblate/utils/views.py877 except Exception:CODE
LOWweblate/accounts/tasks.py268 except Exception:CODE
LOWweblate/accounts/notifications.py501 except Exception:CODE
MEDIUMweblate/accounts/tests/test_registration.py1577def test_saml(self) -> None:CODE
LOWweblate/accounts/tests/test_registration.py1581 except Exception as error:CODE
LOWweblate/vcs/apps.py89 except Exception as error:CODE
LOWweblate/vcs/github.py124 except Exception:CODE
LOWweblate/vcs/github.py135 except Exception:CODE
LOWweblate/vcs/base.py476 except Exception as error:CODE
LOWweblate/vcs/base.py1034 except Exception as error:CODE
LOWweblate/vcs/base.py1438 except Exception:CODE
LOWweblate/vcs/base.py1449 except Exception as error:CODE
MEDIUMweblate/vcs/views.py174def _get_workspace(workspaces, workspace_id) -> Workspace:CODE
LOWweblate/vcs/views.py597 except Exception:CODE
LOWweblate/vcs/views.py689 except Exception:CODE
LOWweblate/vcs/views.py878 except Exception:CODE
LOWweblate/vcs/views.py894 except Exception:CODE
LOWweblate/vcs/views.py1311 except Exception:CODE
LOWweblate/wladmin/middleware.py53 except Exception:CODE
LOWweblate/wladmin/middleware.py103 except Exception:CODE
LOWweblate/wladmin/views.py297 except Exception as error:CODE
LOWweblate/wladmin/views.py421 except Exception:CODE
LOWweblate/wladmin/views.py522 except Exception as error:CODE
LOWweblate/api/views.py3598 except Exception as error:CODE
LOWweblate/trans/backups.py2367 except Exception:CODE
LOWweblate/trans/backups.py2377 except Exception as error:CODE
LOWweblate/trans/tasks.py216 except Exception:CODE
LOWweblate/trans/discovery.py455 except Exception: # pragma: no cover - defensive fallbackCODE
MEDIUMweblate/trans/forms.py2111def _post_clean(self) -> None:CODE
LOWweblate/trans/forms.py3915 except Exception as error:CODE
45 more matches not shown…
Redundant / Tautological Comments45 hits · 70 pts
SeverityFileLineSnippetContext
LOWweblate/middleware.py250 # Check if project existsCOMMENT
LOWweblate/middleware.py264 # Check if component existsCOMMENT
LOWweblate/formats/ttkit.py1851 # Check if there is matching obsolete unitCOMMENT
LOWweblate/formats/ttkit.py2976 # Check if the file is not two column only, in that case translate-toolkit detectionCOMMENT
LOWweblate/formats/exporters.py389 # Set source_unit to the original unit's source_unit to avoid None issuesCOMMENT
LOWweblate/formats/exporters.py391 # Set unresolved_comments to empty list to avoid query issuesCOMMENT
LOWweblate/formats/exporters.py393 # Set suggestions to empty list to avoid database query issuesCOMMENT
LOWweblate/formats/tests/test_exporters.py601 unit1.source_unit = unit1 # Set source_unit to itselfCODE
LOWweblate/formats/tests/test_exporters.py612 unit2.source_unit = unit2 # Set source_unit to itselfCODE
LOWweblate/formats/tests/test_formats.py1080 # Check if content matchesCOMMENT
LOWweblate/formats/tests/test_formats.py1178 # Check if content matchesCOMMENT
LOWweblate/formats/tests/test_formats.py1454 # Check if content matchesCOMMENT
LOWweblate/formats/tests/test_formats.py1507 # Check if content matchesCOMMENT
LOWweblate/formats/tests/test_formats.py3394 # Check if content matchesCOMMENT
LOWweblate/formats/tests/test_formats.py3516 # Check if content matchesCOMMENT
LOWweblate/auth/permissions.py866 # Check if adding is generally allowedCOMMENT
LOWweblate/auth/permissions.py891 # Check if removing is generally allowedCOMMENT
LOWweblate/auth/permissions.py910 # Check if adding is generally allowedCOMMENT
LOWweblate/auth/views.py295 # Check if invitation can be acceptedCOMMENT
LOWweblate/auth/views.py299 # Check if this is for usCOMMENT
LOWweblate/checks/markup.py379 # Check if source is XMLCOMMENT
LOWweblate/checks/markup.py404 # Check if source is XMLCOMMENT
LOWweblate/checks/chars.py271 # Check if target contains double spaceCOMMENT
LOWweblate/checks/same.py164 # Check if we have any word which is not in exceptions listCOMMENT
LOWweblate/addons/models.py712 # Check if add-on is still installed and log activityCOMMENT
LOWweblate/utils/ratelimit.py65 # Set key to longer expiry for lockout periodCOMMENT
LOWweblate/utils/celery.py232 # Check if any queue got biggerCOMMENT
LOWweblate/accounts/pipeline.py446 # Verify if this mail is not used on other accountsCOMMENT
LOWweblate/vcs/git.py1462 # Set branch to trackCOMMENT
LOWweblate/vcs/git.py2087 # Check if fork is used for this branch (default and matching branches use fork)COMMENT
LOWweblate/vcs/git.py2099 # Check if commits are in the fork (already pushed)COMMENT
LOWweblate/vcs/git.py3771 # Check if a fork already exists owned by the current user.COMMENT
LOWweblate/trans/forms.py2994 # Check if category is from this projectCOMMENT
LOWweblate/trans/tests/test_hooks.py2478 # Set full_name to empty string (too short, will skip repo construction)COMMENT
LOWweblate/trans/models/unit.py1495 # Check if we actually need to change anythingCOMMENT
LOWweblate/trans/models/unit.py1665 # Check if we have expected number of themCOMMENT
LOWweblate/trans/models/translation.py748 # Check if we're not already up to dateCOMMENT
LOWweblate/trans/models/translation.py1496 # Check if context has changed while adding to storageCOMMENT
LOWweblate/trans/models/translation.py2047 # Iterate over list to copy set that will be changedCOMMENT
LOWweblate/trans/models/component.py5610 # Check if we should renameCOMMENT
LOWweblate/trans/models/component.py6264 # Check if template can be parsedCOMMENT
LOWweblate/trans/models/component.py6330 # Check if resulting language is not presentCOMMENT
LOWweblate/trans/models/component.py6350 # Check if language code is validCOMMENT
LOWweblate/machinery/base.py1482 # Check if there is a glossaryCOMMENT
LOWscripts/list-translated-languages.py57 # Print resultsCOMMENT
Over-Commented Block53 hits · 52 pts
SeverityFileLineSnippetContext
LOWfuzzing/__init__.py1# Copyright © Weblate contributorsCOMMENT
LOWfuzzing/tests/__init__.py1# Copyright © Weblate contributorsCOMMENT
LOWweblate/models.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/settings_example.py221COMMENT
LOWweblate/settings_example.py381# Allow new user registrationsCOMMENT
LOWweblate/settings_example.py741COMMENT
LOWweblate/settings_example.py761# "weblate.checks.chars.EndExclamationCheck",COMMENT
LOWweblate/settings_example.py781# "weblate.checks.format.LaravelFormatCheck",COMMENT
LOWweblate/settings_example.py801# "weblate.checks.chars.NewLineCountCheck",COMMENT
LOWweblate/settings_example.py821# "weblate.checks.source.MultipleFailingCheck",COMMENT
LOWweblate/settings_example.py841# "weblate.trans.autofixes.chars.PunctuationSpacing",COMMENT
LOWweblate/settings_example.py861# "weblate.addons.autotranslate.AutoTranslateAddon",COMMENT
LOWweblate/metrics/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/configuration/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/screenshots/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/formats/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/formats/tests/test_formats.py1221 # template unit. In the context of this test, `removenotes()` leaks backCOMMENT
LOWweblate/memory/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/auth/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/auth/tests/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/checks/icu.py21# Unique value for checking tags. Since types areCOMMENT
LOWweblate/checks/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/checks/fluent/inner_html.py621 cls, source: _HTMLSourcePosition, open_nodes: list[_HTMLNode]COMMENT
LOWweblate/checks/fluent/inner_html.py701 and source.peak_matches(cls._FLUENT_REF_FIRST_CHAR_REGEX)COMMENT
LOWweblate/checks/fluent/references.py281 ref: {COMMENT
LOWweblate/checks/fluent/__init__.py1# Copyright © Henry Wilkes <henry@torproject.org>COMMENT
LOWweblate/addons/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/gitexport/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/utils/tests/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/workspaces/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/lang/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/accounts/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/accounts/tests/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/vcs/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/examples/weblate.uwsgi.ini1#COMMENT
LOWweblate/wladmin/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/api/models.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/api/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/glossary/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/glossary/admin.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/trans/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/trans/tests/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/trans/hooks/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/legal/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/fonts/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/billing/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWweblate/machinery/__init__.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWdev-docker/docker-compose.yml1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWdocs/conf.py1# Copyright © Michal Čihař <michal@weblate.org>COMMENT
LOWscripts/filter-mypy.sh1#!/bin/shCOMMENT
LOW.github/workflows/scorecards.yml41 - name: Run analysisCOMMENT
LOW.clusterfuzzlite/project.yaml1# Copyright © Weblate contributorsCOMMENT
AI Structural Patterns24 hits · 18 pts
SeverityFileLineSnippetContext
LOWfuzzing/bootstrap.py60CODE
LOWweblate/auth/forms.py164CODE
LOWweblate/addons/generate.py123CODE
LOWweblate/vcs/base.py927CODE
LOWweblate/api/tests.py193CODE
LOWweblate/api/tests.py10226CODE
LOWweblate/trans/tasks.py152CODE
LOWweblate/trans/tasks.py1070CODE
LOWweblate/trans/translator_analysis.py84CODE
LOWweblate/trans/formatting.py481CODE
LOWweblate/trans/formatting.py548CODE
LOWweblate/trans/templatetags/translations.py989CODE
LOWweblate/trans/tests/factories.py129CODE
LOWweblate/trans/models/pending.py449CODE
LOWweblate/trans/models/unit.py817CODE
LOWweblate/trans/models/translation.py2415CODE
LOWweblate/trans/models/translation.py2446CODE
LOWweblate/trans/models/translation.py2477CODE
LOWweblate/trans/models/component.py3843CODE
LOWweblate/trans/models/component.py4473CODE
LOWweblate/trans/models/component.py4541CODE
LOWweblate/trans/models/component.py4597CODE
LOWweblate/fonts/utils.py45CODE
LOWweblate/fonts/utils.py151CODE
AI Slop Vocabulary6 hits · 16 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml452# Mail templates need inline CSS and do not utilize descriptionCOMMENT
MEDIUMfuzzing/targets.py525 # Keep other ValueError cases visible so the harness still catches real bugs.COMMENT
MEDIUMweblate/memory/models.py342 # Use MD5 for filtering to utilize MD5 indexCOMMENT
MEDIUMweblate/checks/consistency.py242 # Lower has no effect here, but we want to utilize indexCOMMENT
MEDIUMweblate/lang/models.py1036 # Use own manager to utilize caching of EnglishCOMMENT
LOWweblate/vcs/git.py2800 # If the fork was deleted, we just create another forkCOMMENT
Slop Phrases3 hits · 6 pts
SeverityFileLineSnippetContext
LOWweblate/settings_docker.py212 # Don't forget to use absolute paths, not relative paths.COMMENT
MEDIUMweblate/settings_example.py68# Data directory, you can use following for the development purposes:COMMENT
LOWweblate/settings_example.py167 # Don't forget to use absolute paths, not relative paths.COMMENT
Overly Generic Function Names5 hits · 6 pts
SeverityFileLineSnippetContext
LOWweblate/utils/requests.py505 def handle_request(self, request: httpx2.Request) -> httpx2.Response:CODE
LOWweblate/utils/tests/test_requests.py93 def handle_request(request):CODE
LOWweblate/utils/tests/test_requests.py116 def handle_request(request):CODE
LOWweblate/utils/tests/test_requests.py145 def handle_request(_request):CODE
LOWweblate/utils/tests/test_requests.py218 def handle_request(request):CODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMAGENTS.md68## Weblate-specific guardrailsCOMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWweblate/trans/tests/test_remote.py1039 # TODO: add tests for the monolingual and monolingual with intermediate.COMMENT