A code-completion engine for Vim
This report summarizes scanner evidence for ycm-core/YouCompleteMe, a Python project with 25,871 GitHub stars. SynthScan examined 26,176 lines of code across 85 source files, recording 159 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 11.4 (Moderate 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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 135 finding(s).
Are imports declared and package/API names verified? 15 finding(s).
Are wrappers, guards, and repeated structures necessary? 10 finding(s).
Which changes need focused human review? 159 finding(s).
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.
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.
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.
The scanner identified 159 distinct pattern matches across 10 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .ycm_extra_conf.py | 1 | # This file is NOT licensed under the GPLv3, which is the license for the rest | COMMENT |
| MEDIUM | python/ycm/signature_help.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/youcompleteme.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/vimsupport.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/paths.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/diagnostic_filter.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/hierarchy_tree.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/diagnostic_interface.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/inlay_hints.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/syntax_parse.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/text_properties.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/semantic_highlighting.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/buffer.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/base.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/unsafe_thread_pool_executor.py | 21 | # This file provides an UnsafeThreadPoolExecutor, which operates exactly like | COMMENT |
| MEDIUM | python/ycm/omni_completer.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/scrolling_range.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/omni_completer_test.py | 5 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/base_test.py | 4 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/test_utils.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/signature_help_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/diagnostic_filter_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/event_notification_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/postcomplete_test.py | 5 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/__init__.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/completion_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/command_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/youcompleteme_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/youcompleteme_test.py | 1218 | # Create the request and make the first poll; we expect no response | COMMENT |
| MEDIUM | python/ycm/tests/youcompleteme_test.py | 1278 | # Create the request and make the first poll; we expect no response | COMMENT |
| MEDIUM | python/ycm/tests/youcompleteme_test.py | 1318 | # Create the request and make the first poll; we expect no response | COMMENT |
| MEDIUM | python/ycm/tests/syntax_parse_test.py | 4 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/vimsupport_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/vimsupport_test.py | 230 | # Create a two lines buffer whose first | COMMENT |
| MEDIUM | python/ycm/tests/vimsupport_test.py | 244 | # Create a two lines buffer whose first | COMMENT |
| MEDIUM | python/ycm/tests/vimsupport_test.py | 259 | # Create a two lines buffer whose first | COMMENT |
| MEDIUM | python/ycm/tests/diagnostic_interface_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/mock_utils.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/paths_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/client/completion_request_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/client/debug_info_request_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/client/omni_completion_request_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/client/messages_request_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/client/command_request_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/tests/client/base_request_test.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/event_notification.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/ycmd_keepalive.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/debug_info_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/shutdown_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/command_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/inlay_hints_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/completion_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/omni_completion_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/messages_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/signature_help_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/completer_available_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/resolve_completion_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/semantic_tokens_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| MEDIUM | python/ycm/client/base_request.py | 3 | # This file is part of YouCompleteMe. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .ycm_extra_conf.py | 1 | # This file is NOT licensed under the GPLv3, which is the license for the rest | COMMENT |
| LOW | python/ycm/signature_help.py | 1 | # Copyright (C) 2011-2018 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/youcompleteme.py | 1 | # Copyright (C) 2011-2024 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/youcompleteme.py | 561 | def UpdateWithNewDiagnosticsForFile( self, filepath, diagnostics ): | COMMENT |
| LOW | python/ycm/youcompleteme.py | 581 | # - Use a special buffer for project errors | COMMENT |
| LOW | python/ycm/vimsupport.py | 1 | # Copyright (C) 2011-2018 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/vimsupport.py | 821 | vim_items = [ prompt ] | COMMENT |
| LOW | python/ycm/paths.py | 1 | # Copyright (C) 2015-2017 YouCompleteMe contributors. | COMMENT |
| LOW | python/ycm/diagnostic_filter.py | 1 | # Copyright (C) 2016 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/hierarchy_tree.py | 1 | # Copyright (C) 2024 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/diagnostic_interface.py | 1 | # Copyright (C) 2013-2018 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/inlay_hints.py | 1 | # Copyright (C) 2022, YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/syntax_parse.py | 1 | # Copyright (C) 2013 Google Inc. | COMMENT |
| LOW | python/ycm/text_properties.py | 1 | # Copyright (C) 2020, YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/semantic_highlighting.py | 1 | # Copyright (C) 2020, YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/buffer.py | 1 | # Copyright (C) 2016, Davit Samvelyan | COMMENT |
| LOW | python/ycm/base.py | 1 | # Copyright (C) 2011, 2012 Google Inc. | COMMENT |
| LOW | python/ycm/omni_completer.py | 1 | # Copyright (C) 2011-2019 ycmd contributors | COMMENT |
| LOW | python/ycm/scrolling_range.py | 1 | # Copyright (C) 2023, YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/tests/omni_completer_test.py | 1 | # encoding: utf-8 | COMMENT |
| LOW | python/ycm/tests/base_test.py | 1 | # Copyright (C) 2013 Google Inc. | COMMENT |
| LOW | python/ycm/tests/test_utils.py | 1 | # Copyright (C) 2011-2019 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/signature_help_test.py | 1 | # Copyright (C) 2019 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/diagnostic_filter_test.py | 1 | # Copyright (C) 2016 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/event_notification_test.py | 1 | # Copyright (C) 2015-2018 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/postcomplete_test.py | 1 | # encoding: utf-8 | COMMENT |
| LOW | python/ycm/tests/__init__.py | 1 | # Copyright (C) 2016-2020 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/completion_test.py | 1 | # Copyright (C) 2016 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/command_test.py | 1 | # Copyright (C) 2016-2018 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/youcompleteme_test.py | 1 | # Copyright (C) 2016-2018 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/syntax_parse_test.py | 1 | # Copyright (C) 2013 Google Inc. | COMMENT |
| LOW | python/ycm/tests/vimsupport_test.py | 1 | # Copyright (C) 2015-2018 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/diagnostic_interface_test.py | 1 | # Copyright (C) 2015-2018 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/mock_utils.py | 1 | # Copyright (C) 2017 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/paths_test.py | 1 | # Copyright (C) 2016-2017 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/client/completion_request_test.py | 1 | # Copyright (C) 2015-2019 YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/tests/client/debug_info_request_test.py | 1 | # Copyright (C) 2017 YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/tests/client/omni_completion_request_test.py | 1 | # Copyright (C) 2020 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/tests/client/messages_request_test.py | 1 | # Copyright (C) 2017 YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/tests/client/command_request_test.py | 1 | # Copyright (C) 2016 YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/tests/client/base_request_test.py | 1 | # Copyright (C) 2017-2018 YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/client/event_notification.py | 1 | # Copyright (C) 2013-2018 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/client/ycmd_keepalive.py | 1 | # Copyright (C) 2013 Google Inc. | COMMENT |
| LOW | python/ycm/client/debug_info_request.py | 1 | # Copyright (C) 2016-2017 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/client/shutdown_request.py | 1 | # Copyright (C) 2016 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/client/command_request.py | 1 | # Copyright (C) 2013 Google Inc. | COMMENT |
| LOW | python/ycm/client/inlay_hints_request.py | 1 | # Copyright (C) 2022, YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/client/completion_request.py | 1 | # Copyright (C) 2013-2019 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/client/omni_completion_request.py | 1 | # Copyright (C) 2013 Google Inc. | COMMENT |
| LOW | python/ycm/client/messages_request.py | 1 | # Copyright (C) 2017 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/client/signature_help_request.py | 1 | # Copyright (C) 2019 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/client/completer_available_request.py | 1 | # Copyright (C) 2013 Google Inc. | COMMENT |
| LOW | python/ycm/client/resolve_completion_request.py | 1 | # Copyright (C) 2020 YouCompleteMe contributors | COMMENT |
| LOW | python/ycm/client/semantic_tokens_request.py | 1 | # Copyright (C) 2020, YouCompleteMe Contributors | COMMENT |
| LOW | python/ycm/client/base_request.py | 1 | # Copyright (C) 2013-2018 YouCompleteMe contributors | COMMENT |
| LOW | .github/workflows/lock_old_issues.yaml | 21 | # pr-lock-inactive-days: '365' | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/ycm/youcompleteme.py | 534 | except KeyError: | CODE |
| HIGH | python/ycm/tests/__init__.py | 102 | except Exception: | CODE |
| HIGH | python/ycm/tests/__init__.py | 91 | except ( URLError, HTTPError ): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/ycm/vimsupport.py | 185 | # In that case, just return 0 rather than spamming an error to the console. | COMMENT |
| LOW | python/ycm/vimsupport.py | 973 | # file is already open and visible, just return that buffer number (and an | COMMENT |
| MEDIUM | python/ycm/unsafe_thread_pool_executor.py | 28 | # it's safe (the aforementioned network requests case). | COMMENT |
| LOW | python/ycm/client/base_request.py | 100 | # up; see Requests docs for details (we just pass the param along). | COMMENT |
| LOW | python/ycm/client/base_request.py | 125 | # up; see Requests docs for details (we just pass the param along). | COMMENT |
| LOW | python/ycm/client/base_request.py | 142 | # up; see Requests docs for details (we just pass the param along). | COMMENT |
| LOW | python/ycm/client/base_request.py | 151 | # up; see Requests docs for details (we just pass the param along). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/testdata/python/doc.py | 17 | """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum egestas libero urna, vel sagittis felis condime | STRING |
| LOW⚡ | test/testdata/python/doc.py | 17 | """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum egestas libero urna, vel sagittis felis condime | STRING |
| LOW⚡ | test/testdata/python/doc.py | 23 | """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum egestas | STRING |
| LOW⚡ | test/testdata/python/doc.py | 23 | """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum egestas | STRING |
| LOW | python/ycm/tests/client/completion_request_test.py | 230 | 'extra_menu_info': 'ESPECIALLY LONG EXTRA MENU INFO LOREM IPSUM DOLOR', | CODE |
| LOW | python/ycm/tests/client/completion_request_test.py | 239 | 'info' : 'ESPECIALLY LONG EXTRA MENU INFO LOREM IPSUM DOLOR\n\n' + | CODE |
| LOW | python/ycm/tests/client/completion_request_test.py | 281 | 'extra_menu_info': 'ESPECIALLY LONG EXTRA MENU INFO LOREM IPSUM DOLOR', | CODE |
| LOW | python/ycm/tests/client/completion_request_test.py | 288 | 'menu' : 'ESPECIALLY LONG EXTRA MENU INFO LOREM IPSUM DOLOR', | CODE |
| LOW⚡ | python/ycm/tests/client/completion_request_test.py | 306 | 'extra_menu_info': 'ESPECIALLY LONG METHOD SIGNATURE LOREM IPSUM', | CODE |
| LOW⚡ | python/ycm/tests/client/completion_request_test.py | 308 | 'detailed_info': 'ESPECIALLY LONG METHOD SIGNATURE LOREM IPSUM', | CODE |
| LOW⚡ | python/ycm/tests/client/completion_request_test.py | 315 | 'info' : 'ESPECIALLY LONG METHOD SIGNATURE LOREM IPSUM\n' + | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/ycm/youcompleteme.py | 291 | CODE | |
| LOW | python/ycm/youcompleteme.py | 891 | CODE | |
| LOW | python/ycm/vimsupport.py | 679 | CODE | |
| LOW | python/ycm/diagnostic_interface.py | 210 | CODE | |
| LOW | python/ycm/semantic_highlighting.py | 111 | CODE | |
| LOW | python/ycm/tests/test_utils.py | 660 | CODE | |
| LOW | python/ycm/tests/test_utils.py | 615 | CODE | |
| LOW | python/ycm/tests/event_notification_test.py | 261 | CODE | |
| LOW | python/ycm/client/command_request.py | 164 | CODE | |
| LOW | python/ycm/client/messages_request.py | 73 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/ycm/tests/test_utils.py | 762 | except Exception as test_exception: | CODE |
| MEDIUM | python/ycm/tests/test_utils.py | 759 | def Wrapper( *args, **kwargs ): | CODE |
| LOW | python/ycm/tests/__init__.py | 102 | except Exception: | CODE |
| MEDIUM | python/ycm/tests/__init__.py | 97 | def StopServer( ycm ): | CODE |
| LOW | python/ycm/tests/client/completion_request_test.py | 38 | except Exception: | CODE |
| LOW | python/ycm/client/base_request.py | 90 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.py | 3 | CODE | |
| LOW | install.py | 4 | CODE | |
| LOW | install.py | 5 | CODE | |
| LOW | install.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/ycm/vimsupport.py | 1329 | # Open the file. | COMMENT |
| LOW | python/ycm/vimsupport.py | 1387 | # Check if those lines correspond to a previous visual selection and if they | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/ycm/tests/test_utils.py | 417 | CODE |