跨平台 Python 异步聊天机器人框架 / Asynchronous multi-platform chatbot framework written in Python
This report summarizes scanner evidence for nonebot/nonebot2, a Python project with 7,738 GitHub stars. SynthScan examined 95,120 lines of code across 540 source files, recording 338 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 4.4 (Low 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? 80 finding(s).
Are imports declared and package/API names verified? 186 finding(s).
Are wrappers, guards, and repeated structures necessary? 131 finding(s).
Which changes need focused human review? 338 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 338 distinct pattern matches across 9 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 |
|---|---|---|---|---|
| LOW | tests/conftest.py | 25 | CODE | |
| LOW | tests/plugins/plugin/__init__.py | 1 | CODE | |
| LOW | tests/plugins/nested/plugins/nested_subplugin.py | 1 | CODE | |
| LOW | nonebot/params.py | 33 | CODE | |
| LOW | nonebot/params.py | 34 | CODE | |
| LOW | nonebot/params.py | 35 | CODE | |
| LOW | nonebot/params.py | 36 | CODE | |
| LOW | nonebot/params.py | 37 | CODE | |
| LOW | nonebot/params.py | 38 | CODE | |
| LOW | nonebot/params.py | 39 | CODE | |
| LOW | nonebot/params.py | 40 | CODE | |
| LOW | nonebot/params.py | 42 | CODE | |
| LOW | nonebot/params.py | 43 | CODE | |
| LOW | nonebot/params.py | 44 | CODE | |
| LOW | nonebot/params.py | 45 | CODE | |
| LOW | nonebot/params.py | 46 | CODE | |
| LOW | nonebot/compat.py | 89 | CODE | |
| LOW | nonebot/compat.py | 90 | CODE | |
| LOW | nonebot/compat.py | 100 | CODE | |
| LOW | nonebot/compat.py | 306 | CODE | |
| LOW | nonebot/matcher.py | 10 | CODE | |
| LOW | nonebot/matcher.py | 11 | CODE | |
| LOW | nonebot/matcher.py | 12 | CODE | |
| LOW | nonebot/matcher.py | 13 | CODE | |
| LOW | nonebot/matcher.py | 14 | CODE | |
| LOW | nonebot/matcher.py | 15 | CODE | |
| LOW | nonebot/matcher.py | 16 | CODE | |
| LOW | nonebot/matcher.py | 17 | CODE | |
| LOW | nonebot/matcher.py | 18 | CODE | |
| LOW | nonebot/matcher.py | 19 | CODE | |
| LOW | nonebot/permission.py | 15 | CODE | |
| LOW | nonebot/permission.py | 17 | CODE | |
| LOW | nonebot/log.py | 27 | CODE | |
| LOW | nonebot/log.py | 27 | CODE | |
| LOW | nonebot/__init__.py | 52 | CODE | |
| LOW | nonebot/__init__.py | 340 | CODE | |
| LOW | nonebot/__init__.py | 341 | CODE | |
| LOW | nonebot/__init__.py | 342 | CODE | |
| LOW | nonebot/__init__.py | 343 | CODE | |
| LOW | nonebot/__init__.py | 344 | CODE | |
| LOW | nonebot/__init__.py | 346 | CODE | |
| LOW | nonebot/__init__.py | 347 | CODE | |
| LOW | nonebot/__init__.py | 348 | CODE | |
| LOW | nonebot/__init__.py | 349 | CODE | |
| LOW | nonebot/__init__.py | 350 | CODE | |
| LOW | nonebot/__init__.py | 351 | CODE | |
| LOW | nonebot/__init__.py | 352 | CODE | |
| LOW | nonebot/__init__.py | 353 | CODE | |
| LOW | nonebot/__init__.py | 354 | CODE | |
| LOW | nonebot/__init__.py | 355 | CODE | |
| LOW | nonebot/__init__.py | 356 | CODE | |
| LOW | nonebot/__init__.py | 357 | CODE | |
| LOW | nonebot/__init__.py | 358 | CODE | |
| LOW | nonebot/__init__.py | 359 | CODE | |
| LOW | nonebot/__init__.py | 360 | CODE | |
| LOW | nonebot/__init__.py | 361 | CODE | |
| LOW | nonebot/__init__.py | 362 | CODE | |
| LOW | nonebot/__init__.py | 363 | CODE | |
| LOW | nonebot/__init__.py | 364 | CODE | |
| LOW | nonebot/__init__.py | 365 | CODE | |
| 126 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | website/docs/developer/adapter-writing.md | 0 | 根据平台事件的特性,转换平台 payload 为具体 event event 模型继承自 pydantic.basemodel,具体请参考 pydantic 文档 | STRING |
| HIGH | …sioned_docs/version-2.5.0/developer/adapter-writing.md | 0 | 根据平台事件的特性,转换平台 payload 为具体 event event 模型继承自 pydantic.basemodel,具体请参考 pydantic 文档 | STRING |
| HIGH | …sioned_docs/version-2.4.4/developer/adapter-writing.md | 0 | 根据平台事件的特性,转换平台 payload 为具体 event event 模型继承自 pydantic.basemodel,具体请参考 pydantic 文档 | STRING |
| HIGH | …sioned_docs/version-2.4.3/developer/adapter-writing.md | 0 | 根据平台事件的特性,转换平台 payload 为具体 event event 模型继承自 pydantic.basemodel,具体请参考 pydantic 文档 | STRING |
| HIGH | website/docs/best-practice/database/developer/README.md | 0 | first revision 迁移 id: xxxxxxxxxxxx 父迁移: 创建时间: 2006-01-02 15:04:05.999999 | STRING |
| HIGH | …rsion-2.5.0/best-practice/database/developer/README.md | 0 | first revision 迁移 id: xxxxxxxxxxxx 父迁移: 创建时间: 2006-01-02 15:04:05.999999 | STRING |
| HIGH | …rsion-2.4.4/best-practice/database/developer/README.md | 0 | first revision 迁移 id: xxxxxxxxxxxx 父迁移: 创建时间: 2006-01-02 15:04:05.999999 | STRING |
| HIGH | …rsion-2.4.3/best-practice/database/developer/README.md | 0 | first revision 迁移 id: xxxxxxxxxxxx 父迁移: 创建时间: 2006-01-02 15:04:05.999999 | STRING |
| HIGH | website/docs/best-practice/alconna/command.md | 0 | output 以下是建议的输入: * <abc: int> * --help * -h * -sct * --shortcut * foo * bar | STRING |
| HIGH | …ed_docs/version-2.5.0/best-practice/alconna/command.md | 0 | output 以下是建议的输入: * <abc: int> * --help * -h * -sct * --shortcut * foo * bar | STRING |
| HIGH | …ed_docs/version-2.4.4/best-practice/alconna/command.md | 0 | output 以下是建议的输入: * <abc: int> * --help * -h * -sct * --shortcut * foo * bar | STRING |
| HIGH | …ed_docs/version-2.4.3/best-practice/alconna/command.md | 0 | output 以下是建议的输入: * <abc: int> * --help * -h * -sct * --shortcut * foo * bar | STRING |
| HIGH | website/docs/best-practice/alconna/uniseg/segment.md | 0 | - 点击 action 类型的按钮时会触发一个关于 按钮回调 事件,该事件的 button 资源会包含上述 id - 点击 link 类型的按钮时会打开一个链接或者小程序,该链接的地址为 `url` - 点击 input 类型的按钮时会在用 | STRING |
| HIGH | …/version-2.5.0/best-practice/alconna/uniseg/segment.md | 0 | - 点击 action 类型的按钮时会触发一个关于 按钮回调 事件,该事件的 button 资源会包含上述 id - 点击 link 类型的按钮时会打开一个链接或者小程序,该链接的地址为 `url` - 点击 input 类型的按钮时会在用 | STRING |
| HIGH | …/version-2.4.4/best-practice/alconna/uniseg/segment.md | 0 | - 点击 action 类型的按钮时会触发一个关于 按钮回调 事件,该事件的 button 资源会包含上述 id - 点击 link 类型的按钮时会打开一个链接或者小程序,该链接的地址为 `url` - 点击 input 类型的按钮时会在用 | STRING |
| HIGH | …/version-2.4.3/best-practice/alconna/uniseg/segment.md | 0 | - 点击 action 类型的按钮时会触发一个关于 按钮回调 事件,该事件的 button 资源会包含上述 id - 点击 link 类型的按钮时会打开一个链接或者小程序,该链接的地址为 `url` - 点击 input 类型的按钮时会在用 | STRING |
| HIGH | website/docs/best-practice/alconna/uniseg/segment.md | 0 | 仅建议使用下列值:primary, secondary, success, warning, danger, info, link, grey, blue 此处规定 `grey` 与 `secondary` 等同, `blue` 与 `pr | STRING |
| HIGH | …/version-2.5.0/best-practice/alconna/uniseg/segment.md | 0 | 仅建议使用下列值:primary, secondary, success, warning, danger, info, link, grey, blue 此处规定 `grey` 与 `secondary` 等同, `blue` 与 `pr | STRING |
| HIGH | …/version-2.4.4/best-practice/alconna/uniseg/segment.md | 0 | 仅建议使用下列值:primary, secondary, success, warning, danger, info, link, grey, blue 此处规定 `grey` 与 `secondary` 等同, `blue` 与 `pr | STRING |
| HIGH | …/version-2.4.3/best-practice/alconna/uniseg/segment.md | 0 | 仅建议使用下列值:primary, secondary, success, warning, danger, info, link, grey, blue 此处规定 `grey` 与 `secondary` 等同, `blue` 与 `pr | STRING |
| HIGH | website/docs/best-practice/alconna/uniseg/segment.md | 0 | - admin: 仅管理者可操作 - all: 所有人可操作 - list[at]: 指定用户/身份组可操作 | STRING |
| HIGH | …/version-2.5.0/best-practice/alconna/uniseg/segment.md | 0 | - admin: 仅管理者可操作 - all: 所有人可操作 - list[at]: 指定用户/身份组可操作 | STRING |
| HIGH | …/version-2.4.4/best-practice/alconna/uniseg/segment.md | 0 | - admin: 仅管理者可操作 - all: 所有人可操作 - list[at]: 指定用户/身份组可操作 | STRING |
| HIGH | …/version-2.4.3/best-practice/alconna/uniseg/segment.md | 0 | - admin: 仅管理者可操作 - all: 所有人可操作 - list[at]: 指定用户/身份组可操作 | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_utils.py | 56 | def test_generic_check_issubclass(): | CODE |
| LOW | tests/test_utils.py | 72 | def test_is_coroutine_callable(): | CODE |
| LOW | tests/test_utils.py | 118 | def test_is_async_gen_callable(): | CODE |
| LOW | tests/test_driver.py | 401 | async def test_http_client_redirects(driver: Driver, server_url: URL): | CODE |
| LOW | tests/test_driver.py | 669 | async def test_http_client_session_redirects(driver: Driver, server_url: URL): | CODE |
| LOW | tests/test_driver.py | 718 | async def test_aiohttp_stream_request_skip_empty_chunk() -> None: | CODE |
| LOW | tests/test_driver.py | 799 | async def test_aiohttp_websocket_close_frame(msg_type: str) -> None: | CODE |
| LOW | tests/test_driver.py | 826 | def test_timeout_unset_vs_none(): | CODE |
| LOW | tests/test_driver.py | 955 | async def test_websocket_client_timeout(driver: Driver, server_url: URL): | CODE |
| LOW | tests/test_driver.py | 1007 | async def test_websocket_client_ping_timeout(driver: Driver, server_url: URL): | CODE |
| LOW | tests/test_driver.py | 1050 | async def test_websocket_client_ping_interval(driver: Driver, server_url: URL): | CODE |
| LOW | tests/test_broadcast.py | 61 | async def test_event_preprocessor_ignore(app: App, monkeypatch: pytest.MonkeyPatch): | CODE |
| LOW | tests/test_broadcast.py | 91 | async def test_event_preprocessor_exception( | CODE |
| LOW | tests/test_broadcast.py | 168 | async def test_event_postprocessor_exception( | CODE |
| LOW | tests/test_broadcast.py | 242 | async def test_run_preprocessor_ignore(app: App, monkeypatch: pytest.MonkeyPatch): | CODE |
| LOW | tests/test_broadcast.py | 272 | async def test_run_preprocessor_exception( | CODE |
| LOW | tests/test_broadcast.py | 354 | async def test_run_postprocessor_exception( | CODE |
| LOW | tests/test_config.py | 117 | def test_config_without_delimiter(): | CODE |
| LOW | tests/test_adapters/test_adapter.py | 91 | def _fake_setup_websocket_server(setup: WebSocketServerSetup): | CODE |
| LOW | tests/test_adapters/test_adapter.py | 205 | async def test_adapter_websocket_client(driver: Driver): | CODE |
| LOW | tests/test_adapters/test_bot.py | 28 | async def test_bot_calling_api_hook_simple(app: App): | CODE |
| LOW | tests/test_adapters/test_bot.py | 54 | async def test_bot_calling_api_hook_mock(app: App): | CODE |
| LOW | tests/test_adapters/test_bot.py | 81 | async def test_bot_calling_api_hook_multi_mock(app: App): | CODE |
| LOW | tests/test_adapters/test_bot.py | 121 | async def test_bot_called_api_hook_simple(app: App): | CODE |
| LOW | tests/test_adapters/test_bot.py | 153 | async def test_bot_called_api_hook_mock(app: App): | CODE |
| LOW | tests/test_adapters/test_bot.py | 197 | async def test_bot_called_api_hook_multi_mock(app: App): | CODE |
| LOW | tests/test_adapters/test_template.py | 36 | def test_rich_template_message(): | CODE |
| LOW | tests/test_plugin/test_get.py | 24 | def test_get_plugin_by_module_name(): | CODE |
| LOW | tests/test_plugin/test_get.py | 49 | def test_get_available_plugin(): | CODE |
| LOW | tests/test_plugin/test_get.py | 73 | def test_get_plugin_config_with_env(monkeypatch: pytest.MonkeyPatch): | CODE |
| LOW | tests/test_plugin/test_load.py | 155 | def test_require_not_declared(): | CODE |
| LOW | tests/test_plugin/test_load.py | 190 | def test_inherit_supported_adapters_not_found(): | CODE |
| LOW | tests/test_plugin/test_load.py | 264 | def test_inherit_supported_adapters_combine( | CODE |
| LOW | tests/plugins/param/param_arg.py | 31 | async def annotated_arg_prompt_result(key: Annotated[Any, ArgPromptResult()]) -> Any: | CODE |
| LOW | tests/test_matcher/test_matcher.py | 234 | async def test_default_permission_updater(app: App): | CODE |
| LOW | tests/test_matcher/test_matcher.py | 255 | async def test_user_permission_updater(app: App): | CODE |
| LOW | tests/test_matcher/test_matcher.py | 277 | async def test_custom_permission_updater(app: App): | CODE |
| LOW | nonebot/compat.py | 270 | def __get_pydantic_core_schema__( | CODE |
| LOW | nonebot/message.py | 136 | def _handle_ignored_exception( | CODE |
| LOW | nonebot/message.py | 153 | async def _apply_event_preprocessors( | CODE |
| LOW | nonebot/message.py | 210 | async def _apply_event_postprocessors( | CODE |
| LOW | nonebot/message.py | 315 | async def _apply_run_postprocessors( | CODE |
| LOW | nonebot/plugin/__init__.py | 61 | def _module_name_to_plugin_name(module_name: str) -> str: | CODE |
| LOW | nonebot/plugin/__init__.py | 87 | def _module_name_to_plugin_id( | CODE |
| LOW | nonebot/plugin/__init__.py | 148 | def get_plugin_by_module_name(module_name: str) -> "Plugin | None": | CODE |
| LOW | nonebot/plugin/__init__.py | 169 | def get_available_plugin_names() -> set[str]: | CODE |
| LOW | nonebot/plugin/load.py | 219 | def inherit_supported_adapters(*names: str) -> set[str] | None: | CODE |
| LOW | nonebot/plugin/manager.py | 84 | def _previous_controlled_modules(self) -> dict[str, str]: | CODE |
| LOW | nonebot/internal/rule.py | 79 | def _handle_skipped_exception( | CODE |
| LOW | nonebot/internal/adapter/bot.py | 85 | def _handle_mock_api_exception( | CODE |
| LOW | nonebot/internal/adapter/bot.py | 135 | def _handle_mock_api_exception( | CODE |
| LOW | nonebot/internal/adapter/template.py | 18 | def formatter_field_name_split( | CODE |
| LOW | nonebot/internal/matcher/matcher.py | 877 | def _handle_special_exception( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | website/docs/developer/adapter-writing.md | 73 | except Exception as e: | CODE |
| LOW | website/docs/developer/adapter-writing.md | 176 | except Exception as e: | CODE |
| LOW | website/docs/developer/adapter-writing.md | 186 | except Exception as e: | CODE |
| LOW | website/docs/developer/adapter-writing.md | 312 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.5.0/developer/adapter-writing.md | 73 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.5.0/developer/adapter-writing.md | 176 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.5.0/developer/adapter-writing.md | 186 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.5.0/developer/adapter-writing.md | 312 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.4.4/developer/adapter-writing.md | 73 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.4.4/developer/adapter-writing.md | 176 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.4.4/developer/adapter-writing.md | 186 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.4.4/developer/adapter-writing.md | 312 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.4.3/developer/adapter-writing.md | 73 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.4.3/developer/adapter-writing.md | 176 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.4.3/developer/adapter-writing.md | 186 | except Exception as e: | CODE |
| LOW | …sioned_docs/version-2.4.3/developer/adapter-writing.md | 312 | except Exception as e: | CODE |
| LOW | tests/test_driver.py | 216 | except Exception as e: | CODE |
| LOW | nonebot/permission.py | 102 | except Exception: | CODE |
| LOW | nonebot/__init__.py | 63 | except Exception: # pragma: no cover | CODE |
| LOW | nonebot/message.py | 396 | except Exception as e: | CODE |
| LOW | nonebot/message.py | 406 | except Exception as e: | CODE |
| LOW | nonebot/message.py | 462 | except Exception as e: | CODE |
| LOW | nonebot/message.py | 557 | except Exception as e: | CODE |
| LOW | nonebot/rule.py | 168 | except Exception: | CODE |
| LOW | nonebot/rule.py | 223 | except Exception: | CODE |
| LOW | nonebot/rule.py | 278 | except Exception: | CODE |
| LOW | nonebot/rule.py | 328 | except Exception: | CODE |
| LOW | nonebot/rule.py | 567 | except Exception as e: | CODE |
| LOW | nonebot/rule.py | 687 | except Exception: | CODE |
| LOW | nonebot/utils.py | 271 | except Exception as e: | CODE |
| LOW | nonebot/plugins/single_session.py | 25 | except Exception: | CODE |
| LOW | nonebot/plugin/manager.py | 196 | except Exception as e: | CODE |
| LOW | nonebot/plugin/manager.py | 257 | except Exception: | CODE |
| LOW | nonebot/internal/params.py | 308 | except Exception as e: | CODE |
| LOW | nonebot/internal/permission.py | 139 | except Exception: | CODE |
| LOW | nonebot/internal/adapter/bot.py | 129 | except Exception as e: | CODE |
| LOW | nonebot/internal/matcher/matcher.py | 602 | except Exception: | CODE |
| LOW | nonebot/internal/matcher/matcher.py | 628 | except Exception: | CODE |
| LOW | nonebot/dependencies/utils.py | 46 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/fake_server.py | 86 | CODE | |
| LOW | tests/test_param.py | 793 | CODE | |
| LOW | nonebot/config.py | 133 | CODE | |
| LOW | nonebot/config.py | 142 | CODE | |
| LOW | nonebot/config.py | 183 | CODE | |
| LOW | nonebot/rule.py | 88 | CODE | |
| LOW | nonebot/utils.py | 154 | CODE | |
| LOW | nonebot/plugin/manager.py | 156 | CODE | |
| LOW | nonebot/internal/params.py | 571 | CODE | |
| LOW | nonebot/internal/params.py | 581 | CODE | |
| LOW | nonebot/internal/driver/model.py | 66 | CODE | |
| LOW | nonebot/internal/driver/model.py | 229 | CODE | |
| LOW | nonebot/internal/adapter/message.py | 108 | CODE | |
| LOW | nonebot/internal/adapter/message.py | 154 | CODE | |
| LOW | nonebot/internal/adapter/message.py | 254 | CODE | |
| LOW | nonebot/internal/adapter/template.py | 88 | CODE | |
| LOW | nonebot/internal/adapter/template.py | 121 | CODE | |
| LOW | nonebot/internal/matcher/matcher.py | 822 | CODE | |
| LOW | nonebot/dependencies/__init__.py | 120 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 63 | CODE | |
| LOW | tests/utils.py | 76 | CODE | |
| LOW | tests/plugins/param/priority.py | 11 | CODE | |
| LOW | nonebot/plugin/on.py | 114 | CODE | |
| LOW | nonebot/internal/driver/model.py | 66 | CODE | |
| LOW | nonebot/internal/matcher/matcher.py | 195 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nonebot/internal/params.py | 140 | def set_result(self, result: Any) -> None: | CODE |
| LOW | nonebot/internal/params.py | 150 | def set_exception(self, exception: BaseException) -> None: | CODE |
| LOW | nonebot/internal/matcher/matcher.py | 711 | def set_receive(self, id: str, event: Event) -> None: | CODE |
| LOW | nonebot/internal/matcher/matcher.py | 742 | def set_arg(self, key: str, message: Message) -> None: | CODE |
| LOW | nonebot/internal/matcher/matcher.py | 746 | def set_target(self, target: str, cache: bool = True) -> None: | CODE |
| LOW | nonebot/internal/matcher/manager.py | 91 | def set_provider(self, provider_class: type[MatcherProvider]) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | nonebot/internal/driver/abstract.py | 274 | CODE | |
| MEDIUM | nonebot/internal/driver/abstract.py | 316 | CODE | |
| MEDIUM | nonebot/internal/driver/abstract.py | 340 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | website/docusaurus.config.ts | 261 | // "**/_*/**", | COMMENT |
| LOW | website/src/components/Paginate/index.tsx | 41 | // (element: HTMLElement | null) => { | COMMENT |