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 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).

19.5
Adjusted Score
19.5
Raw Score
100%
Time Factor
2026-07-14
Last Push
6.0K
Stars
Python
Language
350.8K
Lines of Code
1.3K
Files
5.8K
Pattern Hits
2026-07-14
Scan Date
0.25
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 93HIGH 248MEDIUM 59LOW 5399

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 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.

Hyper-Verbose Identifiers4140 hits · 3336 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.py144 def should_redirect_with_slash(self, request: AuthenticatedHttpRequest) -> bool:CODE
LOWweblate/middleware.py211 def check_existing_translations(self, language: Language, project: Project) -> bool:CODE
LOWweblate/middleware.py343 def apply_request_csp_settings(self) -> None:CODE
LOWweblate/middleware.py401 def build_csp_google_analytics(self) -> None:CODE
LOWweblate/metrics/wrapper.py276 def populate_month_activity_cache(CODE
LOWweblate/metrics/models.py299 def collect_category_language(self, category_language: CategoryLanguage):CODE
LOWweblate/metrics/models.py568def create_metrics_translation(sender, instance, created=False, **kwargs) -> None:CODE
LOWweblate/metrics/models.py608def delete_metrics_component_list(sender, instance, **kwargs) -> None:CODE
LOWweblate/metrics/models.py616def delete_metrics_translation(sender, instance, **kwargs) -> None:CODE
LOWweblate/metrics/tests.py25 def test_wrapper_prefers_today_metric(self) -> None:CODE
LOWweblate/screenshots/models.py129def change_screenshot_assignment(sender, instance, action, **kwargs) -> None:CODE
LOWweblate/screenshots/models.py139def clear_missing_screenshots_alert(sender, instance: Screenshot, **kwargs) -> None:CODE
LOWweblate/screenshots/models.py150def update_alerts_on_screenshot_delete(sender, instance: Screenshot, **kwargs) -> None:CODE
LOWweblate/screenshots/models.py158def validate_screenshot_image(component: Component, filename: str) -> str | None:CODE
LOWweblate/screenshots/models.py191def sync_screenshots_from_repo(CODE
LOWweblate/screenshots/tests.py90 def test_upload_redirect_next(self) -> None:CODE
LOWweblate/screenshots/tests.py106 def test_upload_redirect_next_invalid(self) -> None:CODE
LOWweblate/screenshots/tests.py160 def test_upload_source_invalid(self) -> None:CODE
LOWweblate/screenshots/tests.py175 def test_detail_has_documentation_link(self) -> None:CODE
4080 more matches not shown…
Hallucination Indicators93 hits · 995 pts
SeverityFileLineSnippetContext
CRITICALfuzzing/targets.py17from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/urls.py277 weblate.trans.views.settings.BackupsView.as_view(),CODE
CRITICALweblate/urls.py282 weblate.trans.views.settings.BackupsDownloadView.as_view(),CODE
CRITICALweblate/urls.py317 weblate.trans.views.create.CreateProject.as_view(),CODE
CRITICALweblate/urls.py322 weblate.trans.views.create.ImportProject.as_view(),CODE
CRITICALweblate/urls.py327 weblate.trans.views.create.CreateComponentSelection.as_view(),CODE
CRITICALweblate/urls.py332 weblate.trans.views.create.CreateComponent.as_view(),CODE
CRITICALweblate/urls.py337 weblate.trans.views.create.CreateFromZip.as_view(),CODE
CRITICALweblate/urls.py342 weblate.trans.views.create.CreateFromDoc.as_view(),CODE
CRITICALweblate/urls.py712 weblate.trans.views.basic.ProjectLanguageRedirectView.as_view(),CODE
CRITICALweblate/urls.py717 weblate.trans.views.basic.ProjectLanguageRedirectView.as_view(CODE
CRITICALweblate/urls.py777 weblate.trans.views.widgets.WidgetRedirectView.as_view(),CODE
CRITICALweblate/urls.py781 weblate.trans.views.widgets.WidgetRedirectView.as_view(),CODE
CRITICALweblate/urls.py785 weblate.trans.views.widgets.WidgetRedirectView.as_view(),CODE
CRITICALweblate/urls.py789 weblate.trans.views.widgets.WidgetRedirectView.as_view(),CODE
CRITICALweblate/urls.py992 path("about/", weblate.trans.views.about.AboutView.as_view(), name="about"),CODE
CRITICALweblate/urls.py993 path("donate/", weblate.trans.views.about.DonateView.as_view(), name="donate"),CODE
CRITICALweblate/urls.py994 path("keys/", weblate.trans.views.about.KeysView.as_view(), name="keys"),CODE
CRITICALweblate/urls.py995 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/formats/ttkit.py22from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/formats/tests/test_formats.py22from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/auth/models.py21from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/auth/forms.py13from 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.py13from 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.py1487 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.py16from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/files.py13from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/render.py11from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/validators.py25from 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.py11from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/stats.py1026 self._object.component.project.label_set.values_list("name", flat=True)CODE
CRITICALweblate/utils/requests.py15from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/tests/test_validators.py10from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/tests/test_files.py13from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/utils/tests/test_requests.py10from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/workspaces/tests.py9from 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/vcs/forms.py12from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/vcs/ssh.py17from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/vcs/github.py21from django.core.exceptions import ValidationErrorCODE
CRITICALweblate/vcs/base.py698 from django.core.exceptions import ValidationError # ruff: ignore[import-outside-top-level, unsorted-imports]CODE
CRITICALweblate/api/serializers.py14from django.core.exceptions import ValidationError as DjangoValidationErrorCODE
33 more matches not shown…
Cross-Language Confusion210 hits · 962 pts
SeverityFileLineSnippetContext
HIGHweblate/formats/tests/test_formats.py1343 "(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && n % 10 == 0) ? 2 : 3))",CODE
HIGHweblate/memory/tests.py757"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"CODE
HIGHweblate/checks/tests/test_chars_checks.py57 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.py8391 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.py718 "(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.py718 "(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.py662 "(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.py662 "(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.py684 "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;",CODE
HIGHweblate/lang/tests.py853 "Created plural (n == 1) ? 0 : ((n != 0 && n % 1000000 == 0) ? 1 : 2) for language es_ZZ",CODE
HIGHweblate/lang/tests.py1099 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
150 more matches not shown…
Unused Imports505 hits · 482 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/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/models.py5CODE
LOWweblate/configuration/models.py5CODE
LOWweblate/configuration/views.py5CODE
LOWweblate/screenshots/tasks.py15CODE
LOWweblate/screenshots/models.py5CODE
LOWweblate/formats/ttkit.py8CODE
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.py106CODE
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
LOWweblate/auth/management/commands/importusers.py4CODE
LOWweblate/auth/management/commands/setupgroups.py4CODE
LOWweblate/auth/management/commands/createadmin.py4CODE
445 more matches not shown…
Deep Nesting232 hits · 200 pts
SeverityFileLineSnippetContext
LOWfuzzing/targets.py363CODE
LOWweblate/middleware.py220CODE
LOWweblate/middleware.py425CODE
LOWweblate/metrics/models.py191CODE
LOWweblate/screenshots/views.py579CODE
LOWweblate/formats/ttkit.py530CODE
LOWweblate/formats/ttkit.py977CODE
LOWweblate/formats/ttkit.py3029CODE
LOWweblate/formats/convert.py291CODE
LOWweblate/formats/exporters.py360CODE
LOWweblate/formats/base.py239CODE
LOWweblate/formats/auto.py85CODE
LOWweblate/formats/tests/test_formats.py2966CODE
LOWweblate/memory/tasks.py842CODE
LOWweblate/memory/models.py1044CODE
LOWweblate/auth/models.py1330CODE
LOWweblate/auth/models.py1435CODE
LOWweblate/auth/permissions.py335CODE
LOWweblate/auth/permissions.py469CODE
LOWweblate/auth/permissions.py1123CODE
LOWweblate/auth/permissions.py1168CODE
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.py176CODE
LOWweblate/checks/flags.py298CODE
LOWweblate/checks/format.py466CODE
LOWweblate/checks/format.py911CODE
LOWweblate/checks/markup.py195CODE
LOWweblate/checks/markup.py821CODE
LOWweblate/checks/markup.py462CODE
LOWweblate/checks/utils.py45CODE
LOWweblate/checks/utils.py91CODE
LOWweblate/checks/utils.py137CODE
LOWweblate/checks/chars.py615CODE
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.py219CODE
LOWweblate/addons/tasks.py56CODE
LOWweblate/addons/tasks.py123CODE
LOWweblate/addons/models.py538CODE
LOWweblate/addons/models.py682CODE
LOWweblate/addons/models.py144CODE
LOWweblate/addons/models.py404CODE
172 more matches not shown…
Cross-File Repetition38 hits · 190 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/deepl.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 Data191 hits · 155 pts
SeverityFileLineSnippetContext
LOWweblate/screenshots/forms.py219 "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.py271 "inactive-user", "inactive-user@example.org", "testpassword"CODE
LOWweblate/auth/tests/test_views.py278 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.py157 ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."],CODE
LOWweblate/checks/tests/test_chars_checks.py157 ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."],CODE
LOWweblate/checks/tests/test_chars_checks.py164 ["<unused singular (hash=…)>", "Lorem ipsum dolor sit amet."],CODE
LOWweblate/checks/tests/test_chars_checks.py164 ["<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.py729 "https://social.example/@example@example.org",CODE
LOWweblate/utils/tests/test_environment.py325 os.environ["REDIS_USER"] = "user@example.com"CODE
LOWweblate/accounts/tests/test_views.py317 email="addon-test@example.org",CODE
LOWweblate/accounts/tests/test_views.py744 "email": "weblate@example.org",CODE
LOWweblate/accounts/tests/test_views.py980 "email": "weblate@example.org",CODE
LOWweblate/accounts/tests/test_notifications.py217 "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
LOWweblate/accounts/tests/test_registration.py738 User.objects.filter(email="noreply-weblate@example.org").exists()CODE
LOWweblate/accounts/tests/test_registration.py1207 social = user.social_auth.get(uid="noreply-weblate@example.org")CODE
131 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.py1233 # Create the template under test with a single stringCOMMENT
MEDIUMweblate/formats/tests/test_formats.py3562 # Create a storage classCOMMENT
MEDIUMweblate/addons/gettext.py55 "# This file is distributed under the same license as the",CODE
MEDIUMweblate/addons/tests.py3236 """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file iSTRING
MEDIUMweblate/addons/tests.py3196 """# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file iSTRING
MEDIUMweblate/addons/tests.py3264 """# 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.py327 # Create a mapping of project IDs to slugsCOMMENT
MEDIUMweblate/accounts/tests/test_views.py216 # Creating a trialCOMMENT
MEDIUMweblate/vcs/tests/test_vcs.py3400 # Create a different branch nameCOMMENT
MEDIUMweblate/api/tests.py2500 # Create a non-superuser with project admin rightsCOMMENT
MEDIUMweblate/api/tests.py2504 # Create a project-scoped groupCOMMENT
MEDIUMweblate/api/tests.py13483 # Create a label in one projectCOMMENT
MEDIUMweblate/api/tests.py2730 # Create a project-scoped group via the API as superuserCOMMENT
MEDIUMweblate/api/tests.py13374 # Create a category to get the statistics fromCOMMENT
MEDIUMweblate/glossary/views.py76 # Create a set of existing term IDsCOMMENT
MEDIUMweblate/trans/backups.py602 # 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.py804 # 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.py68 # Create the suggestionCOMMENT
MEDIUMweblate/trans/models/component.py6006 # Create the fileCOMMENT
MEDIUMweblate/trans/views/edit.py815 # Create the suggestionCOMMENT
MEDIUMweblate/billing/tests.py1717 # 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/workflows/pull_requests.yaml5# 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 Boilerplate112 hits · 114 pts
SeverityFileLineSnippetContext
LOWweblate/screenshots/models.py150def update_alerts_on_screenshot_delete(sender, instance: Screenshot, **kwargs) -> None:CODE
LOWweblate/formats/ttkit.py932 def set_automatically_translated(self, value: bool) -> None:CODE
LOWweblate/formats/ttkit.py308 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py315 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py387 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py804 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py874 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py977 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py1026 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py1104 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py1197 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py1566 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py1583 def set_state(self, state) -> None:CODE
LOWweblate/formats/ttkit.py1670 def update_header(self, file_format_params: FileFormatParams, **kwargs) -> None:CODE
LOWweblate/formats/ttkit.py3116 def set_explanation(self, explanation: str) -> None:CODE
LOWweblate/formats/ttkit.py3125 def set_source_explanation(self, explanation: str) -> None:CODE
LOWweblate/formats/ttkit.py3290 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/ttkit.py1403 def set_target(self, target: str | list[str]) -> None:STRING
LOWweblate/formats/ttkit.py1441 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.py354 def set_target(self, target: str | list[str]) -> None:CODE
LOWweblate/formats/base.py358 def set_explanation(self, explanation: str) -> None:CODE
LOWweblate/formats/base.py361 def set_source_explanation(self, explanation: str) -> None:CODE
LOWweblate/formats/base.py364 def set_state(self, state) -> None:CODE
LOWweblate/formats/base.py368 def set_automatically_translated(self, value: bool) -> None:CODE
LOWweblate/formats/base.py629 def update_header(self, file_format_params: FileFormatParams, **kwargs) -> None:CODE
LOWweblate/memory/tasks.py284def set_memory_scope_backfill_completed() -> None:CODE
LOWweblate/memory/tasks.py210def set_scope_source_project_ids(memories: list[Memory]) -> None:CODE
LOWweblate/memory/tasks.py1004def update_memory_bulk(entries: list[MemoryUpdatePayload]) -> None:CODE
LOWweblate/checks/models.py146 def set_dismiss(self, *, state: bool = True, recurse: bool = True) -> None:CODE
LOWweblate/checks/flags.py430 def set_value(self, name: str, value: str) -> None:CODE
LOWweblate/checks/flags.py433 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.py953 def update_result(self, result: object) -> None:CODE
LOWweblate/addons/fedora_messaging.py855 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.py58def _set_opentelemetry_attribute(span: AttributeSpan, name: str, value: object) -> None:CODE
LOWweblate/utils/tasks.py89def update_translation_stats_parents(pk: int) -> None:CODE
LOWweblate/utils/tasks.py98def update_language_stats_parents(pk: int) -> None:CODE
LOWweblate/utils/tasks.py107def update_project_stats_link(pk: int) -> None:CODE
LOWweblate/utils/forms.py353 def _set_queryset(self, queryset) -> None:CODE
LOWweblate/utils/stats.py229 def set_data(self, data: StatDict) -> None:CODE
LOWweblate/utils/stats.py439 def update_stats(self, update_parents: bool = True) -> None:CODE
LOWweblate/utils/stats.py1179 def update_language_stats_parents(self) -> None:CODE
LOWweblate/utils/stats.py1191 def update_language_stats(self) -> None:CODE
LOWweblate/utils/tests/test_checks.py36 def set_cache(value) -> None:CODE
LOWweblate/accounts/models.py1362def set_lang_cookie(response, profile) -> None:CODE
LOWweblate/accounts/forms.py567 def set_label(self) -> None:CODE
LOWweblate/accounts/management/commands/importuserdata.py42 def update_languages(profile, userprofile) -> None:CODE
LOWweblate/vcs/git.py571 def set_committer(self, name, mail) -> None:CODE
LOWweblate/vcs/git.py1082 def update_remote(self) -> None:CODE
52 more matches not shown…
Excessive Try-Catch Wrapping99 hits · 102 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.py656 except Exception as exception:CODE
LOWweblate/formats/ttkit.py2133 except Exception as error:CODE
LOWweblate/formats/ttkit.py3298 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.py747 except Exception as error:CODE
LOWweblate/checks/flags.py421 except Exception as error:CODE
LOWweblate/addons/git.py305 except Exception:CODE
LOWweblate/addons/tasks.py215 except Exception as error:CODE
LOWweblate/addons/models.py613 except Exception as error:CODE
LOWweblate/addons/fedora_messaging.py229 except Exception as error:CODE
LOWweblate/addons/fedora_messaging.py379 except Exception:CODE
LOWweblate/addons/fedora_messaging.py426 except Exception:CODE
MEDIUMweblate/addons/forms.py1386def clean_css_selector(self):CODE
LOWweblate/addons/forms.py1389 except Exception as error:CODE
LOWweblate/addons/base.py804 except Exception:CODE
LOWweblate/addons/base.py825 except Exception:CODE
LOWweblate/utils/tracing.py114 except Exception:CODE
MEDIUMweblate/utils/tracing.py45def get_sentry_sdk():CODE
LOWweblate/utils/render.py113 except Exception as err:CODE
LOWweblate/utils/validators.py202 except Exception as exc:CODE
LOWweblate/utils/validators.py338 except Exception as error:CODE
LOWweblate/utils/apps.py117 except Exception as error:CODE
LOWweblate/utils/markdown.py163 except Exception:CODE
LOWweblate/utils/requests.py237 except Exception:CODE
LOWweblate/utils/requests.py251 except Exception:CODE
LOWweblate/utils/views.py535 except Exception:CODE
LOWweblate/utils/views.py698 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/models.py204 except Exception as error:CODE
LOWweblate/vcs/github.py122 except Exception:CODE
LOWweblate/vcs/base.py181 except Exception as error:CODE
LOWweblate/vcs/base.py609 except Exception as error:CODE
LOWweblate/vcs/base.py883 except Exception:CODE
LOWweblate/vcs/base.py896 except Exception as error:CODE
MEDIUMweblate/vcs/views.py134def _get_workspace(workspaces, workspace_id) -> Workspace:CODE
LOWweblate/vcs/views.py531 except Exception:CODE
LOWweblate/vcs/views.py619 except Exception:CODE
LOWweblate/vcs/views.py790 except Exception:CODE
LOWweblate/vcs/views.py804 except Exception:CODE
LOWweblate/vcs/views.py1216 except Exception:CODE
LOWweblate/wladmin/views.py285 except Exception as error:CODE
LOWweblate/wladmin/views.py409 except Exception:CODE
LOWweblate/wladmin/views.py484 except Exception as error:CODE
LOWweblate/api/views.py3230 except Exception as error:CODE
LOWweblate/trans/tasks.py208 except Exception:CODE
LOWweblate/trans/discovery.py455 except Exception: # pragma: no cover - defensive fallbackCODE
MEDIUMweblate/trans/forms.py2002def _post_clean(self) -> None:CODE
LOWweblate/trans/forms.py3768 except Exception as error:CODE
LOWweblate/trans/models/unit.py1161 except Exception as error:CODE
LOWweblate/trans/models/translation.py456 except Exception as error:CODE
LOWweblate/trans/models/translation.py528 except Exception as exc:CODE
39 more matches not shown…
Redundant / Tautological Comments45 hits · 70 pts
SeverityFileLineSnippetContext
LOWweblate/middleware.py256 # Check if project existsCOMMENT
LOWweblate/middleware.py270 # Check if component existsCOMMENT
LOWweblate/formats/ttkit.py1704 # Check if there is matching obsolete unitCOMMENT
LOWweblate/formats/ttkit.py2719 # 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.py1077 # Check if content matchesCOMMENT
LOWweblate/formats/tests/test_formats.py1175 # Check if content matchesCOMMENT
LOWweblate/formats/tests/test_formats.py1451 # Check if content matchesCOMMENT
LOWweblate/formats/tests/test_formats.py1504 # Check if content matchesCOMMENT
LOWweblate/formats/tests/test_formats.py3302 # Check if content matchesCOMMENT
LOWweblate/formats/tests/test_formats.py3425 # Check if content matchesCOMMENT
LOWweblate/auth/permissions.py581 # Check if adding is generally allowedCOMMENT
LOWweblate/auth/permissions.py606 # Check if removing is generally allowedCOMMENT
LOWweblate/auth/permissions.py625 # 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.py382 # Check if source is XMLCOMMENT
LOWweblate/checks/markup.py407 # 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.py628 # 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.py212 # Check if any queue got biggerCOMMENT
LOWweblate/accounts/pipeline.py446 # Verify if this mail is not used on other accountsCOMMENT
LOWweblate/vcs/git.py907 # Set branch to trackCOMMENT
LOWweblate/vcs/git.py1472 # Check if fork is used for this branch (default and matching branches use fork)COMMENT
LOWweblate/vcs/git.py1484 # Check if commits are in the fork (already pushed)COMMENT
LOWweblate/vcs/git.py2902 # Check if a fork already exists owned by the current user.COMMENT
LOWweblate/trans/forms.py2839 # Check if category is from this projectCOMMENT
LOWweblate/trans/tests/test_hooks.py2592 # Set full_name to empty string (too short, will skip repo construction)COMMENT
LOWweblate/trans/models/unit.py1355 # Check if we actually need to change anythingCOMMENT
LOWweblate/trans/models/unit.py1522 # Check if we have expected number of themCOMMENT
LOWweblate/trans/models/translation.py721 # Check if we're not already up to dateCOMMENT
LOWweblate/trans/models/translation.py1469 # Check if context has changed while adding to storageCOMMENT
LOWweblate/trans/models/translation.py2008 # Iterate over list to copy set that will be changedCOMMENT
LOWweblate/trans/models/component.py5235 # Check if we should renameCOMMENT
LOWweblate/trans/models/component.py5878 # Check if template can be parsedCOMMENT
LOWweblate/trans/models/component.py5944 # Check if resulting language is not presentCOMMENT
LOWweblate/trans/models/component.py5964 # Check if language code is validCOMMENT
LOWweblate/machinery/base.py1223 # Check if there is a glossaryCOMMENT
LOWscripts/list-translated-languages.py57 # Print resultsCOMMENT
Over-Commented Block55 hits · 54 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.py381REGISTRATION_ALLOW_DISPOSABLE_EMAILS = FalseCOMMENT
LOWweblate/settings_example.py721ENABLE_HOOKS = TrueCOMMENT
LOWweblate/settings_example.py741# "weblate.checks.chars.BeginSpaceCheck",COMMENT
LOWweblate/settings_example.py761# "weblate.checks.format.PerlBraceFormatCheck",COMMENT
LOWweblate/settings_example.py781# "weblate.checks.consistency.PluralsCheck",COMMENT
LOWweblate/settings_example.py801# "weblate.checks.placeholders.PlaceholderCheck",COMMENT
LOWweblate/settings_example.py821# AUTOFIX_LIST = (COMMENT
LOWweblate/settings_example.py841# "weblate.addons.gettext.GettextAuthorComments",COMMENT
LOWweblate/settings_example.py861# "weblate.addons.resx.ResxUpdateAddon",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 # Unfortunately, we must accept this structural sharing for performanceCOMMENT
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/models/translation.py1161 user, author_name, timestamp, skip_push=True, signals=FalseCOMMENT
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.py63CODE
LOWweblate/auth/forms.py163CODE
LOWweblate/addons/generate.py116CODE
LOWweblate/vcs/base.py502CODE
LOWweblate/api/tests.py158CODE
LOWweblate/api/tests.py8758CODE
LOWweblate/trans/tasks.py144CODE
LOWweblate/trans/tasks.py957CODE
LOWweblate/trans/translator_analysis.py84CODE
LOWweblate/trans/templatetags/translations.py543CODE
LOWweblate/trans/templatetags/translations.py612CODE
LOWweblate/trans/templatetags/translations.py1705CODE
LOWweblate/trans/tests/factories.py129CODE
LOWweblate/trans/models/pending.py440CODE
LOWweblate/trans/models/unit.py705CODE
LOWweblate/trans/models/translation.py2374CODE
LOWweblate/trans/models/translation.py2405CODE
LOWweblate/trans/models/translation.py2436CODE
LOWweblate/trans/models/component.py3591CODE
LOWweblate/trans/models/component.py4164CODE
LOWweblate/trans/models/component.py4232CODE
LOWweblate/trans/models/component.py4288CODE
LOWweblate/fonts/utils.py142CODE
LOWweblate/fonts/utils.py279CODE
AI Slop Vocabulary6 hits · 16 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml447# 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.py243 # Use MD5 for filtering to utilize MD5 indexCOMMENT
MEDIUMweblate/checks/consistency.py222 # Lower has no effect here, but we want to utilize indexCOMMENT
MEDIUMweblate/lang/models.py1035 # Use own manager to utilize caching of EnglishCOMMENT
LOWweblate/vcs/git.py2146 # If the fork was deleted, we just create another forkCOMMENT
Slop Phrases3 hits · 6 pts
SeverityFileLineSnippetContext
LOWweblate/settings_docker.py211 # 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.py166 # Don't forget to use absolute paths, not relative paths.COMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMAGENTS.md61## Weblate-specific guardrailsCOMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWweblate/trans/tests/test_remote.py1034 # TODO: add tests for the monolingual and monolingual with intermediate.COMMENT