Docs is an open-source text editor: web-native, made for real-time collaboration, cleanly structured documents and sub-documents with full ownership of your data. Built to scale with Django and React.
This report presents the forensic synthetic code analysis of suitenumerique/docs, a Python project with 16,698 GitHub stars. SynthScan v2.0 examined 134,430 lines of code across 848 source files, recording 1419 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 14.3 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1419 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | documentation/resource_server.md | 71 | def create_document_from_markdown(self, request): | CODE |
| LOW | …press/src/features/auth/api/useUserReconciliations.tsx | 34 | export function useUserReconciliationsQuery( | CODE |
| LOW | …rc/features/docs/doc-versioning/api/useDocVersions.tsx | 59 | export function useDocVersionsInfiniteQuery( | CODE |
| LOW | …end/apps/impress/src/features/docs/doc-export/utils.ts | 133 | export function odtRegisterParagraphStyleForBlock( | CODE |
| LOW | …ps/impress/src/features/docs/doc-export/utils_print.ts | 159 | function createPrintOnlyStyleElement() { | CODE |
| LOW | …features/docs/doc-export/blocks-mapping/headingPDF.tsx | 10 | function extractTextFromBlockContent(content: unknown[]): string { | CODE |
| LOW | …/src/features/docs/doc-share/api/useDocInvitations.tsx | 69 | export function useDocInvitationsInfinite(params: DocInvitationsParams) { | CODE |
| LOW | …rc/features/docs/doc-share/api/useDocAccessRequest.tsx | 54 | export function useCreateDocAccessRequest( | CODE |
| LOW | src/backend/demo/tests/test_commands_create_demo.py | 24 | def test_commands_create_demo(): | CODE |
| LOW | src/backend/demo/management/commands/create_demo.py | 29 | def random_true_with_probability(probability): | CODE |
| LOW | src/backend/core/signals.py | 28 | def document_access_post_save(sender, instance, created, **kwargs): # pylint: disable=unused-argument | CODE |
| LOW | src/backend/core/signals.py | 44 | def document_access_post_delete(sender, instance, **kwargs): # pylint: disable=unused-argument | CODE |
| LOW⚡ | src/backend/core/models.py | 260 | def _delete_documents_single_owner(self): | CODE |
| LOW⚡ | src/backend/core/models.py | 270 | def _clear_user_created_documents(self): | CODE |
| LOW⚡ | src/backend/core/models.py | 278 | def _handle_onboarding_documents_access(self): | CODE |
| LOW | src/backend/core/models.py | 238 | def _delete_user_shared_documents_accesses(self): | CODE |
| LOW | src/backend/core/models.py | 313 | def _duplicate_onboarding_sandbox_document(self): | CODE |
| LOW | src/backend/core/models.py | 343 | def _convert_valid_invitations(self): | CODE |
| LOW | src/backend/core/models.py | 499 | def process_reconciliation_request(self): | CODE |
| LOW | src/backend/core/models.py | 576 | def prepare_documentaccess_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 610 | def prepare_document_favorite_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 634 | def prepare_linktrace_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 654 | def prepare_thread_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 669 | def prepare_comment_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 684 | def prepare_reaction_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 696 | def send_reconciliation_confirm_email( | CODE |
| LOW | src/backend/core/models.py | 721 | def send_reconciliation_done_email(self, language=None): | CODE |
| LOW | src/backend/core/models.py | 799 | def send_reconciliation_error_email( | CODE |
| LOW | src/backend/core/models.py | 905 | def annotate_user_has_link_trace(self, user): | CODE |
| LOW | src/backend/core/models.py | 1155 | def get_nb_accesses_cache_key(self): | CODE |
| LOW | src/backend/core/models.py | 1192 | def invalidate_nb_accesses_cache(self): | CODE |
| LOW | src/backend/core/models.py | 1230 | def compute_ancestors_links_paths_mapping(self): | CODE |
| LOW | src/backend/core/models.py | 1256 | def ancestors_link_definition(self): | CODE |
| LOW | src/backend/core/models.py | 1271 | def ancestors_link_definition(self, definition): | CODE |
| LOW | src/backend/core/models.py | 1853 | def send_ask_for_access_email(self, email, language=None): | CODE |
| LOW | src/backend/core/malware_detection.py | 16 | def malware_detection_callback(file_path, status, error_info, **kwargs): | CODE |
| LOW | src/backend/core/choices.py | 89 | def get_equivalent_link_definition(ancestors_links): | CODE |
| LOW | src/backend/core/tasks/user_reconciliation.py | 84 | def user_reconciliation_csv_import_job(job_id): | CODE |
| LOW | src/backend/core/tasks/access.py | 9 | def reset_service_connections_in_cascade(document_id, user_id=None): | CODE |
| LOW | src/backend/core/tasks/search.py | 31 | def batch_indexer_throttle_acquire(timeout: int = 0, atomic: bool = True): | CODE |
| LOW | src/backend/core/tasks/search.py | 51 | def batch_document_indexer_task(timestamp): | CODE |
| LOW | src/backend/core/tasks/search.py | 66 | def trigger_batch_document_indexer(document): | CODE |
| LOW | src/backend/core/external_api/viewsets.py | 30 | def _get_resource_server_actions(self, resource_name): | CODE |
| LOW | …nd/core/tests/test_api_utils_ai_user_rate_throttles.py | 33 | def test_api_utils_ai_user_rate_throttle_minute_limit(mock_time): | CODE |
| LOW | …nd/core/tests/test_api_utils_ai_user_rate_throttles.py | 69 | def test_ai_user_rate_throttle_hour_limit(mock_time): | CODE |
| LOW | …nd/core/tests/test_api_utils_ai_user_rate_throttles.py | 106 | def test_api_utils_ai_user_rate_throttle_day_limit(mock_time): | CODE |
| LOW⚡ | src/backend/core/tests/test_models_document_accesses.py | 56 | def test_models_document_accesses_several_null_users(): | CODE |
| LOW⚡ | src/backend/core/tests/test_models_document_accesses.py | 62 | def test_models_document_accesses_user_and_team_set(): | CODE |
| LOW⚡ | src/backend/core/tests/test_models_document_accesses.py | 71 | def test_models_document_accesses_user_and_team_empty(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 15 | def test_models_document_accesses_str(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 28 | def test_models_document_accesses_unique_user(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 39 | def test_models_document_accesses_several_empty_teams(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 45 | def test_models_document_accesses_unique_team(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 83 | def test_models_document_access_get_abilities_anonymous(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 96 | def test_models_document_access_get_abilities_authenticated(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 113 | def test_models_document_access_get_abilities_for_owner_of_self_allowed(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 130 | def test_models_document_access_get_abilities_for_owner_of_self_last_on_root( | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 151 | def test_models_document_access_get_abilities_for_owner_of_self_last_on_child( | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 173 | def test_models_document_access_get_abilities_for_owner_of_owner(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 190 | def test_models_document_access_get_abilities_for_owner_of_administrator(): | CODE |
| 1097 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/backend/core/tests/test_models_users.py | 0 | it should be possible to create several documents at the same time without causing any race conditions or data integrity | STRING |
| HIGH | …tests/documents/test_api_documents_create_for_owner.py | 0 | it should be possible to create several documents at the same time without causing any race conditions or data integrity | STRING |
| HIGH | …/tests/documents/test_api_documents_children_create.py | 0 | it should be possible to create several documents at the same time without causing any race conditions or data integrity | STRING |
| HIGH | …kend/core/tests/documents/test_api_documents_create.py | 0 | it should be possible to create several documents at the same time without causing any race conditions or data integrity | STRING |
| HIGH | …l_api/test_external_api_documents_attachment_upload.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …end/core/tests/external_api/test_external_api_users.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …_api/test_external_api_documents_link_configuration.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …core/tests/external_api/test_external_api_documents.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …s/external_api/test_external_api_documents_accesses.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …s/external_api/test_external_api_documents_versions.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …external_api/test_external_api_documents_invitation.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …s/external_api/test_external_api_documents_favorite.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …e/tests/external_api/test_external_api_documents_ai.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …external_api/test_external_api_documents_media_auth.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …s/external_api/test_external_api_documents_accesses.py | 0 | a user who is related to a document should be allowed to retrieve the associated document versions. | STRING |
| HIGH | …end/core/tests/documents/test_api_document_accesses.py | 0 | a user who is related to a document should be allowed to retrieve the associated document versions. | STRING |
| HIGH | …end/core/tests/documents/test_api_document_versions.py | 0 | a user who is related to a document should be allowed to retrieve the associated document versions. | STRING |
| HIGH | …tests/documents/test_api_documents_create_for_owner.py | 0 | tests for documents api endpoint in impress's core app: children create | STRING |
| HIGH | …kend/core/tests/documents/test_api_documents_create.py | 0 | tests for documents api endpoint in impress's core app: children create | STRING |
| HIGH | …/tests/documents/test_api_documents_children_create.py | 0 | tests for documents api endpoint in impress's core app: children create | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_translate.py | 0 | anonymous users should not be able to request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_ai_proxy.py | 0 | anonymous users should not be able to request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_transform.py | 0 | anonymous users should not be able to request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_translate.py | 0 | authenticated users should be able to request ai proxy to a document if the link reach and role permit it. | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_ai_proxy.py | 0 | authenticated users should be able to request ai proxy to a document if the link reach and role permit it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_transform.py | 0 | authenticated users should be able to request ai proxy to a document if the link reach and role permit it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_translate.py | 0 | users who are not related to a document can't request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_ai_proxy.py | 0 | users who are not related to a document can't request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_transform.py | 0 | users who are not related to a document can't request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_translate.py | 0 | throttling per document should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_ut | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_ai_proxy.py | 0 | throttling per document should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_ut | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_transform.py | 0 | throttling per document should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_ut | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_translate.py | 0 | throttling per user should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_utils_ | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_ai_proxy.py | 0 | throttling per user should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_utils_ | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_transform.py | 0 | throttling per user should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_utils_ | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | tests for documents api endpoint in impress's core app: list | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_list.py | 0 | tests for documents api endpoint in impress's core app: list | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_trashbin.py | 0 | tests for documents api endpoint in impress's core app: list | STRING |
| HIGH | …ore/tests/documents/test_api_documents_list_filters.py | 0 | tests for documents api endpoint in impress's core app: list | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | anonymous users should be allowed to retrieve the descendants of a public document. | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | anonymous users should be allowed to retrieve the descendants of a public document. | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | anonymous users should be allowed to retrieve the descendants of a public document. | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | anonymous users should not be able to retrieve a document that is not public. | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | anonymous users should not be able to retrieve a document that is not public. | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_retrieve.py | 0 | anonymous users should not be able to retrieve a document that is not public. | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should be able to retrieve the descendants of a public/authenticated document to which they are not | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | authenticated users should be able to retrieve the descendants of a public/authenticated document to which they are not | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | authenticated users should be able to retrieve the descendants of a public/authenticated document to which they are not | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should be allowed to retrieve the descendants of a document who has a public or authenticated ancest | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | authenticated users should be allowed to retrieve the descendants of a document who has a public or authenticated ancest | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | authenticated users should be allowed to retrieve the descendants of a document who has a public or authenticated ancest | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should not be allowed to retrieve a document that is restricted and to which they are not related. | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | authenticated users should not be allowed to retrieve a document that is restricted and to which they are not related. | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | authenticated users should not be allowed to retrieve a document that is restricted and to which they are not related. | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_retrieve.py | 0 | authenticated users should not be allowed to retrieve a document that is restricted and to which they are not related. | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should be allowed to retrieve a restricted document to which they are related via a team whatever th | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | authenticated users should be allowed to retrieve a restricted document to which they are related via a team whatever th | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | authenticated users should be allowed to retrieve a restricted document to which they are related via a team whatever th | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_retrieve.py | 0 | authenticated users should be allowed to retrieve a restricted document to which they are related via a team whatever th | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should be allowed to retrieve a document if they are related to one of its ancestors whatever the ro | STRING |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …files/docker-entrypoint-initdb.d/01_create_app_user.sh | 4 | # Create a non-superuser for the application to test migrations. | COMMENT |
| MEDIUM | .github/workflows/crowdin_download.yml | 62 | # Create a new PR | COMMENT |
| MEDIUM | src/backend/core/tests/test_models_documents.py | 973 | # Create a document with 7 versions | COMMENT |
| MEDIUM | …/backend/core/tests/test_models_user_reconciliation.py | 356 | # Create a reconciliation entry where only one email has been checked | COMMENT |
| MEDIUM | …core/tests/external_api/test_external_api_documents.py | 163 | # Create a parent document first | COMMENT |
| MEDIUM | …core/tests/external_api/test_external_api_documents.py | 204 | # Create a parent document first | COMMENT |
| MEDIUM | …core/tests/external_api/test_external_api_documents.py | 243 | # Create a parent document first | COMMENT |
| MEDIUM | …core/tests/external_api/test_external_api_documents.py | 282 | # Create a fake Markdown file | COMMENT |
| MEDIUM | …core/tests/external_api/test_external_api_documents.py | 362 | # Create a document the user should NOT have access to | COMMENT |
| MEDIUM | src/backend/core/tests/commands/test_clean_document.py | 33 | # Create a root document with subdocuments | COMMENT |
| MEDIUM | src/backend/core/tests/commands/test_clean_document.py | 300 | # Create a root document with subdocuments | COMMENT |
| MEDIUM | …/core/tests/documents/test_api_document_invitations.py | 547 | # Create a new invitation to the same document with the exact same email address | COMMENT |
| MEDIUM | …nd/core/tests/documents/test_api_documents_trashbin.py | 386 | # Create a new user with no owner access to any document | COMMENT |
| MEDIUM | …end/core/tests/documents/test_api_document_versions.py | 365 | # Create a new version should not make it available to the user because | COMMENT |
| MEDIUM | …end/core/tests/documents/test_api_document_versions.py | 433 | # Create a new version should not make it available to the user because | COMMENT |
| MEDIUM | …end/core/tests/documents/test_api_document_versions.py | 667 | # Create a new version should make it available to the user | COMMENT |
| MEDIUM | …end/core/tests/documents/test_api_document_versions.py | 705 | # Create a new version should make it available to the user | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 26 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 59 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 113 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 152 | # Create a fake Markdown file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 210 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 256 | # Create an empty file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 290 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 328 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 432 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 489 | # Create a file with Unicode characters in the name | COMMENT |
| MEDIUM | …ests/documents/test_api_documents_formatted_content.py | 87 | # Create an access as a reader. This should unlock the access. | COMMENT |
| MEDIUM | …backend/core/tests/documents/test_api_documents_all.py | 47 | # Create a document tree: parent -> child -> grandchild | COMMENT |
| MEDIUM | …backend/core/tests/documents/test_api_documents_all.py | 406 | # Create a document tree | COMMENT |
| MEDIUM | …d/core/tests/documents/test_api_documents_duplicate.py | 809 | # Create a complex tree: | COMMENT |
| MEDIUM | …/tests/documents/test_api_documents_children_create.py | 333 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …/tests/documents/test_api_documents_children_create.py | 381 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …ests/documents/test_api_documents_attachment_upload.py | 293 | # Create a temporary file larger than the allowed size | COMMENT |
| MEDIUM | …ackend/core/tests/documents/test_api_documents_move.py | 495 | # Create a hierarchy: parent -> child -> grandchild | COMMENT |
| MEDIUM | src/backend/core/api/viewsets.py | 1088 | # Create a child document | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/backend/core/validators.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/backend/core/tasks/user_reconciliation.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/backend/core/tests/test_models_document_accesses.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/backend/core/tests/test_models_documents.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …d/core/tests/test_utils_create_tree_node_with_retry.py | 5 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | src/backend/core/tests/test_models_users.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/backend/core/utils/treebeard.py | 7 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | src/backend/core/api/viewsets.py | 20 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/backend/core/api/__init__.py | 4 | from django.core.exceptions import ValidationError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | documentation/installation/scalingo.md | 18 | ## Step 1: Create Your App | COMMENT |
| LOW⚡ | documentation/installation/scalingo.md | 22 | ## Step 2: Provision Addons | COMMENT |
| LOW⚡ | documentation/installation/scalingo.md | 30 | ## Step 3: Configure Environment Variables | COMMENT |
| LOW | documentation/installation/scalingo.md | 108 | ## Step 4: Deploy | COMMENT |
| LOW | documentation/installation/scalingo.md | 124 | ## Step 5: Create superuser | COMMENT |
| LOW | documentation/installation/compose.md | 30 | ## Step 1: Prepare your working environment: | COMMENT |
| LOW | documentation/installation/compose.md | 47 | ## Step 2: Configuration | COMMENT |
| LOW | documentation/installation/compose.md | 159 | ## Step 3: Reverse proxy and SSL/TLS | COMMENT |
| LOW | documentation/installation/compose.md | 188 | ## Step 4: Start Docs | COMMENT |
| LOW | documentation/installation/compose.md | 198 | ## Step 5: Run the database migration and create Django admin user | COMMENT |
| LOW⚡ | documentation/installation/compose.md | 217 | ### Step 1: Edit the images tag with the desired version | COMMENT |
| LOW⚡ | documentation/installation/compose.md | 219 | ### Step 2: Pull the images | COMMENT |
| LOW⚡ | documentation/installation/compose.md | 225 | ### Step 3: Restart your containers | COMMENT |
| LOW⚡ | documentation/installation/compose.md | 231 | ### Step 4: Run the database migration | COMMENT |
| LOW | documentation/examples/compose/minio/README.md | 8 | ### Step 1: Prepare your working environment: | COMMENT |
| LOW | documentation/examples/compose/minio/README.md | 27 | ### Step 3: Expose MinIO instance | COMMENT |
| LOW | documentation/examples/compose/minio/README.md | 71 | ### Step 4: Start the service | COMMENT |
| LOW | documentation/examples/compose/minio/README.md | 85 | ### Step 1: Configure `mc` to connect to your MinIO Server with your root user | COMMENT |
| LOW | documentation/examples/compose/minio/README.md | 93 | ### Step 2: Create a new bucket with versioning enabled | COMMENT |
| LOW⚡ | documentation/examples/compose/nginx-proxy/README.md | 12 | ### Step 1: Prepare your working environment: | COMMENT |
| LOW⚡ | documentation/examples/compose/nginx-proxy/README.md | 19 | ### Step 2: Edit `DEFAULT_EMAIL` in the compose file. | COMMENT |
| LOW⚡ | documentation/examples/compose/nginx-proxy/README.md | 23 | ### Step 3: Create docker network | COMMENT |
| LOW⚡ | documentation/examples/compose/nginx-proxy/README.md | 31 | ### Step 4: Start service | COMMENT |
| LOW | documentation/examples/compose/keycloak/README.md | 8 | ### Step 1: Prepare your working environment: | COMMENT |
| LOW | documentation/examples/compose/keycloak/README.md | 27 | ### Step 3: Expose keycloak instance on https | COMMENT |
| LOW⚡ | documentation/examples/compose/keycloak/README.md | 58 | ### Step 4: Start the service | COMMENT |
| LOW⚡ | documentation/examples/compose/keycloak/README.md | 68 | ### Step 1: Create a New Realm | COMMENT |
| LOW⚡ | documentation/examples/compose/keycloak/README.md | 75 | #### Step 2: Create a New Client | COMMENT |
| LOW⚡ | documentation/examples/compose/keycloak/README.md | 85 | #### Step 3: Get Client Credentials | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …press/src/features/service-worker/plugins/ApiPlugin.ts | 254 | creator: 'dummy-id', | CODE |
| LOW | …tend/apps/e2e/__tests__/app-impress/doc-header.spec.ts | 53 | const editor = await writeInEditor({ page, text: 'Lorem ipsum' }); | CODE |
| LOW | …tend/apps/e2e/__tests__/app-impress/doc-header.spec.ts | 57 | await writeInEditor({ page, text: 'Lorem ipsum 2' }); | CODE |
| LOW | …ontend/apps/e2e/__tests__/app-impress/doc-grid.spec.ts | 39 | full_name: 'John Doe', | CODE |
| LOW | …tend/apps/e2e/__tests__/app-impress/doc-import.spec.ts | 59 | name: 'Lorem Ipsum import Document', | CODE |
| LOW⚡ | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 3 | # Lorem Ipsum import Document | COMMENT |
| LOW⚡ | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 7 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt, nisl nisl aliquam | CODE |
| LOW⚡ | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 7 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt, nisl nisl aliquam | CODE |
| LOW⚡ | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 11 | * **Bold text**: Lorem ipsum dolor sit amet. | COMMENT |
| LOW⚡ | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 11 | * **Bold text**: Lorem ipsum dolor sit amet. | COMMENT |
| LOW | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 39 | > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt. | CODE |
| LOW | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 39 | > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt. | CODE |
| LOW | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 60 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt, nisl nisl aliquam | CODE |
| LOW | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 60 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt, nisl nisl aliquam | CODE |
| LOW⚡ | …/frontend/servers/y-provider/__tests__/convert.test.ts | 29 | const expectedMarkdown = '# Example document\n\nLorem ipsum dolor sit amet.'; | CODE |
| LOW⚡ | …/frontend/servers/y-provider/__tests__/convert.test.ts | 29 | const expectedMarkdown = '# Example document\n\nLorem ipsum dolor sit amet.'; | CODE |
| LOW⚡ | …/frontend/servers/y-provider/__tests__/convert.test.ts | 31 | '<h1>Example document</h1><p>Lorem ipsum dolor sit amet.</p>'; | CODE |
| LOW⚡ | …/frontend/servers/y-provider/__tests__/convert.test.ts | 31 | '<h1>Example document</h1><p>Lorem ipsum dolor sit amet.</p>'; | CODE |
| LOW | …/frontend/servers/y-provider/__tests__/convert.test.ts | 57 | text: 'Lorem ipsum dolor sit amet.', | CODE |
| LOW | …/frontend/servers/y-provider/__tests__/convert.test.ts | 57 | text: 'Lorem ipsum dolor sit amet.', | CODE |
| LOW | …kend/core/tests/test_services_find_document_indexer.py | 473 | token = "fake-token" | CODE |
| LOW⚡ | src/backend/core/tests/test_api_users.py | 390 | factories.UserFactory(email="john.doe@example.com", full_name="John Doe") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 51 | user = factories.UserFactory(email="user@example.com", full_name="Example User") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 86 | user = factories.UserFactory(email="user@example.com", full_name="Example User") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 126 | user = factories.UserFactory(email="user@example.com", full_name="Example User") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 171 | user = factories.UserFactory(email="user@example.com", full_name="Example User") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 281 | user = factories.UserFactory(email="user@example.com") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 419 | user = factories.UserFactory(email="user@example.com", full_name="Example User") | CODE |
| LOW⚡ | …d/core/tests/serializers/test_user_light_serializer.py | 14 | email="test@test.com", | CODE |
| LOW⚡ | …d/core/tests/serializers/test_user_light_serializer.py | 15 | full_name="John Doe", | CODE |
| LOW⚡ | …d/core/tests/serializers/test_user_light_serializer.py | 19 | assert serializer.data["full_name"] == "John Doe" | CODE |
| LOW | src/backend/core/tests/authentication/test_backends.py | 225 | user = UserFactory(full_name="John Doe", short_name="John") | CODE |
| LOW | src/backend/core/tests/authentication/test_backends.py | 264 | full_name="John Doe", short_name="John", email="john.doe@example.com" | CODE |
| LOW | src/backend/core/tests/authentication/test_backends.py | 306 | full_name="John Doe", short_name="John", email="john.doe@example.com" | CODE |
| LOW | src/backend/core/tests/authentication/test_backends.py | 377 | assert user.full_name == "John Doe" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/backend/demo/management/commands/create_demo.py | 134 | queue.push( | CODE |
| HIGH | src/backend/demo/management/commands/create_demo.py | 169 | queue.push(document) | CODE |
| HIGH | src/backend/demo/management/commands/create_demo.py | 181 | queue.push( | CODE |
| HIGH | src/backend/demo/management/commands/create_demo.py | 190 | queue.push( | CODE |
| HIGH | src/backend/demo/management/commands/create_demo.py | 213 | queue.push( | CODE |
| HIGH | src/backend/core/tests/test_services_search_indexers.py | 459 | indexer.push(sample_data) | CODE |
| HIGH | src/backend/core/services/search_indexers.py | 167 | self.push(serialized_batch) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | documentation/examples/compose/compose.yaml | 61 | # - VIRTUAL_HOST=${DOCS_HOST} # used by nginx proxy | COMMENT |
| LOW | documentation/examples/compose/minio/compose.yaml | 21 | # networks: | COMMENT |
| LOW | documentation/examples/compose/keycloak/README.md | 41 | # Uncomment and set your values if using our nginx proxy example | COMMENT |
| LOW | documentation/examples/compose/keycloak/compose.yaml | 21 | # environment: | COMMENT |
| LOW | …tures/docs/doc-presenter/components/PresenterSlide.tsx | 21 | slide: PresenterSlideData; | COMMENT |
| LOW | src/helm/impress/values.yaml | 1 | # Default values for impress. | COMMENT |
| LOW | src/helm/impress/values.yaml | 61 | path: /collaboration/ws/ | COMMENT |
| LOW | src/helm/impress/values.yaml | 241 | ## @extra backend.envVars.FROM_CONFIGMAP.configMapKeyRef.name Name of a ConfigMap when configuring env vars from a Con | COMMENT |
| LOW | src/helm/impress/values.yaml | 321 | ## @skip backend.job.annotations.argocd.argoproj.io/hook | COMMENT |
| LOW | src/helm/impress/values.yaml | 341 | ## @param backend.probes.liveness.targetPort [nullable] Configure port for backend HTTP liveness probe | COMMENT |
| LOW | src/helm/impress/values.yaml | 401 | ## @param backend.celery.args Override the celery container args | COMMENT |
| LOW | src/helm/impress/values.yaml | 501 | envFrom: [] | COMMENT |
| LOW | src/helm/impress/values.yaml | 521 | targetPort: 8080 | COMMENT |
| LOW | src/helm/impress/values.yaml | 561 | extraVolumes: [] | COMMENT |
| LOW | src/helm/impress/values.yaml | 761 | # envFrom: | COMMENT |
| LOW | src/helm/impress/values.yaml | 781 | annotations: {} | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …nd/core/tests/test_services_converter_orchestration.py | 31 | # Verify the orchestration | COMMENT |
| MEDIUM | src/backend/core/services/collaboration_services.py | 57 | # Note: Collaboration microservice accepts only raw token, which is not recommended | COMMENT |
| MEDIUM | src/backend/core/services/converter_services.py | 112 | # Note: Yprovider microservice accepts only raw token, which is not recommended | COMMENT |
| MEDIUM | src/backend/impress/settings.py | 914 | # Y provider microservice | COMMENT |
| MEDIUM | src/backend/impress/settings.py | 924 | # DocSpec API microservice | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/backend/core/models.py | 2073 | # Check if an identity already exists for the provided email | COMMENT |
| LOW | src/backend/core/external_api/permissions.py | 29 | # Check if the user is authenticated | COMMENT |
| LOW | …ackend/core/tests/documents/test_api_documents_list.py | 424 | # Check if the "is_favorite" annotation is correctly set for the favorited documents | COMMENT |
| LOW | src/backend/core/api/viewsets.py | 2030 | # Check if the attachment is ready | COMMENT |
| LOW | src/backend/core/api/viewsets.py | 2230 | # Check if the attachment is ready | COMMENT |
| LOW | src/backend/core/api/throttling.py | 46 | # Check if this is a valid y-provider request and exempt from throttling | COMMENT |
| LOW | src/backend/core/api/permissions.py | 85 | # Check if resource_id is passed in the context | COMMENT |
| LOW | src/backend/core/api/permissions.py | 93 | # Check if the user has access to manage invitations (Owner/Admin roles) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/backend/conftest.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/malware_detection.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/tasks/user_reconciliation.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | src/backend/core/utils/users.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/utils/treebeard.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/api/viewsets.py | 93 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/authentication/backends.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/services/search_indexers.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/services/converter_services.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/impress/__init__.py | 5 | __all__ = ["celery_app"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …end/core/tests/test_services_collaboration_services.py | 27 | Creates a context manager to mock the reset-connections endpoint for collaboration services. Args: sett | STRING |
| HIGH | src/backend/core/api/viewsets.py | 444 | DocumentViewSet API. This view set provides CRUD operations and additional actions for managing documents. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/backend/conftest.py | 113 | except Exception: # pylint: disable=broad-except # noqa: BLE001 | CODE |
| LOW | src/backend/conftest.py | 158 | except Exception: # pylint: disable=broad-except # noqa: BLE001 | CODE |
| LOW | src/backend/core/management/commands/index.py | 44 | except Exception as err: | CODE |
| LOW | …agement/commands/update_files_content_type_metadata.py | 82 | except Exception as exc: # noqa | CODE |
| LOW | src/backend/core/services/ai_services/blocknote.py | 73 | except Exception as exc: # pylint: disable=broad-except #noqa: BLE001 | CODE |
| MEDIUM | src/backend/core/services/ai_services/blocknote.py | 69 | def run_async_gen(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …kend/core/tests/documents/test_api_documents_update.py | 720 | # ============================================================================= | COMMENT |
| MEDIUM | …kend/core/tests/documents/test_api_documents_update.py | 722 | # ============================================================================= | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …core/tests/external_api/test_external_api_documents.py | 320 | CODE | |
| LOW | …agement/commands/update_files_content_type_metadata.py | 18 | CODE | |
| LOW | src/backend/core/api/viewsets.py | 1345 | CODE | |
| LOW | src/backend/core/api/viewsets.py | 2415 | CODE | |
| LOW | src/backend/core/api/__init__.py | 12 | CODE | |
| LOW | src/backend/core/services/ai_services/blocknote.py | 133 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | CONTRIBUTING.md | 170 | Remember that for your contributions to go through the CI, your commits have to be signed off with `git commit --signof | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gitlint/gitlint_emoji.py | 5 | CODE | |
| LOW | src/backend/core/apps.py | 19 | CODE | |
| LOW | …e/tests/external_api/test_external_api_documents_ai.py | 18 | CODE | |
| LOW | src/backend/impress/__init__.py | 3 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/backend/core/middleware.py | 21 | CODE | |
| LOW | src/backend/core/middleware.py | 39 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/backend/core/tests/test_services_ai_services.py | 270 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …apps/impress/src/features/help/components/HelpMenu.tsx | 43 | * The onboarding can be disable, so we need to check if it's enabled before displaying the help menu. | COMMENT |