Repository Analysis

rafalp/Misago

Misago is fully featured modern forum application that is fast, scalable and responsive.

31.2 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of rafalp/Misago, a Python project with 2,734 GitHub stars. SynthScan v2.0 examined 407,310 lines of code across 3394 source files, recording 11677 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 31.2 places this repository in the Strong 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).

31.2
Adjusted Score
31.2
Raw Score
100%
Time Factor
2026-07-13
Last Push
2.7K
Stars
Python
Language
407.3K
Lines of Code
3.4K
Files
11.7K
Pattern Hits
2026-07-14
Scan Date
0.08
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

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

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 80HIGH 206MEDIUM 13LOW 11378

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 11677 distinct pattern matches across 16 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 Identifiers9240 hits · 8948 pts
SeverityFileLineSnippetContext
LOWgenerate_dev_docs.py190def generate_plugin_manifest_reference():CODE
LOWgenerate_dev_docs.py223def generate_hooks_reference_index(hooks_data: dict[str, dict[str, ast.Module]]):CODE
LOWgenerate_dev_docs.py491def generate_outlets_reference():CODE
LOWgenerate_dev_docs.py513def get_callable_class_signature(class_def: ast.ClassDef) -> tuple[str, str | None]:CODE
LOWfrontend/src/formValidators.js59function setFormControlValidationState(element, input, errors) {CODE
LOWfrontend/src/formValidators.js67function setFormControlErrorValidationState(element, input, errors) {CODE
LOWfrontend/src/formValidators.js82function setFormControlSuccessValidationState(element) {CODE
LOWfrontend/src/formValidators.js89function clearFormControlValidationState(element) {CODE
LOWfrontend/src/formValidators.js96function clearFormControlValidationMessages(element) {CODE
LOWfrontend/src/PollChoicesControl.js3function activatePollChoicesControl(element) {CODE
LOWfrontend/src/template/condition/eval.js5function evaluateTemplateCondition(condition, context) {CODE
LOWfrontend/src/template/condition/eval.js31function evaluateDeepContextVariable(path, context) {CODE
LOWfrontend/src/template/condition/eval.js42function evaluateConditionExpression(expression, context) {CODE
LOWfrontend/src/template/condition/tokenizer.js4function tokenizeTemplateCondition(condition) {CODE
LOWfrontend/src/template/condition/parser.js110function parseNestedTemplateCondition(expressions) {CODE
LOWfrontend/src/template/condition/parser.js116function insertBranchingExpression(expressions) {CODE
LOWfrontend/src/template/condition/parser.js135function insertConditionalExpression(expressions) {CODE
LOW…nd/src/components/Navbar/NavbarNotificationsToggle.jsx4export default function NavbarNotificationsToggle({CODE
LOW…/src/components/Navbar/NavbarNotificationsDropdown.jsx6export default function NavbarNotificationsDropdown({CODE
LOW…/components/MarkupEditor/MarkupFormattingHelpModal.jsx4export default function MarkupFormattingHelpModal() {CODE
LOW…ents/NotificationsOverlay/NotificationsOverlayBody.jsx39function NotificationsOverlayBodyPill({ active, children, onClick }) {CODE
LOW…nents/NotificationsList/NotificationsListItemActor.jsx4export default function NotificationsListItemActor({ notification }) {CODE
LOW…nts/NotificationsList/NotificationsListItemMessage.jsx4export default function NotificationsListItemMessage({ notification }) {CODE
LOW…/NotificationsList/NotificationsListItemReadStatus.jsx3export default function NotificationsListItemReadStatus({ notification }) {CODE
LOW…s/NotificationsList/NotificationsListItemTimestamp.jsx4export default function NotificationsListItemTimestamp({ notification }) {CODE
LOW…ts/NotificationsDropdown/NotificationsDropdownBody.jsx5export default function NotificationsDropdownBody({CODE
LOW…ts/NotificationsDropdown/NotificationsDropdownBody.jsx37function NotificationsDropdownBodyPill({ active, children, onClick }) {CODE
LOW…c/components/Notifications/NotificationsPagination.jsx29function NotificationsPaginationLink({ disabled, children, url }) {CODE
LOWfrontend/src/reducers/threads.js68export function getThreadModerationOptions(thread_acl) {CODE
LOW…dev_site_fixture/management/commands/loaddevfixture.py629 def create_thread_with_specified_length(thread_length: int, title: str):CODE
LOW…shots-plugin/misago_post_snapshots_plugin/snapshots.py17def restore_post_from_snapshot(post: Post, snapshot: PostSnapshot):CODE
LOWdev-docs/notifications.md102def get_verb_notification_message(notification: Notification) -> str:CODE
LOWdev-docs/notifications.md120def get_custom_notification_message(notification: Notification) -> str:CODE
LOWdev-docs/notifications.md125def get_custom_notification_message(notification: Notification) -> str:CODE
LOWdev-docs/notifications.md138def get_verb_notification_redirect_url(request: HttpRequest, notification: Notification) -> str:CODE
LOWdev-docs/notifications.md161def get_custom_notification_redirect_url(CODE
LOWdev-docs/notifications.md174def get_custom_notification_redirect_url(CODE
LOWdev-docs/translation-strings-contextual-markers.md73def check_some_post_permission(user_permissions, post):CODE
LOW…plugins/hooks/check-see-thread-post-permission-hook.md18def custom_check_see_thread_post_permission_filter(CODE
LOW…plugins/hooks/check-see-thread-post-permission-hook.md63def check_see_thread_post_permission_action(CODE
LOW…plugins/hooks/check-see-thread-post-permission-hook.md110def check_user_can_see_thread_post(CODE
LOW…s/plugins/hooks/check-locked-thread-permission-hook.md18def custom_check_locked_thread_permission_filter(CODE
LOW…s/plugins/hooks/check-locked-thread-permission-hook.md51def check_locked_thread_permission_action(CODE
LOW…s/plugins/hooks/check-locked-thread-permission-hook.md82def check_user_can_post_in_locked_thread(CODE
LOW…/hooks/get-thread-post-edits-view-context-data-hook.md18def custom_get_thread_post_edits_view_context_data_filter(CODE
LOW…/hooks/get-thread-post-edits-view-context-data-hook.md62def get_thread_post_edits_view_context_data_action(request: HttpRequest, post: Post, page: Page) -> dict:CODE
LOW…/hooks/get-thread-post-edits-view-context-data-hook.md103def set_thread_post_edits_view_editor_ip_address(CODE
LOW…/hooks/get-category-threads-moderation-actions-hook.md18def custom_get_category_threads_moderation_actions_filter(CODE
LOW…/hooks/get-category-threads-moderation-actions-hook.md62def get_category_threads_moderation_actions_action(CODE
LOW…/hooks/get-category-threads-moderation-actions-hook.md141def include_custom_moderation_action(CODE
LOW…ocs/plugins/hooks/remove-private-thread-member-hook.md34def record_private_thread_remove_member_actor_ip(CODE
LOWdev-docs/plugins/hooks/create-group-hook.md22def custom_create_group_filter(action: CreateGroupHookAction, **kwargs) -> Group:CODE
LOWdev-docs/plugins/hooks/hide-thread-update-hook.md18def custom_hide_thread_update_filter(CODE
LOWdev-docs/plugins/hooks/hide-thread-update-hook.md56def hide_thread_update_action(CODE
LOWdev-docs/plugins/hooks/hide-thread-update-hook.md93def save_client_ip_on_thread_update_hide(CODE
LOWdev-docs/plugins/hooks/unpin-thread-hook.md18def custom_unpin_thread_filter(CODE
LOWdev-docs/plugins/hooks/unpin-thread-hook.md108def register_user_that_unpinned_thread(CODE
LOW…hooks/check-see-private-thread-post-permission-hook.md18def custom_check_see_private_thread_post_permission_filter(CODE
LOW…hooks/check-see-private-thread-post-permission-hook.md57def check_see_private_thread_post_permission_action(CODE
LOW…hooks/check-see-private-thread-post-permission-hook.md96def check_user_can_see_thread(CODE
9180 more matches not shown…
Fake / Example Data943 hits · 846 pts
SeverityFileLineSnippetContext
LOWfrontend/highlight/highlight.js697;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","codCODE
LOWfrontend/highlight/highlight.js920;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","codCODE
LOWfrontend/highlight/highlight.js971;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","codCODE
LOWfrontend/src/utils/test-utils.js55 '<p>Lorem ipsum dolor met sit amet elit, si vis pacem para bellum.</p>\n<p>To help see <a href="http://wololo.coCODE
LOW…/components/MarkupEditor/MarkupFormattingHelpModal.jsx259 markup={"- Lorem ipsum\n- Dolor met\n- Vulputate lectus"}CODE
LOW…/components/MarkupEditor/MarkupFormattingHelpModal.jsx262 <li>Lorem ipsum</li>CODE
LOW…/components/MarkupEditor/MarkupFormattingHelpModal.jsx273 markup={"1. Lorem ipsum\n2. Dolor met\n3. Vulputate lectus"}CODE
LOW…/components/MarkupEditor/MarkupFormattingHelpModal.jsx276 <li>Lorem ipsum</li>CODE
LOW…/components/MarkupEditor/MarkupFormattingHelpModal.jsx432 markup={"Lorem ipsum\n- - -\nDolor met"}CODE
LOW…/components/MarkupEditor/MarkupFormattingHelpModal.jsx435 <p>Lorem ipsum</p>CODE
LOW…/components/MarkupEditor/MarkupFormattingHelpModal.jsx446 markup={"Lorem ipsum\n[hr]\nDolor met"}CODE
LOW…/components/MarkupEditor/MarkupFormattingHelpModal.jsx449 <p>Lorem ipsum</p>CODE
LOW…dev_site_fixture/management/commands/loaddevfixture.py183 "user@example.com",CODE
LOWdev-docs/plugins/hooks/action-hook.md188> Lorem **ipsum** dolor sit amet elit.CODE
LOWdev-docs/plugins/hooks/filter-hook.md215> Lorem **ipsum** dolor sit amet elit.CODE
LOWmisago/conftest.py116 return create_test_user("User", "user@example.com", user_password)CODE
LOWmisago/core/tests/test_utils.py94 ("Lorem ipsum.", "<p>Lorem ipsum.</p>"),CODE
LOWmisago/core/tests/test_utils.py97 ("Lorem ipsum.\nDolor met.", "<p>Lorem ipsum.<br>Dolor met.</p>"),CODE
LOWmisago/core/tests/test_utils.py98 ("Lorem ipsum.\n\nDolor met.", "<p>Lorem ipsum.</p>\n\n<p>Dolor met.</p>"),CODE
LOWmisago/core/tests/test_utils.py275 message = get_exception_message(PermissionDenied("Lorem Ipsum"))CODE
LOWmisago/core/tests/test_utils.py276 self.assertEqual(message, "Lorem Ipsum")CODE
LOWmisago/core/tests/test_utils.py286 message = get_exception_message(PermissionDenied("Lorem Ipsum"), "Default")CODE
LOWmisago/core/tests/test_utils.py287 self.assertEqual(message, "Lorem Ipsum")CODE
LOWmisago/core/tests/test_utils.py295 message = get_exception_message(default_message="Lorem Ipsum")CODE
LOWmisago/core/tests/test_utils.py296 self.assertEqual(message, "Lorem Ipsum")CODE
LOWmisago/core/tests/test_mail.py14 user = create_test_user("User", "user@example.com")CODE
LOWmisago/core/tests/test_mail.py19 user = create_test_user("User", "user@example.com")CODE
LOWmisago/core/tests/test_mail.py28 user = create_test_user("User", "user@example.com")CODE
LOWmisago/core/tests/test_templatetags.py151 tpl.render(Context({"item": "Lorem Ipsum"})).strip(), "Lorem Ipsum"STRING
LOWmisago/core/tests/test_templatetags.py165 Context({"item": "Lorem Ipsum", "parent": "Some Thread"})STRING
LOWmisago/core/tests/test_templatetags.py167 "Lorem Ipsum | Some Thread",STRING
LOWmisago/core/tests/test_templatetags.py180 tpl.render(Context({"item": "Lorem Ipsum"})).strip(),STRING
LOWmisago/core/tests/test_templatetags.py181 "Lorem Ipsum (page: 3)",STRING
LOWmisago/core/tests/test_templatetags.py195 Context({"item": "Lorem Ipsum", "parent": "Some Thread"})STRING
LOWmisago/core/tests/test_templatetags.py197 "Lorem Ipsum (page: 3) | Some Thread",STRING
LOWmisago/test/files/textfile.txt1Lorem ipsum dolor met sit amet elit.CODE
LOWmisago/plugins/tests/test_plugin_metadata_creation.py91 author="Lorem Ipsum",CODE
LOWmisago/plugins/tests/test_plugin_metadata_creation.py116 assert metadata.author == "Lorem Ipsum"CODE
LOW…/test_private_thread_detail_view_moderation_actions.py129 "moderation-hidden_reason": "Lorem ipsum",CODE
LOW…/test_private_thread_detail_view_moderation_actions.py145 assert user_private_thread.hidden_reason == "Lorem ipsum"CODE
LOW…/test_private_thread_detail_view_moderation_actions.py477 "moderation-hidden_reason": "Lorem ipsum",CODE
LOW…/test_private_thread_detail_view_moderation_actions.py500 assert reply.hidden_reason == "Lorem ipsum"CODE
LOW…/test_private_thread_detail_view_moderation_actions.py1362 "moderation-hidden_reason": "Lorem ipsum",CODE
LOW…/test_private_thread_detail_view_moderation_actions.py1385 assert reply.hidden_reason == "Lorem ipsum"CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py687 hidden_reason="Lorem ipsum offtopic",CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py696 assert_contains(response, "Lorem ipsum offtopic")CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py729 hidden_reason="Lorem ipsum offtopic",CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py737 assert_contains(response, "Lorem ipsum offtopic")CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py768 hidden_reason="Lorem ipsum offtopic",CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py775 assert_contains(response, "Lorem ipsum offtopic")CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py804 hidden_reason="Lorem ipsum offtopic",CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py813 assert_contains(response, "Lorem ipsum offtopic")CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py844 hidden_reason="Lorem ipsum offtopic",CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py852 assert_contains(response, "Lorem ipsum offtopic")CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py881 hidden_reason="Lorem ipsum offtopic",CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py888 assert_contains(response, "Lorem ipsum offtopic")CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py398 hidden_reason="Lorem ipsum offtopic",CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py413 assert_contains(response, "Lorem ipsum offtopic")CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py450 hidden_reason="Lorem ipsum offtopic",CODE
LOW…threads/tests/test_private_thread_detail_view_posts.py464 assert_contains(response, "Lorem ipsum offtopic")CODE
883 more matches not shown…
Hallucination Indicators80 hits · 808 pts
SeverityFileLineSnippetContext
CRITICALfrontend/src/components/change-avatar/upload.js40 this.props.options.upload.allowed_mime_types.indexOf(image.type) === -1CODE
CRITICALfrontend/src/components/change-avatar/upload.js47 this.props.options.upload.allowed_extensions.map(function (extension) {CODE
CRITICAL…/hooks/get-category-threads-moderation-actions-hook.md101from django.core.exceptions import ValidationErrorCODE
CRITICAL…ks/get-private-thread-posts-moderation-actions-hook.md101from django.core.exceptions import ValidationErrorCODE
CRITICALdev-docs/plugins/hooks/validate-thread-solution-hook.md77from django.core.exceptions import ValidationErrorCODE
CRITICAL…cs/plugins/hooks/get-thread-moderation-actions-hook.md101from django.core.exceptions import ValidationErrorCODE
CRITICAL…ugins/hooks/validate-new-private-thread-member-hook.md102from django.core.exceptions import ValidationErrorCODE
CRITICALdev-docs/plugins/hooks/validate-posted-contents-hook.md46from django.core.exceptions import ValidationErrorCODE
CRITICALdev-docs/plugins/hooks/validate-poll-question-hook.md102from django.core.exceptions import ValidationErrorCODE
CRITICAL…lugins/hooks/validate-new-private-thread-owner-hook.md102from django.core.exceptions import ValidationErrorCODE
CRITICAL…gins/hooks/get-thread-posts-moderation-actions-hook.md101from django.core.exceptions import ValidationErrorCODE
CRITICALdev-docs/plugins/hooks/validate-poll-choices-hook.md114from django.core.exceptions import ValidationErrorCODE
CRITICAL…ugins/hooks/get-thread-post-moderation-actions-hook.md101from django.core.exceptions import ValidationErrorCODE
CRITICAL…s/plugins/hooks/get-threads-moderation-actions-hook.md88from django.core.exceptions import ValidationErrorCODE
CRITICALdev-docs/plugins/hooks/validate-thread-title-hook.md102from django.core.exceptions import ValidationErrorCODE
CRITICAL…ns/hooks/get-private-thread-moderation-actions-hook.md101from django.core.exceptions import ValidationErrorCODE
CRITICAL…oks/get-private-thread-post-moderation-actions-hook.md101from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/forms/tests/test_dict_field.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/core/validators.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/core/tests/test_validators.py2from django.core.exceptions import ValidationErrorCODE
CRITICAL…hreads/tests/test_validate_new_private_thread_owner.py2from django.core.exceptions import ValidationErrorCODE
CRITICAL…reads/tests/test_validate_new_private_thread_member.py2from django.core.exceptions import ValidationErrorCODE
CRITICAL…vatethreads/hooks/validate_new_private_thread_owner.py99 from django.core.exceptions import ValidationErrorSTRING
CRITICAL…atethreads/hooks/validate_new_private_thread_member.py98 from django.core.exceptions import ValidationErrorSTRING
CRITICALmisago/admin/views/generic/ordering.py1from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/solutions/validators.py1from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/solutions/tests/test_validators.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/solutions/hooks/validate_thread_solution.py80 from django.core.exceptions import ValidationErrorSTRING
CRITICALmisago/polls/validators.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/polls/tests/test_validate_poll_question.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/polls/tests/test_validate_poll_choices.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/polls/tests/test_validate_poll_vote.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/polls/hooks/validate_poll_question.py96 from django.core.exceptions import ValidationErrorSTRING
CRITICALmisago/polls/hooks/validate_poll_choices.py107 from django.core.exceptions import ValidationErrorSTRING
CRITICALmisago/threads/tests/conftest.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/threads/views/list.py7from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/static/misago/js/vendor.js2(self.webpackChunkmisago=self.webpackChunkmisago||[]).push([[736],{14316:function(e,t,n){var r,o;r=[n(19755)],o=functionCODE
CRITICALmisago/static/misago/js/misago.js1(()=>{var e,t,n,a={60642:(e,t,n)=>{"use strict";n.d(t,{b:()=>f,D:()=>v});var a=n(15861),r=n(15671),o=n(43144),i=n(97326)CODE
CRITICALmisago/users/validators.py7from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/users/captcha.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/users/forms/auth.py4from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/users/forms/register.py4from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/users/tests/test_validators.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/users/tests/test_avatars.py4from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/users/management/commands/createsuperuser.py11from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/users/profilefields/__init__.py4from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/users/api/userendpoints/avatar.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/users/avatars/uploaded.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/attachments/upload.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/attachments/validators.py4from django.core.exceptions import ValidationErrorCODE
CRITICAL…o/attachments/tests/test_validate_attachments_limit.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/attachments/tests/test_validate_uploaded_file.py2from django.core.exceptions import ValidationErrorCODE
CRITICAL…go/attachments/tests/test_handle_attachments_upload.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/attachments/tests/test_store_uploaded_file.py4from django.core.exceptions import ValidationErrorCODE
CRITICAL…chments/tests/test_validate_uploaded_file_extension.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/posting/validators.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/posting/floodcontrol.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/posting/formsets/formset.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/posting/tests/conftest.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/posting/tests/test_validate_post.py2from django.core.exceptions import ValidationErrorCODE
20 more matches not shown…
Cross-File Repetition157 hits · 785 pts
SeverityFileLineSnippetContext
HIGH…ethreads/hooks/get_private_thread_list_context_data.py0misago function used to get the template context data for the category threads page. # arguments ## `request: httprequesSTRING
HIGHmisago/threads/hooks/get_threads_page_context_data.py0misago function used to get the template context data for the category threads page. # arguments ## `request: httprequesSTRING
HIGH…hreads/hooks/get_category_threads_page_context_data.py0misago function used to get the template context data for the category threads page. # arguments ## `request: httprequesSTRING
HIGH…rivatethreads/hooks/get_private_thread_list_threads.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: getcategorythreadspagethSTRING
HIGHmisago/threads/hooks/get_threads_page_threads.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: getcategorythreadspagethSTRING
HIGH…ago/threads/hooks/get_category_threads_page_threads.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: getcategorythreadspagethSTRING
HIGH…rivatethreads/hooks/get_private_thread_list_threads.py0this hook wraps the standard function that misago uses to get complete threads data for the category threads page. # exaSTRING
HIGHmisago/threads/hooks/get_threads_page_threads.py0this hook wraps the standard function that misago uses to get complete threads data for the category threads page. # exaSTRING
HIGH…ago/threads/hooks/get_category_threads_page_threads.py0this hook wraps the standard function that misago uses to get complete threads data for the category threads page. # exaSTRING
HIGH…rivatethreads/hooks/get_private_thread_list_filters.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: getcategorythreadspagefiSTRING
HIGHmisago/threads/hooks/get_threads_page_filters.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: getcategorythreadspagefiSTRING
HIGH…ago/threads/hooks/get_category_threads_page_filters.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: getcategorythreadspagefiSTRING
HIGHmisago/solutions/hooks/clear_thread_solution.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: synchronizecategoryhookaSTRING
HIGHmisago/solutions/hooks/select_thread_solution.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: synchronizecategoryhookaSTRING
HIGHmisago/solutions/hooks/unlock_thread_solution.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: synchronizecategoryhookaSTRING
HIGHmisago/solutions/hooks/lock_thread_solution.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: synchronizecategoryhookaSTRING
HIGHmisago/threads/hooks/synchronize_thread.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: synchronizecategoryhookaSTRING
HIGHmisago/categories/hooks/synchronize_category.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: synchronizecategoryhookaSTRING
HIGHmisago/permissions/hooks/get_threads_category_query.py0misago function used to get the name of the predefined database `where` clause (represented as a `q` object instance) toSTRING
HIGH…permissions/hooks/get_threads_pinned_category_query.py0misago function used to get the name of the predefined database `where` clause (represented as a `q` object instance) toSTRING
HIGHmisago/permissions/hooks/get_category_threads_query.py0misago function used to get the name of the predefined database `where` clause (represented as a `q` object instance) toSTRING
HIGHmisago/permissions/hooks/get_threads_category_query.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: getcategorythreadsqueryhSTRING
HIGH…permissions/hooks/get_threads_pinned_category_query.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: getcategorythreadsqueryhSTRING
HIGHmisago/permissions/hooks/get_category_threads_query.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: getcategorythreadsqueryhSTRING
HIGH…ermissions/hooks/check_restore_post_edit_permission.py0misago function used to check if a user has permission to hide a post edit. raises django's `permissiondenied` if they dSTRING
HIGH…permissions/hooks/check_unhide_post_edit_permission.py0misago function used to check if a user has permission to hide a post edit. raises django's `permissiondenied` if they dSTRING
HIGH…permissions/hooks/check_delete_post_edit_permission.py0misago function used to check if a user has permission to hide a post edit. raises django's `permissiondenied` if they dSTRING
HIGH…o/permissions/hooks/check_hide_post_edit_permission.py0misago function used to check if a user has permission to hide a post edit. raises django's `permissiondenied` if they dSTRING
HIGH…ermissions/hooks/check_restore_post_edit_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…ssions/hooks/check_clear_thread_solution_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…sago/permissions/hooks/check_access_post_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…s/hooks/check_add_private_thread_members_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…sions/hooks/check_select_thread_solution_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…issions/hooks/check_reply_private_thread_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…permissions/hooks/check_unhide_post_edit_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…ssions/hooks/check_see_post_edit_history_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…ssions/hooks/check_locked_private_thread_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…sago/permissions/hooks/check_edit_thread_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…sago/permissions/hooks/check_unlike_post_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGHmisago/permissions/hooks/check_see_thread_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…permissions/hooks/check_edit_thread_poll_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…permissions/hooks/check_delete_post_edit_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…o/permissions/hooks/check_hide_post_edit_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…ago/permissions/hooks/check_start_thread_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGHmisago/permissions/hooks/check_start_poll_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGHmisago/permissions/hooks/check_like_post_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…/permissions/hooks/check_access_category_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…missions/hooks/check_vote_in_thread_poll_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…sions/hooks/check_unlock_thread_solution_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…missions/hooks/check_edit_private_thread_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…permissions/hooks/check_edit_thread_post_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…go/permissions/hooks/check_access_thread_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…ago/permissions/hooks/check_reply_thread_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…o/permissions/hooks/check_see_post_likes_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…rmissions/hooks/check_delete_thread_poll_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…ermissions/hooks/check_close_thread_poll_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…go/permissions/hooks/check_locked_thread_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…/permissions/hooks/check_see_thread_post_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…ons/hooks/check_edit_private_thread_post_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…ermissions/hooks/check_start_thread_poll_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
97 more matches not shown…
Unused Imports727 hits · 673 pts
SeverityFileLineSnippetContext
LOWmanage.py15CODE
LOW…dev_site_fixture/management/commands/loaddevfixture.py19CODE
LOW…apshots_plugin/management/commands/snapshotallposts.py1CODE
LOW…s_plugin/management/commands/deleteallpostsnapshots.py1CODE
LOW…napshots_plugin/management/commands/restoreallposts.py1CODE
LOW…nifest-plugin/invalid_manifest_plugin/misago_plugin.py1CODE
LOWplugins/misago-dev-warning/misago_dev_warning/apps.py1CODE
LOWplugins/misago-dev-warning/misago_dev_warning/apps.py4CODE
LOWdevproject/__init__.py1CODE
LOWdevproject/settings.py17CODE
LOWdevproject/test_settings.py1CODE
LOWmisago/conftest.py26CODE
LOWmisago/conftest.py34CODE
LOWmisago/conftest.py35CODE
LOWmisago/conftest.py36CODE
LOWmisago/conftest.py37CODE
LOWmisago/conftest.py38CODE
LOWmisago/conftest.py39CODE
LOWmisago/conftest.py40CODE
LOWmisago/conftest.py42CODE
LOWmisago/__init__.py1CODE
LOWmisago/__init__.py1CODE
LOWmisago/middleware/privatethreads.py12CODE
LOWmisago/forms/formset.py1CODE
LOWmisago/forms/tests/test_list_field.py3CODE
LOWmisago/core/exceptions.py2CODE
LOWmisago/core/testproject/urlswitherrorhandlers.py1CODE
LOWmisago/core/tests/test_utils.py5CODE
LOWmisago/formats/daterelative.py2CODE
LOWmisago/readtracker/readtime.py9CODE
LOWmisago/readtracker/apps.py10CODE
LOWmisago/readtracker/tracker.py14CODE
LOWmisago/test/__init__.py1CODE
LOWmisago/test/__init__.py1CODE
LOWmisago/test/__init__.py1CODE
LOWmisago/test/__init__.py1CODE
LOWmisago/test/__init__.py1CODE
LOWmisago/test/__init__.py1CODE
LOWmisago/test/__init__.py1CODE
LOWmisago/test/__init__.py1CODE
LOWmisago/test/__init__.py11CODE
LOWmisago/test/__init__.py12CODE
LOWmisago/test/__init__.py13CODE
LOWmisago/test/__init__.py14CODE
LOWmisago/test/__init__.py14CODE
LOWmisago/test/__init__.py14CODE
LOWmisago/test/__init__.py14CODE
LOWmisago/test/__init__.py20CODE
LOWmisago/apiv2/pagination/__init__.py1CODE
LOWmisago/apiv2/pagination/__init__.py1CODE
LOWmisago/apiv2/pagination/__init__.py1CODE
LOWmisago/likes/postfeed.py18CODE
LOWmisago/likes/like.py13CODE
LOWmisago/likes/tests/test_synchronizepostlikes.py3CODE
LOW…sago/likes/management/commands/synchronizepostlikes.py3CODE
LOWmisago/likes/hooks/like_post.py10CODE
LOWmisago/likes/hooks/remove_post_like.py1CODE
LOWmisago/likes/hooks/remove_post_like.py7CODE
LOWmisago/likes/hooks/remove_post_like.py10CODE
LOWmisago/likes/hooks/__init__.py1CODE
667 more matches not shown…
Cross-Language Confusion49 hits · 275 pts
SeverityFileLineSnippetContext
HIGHmisago/core/templatetags/misago_withcontext.py33 with context.push(**extra_context):CODE
HIGHmisago/plugins/outlets.py99 with context.push(**new_context):CODE
HIGHmisago/parser/plaintext.py127 state.push(f"{info}, {syntax}:\n{content}", hardbreak=True)CODE
HIGHmisago/parser/plaintext.py129 state.push(f"{info or syntax}:\n{content}", hardbreak=True)CODE
HIGHmisago/parser/plaintext.py131 state.push(content, hardbreak=True)CODE
HIGHmisago/parser/plaintext.py377 state.push(token.attrs["src"])CODE
HIGHmisago/parser/plaintext.py383 state.push(f" ({alt}, {title})")CODE
HIGHmisago/parser/plaintext.py385 state.push(f" ({alt})")CODE
HIGHmisago/parser/plaintext.py410 state.push(state.renderer.render(tokens[1:-1]))CODE
HIGHmisago/parser/plaintext.py420 state.push("\n")CODE
HIGHmisago/parser/plaintext.py430 state.push(token.content)CODE
HIGHmisago/parser/plaintext.py111 state.push(state.renderer.render(tokens[1:-1]), hardbreak=True)CODE
HIGHmisago/parser/plaintext.py160 state.push(prefix + state.renderer.render(tokens[1:-1]), hardbreak=True)CODE
HIGHmisago/parser/plaintext.py179 state.push(prefix + state.renderer.render(tokens[1:-1]), hardbreak=True)CODE
HIGHmisago/parser/plaintext.py198 state.push(content)CODE
HIGHmisago/parser/plaintext.py216 state.push(content)CODE
HIGHmisago/parser/plaintext.py302 state.push("\n".join(table_rows), hardbreak=True)CODE
HIGHmisago/parser/plaintext.py313 state.push(name, hardbreak=True)CODE
HIGHmisago/parser/plaintext.py326 state.push(state.renderer.render(tokens[1:-1]), hardbreak=True)CODE
HIGHmisago/parser/plaintext.py337 state.push(state.renderer.render(token.children))CODE
HIGHmisago/parser/plaintext.py347 state.push(token.content)CODE
HIGHmisago/parser/plaintext.py362 state.push(url)CODE
HIGHmisago/parser/plaintext.py366 state.push(f" ({content})")CODE
HIGHmisago/parser/plaintext.py396 state.push(token.attrs["href"])CODE
HIGHmisago/parser/bbcode.py79 token = state.push("paragraph_open", "p", 1)CODE
HIGHmisago/parser/bbcode.py82 token = state.push("inline", "", 0)CODE
HIGHmisago/parser/bbcode.py87 token = state.push("paragraph_close", "p", -1)CODE
HIGHmisago/parser/bbcode.py385 token = state.push(f"{self.name}_open", self.element, 1)CODE
HIGHmisago/parser/bbcode.py399 token = state.push(f"{self.name}_close", self.element, -1)CODE
HIGHmisago/parser/bbcode.py406 token = state.push(self.name, self.element, 0)CODE
HIGHmisago/parser/plugins/hrbbcode.py39 token = state.push("hr_bbcode", "hr", 0)CODE
HIGHmisago/parser/plugins/fence.py127 token = state.push("fence", "code", 0)CODE
HIGHmisago/parser/plugins/attachment.py8 md.inline.ruler.push("attachment", attachment_rule)CODE
HIGHmisago/parser/plugins/attachment.py37 token = state.push("attachment", "misago-attachment", 0)CODE
HIGHmisago/parser/plugins/urlbbcode.py81 token = state.push("link_open", "a", 1)CODE
HIGHmisago/parser/plugins/urlbbcode.py95 token = state.push("text", "", 0)CODE
HIGHmisago/parser/plugins/urlbbcode.py98 token = state.push("link_close", "a", -1)CODE
HIGHmisago/parser/plugins/linkify.py79 token = state.push("link_open", "a", 1)CODE
HIGHmisago/parser/plugins/linkify.py84 token = state.push("text", "", 0)CODE
HIGHmisago/parser/plugins/linkify.py87 token = state.push("link_close", "a", -1)CODE
HIGHmisago/parser/plugins/imgbbcode.py8 md.inline.ruler.push("img_bbcode", img_bbcode_rule)CODE
HIGHmisago/parser/plugins/imgbbcode.py79 token = state.push("image", "img", 0)CODE
HIGHmisago/parser/plugins/formattingbbcode.py14 md.inline.ruler.push(CODE
HIGHmisago/parser/plugins/formattingbbcode.py67 token = state.push(name + "_bbcode_open", markup, 1)CODE
HIGHmisago/parser/plugins/formattingbbcode.py71 token = state.push(name + "_bbcode_close", markup, -1)CODE
HIGHmisago/parser/plugins/mention.py10 md.inline.ruler.push("mention", mention_rule)CODE
HIGHmisago/parser/plugins/mention.py37 token = state.push("mention", "misago-mention", 0)CODE
HIGHmisago/parser/plugins/shortimage.py106 token = state.push("image", "img", 0)CODE
HIGHmisago/parser/hooks/render_tokens_to_plaintext.py98 state.push(tokens[idx].content)STRING
Redundant / Tautological Comments320 hits · 164 pts
SeverityFileLineSnippetContext
LOWmisago/likes/hooks/like_post.py39 # Return valueSTRING
LOWmisago/likes/hooks/like_post.py85 # Return valueSTRING
LOWmisago/likes/hooks/remove_post_like.py38 ## Return valueSTRING
LOWmisago/likes/hooks/remove_post_like.py83 ## Return valueSTRING
LOWmisago/likes/hooks/get_post_feed_post_likes_data.py42 ## Return valueSTRING
LOWmisago/likes/hooks/get_post_feed_post_likes_data.py97 ## Return valueSTRING
LOWmisago/context_processors/hooks/context_processor.py19 # Return valueSTRING
LOWmisago/context_processors/hooks/context_processor.py63 # Return valueSTRING
LOW…ooks/get_private_thread_detail_view_thread_queryset.py20 # Return valueSTRING
LOW…ooks/get_private_thread_detail_view_thread_queryset.py45 # Return valueSTRING
LOW…ethreads/hooks/get_private_thread_list_context_data.py23 # Return valueSTRING
LOW…ethreads/hooks/get_private_thread_list_context_data.py52 # Return valueSTRING
LOW…ivatethreads/hooks/get_private_thread_list_queryset.py25 # Return valueSTRING
LOW…ivatethreads/hooks/get_private_thread_list_queryset.py54 # Return valueSTRING
LOW…s/hooks/get_private_thread_detail_view_context_data.py32 # Return valueSTRING
LOW…s/hooks/get_private_thread_detail_view_context_data.py76 # Return valueSTRING
LOW…rivatethreads/hooks/get_private_thread_list_threads.py29 # Return valueSTRING
LOW…rivatethreads/hooks/get_private_thread_list_threads.py67 # Return valueSTRING
LOW…hooks/get_private_thread_detail_view_posts_queryset.py25 # Return valueSTRING
LOW…hooks/get_private_thread_detail_view_posts_queryset.py51 # Return valueSTRING
LOW…go/privatethreads/hooks/change_private_thread_owner.py36 # Return valueSTRING
LOW…go/privatethreads/hooks/change_private_thread_owner.py80 # Return valueSTRING
LOW…o/privatethreads/hooks/remove_private_thread_member.py36 # Return valueSTRING
LOW…o/privatethreads/hooks/remove_private_thread_member.py80 # Return valueSTRING
LOW…rivatethreads/hooks/get_private_threads_breadcrumbs.py18 # Return valueSTRING
LOW…rivatethreads/hooks/get_private_threads_breadcrumbs.py43 # Return valueSTRING
LOW…t_private_thread_detail_view_moderation_result_data.py24 # Return valueSTRING
LOW…t_private_thread_detail_view_moderation_result_data.py53 # Return valueSTRING
LOW…privatethreads/hooks/get_private_thread_breadcrumbs.py23 # Return valueSTRING
LOW…privatethreads/hooks/get_private_thread_breadcrumbs.py56 # Return valueSTRING
LOW…rivatethreads/hooks/get_private_thread_list_filters.py20 # Return valueSTRING
LOW…rivatethreads/hooks/get_private_thread_list_filters.py45 # Return valueSTRING
LOWmisago/oauth2/hooks/filter_user_data.py38 # Return valueSTRING
LOWmisago/oauth2/hooks/filter_user_data.py95 # Return valueSTRING
LOWmisago/oauth2/hooks/validate_user_data.py46 # Return valueSTRING
LOWmisago/oauth2/hooks/validate_user_data.py112 # Return valueSTRING
LOWmisago/polls/hooks/close_poll.py30 # Return valueSTRING
LOWmisago/polls/hooks/close_poll.py66 # Return valueSTRING
LOWmisago/polls/hooks/close_thread_poll.py37 # Return valueSTRING
LOWmisago/polls/hooks/close_thread_poll.py80 # Return valueSTRING
LOWmisago/polls/hooks/save_thread_poll.py38 # Return valueSTRING
LOWmisago/polls/hooks/save_thread_poll.py81 # Return valueSTRING
LOWmisago/polls/hooks/open_thread_poll.py37 # Return valueSTRING
LOWmisago/polls/hooks/open_thread_poll.py80 # Return valueSTRING
LOWmisago/polls/hooks/delete_thread_poll.py37 # Return valueSTRING
LOWmisago/polls/hooks/delete_thread_poll.py80 # Return valueSTRING
LOWmisago/polls/hooks/open_poll.py30 # Return valueSTRING
LOWmisago/polls/hooks/open_poll.py66 # Return valueSTRING
LOWmisago/parser/highlighter.py18 # Check if lexer existsCOMMENT
LOWmisago/parser/hooks/replace_rich_text_tokens.py32 # Return valueSTRING
LOWmisago/parser/hooks/replace_rich_text_tokens.py75 # Return valueSTRING
LOWmisago/parser/hooks/shorten_url.py17 # Return valueSTRING
LOWmisago/parser/hooks/shorten_url.py42 # Return valueSTRING
LOWmisago/parser/hooks/create_parser.py39 # Return valueSTRING
LOWmisago/parser/hooks/create_parser.py91 # Return valueSTRING
LOWmisago/parser/hooks/highlight_syntax.py20 # Return valueSTRING
LOWmisago/parser/hooks/highlight_syntax.py48 # Return valueSTRING
LOWmisago/parser/hooks/render_tokens_to_plaintext.py26 # Return valueSTRING
LOWmisago/parser/hooks/render_tokens_to_plaintext.py58 # Return valueSTRING
LOWmisago/parser/hooks/tokenize.py28 # Return valueSTRING
260 more matches not shown…
Modern Structural Boilerplate61 hits · 66 pts
SeverityFileLineSnippetContext
LOWdevproject/__init__.py3__all__ = ["celery_app"]CODE
LOWmisago/settings.py3__all__ = [CODE
LOWmisago/test/categories.py19__all__ = ["CategoryRelations", "category_relations_factory"]CODE
LOWmisago/test/posts.py15__all__ = ["post_factory", "thread_reply_factory"]CODE
LOWmisago/test/__init__.py22__all__ = [CODE
LOWmisago/test/threads.py27__all__ = ["ThreadRelations", "thread_factory", "thread_relations_factory"]CODE
LOWmisago/apiv2/pagination/__init__.py3__all__ = ["PaginationError", "PaginationResult", "paginate_queryset"]CODE
LOWmisago/likes/hooks/__init__.py6__all__ = [CODE
LOWmisago/context_processors/hooks/__init__.py3__all__ = ["context_processor_hook"]CODE
LOWmisago/privatethreads/hooks/__init__.py26__all__ = [CODE
LOWmisago/oauth2/hooks/__init__.py4__all__ = ["filter_user_data_hook", "validate_user_data_hook"]CODE
LOWmisago/admin/views/generic/__init__.py13__all__ = [CODE
LOWmisago/solutions/hooks/__init__.py7__all__ = [CODE
LOWmisago/polls/hooks/__init__.py12__all__ = [CODE
LOWmisago/parser/tokenizer.py62def set_links_rel_external_nofollow_noopener(tokens: list[Token]) -> None:CODE
LOWmisago/parser/tokenizer.py70def set_links_target_blank(tokens: list[Token]) -> None:CODE
LOWmisago/parser/tokenizer.py78def set_autolinks_attr(tokens: list[Token]) -> None:CODE
LOWmisago/parser/tokenizer.py87def set_tables_styles(tokens: list[Token]) -> None:CODE
LOWmisago/parser/tokenizer.py93def set_tables_rows_ids(tokens: list[Token]) -> None:CODE
LOWmisago/parser/tokenizer.py102def set_tables_cells_cols(tokens: list[Token]) -> None:CODE
LOWmisago/parser/tokenizer.py130def set_lists_type_metadata(tokens: list[Token]) -> None:CODE
LOWmisago/parser/tokenizer.py192def set_lists_styles(tokens: list[Token]) -> None:CODE
LOWmisago/permissions/copy.py9__all__ = ["copy_category_permissions", "copy_group_permissions"]CODE
LOWmisago/permissions/attachments.py24__all__ = [CODE
LOWmisago/permissions/threads/__init__.py20__all__ = [CODE
LOWmisago/permissions/hooks/__init__.py127__all__ = [CODE
LOWmisago/threads/prefetch.py31__all__ = [CODE
LOWmisago/threads/models/__init__.py4__all__ = ["Post", "Thread"]CODE
LOWmisago/threads/hooks/__init__.py62__all__ = [CODE
LOWmisago/users/groups.py18__all__ = [CODE
LOWmisago/users/permissions/delete.py13__all__ = [CODE
LOWmisago/users/permissions/moderation.py16__all__ = [CODE
LOWmisago/users/permissions/profiles.py12__all__ = [CODE
LOWmisago/users/permissions/decorators.py4__all__ = ["authenticated_only", "anonymous_only"]CODE
LOWmisago/users/serializers/auth.py10__all__ = ["AuthenticatedUserSerializer", "AnonymousUserSerializer"]CODE
LOWmisago/users/serializers/user.py10__all__ = ["StatusSerializer", "UserSerializer", "UserCardSerializer"]CODE
LOWmisago/users/serializers/moderation.py7__all__ = ["ModerateAvatarSerializer"]CODE
LOWmisago/users/serializers/usernamechange.py6__all__ = ["UsernameChangeSerializer"]CODE
LOWmisago/users/serializers/ban.py7__all__ = ["BanMessageSerializer", "BanDetailsSerializer"]CODE
LOWmisago/users/serializers/rank.py6__all__ = ["RankSerializer"]CODE
LOWmisago/users/hooks/__init__.py7__all__ = [CODE
LOWmisago/users/profilefields/basefields.py7__all__ = [CODE
LOWmisago/users/avatars/__init__.py4__all__ = [CODE
LOWmisago/metatags/metatags.py8__all__ = ["MetaTag", "get_default_metatags", "get_forum_index_metatags"]CODE
LOWmisago/threadevents/hooks/__init__.py6__all__ = [CODE
LOWmisago/attachments/delete.py20__all__ = [CODE
LOWmisago/attachments/storage.py10__all__ = [CODE
LOWmisago/attachments/hooks/__init__.py12__all__ = [CODE
LOWmisago/categories/delete.py22__all__ = ["delete_category"]CODE
LOWmisago/categories/components.py19__all__ = [CODE
LOWmisago/categories/hooks/__init__.py8__all__ = [CODE
LOWmisago/postedits/hooks/__init__.py13__all__ = [CODE
LOWmisago/notifications/hooks/__init__.py7__all__ = [CODE
LOWmisago/acl/test.py6__all__ = ["patch_user_acl"]CODE
LOWmisago/posting/validators.py21__all__ = [CODE
LOWmisago/posting/forms/__init__.py15__all__ = [CODE
LOWmisago/posting/formsets/__init__.py25__all__ = [CODE
LOWmisago/posting/state/__init__.py24__all__ = [CODE
LOWmisago/posting/hooks/__init__.py60__all__ = [CODE
LOWmisago/testutils/__init__.py6__all__ = [CODE
1 more matches not shown…
Deep Nesting52 hits · 48 pts
SeverityFileLineSnippetContext
LOWgenerate_dev_docs.py82CODE
LOWgenerate_dev_docs.py256CODE
LOWgenerate_dev_docs.py513CODE
LOWgenerate_dev_docs.py566CODE
LOWgenerate_dev_docs.py618CODE
LOW…st_snapshots_plugin/management/commands/restorepost.py19CODE
LOWmisago/forms/fields.py275CODE
LOWmisago/core/page.py20CODE
LOWmisago/core/exceptionhandler.py130CODE
LOWmisago/core/tests/test_jsi18n.py22CODE
LOWmisago/apiv2/notifications/views.py14CODE
LOWmisago/admin/site.py104CODE
LOWmisago/admin/attachments/forms.py69CODE
LOWmisago/admin/views/__init__.py26CODE
LOWmisago/admin/views/generic/list.py262CODE
LOWmisago/admin/views/generic/formsbuttons.py162CODE
LOWmisago/polls/validators.py85CODE
LOWmisago/parser/plaintext.py137CODE
LOWmisago/parser/plaintext.py221CODE
LOWmisago/parser/plaintext.py275CODE
LOWmisago/parser/tokens.py66CODE
LOWmisago/parser/tokens.py101CODE
LOWmisago/parser/tokens.py133CODE
LOWmisago/parser/tokens.py165CODE
LOWmisago/parser/tokens.py236CODE
LOWmisago/parser/tokenizer.py62CODE
LOWmisago/parser/tokenizer.py70CODE
LOWmisago/parser/tokenizer.py78CODE
LOWmisago/parser/tokenizer.py429CODE
LOWmisago/parser/bbcode.py96CODE
LOWmisago/parser/bbcode.py199CODE
LOWmisago/parser/bbcode.py246CODE
LOWmisago/parser/mentions.py28CODE
LOWmisago/parser/richtext.py63CODE
LOWmisago/parser/plugins/formattingbbcode.py20CODE
LOWmisago/parser/plugins/formattingbbcode.py21CODE
LOWmisago/markup/bbcode/code.py27CODE
LOWmisago/threads/postfeed.py334CODE
LOWmisago/threads/tests/test_thread_posts_paginator.py246CODE
LOWmisago/users/admin/views/users.py123CODE
LOWmisago/users/management/commands/createsuperuser.py76CODE
LOWmisago/users/models/ban.py25CODE
LOWmisago/users/api/users.py202CODE
LOWmisago/users/api/mention.py12CODE
LOWmisago/menus/menu.py14CODE
LOWmisago/conf/admin/forms/base.py17CODE
LOWmisago/categories/admin/views/perms.py33CODE
LOW…sago/categories/management/commands/prunecategories.py20CODE
LOWmisago/themes/activetheme.py4CODE
LOWmisago/postedits/diff.py37CODE
LOWmisago/postedits/diff.py234CODE
LOWmisago/acl/admin/test.py4CODE
AI Slop Vocabulary11 hits · 30 pts
SeverityFileLineSnippetContext
MEDIUMmisago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUMmisago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUMmisago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUMmisago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUMmisago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUMmisago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUMmisago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUMmisago/static/misago/js/vendor.js2(self.webpackChunkmisago=self.webpackChunkmisago||[]).push([[736],{14316:function(e,t,n){var r,o;r=[n(19755)],o=functionCODE
LOWmisago/static/misago/js/vendor.js2(self.webpackChunkmisago=self.webpackChunkmisago||[]).push([[736],{14316:function(e,t,n){var r,o;r=[n(19755)],o=functionCODE
MEDIUMmisago/static/misago/js/vendor.js2(self.webpackChunkmisago=self.webpackChunkmisago||[]).push([[736],{14316:function(e,t,n){var r,o;r=[n(19755)],o=functionCODE
LOWmisago/static/misago/admin/ace-editor/worker-css.js1"no use strict";!function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)retuCODE
Over-Commented Block15 hits · 15 pts
SeverityFileLineSnippetContext
LOWrequirements.txt1#COMMENT
LOWrequirements.txt21celery[redis]==5.3.6COMMENT
LOWrequirements.txt41coverage[toml]==6.5.0COMMENT
LOWrequirements.txt61 # social-auth-app-djangoCOMMENT
LOWrequirements.txt81idna==3.6COMMENT
LOWrequirements.txt101oauthlib==3.2.2COMMENT
LOWrequirements.txt121pyjwt==2.8.0COMMENT
LOWrequirements.txt141 # freezegunCOMMENT
LOWrequirements.txt161 # via social-auth-coreCOMMENT
LOWrequirements.txt181 # via ariadneCOMMENT
LOWrequirements.txt201 # celeryCOMMENT
LOWdevproject/settings.py201 # with social one, if both have same e-mail address.COMMENT
LOWmisago/parser/plugins/fence.py1# Copied from with changesCOMMENT
LOWmisago/parser/plugins/linkify.py1# Copied from with changesCOMMENT
LOWmisago/parser/plugins/shortimage.py1# Copied from with changesCOMMENT
Excessive Try-Catch Wrapping10 hits · 11 pts
SeverityFileLineSnippetContext
LOWmisago/core/tests/test_jsi18n.py33 except Exception:CODE
LOWmisago/plugins/metadata.py91 except Exception as exc:CODE
LOWmisago/users/datadownloads/__init__.py38 except Exception as error:CODE
LOWmisago/users/avatars/uploaded.py30 except Exception:CODE
LOWmisago/themes/admin/media.py37 except Exception:CODE
MEDIUMmisago/themes/admin/media.py34def save_image(theme, image):CODE
LOWmisago/themes/admin/importer.py47 except Exception:CODE
LOWmisago/notifications/tasks.py54 except Exception:CODE
LOWmisago/notifications/tasks.py88 except Exception:CODE
LOWmisago/posting/tasks.py25 except Exception:CODE
AI Structural Patterns6 hits · 6 pts
SeverityFileLineSnippetContext
LOWmisago/test/posts.py20CODE
LOWmisago/test/posts.py88CODE
LOWmisago/test/threads.py32CODE
LOWmisago/test/polls.py25CODE
LOWmisago/admin/site.py147CODE
LOWmisago/postedits/create.py18CODE
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMmisago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUMmisago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
Slop Phrases3 hits · 6 pts
SeverityFileLineSnippetContext
LOWdevproject/urls.py75# If you replace those handlers with custom ones, make sure you decorate themCOMMENT
MEDIUMmisago/static/misago/js/vendor.js2(self.webpackChunkmisago=self.webpackChunkmisago||[]).push([[736],{14316:function(e,t,n){var r,o;r=[n(19755)],o=functionCODE
LOWmisago/static/misago/admin/ace-editor/worker-css.js1"no use strict";!function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)retuCODE
Overly Generic Function Names1 hit · 2 pts
SeverityFileLineSnippetContext
LOWmisago/acl/tests/test_patching_user_acl.py17 def test_function():CODE