AI Slop Code RIsk Monitor

rafalp/Misago

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

31.6 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for rafalp/Misago, a Python project with 2,781 GitHub stars. SynthScan examined 402,078 lines of code across 3342 source files, recording 11660 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 31.6 (High pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

31.6
Adjusted Signal
31.6
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
2.8K
Stars
Python
Language
402.1K
Lines of Code
3.3K
Files
11.7K
Pattern Hits
2026-10-12
Scan Date
0.09
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 67.9/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 9544 finding(s).

Hallucinated Dependency & Supply Chain Risk 28.4/100 · MEDIUM

Are imports declared and package/API names verified? 1882 finding(s).

Agent Over-Engineering Ratio 70.4/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 9424 finding(s).

PR Review Velocity Impact 81.3/100 · CRITICAL

Which changes need focused human review? 11660 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 80HIGH 213MEDIUM 13LOW 11354

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 11660 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers9184 hits · 8878 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
LOW⚡frontend/src/formValidators.js82function setFormControlSuccessValidationState(element) {CODE
LOW⚡frontend/src/formValidators.js89function clearFormControlValidationState(element) {CODE
LOW⚡frontend/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-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
LOWdev-docs/plugins/hooks/validate-posting-hook.md18def custom_validate_posting_filter(CODE
LOWdev-docs/plugins/hooks/validate-posting-hook.md52def validate_posting_are_not_spam(formset, state):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/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
LOWdev-docs/plugins/hooks/select-thread-solution-hook.md18def custom_select_thread_solution_filter(CODE
LOWdev-docs/plugins/hooks/select-thread-solution-hook.md71def select_thread_solution_action(CODE
LOWdev-docs/plugins/hooks/select-thread-solution-hook.md125def record_solution_user_ip_address(CODE
LOWdev-docs/plugins/hooks/hide-thread-hook.md18def custom_hide_thread_filter(CODE
9124 more matches not shown…
Fake / Example Data1015 hits · 908 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/templates/status-messages.html8 <p class="status-message-text">Lorem ipsum <a href="#">dolor</a> met.</p>CODE
LOWfrontend/templates/status-messages.html24 Lorem ipsumCODE
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
LOW⚡misago/core/tests/test_utils.py94 ("Lorem ipsum.", "<p>Lorem ipsum.</p>"),CODE
LOW⚡misago/core/tests/test_utils.py97 ("Lorem ipsum.\nDolor met.", "<p>Lorem ipsum.<br>Dolor met.</p>"),CODE
LOW⚡misago/core/tests/test_utils.py98 ("Lorem ipsum.\n\nDolor met.", "<p>Lorem ipsum.</p>\n\n<p>Dolor met.</p>"),CODE
LOW⚡misago/core/tests/test_utils.py275 message = get_exception_message(PermissionDenied("Lorem Ipsum"))CODE
LOW⚡misago/core/tests/test_utils.py276 self.assertEqual(message, "Lorem Ipsum")CODE
LOW⚡misago/core/tests/test_utils.py286 message = get_exception_message(PermissionDenied("Lorem Ipsum"), "Default")CODE
LOW⚡misago/core/tests/test_utils.py287 self.assertEqual(message, "Lorem Ipsum")CODE
LOW⚡misago/core/tests/test_utils.py295 message = get_exception_message(default_message="Lorem Ipsum")CODE
LOW⚡misago/core/tests/test_utils.py296 self.assertEqual(message, "Lorem Ipsum")CODE
LOW⚡misago/core/tests/test_mail.py14 user = create_test_user("User", "user@example.com")CODE
LOW⚡misago/core/tests/test_mail.py19 user = create_test_user("User", "user@example.com")CODE
LOW⚡misago/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
LOW⚡misago/core/tests/test_templatetags.py195 Context({"item": "Lorem Ipsum", "parent": "Some Thread"})STRING
LOW⚡misago/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.py64 "moderation-lock_reason": "Lorem ipsum",CODE
LOW…/test_private_thread_detail_view_moderation_actions.py80 assert user_private_thread.lock_reason == "Lorem ipsum"CODE
LOW…/test_private_thread_detail_view_moderation_actions.py150 "moderation-hide_reason": "Lorem ipsum",CODE
LOW…/test_private_thread_detail_view_moderation_actions.py166 assert user_private_thread.hide_reason == "Lorem ipsum"CODE
LOW…/test_private_thread_detail_view_moderation_actions.py604 "moderation-lock_reason": "Lorem ipsum",CODE
LOW…/test_private_thread_detail_view_moderation_actions.py627 assert reply.lock_reason == "Lorem ipsum"CODE
LOW…/test_private_thread_detail_view_moderation_actions.py727 "moderation-hide_reason": "Lorem ipsum",CODE
LOW…/test_private_thread_detail_view_moderation_actions.py750 assert reply.hide_reason == "Lorem ipsum"CODE
LOW…/test_private_thread_detail_view_moderation_actions.py1548 "moderation-lock_reason": "Lorem ipsum",CODE
LOW…/test_private_thread_detail_view_moderation_actions.py1571 assert reply.lock_reason == "Lorem ipsum"CODE
LOW…/test_private_thread_detail_view_moderation_actions.py1635 "moderation-hide_reason": "Lorem ipsum",CODE
LOW…/test_private_thread_detail_view_moderation_actions.py1658 assert reply.hide_reason == "Lorem ipsum"CODE
LOW⚡…threads/tests/test_private_thread_detail_view_posts.py666 assert_contains(response, "Reason: Lorem ipsum")CODE
LOW⚡…threads/tests/test_private_thread_detail_view_posts.py678 hide_reason="Lorem ipsum offtopic",CODE
LOW⚡…threads/tests/test_private_thread_detail_view_posts.py967 hide_reason="Lorem ipsum offtopic",CODE
LOW⚡…threads/tests/test_private_thread_detail_view_posts.py976 assert_contains(response, "Lorem ipsum offtopic")CODE
LOW⚡…threads/tests/test_private_thread_detail_view_posts.py1009 hide_reason="Lorem ipsum offtopic",CODE
LOW⚡…threads/tests/test_private_thread_detail_view_posts.py1017 assert_contains(response, "Lorem ipsum offtopic")CODE
LOW⚡…threads/tests/test_private_thread_detail_view_posts.py1048 hide_reason="Lorem ipsum offtopic",CODE
LOW⚡…threads/tests/test_private_thread_detail_view_posts.py1055 assert_contains(response, "Lorem ipsum offtopic")CODE
955 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
CRITICALdev-docs/plugins/hooks/validate-posting-hook.md46from 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-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
CRITICAL⚡misago/forms/tests/test_dict_field.py3from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/core/validators.py3from django.core.exceptions import ValidationErrorCODE
CRITICAL⚡misago/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
CRITICAL⚡misago/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
CRITICAL⚡misago/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
CRITICAL⚡misago/threads/tests/conftest.py2from django.core.exceptions import ValidationErrorCODE
CRITICALmisago/threads/views/list.py7from django.core.exceptions import ValidationErrorCODE
CRITICAL⚡misago/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
CRITICAL⚡misago/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
CRITICAL⚡misago/posting/tests/conftest.py2from django.core.exceptions import ValidationErrorCODE
CRITICAL⚡misago/posting/tests/test_validate_flood_control.py1from django.core.exceptions import ValidationErrorCODE
20 more matches not shown…
Unused Imports738 hits · 696 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
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/metadata.py6CODE
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/views.py8CODE
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
678 more matches not shown…
Cross-File Repetition133 hits · 665 pts
SeverityFileLineSnippetContext
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
HIGH…sions/hooks/check_change_thread_solution_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…issions/hooks/check_lock_thread_solution_permission.py0a function implemented by a plugin that can be registered in this hook. # arguments ## `action: checkaccesscategorypermiSTRING
HIGH…permissions/hooks/check_open_thread_poll_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.py0misago function used to check whether the user has permission to lock the thread’s selected solution. raises `permissionSTRING
HIGH…sions/hooks/check_unlock_thread_solution_permission.py0misago function used to check whether the user has permission to lock the thread’s selected solution. raises `permissionSTRING
HIGH…issions/hooks/check_lock_thread_solution_permission.py0misago function used to check whether the user has permission to lock the thread’s selected solution. raises `permissionSTRING
HIGH…sago/permissions/hooks/check_access_post_permission.py0misago function used to check if a user has permission to access a thread of any type (threads, private threads, or plugSTRING
HIGH…/permissions/hooks/check_access_category_permission.py0misago function used to check if a user has permission to access a thread of any type (threads, private threads, or plugSTRING
HIGH…go/permissions/hooks/check_access_thread_permission.py0misago function used to check if a user has permission to access a thread of any type (threads, private threads, or plugSTRING
HIGH…issions/hooks/check_reply_private_thread_permission.py0misago function used to check if the user has permission to edit a post in a private thread. it raises django's `permissSTRING
HIGH…sago/permissions/hooks/check_edit_thread_permission.py0misago function used to check if the user has permission to edit a post in a private thread. it raises django's `permissSTRING
HIGHmisago/permissions/hooks/check_see_thread_permission.py0misago function used to check if the user has permission to edit a post in a private thread. it raises django's `permissSTRING
73 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
HIGH⚡misago/parser/plaintext.py127 state.push(f"{info}, {syntax}:\n{content}", hardbreak=True)CODE
HIGH⚡misago/parser/plaintext.py129 state.push(f"{info or syntax}:\n{content}", hardbreak=True)CODE
HIGH⚡misago/parser/plaintext.py131 state.push(content, hardbreak=True)CODE
HIGH⚡misago/parser/plaintext.py377 state.push(token.attrs["src"])CODE
HIGH⚡misago/parser/plaintext.py383 state.push(f" ({alt}, {title})")CODE
HIGH⚡misago/parser/plaintext.py385 state.push(f" ({alt})")CODE
HIGH⚡misago/parser/plaintext.py410 state.push(state.renderer.render(tokens[1:-1]))CODE
HIGH⚡misago/parser/plaintext.py420 state.push("\n")CODE
HIGH⚡misago/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
HIGH⚡misago/parser/bbcode.py79 token = state.push("paragraph_open", "p", 1)CODE
HIGH⚡misago/parser/bbcode.py82 token = state.push("inline", "", 0)CODE
HIGH⚡misago/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
HIGH⚡misago/parser/plugins/linkify.py79 token = state.push("link_open", "a", 1)CODE
HIGH⚡misago/parser/plugins/linkify.py84 token = state.push("text", "", 0)CODE
HIGH⚡misago/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
Empty Error Handlers31 hits · 155 pts
SeverityFileLineSnippetContext
HIGH…st_snapshots_plugin/management/commands/restorepost.py46except (TypeError, ValueError):CODE
HIGHmisago/core/utils.py42except ValueError:CODE
HIGHmisago/core/exceptionhandler.py138except IndexError:CODE
HIGHmisago/core/errorpages.py70except AttributeError:CODE
HIGHmisago/core/errorpages.py76except AttributeError:CODE
HIGHmisago/plugins/discover.py99except:CODE
HIGHmisago/admin/views/__init__.py22except NoReverseMatch:CODE
HIGHmisago/parser/richtext.py149except (TypeError, ValueError):CODE
HIGHmisago/search/searchproviders.py36except PermissionDenied:CODE
HIGHmisago/threads/views/list.py335except (TypeError, ValueError):CODE
HIGHmisago/threads/views/detail.py443except (TypeError, ValueError):CODE
HIGHmisago/users/validators.py48except User.DoesNotExist:CODE
HIGHmisago/users/validators.py82except User.DoesNotExist:CODE
HIGHmisago/users/models/user.py151except Rank.DoesNotExist:CODE
HIGHmisago/users/models/online.py18except IntegrityError:CODE
HIGHmisago/users/models/ban.py135except IntegrityError:CODE
HIGHmisago/users/api/userendpoints/avatar.py77except (TypeError, ValueError):CODE
HIGHmisago/users/online/utils.py57except Online.DoesNotExist:CODE
HIGHmisago/users/avatars/uploaded.py30except Exception:CODE
HIGHmisago/users/views/suggest.py26except (TypeError, ValueError):CODE
HIGHmisago/conf/staticsettings.py10except AttributeError:CODE
HIGHmisago/conf/staticsettings.py15except AttributeError:CODE
HIGHmisago/socialauth/strategy.py21except PermissionDenied:CODE
HIGHmisago/socialauth/pipeline.py141except ValidationError:CODE
HIGHmisago/themes/admin/tasks.py14except Css.DoesNotExist:CODE
HIGHmisago/themes/admin/tasks.py34except Css.DoesNotExist:CODE
HIGHmisago/themes/admin/tasks.py46except Theme.DoesNotExist:CODE
HIGHmisago/themes/admin/views.py213except (ValueError, TypeError):CODE
HIGHmisago/themes/admin/views.py219except ObjectDoesNotExist:CODE
HIGHmisago/acl/algebra.py35except KeyError:CODE
HIGHmisago/posting/forms/post.py181except (TypeError, ValueError):CODE
Redundant / Tautological Comments258 hits · 133 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…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…privatethreads/hooks/get_private_thread_breadcrumbs.py23 # Return valueSTRING
LOW…privatethreads/hooks/get_private_thread_breadcrumbs.py56 # Return valueSTRING
LOWmisago/privatethreads/hooks/set_private_thread_owner.py30 # Return valueSTRING
LOWmisago/privatethreads/hooks/set_private_thread_owner.py68 # 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
LOWmisago/parser/hooks/tokenize.py66 # Return valueSTRING
LOWmisago/parser/hooks/get_tokens_metadata.py18 # Return valueSTRING
LOWmisago/parser/hooks/get_tokens_metadata.py42 # Return valueSTRING
LOWmisago/permissions/hooks/get_threads_category_query.py32 # Return valueSTRING
LOWmisago/permissions/hooks/get_threads_category_query.py68 # Return valueSTRING
LOW…go/permissions/hooks/can_upload_threads_attachments.py25 # Return valueSTRING
LOW…go/permissions/hooks/can_upload_threads_attachments.py58 # Return valueSTRING
LOW…o/permissions/hooks/build_user_category_permissions.py31 # Return valueSTRING
LOW…o/permissions/hooks/build_user_category_permissions.py75 # Return valueSTRING
LOWmisago/permissions/hooks/get_category_access_level.py42 # Return valueSTRING
LOWmisago/permissions/hooks/get_category_access_level.py76 # Return valueSTRING
LOWmisago/permissions/hooks/can_see_post_likes_count.py34 # Return valueSTRING
LOWmisago/permissions/hooks/can_see_post_likes_count.py78 # Return valueSTRING
LOW…permissions/hooks/get_threads_pinned_category_query.py32 # Return valueSTRING
LOW…permissions/hooks/get_threads_pinned_category_query.py68 # Return valueSTRING
LOW…missions/hooks/filter_private_thread_posts_queryset.py31 ## Return valueSTRING
198 more matches not shown…
Modern Structural Boilerplate60 hits · 66 pts
SeverityFileLineSnippetContext
LOWdevproject/__init__.py3__all__ = ["celery_app"]CODE
LOWmisago/settings.py3__all__ = [CODE
LOW⚡misago/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__.py8__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
LOW⚡misago/parser/tokenizer.py62def set_links_rel_external_nofollow_noopener(tokens: list[Token]) -> None:CODE
LOW⚡misago/parser/tokenizer.py70def set_links_target_blank(tokens: list[Token]) -> None:CODE
LOW⚡misago/parser/tokenizer.py78def set_autolinks_attr(tokens: list[Token]) -> None:CODE
LOW⚡misago/parser/tokenizer.py87def set_tables_styles(tokens: list[Token]) -> None:CODE
LOW⚡misago/parser/tokenizer.py93def set_tables_rows_ids(tokens: list[Token]) -> None:CODE
LOW⚡misago/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
LOW⚡misago/permissions/copy.py9__all__ = ["copy_category_permissions", "copy_group_permissions"]CODE
LOW⚡misago/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__.py36__all__ = [CODE
LOWmisago/users/groups.py17__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__.py6__all__ = [CODE
LOWmisago/users/profilefields/basefields.py7__all__ = [CODE
LOWmisago/users/avatars/__init__.py4__all__ = [CODE
LOWmisago/threadevents/hooks/__init__.py6__all__ = [CODE
LOW⚡misago/attachments/delete.py20__all__ = [CODE
LOW⚡misago/attachments/storage.py10__all__ = [CODE
LOWmisago/attachments/hooks/__init__.py12__all__ = [CODE
LOWmisago/categories/delete.py23__all__ = ["delete_category"]CODE
LOWmisago/categories/components.py19__all__ = [CODE
LOWmisago/categories/hooks/__init__.py8__all__ = [CODE
LOWmisago/postedits/hooks/__init__.py7__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__.py44__all__ = [CODE
LOWmisago/testutils/__init__.py6__all__ = [CODE
LOWmisago/moderation/hooks/__init__.py24__all__ = [CODE
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.py330CODE
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
MEDIUM⚡misago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUM⚡misago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUM⚡misago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUM⚡misago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUM⚡misago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUM⚡misago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUM⚡misago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUM⚡misago/static/misago/js/vendor.js2(self.webpackChunkmisago=self.webpackChunkmisago||[]).push([[736],{14316:function(e,t,n){var r,o;r=[n(19755)],o=functionCODE
LOW⚡misago/static/misago/js/vendor.js2(self.webpackChunkmisago=self.webpackChunkmisago||[]).push([[736],{14316:function(e,t,n){var r,o;r=[n(19755)],o=functionCODE
MEDIUM⚡misago/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
Overly Generic Function Names13 hits · 14 pts
SeverityFileLineSnippetContext
LOWmisago/privatethreads/views/members.py216 def perform_action(CODE
LOWmisago/privatethreads/views/members.py254 def perform_action(CODE
LOWmisago/privatethreads/views/members.py286 def perform_action(CODE
LOWmisago/threadevents/views.py53 def perform_action(CODE
LOWmisago/threadevents/views.py64 def perform_action(self, request: HttpRequest, thread_event: ThreadEvent) -> bool:CODE
LOWmisago/threadevents/views.py81 def perform_action(self, request: HttpRequest, thread_event: ThreadEvent) -> bool:CODE
LOWmisago/threadevents/views.py159 def perform_action(self, request: HttpRequest, thread_event: ThreadEvent):CODE
LOWmisago/postedits/views.py390 def perform_action(self, request: HttpRequest, post_edit: PostEdit) -> HttpResponse:CODE
LOWmisago/postedits/views.py446 def perform_action(self, request, post_edit: PostEdit) -> HttpResponse:CODE
LOWmisago/postedits/views.py473 def perform_action(self, request, post_edit: PostEdit) -> HttpResponse:CODE
LOWmisago/postedits/views.py500 def perform_action(self, request, post_edit: PostEdit) -> HttpResponse:CODE
LOWmisago/postedits/views.py529 def perform_action(self, request, post_edit: PostEdit) -> HttpResponse:CODE
LOW⚡misago/acl/tests/test_patching_user_acl.py17 def test_function():CODE
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.py99CODE
LOWmisago/test/threads.py32CODE
LOWmisago/test/polls.py25CODE
LOWmisago/admin/site.py147CODE
LOWmisago/postedits/create.py18CODE
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM⚡misago/static/misago/js/zxcvbn.js1!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.aCODE
MEDIUM⚡misago/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
MEDIUM⚡misago/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