Accelerate your web app development | Build fast. Run fast.
This report summarizes scanner evidence for sanic-org/sanic, a Python project with 18,638 GitHub stars. SynthScan examined 101,089 lines of code across 494 source files, recording 1285 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 16.0 (Elevated 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? 1001 finding(s).
Are imports declared and package/API names verified? 156 finding(s).
Are wrappers, guards, and repeated structures necessary? 983 finding(s).
Which changes need focused human review? 1285 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 1285 distinct pattern matches across 16 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 | guide/webapp/display/page/docobject.py | 299 | def _define_heading_and_class( | CODE |
| LOW | guide/webapp/display/plugins/notification.py | 45 | def _render_admonition_content(self, _, text) -> str: | CODE |
| LOW | guide/webapp/display/search/search.py | 86 | def _inverse_document_frequency(docs: list[Document]) -> dict[str, float]: | CODE |
| LOW | guide/webapp/worker/livereload.js | 2173 | getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { | CODE |
| LOW | guide/webapp/worker/livereload.js | 3495 | value: function collectImportedStylesheets(link, styleSheet, result) { | CODE |
| LOW | guide/content/en/guide/basics/middleware.md | 145 | def convert_slug_to_underscore(request: Request): | CODE |
| LOW | guide/content/en/guide/basics/tasks.md | 11 | async def notify_server_started_after_five_seconds(): | CODE |
| LOW | guide/content/en/guide/how-to/cors.md | 73 | def _compile_routes_needing_options( | CODE |
| LOW | guide/content/en/plugins/sanic-testing/clients.md | 120 | def test_multiple_endpoints_on_same_server(app): | CODE |
| LOW | tests/test_redirect.py | 35 | async def redirect_with_header_injection(request): | CODE |
| LOW | tests/test_redirect.py | 54 | def test_redirect_headers_none(redirect_app): | CODE |
| LOW | tests/test_redirect.py | 75 | def test_get_then_redirect_follow_redirect(redirect_app): | CODE |
| LOW | tests/test_redirect.py | 99 | def test_redirect_with_header_injection(redirect_app): | CODE |
| LOW | tests/test_redirect.py | 120 | def test_redirect_with_params(app, test_str): | CODE |
| LOW | tests/test_handler.py | 6 | def test_handler_operation_order(app: Sanic): | CODE |
| LOW | tests/test_json_encoding.py | 60 | def test_change_encoder_to_some_custom(): | CODE |
| LOW | tests/test_test_client_port.py | 11 | def test_test_client_port_none(app): | CODE |
| LOW | tests/test_test_client_port.py | 25 | def test_test_client_port_default(app): | CODE |
| LOW | tests/test_utils.py | 19 | def test_load_module_from_file_location(location): | CODE |
| LOW | tests/test_utils.py | 25 | def test_loaded_module_from_file_location_name(): | CODE |
| LOW | tests/test_utils.py | 36 | def test_load_module_from_file_location_with_non_existing_env_variable(): | CODE |
| LOW | tests/test_utils.py | 44 | def test_load_module_from_file_location_using_env(): | CODE |
| LOW | tests/conftest.py | 82 | def generate_random_direct_route(self, max_route_depth=4): | CODE |
| LOW | tests/conftest.py | 115 | def generate_url_for_template(template): | CODE |
| LOW | tests/test_bad_request.py | 6 | def test_bad_request_response(app: Sanic): | CODE |
| LOW⚡ | tests/test_response.py | 251 | def test_chunked_streaming_adds_correct_headers(streaming_app): | CODE |
| LOW⚡ | tests/test_response.py | 260 | def test_chunked_streaming_returns_correct_content(streaming_app): | CODE |
| LOW⚡ | tests/test_response.py | 266 | async def test_chunked_streaming_returns_correct_content_asgi(streaming_app): | CODE |
| LOW⚡ | tests/test_response.py | 271 | def test_non_chunked_streaming_adds_correct_headers(non_chunked_streaming_app): | CODE |
| LOW⚡ | tests/test_response.py | 280 | async def test_non_chunked_streaming_adds_correct_headers_asgi( | CODE |
| LOW⚡ | tests/test_response.py | 289 | def test_non_chunked_streaming_returns_correct_content( | CODE |
| LOW⚡ | tests/test_response.py | 296 | def test_stream_response_with_cookies(app): | CODE |
| LOW | tests/test_response.py | 41 | def test_response_body_not_a_string(app): | CODE |
| LOW | tests/test_response.py | 117 | def test_response_content_length(app): | CODE |
| LOW | tests/test_response.py | 150 | def test_response_content_length_with_different_data_types(app): | CODE |
| LOW | tests/test_response.py | 152 | async def get_data_with_different_types(request: Request): | CODE |
| LOW | tests/test_response.py | 174 | async def no_content_unmodified_handler(request: Request): | CODE |
| LOW | tests/test_response.py | 239 | def non_chunked_streaming_app(app): | CODE |
| LOW | tests/test_response.py | 315 | def test_stream_response_without_cookies(app): | CODE |
| LOW | tests/test_response.py | 346 | def get_file_last_modified_timestamp( | CODE |
| LOW | tests/test_response.py | 383 | def test_file_response_custom_filename( | CODE |
| LOW | tests/test_response.py | 435 | def test_file_stream_response(app: Sanic, file_name, static_file_directory): | CODE |
| LOW | tests/test_response.py | 460 | def test_file_stream_response_custom_filename( | CODE |
| LOW | tests/test_response.py | 479 | def test_file_stream_head_response( | CODE |
| LOW | tests/test_response.py | 524 | def test_file_stream_response_range( | CODE |
| LOW | tests/test_response.py | 571 | def test_direct_response_stream(app: Sanic): | CODE |
| LOW | tests/test_response.py | 587 | async def test_direct_response_stream_asgi(app: Sanic): | CODE |
| LOW | tests/test_response.py | 701 | def test_send_response_after_eof_should_fail( | CODE |
| LOW | tests/test_response.py | 733 | async def test_send_response_after_eof_should_fail_asgi( | CODE |
| LOW | tests/test_response.py | 768 | def test_file_response_headers( | CODE |
| LOW | tests/test_response.py | 787 | def file_route_cache_default_last_modified( | CODE |
| LOW | tests/test_response.py | 906 | def test_file_validating_invalid_header( | CODE |
| LOW | tests/test_response.py | 993 | def test_stream_response_with_default_headers(app: Sanic): | CODE |
| LOW | tests/test_blueprint_copy.py | 83 | def test_bp_copy_without_route_overwriting(app: Sanic): | CODE |
| LOW | tests/test_blueprint_copy.py | 117 | def test_bp_copy_with_route_overwriting(app: Sanic): | CODE |
| LOW | tests/test_logging.py | 84 | def test_logging_pass_customer_logconfig(): | CODE |
| LOW | tests/test_logging.py | 129 | def test_logging_modified_root_logger_config(): | CODE |
| LOW | tests/test_logging.py | 140 | def test_access_log_client_ip_remote_addr(monkeypatch): | CODE |
| LOW | tests/test_logging.py | 169 | def test_access_log_client_ip_reqip(monkeypatch): | CODE |
| LOW | tests/test_logging.py | 289 | def test_log_extra_config_respected(): | CODE |
| 771 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | guide/webapp/display/page/page.py | 115 | except KeyError: | CODE |
| HIGH | guide/webapp/display/page/page.py | 120 | except KeyError: | CODE |
| HIGH | guide/webapp/display/page/page.py | 95 | except KeyError: | CODE |
| HIGH | guide/webapp/display/page/page.py | 100 | except KeyError: | CODE |
| HIGH | guide/webapp/display/page/docobject.py | 49 | except ValueError: | CODE |
| HIGH | tests/conftest.py | 142 | except RouteExists: | CODE |
| HIGH | tests/test_server_events.py | 51 | except KeyboardInterrupt: | CODE |
| HIGH | tests/test_unix_socket.py | 42 | except FileNotFoundError: | CODE |
| HIGH | tests/test_unix_socket.py | 46 | except FileNotFoundError: | CODE |
| HIGH | tests/test_unix_socket.py | 52 | except FileNotFoundError: | CODE |
| HIGH | tests/test_unix_socket.py | 56 | except FileNotFoundError: | CODE |
| HIGH | tests/test_signals.py | 598 | except asyncio.TimeoutError: | CODE |
| HIGH | tests/test_motd.py | 18 | except KeyError: | CODE |
| HIGH | tests/test_prepare.py | 22 | except KeyError: | CODE |
| HIGH | tests/test_cli.py | 37 | except SystemExit: | CODE |
| HIGH | tests/test_app.py | 217 | except Exception: | CODE |
| HIGH | sanic/config.py | 264 | except AttributeError: | CODE |
| HIGH | sanic/config.py | 380 | except ValueError: | CODE |
| HIGH | sanic/compat.py | 31 | except ImportError: | CODE |
| HIGH | sanic/app.py | 1860 | except CancelledError: | CODE |
| HIGH | sanic/exceptions.py | 97 | except AttributeError: | CODE |
| HIGH | sanic/headers.py | 424 | except (KeyError, IndexError): | CODE |
| HIGH | sanic/headers.py | 467 | except ValueError: | CODE |
| HIGH | sanic/errorpages.py | 369 | except BadRequest: | CODE |
| HIGH | sanic/mixins/startup.py | 816 | except ImportError: # no cov | CODE |
| HIGH | sanic/mixins/startup.py | 1439 | except KeyError: | CODE |
| HIGH | sanic/mixins/startup.py | 1177 | except OSError: | CODE |
| HIGH | sanic/mixins/static.py | 317 | except HeaderNotFound: | CODE |
| HIGH | sanic/server/runners.py | 337 | except (BrokenPipeError, ConnectionResetError, EOFError): | CODE |
| HIGH | sanic/server/runners.py | 202 | except (RuntimeError, KeyboardInterrupt): | CODE |
| HIGH | sanic/server/runners.py | 217 | except (NotImplementedError, OSError): | CODE |
| HIGH | sanic/server/socket.py | 55 | except FileNotFoundError: | CODE |
| HIGH | sanic/server/socket.py | 94 | except FileNotFoundError: | CODE |
| HIGH | sanic/server/websockets/frame.py | 124 | except asyncio.TimeoutError: | CODE |
| HIGH | sanic/server/websockets/impl.py | 424 | except asyncio.CancelledError: | CODE |
| HIGH | sanic/server/websockets/impl.py | 364 | except Exception: | CODE |
| HIGH | sanic/server/websockets/impl.py | 325 | except Exception: | CODE |
| HIGH | sanic/server/websockets/impl.py | 419 | except RuntimeError: | CODE |
| HIGH | sanic/server/websockets/impl.py | 454 | except asyncio.CancelledError: | CODE |
| HIGH | sanic/server/protocols/http_protocol.py | 48 | except ModuleNotFoundError: # no cov | CODE |
| HIGH | sanic/server/protocols/http_protocol.py | 61 | except AttributeError: | CODE |
| HIGH | sanic/server/protocols/http_protocol.py | 163 | except CancelledError: | CODE |
| HIGH | sanic/server/protocols/websocket_protocol.py | 221 | except AttributeError: | CODE |
| HIGH | sanic/cli/console.py | 301 | except (ConnectionResetError, BrokenPipeError): | CODE |
| HIGH | sanic/cli/daemon.py | 108 | except OSError: | CODE |
| HIGH | sanic/request/types.py | 320 | except AttributeError: | CODE |
| HIGH | sanic/request/types.py | 381 | except AttributeError: | CODE |
| HIGH | sanic/request/types.py | 1083 | except AttributeError: | CODE |
| HIGH | sanic/request/types.py | 632 | except ValueError: | CODE |
| HIGH | sanic/request/types.py | 542 | except ValueError: | CODE |
| HIGH | sanic/worker/process.py | 118 | except (BrokenPipeError, ConnectionResetError, EOFError): | CODE |
| HIGH | sanic/worker/process.py | 122 | except (KeyError, AttributeError, ProcessLookupError): | CODE |
| HIGH | sanic/worker/daemon.py | 48 | except OSError: | CODE |
| HIGH | sanic/worker/daemon.py | 55 | except OSError: | CODE |
| HIGH | sanic/worker/daemon.py | 41 | except OSError: | CODE |
| HIGH | sanic/worker/daemon.py | 430 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | sanic/signals.py | 161 | Get the handlers for a signal Args: event (str): The event to get the handlers for cond | STRING |
| HIGH | sanic/signals.py | 275 | Dispatch a signal to all handlers that match the event Args: event (str): The event to dispatch | STRING |
| HIGH | sanic/signals.py | 373 | Finalize the router and compile the routes Args: do_compile (bool, optional): Whether to compile th | STRING |
| HIGH | sanic/config.py | 113 | Convert an environment variable to a Python value. Args: full_key: The full environment variable na | STRING |
| HIGH | sanic/config.py | 225 | Update the config with new values. This method will update the config with the values from the provided | STRING |
| HIGH | sanic/blueprints.py | 811 | Set the Blueprint object at the specified index. Abstract method implemented to turn the `BlueprintGroup` class | STRING |
| HIGH | sanic/blueprints.py | 846 | Delete the Blueprint object at the specified index. Abstract method implemented to turn the `BlueprintGroup` cl | STRING |
| HIGH | sanic/blueprints.py | 888 | Decorate a function to handle exceptions for all blueprints in the group. In case of nested Blueprint Groups, t | STRING |
| HIGH | sanic/app.py | 678 | Dispatches an event to the signal router. Args: event (str): Name of the event to dispatch. | STRING |
| HIGH | sanic/app.py | 729 | Wait for a specific event to be triggered. This method waits for a named event to be triggered and can be used | STRING |
| HIGH | sanic/app.py | 943 | Build a URL based on a view name and the values provided. This method constructs URLs for a given view name, ta | STRING |
| HIGH | sanic/app.py | 2055 | Extend Sanic with additional functionality using Sanic Extensions. This method enables you to add one or more S | STRING |
| HIGH | sanic/app.py | 2114 | Register a Sanic instance with the class registry. This method adds a Sanic application instance to the class r | STRING |
| HIGH | sanic/app.py | 2144 | Unregister a Sanic instance from the class registry. This method removes a previously registered Sanic applicat | STRING |
| HIGH | sanic/app.py | 2173 | Retrieve an instantiated Sanic instance by name. This method is best used when needing to get access to an alre | STRING |
| HIGH | sanic/headers.py | 299 | Parse an Accept header and order the acceptable media types according to RFC 7231, s. 5.3.2 https://datatracker.iet | STRING |
| HIGH | sanic/router.py | 55 | Retrieve a `Route` object containing the details about how to handle a response for a given request :param requ | STRING |
| HIGH | sanic/views.py | 161 | Return view function for use with the routing system, that dispatches request to appropriate handler method. If | STRING |
| HIGH | sanic/response/convenience.py | 73 | Returns response object with body in text format. Args: body (str): Response data. status (int, opt | STRING |
| HIGH | sanic/response/types.py | 449 | Pops a key from the response's raw_body, ensuring that body is kept up to date. This can only be used if raw_bo | STRING |
| HIGH | sanic/mixins/startup.py | 179 | Run the HTTP Server and listen until keyboard interrupt or term signal. On termination, drain connections before closing | STRING |
| HIGH | sanic/mixins/startup.py | 310 | Prepares one or more Sanic applications to be served simultaneously. This low-level API is typically used when | STRING |
| HIGH | sanic/mixins/startup.py | 480 | Low level API for creating a Sanic Server instance. This method will create a Sanic Server instance, b | STRING |
| HIGH | sanic/mixins/startup.py | 958 | Serve one or more Sanic applications. This is the main entry point for running Sanic applications. It s | STRING |
| HIGH | sanic/mixins/static.py | 52 | Register a root to serve files from. The input can either be a file or a directory. This method provides an eas | STRING |
| HIGH | sanic/mixins/middleware.py | 111 | Register a middleware to be called before a request is handled. This is the same as *@app.middleware('request') | STRING |
| HIGH | sanic/mixins/middleware.py | 138 | Register a middleware to be called after a response is created. This is the same as *@app.middleware('response' | STRING |
| HIGH | sanic/mixins/routes.py | 57 | Decorate a function to be registered as a route. Args: uri (str): Path of the URL. meth | STRING |
| HIGH | sanic/mixins/routes.py | 228 | A helper method to register class-based view or functions as a handler to the application url routes. Args: | STRING |
| HIGH | sanic/server/runners.py | 62 | Start asynchronous HTTP Server on an individual process. :param host: Address to host on :param port: Port to h | STRING |
| HIGH | sanic/request/types.py | 560 | Load the request body as JSON Args: loads (Callable, optional): A custom JSON loader. Defaults to N | STRING |
| HIGH | sanic/request/types.py | 705 | Parse `query_string` using `urllib.parse.parse_qs`. This methods is used by the `args` property, but it also | STRING |
| HIGH | sanic/handlers/error.py | 148 | Provide a default behavior for the objects of ErrorHandler. If a developer chooses to extend the ErrorHandler, | STRING |
| HIGH | sanic/handlers/directory.py | 75 | Handle the request. Args: request (Request): The incoming request object. path (str): T | STRING |
| HIGH | sanic/cookies/response.py | 159 | Add a cookie to the CookieJar. Args: key (str): Key of the cookie. value (str): Value o | STRING |
| HIGH | sanic/cookies/response.py | 575 | Create a cookie key with the appropriate prefix. Cookies can have one ow two prefixes. The first is `__Host-` w | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | guide/webapp/display/base.py | 1 | CODE | |
| LOW | guide/webapp/display/page/renderer.py | 1 | CODE | |
| LOW | guide/webapp/display/page/__init__.py | 1 | CODE | |
| LOW | guide/webapp/display/page/__init__.py | 2 | CODE | |
| LOW | guide/webapp/display/page/page.py | 1 | CODE | |
| LOW | guide/webapp/display/page/docobject.py | 1 | CODE | |
| LOW | guide/webapp/display/search/search.py | 1 | CODE | |
| LOW | guide/webapp/display/layouts/home.py | 1 | CODE | |
| LOW | guide/webapp/display/layouts/models.py | 1 | CODE | |
| LOW | guide/webapp/display/layouts/base.py | 1 | CODE | |
| LOW | tests/test_ext_integration.py | 9 | CODE | |
| LOW | sanic/signals.py | 1 | CODE | |
| LOW | sanic/config.py | 1 | CODE | |
| LOW | sanic/compat.py | 28 | CODE | |
| LOW | sanic/compat.py | 151 | CODE | |
| LOW | sanic/log.py | 1 | CODE | |
| LOW | sanic/log.py | 2 | CODE | |
| LOW | sanic/log.py | 3 | CODE | |
| LOW | sanic/log.py | 4 | CODE | |
| LOW | sanic/log.py | 5 | CODE | |
| LOW | sanic/log.py | 5 | CODE | |
| LOW | sanic/log.py | 5 | CODE | |
| LOW | sanic/log.py | 5 | CODE | |
| LOW | sanic/log.py | 5 | CODE | |
| LOW | sanic/blueprint_group.py | 1 | CODE | |
| LOW | sanic/asgi.py | 1 | CODE | |
| LOW | sanic/__init__.py | 5 | CODE | |
| LOW | sanic/__init__.py | 6 | CODE | |
| LOW | sanic/__init__.py | 7 | CODE | |
| LOW | sanic/__init__.py | 8 | CODE | |
| LOW | sanic/__init__.py | 9 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 10 | CODE | |
| LOW | sanic/__init__.py | 27 | CODE | |
| LOW | sanic/__init__.py | 27 | CODE | |
| LOW | sanic/__init__.py | 27 | CODE | |
| LOW | sanic/__init__.py | 27 | CODE | |
| LOW | sanic/__init__.py | 27 | CODE | |
| LOW | sanic/__init__.py | 27 | CODE | |
| LOW | sanic/__init__.py | 27 | CODE | |
| LOW | sanic/__init__.py | 27 | CODE | |
| LOW | sanic/__init__.py | 37 | CODE | |
| LOW | sanic/blueprints.py | 1 | CODE | |
| LOW | sanic/app.py | 1 | CODE | |
| LOW | sanic/headers.py | 1 | CODE | |
| LOW | sanic/router.py | 1 | CODE | |
| LOW | sanic/middleware.py | 1 | CODE | |
| LOW | sanic/views.py | 1 | CODE | |
| 96 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_logging.py | 261 | except Exception as e: | CODE |
| LOW | tests/test_errorpages.py | 97 | except Exception as e: | CODE |
| LOW | tests/test_errorpages.py | 351 | except Exception as e: | CODE |
| LOW | tests/test_exceptions_handler.py | 55 | except Exception as e: | CODE |
| LOW | tests/test_exceptions_handler.py | 177 | except Exception: | CODE |
| MEDIUM | tests/test_exceptions_handler.py | 52 | def handler_6(request, arg): | CODE |
| LOW | tests/test_request.py | 257 | except Exception as e: | CODE |
| MEDIUM | tests/test_request.py | 254 | def get(request): | CODE |
| LOW | tests/test_routes.py | 172 | except Exception: | CODE |
| LOW | tests/test_app.py | 217 | except Exception: | CODE |
| LOW | scripts/release.py | 84 | except Exception: | STRING |
| LOW | sanic/signals.py | 253 | except Exception as e: | CODE |
| LOW | sanic/asgi.py | 87 | except Exception as e: | CODE |
| LOW | sanic/asgi.py | 97 | except Exception as e: | CODE |
| LOW | sanic/asgi.py | 259 | except Exception as e: | CODE |
| LOW | sanic/asgi.py | 262 | except Exception as exc: | CODE |
| LOW | sanic/utils.py | 132 | except Exception as e: | CODE |
| MEDIUM | sanic/app.py | 1643 | def do(task): | CODE |
| LOW | sanic/app.py | 1212 | except Exception as e: | CODE |
| LOW | sanic/app.py | 1220 | except Exception as e: | CODE |
| LOW | sanic/app.py | 1429 | except Exception as e: | CODE |
| LOW | sanic/app.py | 1468 | except Exception as e: | CODE |
| LOW | sanic/app.py | 1657 | except Exception as e: | CODE |
| LOW | sanic/__main__.py | 5 | except Exception as exc: | CODE |
| LOW | sanic/__main__.py | 24 | except Exception as e: | CODE |
| MEDIUM | sanic/__main__.py | 19 | def main(args=None): | CODE |
| LOW | sanic/mixins/static.py | 356 | except Exception: | CODE |
| LOW | sanic/server/websockets/impl.py | 258 | except Exception as e: | CODE |
| LOW | sanic/server/websockets/impl.py | 325 | except Exception: | CODE |
| LOW | sanic/server/websockets/impl.py | 364 | except Exception: | CODE |
| LOW | sanic/server/protocols/base_protocol.py | 152 | except Exception: | CODE |
| LOW | sanic/server/protocols/http_protocol.py | 165 | except Exception: | CODE |
| LOW | sanic/server/protocols/http_protocol.py | 251 | except Exception: | CODE |
| LOW | sanic/server/protocols/http_protocol.py | 305 | except Exception: | CODE |
| LOW | sanic/server/protocols/http_protocol.py | 323 | except Exception: | CODE |
| LOW | sanic/server/protocols/websocket_protocol.py | 135 | except Exception: | CODE |
| LOW | sanic/http/http3.py | 126 | except Exception as e: # no cov | CODE |
| LOW | sanic/http/http3.py | 311 | except Exception as e: | CODE |
| LOW | sanic/http/http1.py | 147 | except Exception as e: | CODE |
| LOW | sanic/http/http1.py | 235 | except Exception: | CODE |
| LOW | sanic/http/http1.py | 289 | except Exception: | CODE |
| LOW | sanic/http/http1.py | 442 | except Exception as e: | CODE |
| LOW | sanic/http/http1.py | 531 | except Exception: | CODE |
| LOW | sanic/http/tls/creators.py | 195 | except Exception as e: | CODE |
| MEDIUM | sanic/http/tls/creators.py | 187 | def check_supported(self) -> None: | CODE |
| LOW | sanic/request/types.py | 409 | except Exception: | CODE |
| LOW | sanic/request/types.py | 576 | except Exception: | CODE |
| LOW | sanic/request/types.py | 669 | except Exception: | CODE |
| LOW | sanic/worker/serve.py | 140 | except Exception as e: | CODE |
| LOW | sanic/worker/manager.py | 544 | except Exception: | CODE |
| LOW | sanic/pages/error.py | 108 | except Exception: | CODE |
| LOW | sanic/handlers/error.py | 131 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | guide/webapp/display/page/page.py | 69 | CODE | |
| LOW | guide/webapp/display/plugins/hook.py | 13 | CODE | |
| LOW | guide/webapp/display/layouts/main.py | 14 | CODE | |
| LOW | tests/test_daemon.py | 653 | CODE | |
| LOW | tests/test_daemon.py | 681 | CODE | |
| LOW | tests/test_daemon.py | 784 | CODE | |
| LOW | tests/test_daemon.py | 808 | CODE | |
| LOW | tests/test_daemon.py | 835 | CODE | |
| LOW | tests/test_daemon.py | 857 | CODE | |
| LOW | tests/test_daemon.py | 918 | CODE | |
| LOW | tests/test_config.py | 321 | CODE | |
| LOW | tests/typing/test_typing.py | 96 | CODE | |
| LOW | sanic/signals.py | 205 | CODE | |
| LOW | sanic/config.py | 325 | CODE | |
| LOW | sanic/asgi.py | 81 | CODE | |
| LOW | sanic/utils.py | 54 | CODE | |
| LOW | sanic/app.py | 849 | CODE | |
| LOW | sanic/app.py | 942 | CODE | |
| LOW | sanic/app.py | 1136 | CODE | |
| LOW | sanic/app.py | 1277 | CODE | |
| LOW | sanic/app.py | 2461 | CODE | |
| LOW | sanic/headers.py | 444 | CODE | |
| LOW | sanic/errorpages.py | 342 | CODE | |
| LOW | sanic/mixins/startup.py | 606 | CODE | |
| LOW | sanic/mixins/startup.py | 951 | CODE | |
| LOW | sanic/mixins/startup.py | 1318 | CODE | |
| LOW | sanic/mixins/static.py | 185 | CODE | |
| LOW | sanic/mixins/static.py | 264 | CODE | |
| LOW | sanic/mixins/routes.py | 213 | CODE | |
| LOW | sanic/server/socket.py | 81 | CODE | |
| LOW | sanic/server/websockets/impl.py | 181 | CODE | |
| LOW | sanic/server/websockets/impl.py | 216 | CODE | |
| LOW | sanic/server/websockets/impl.py | 285 | CODE | |
| LOW | sanic/server/websockets/impl.py | 379 | CODE | |
| LOW | sanic/server/websockets/impl.py | 568 | CODE | |
| LOW | sanic/server/websockets/impl.py | 675 | CODE | |
| LOW | sanic/server/protocols/http_protocol.py | 208 | CODE | |
| LOW | sanic/cli/console.py | 279 | CODE | |
| LOW | sanic/cli/app.py | 182 | CODE | |
| LOW | sanic/cli/app.py | 275 | CODE | |
| LOW | sanic/http/http1.py | 178 | CODE | |
| LOW | sanic/http/http1.py | 297 | CODE | |
| LOW | sanic/request/types.py | 499 | CODE | |
| LOW | sanic/request/form.py | 32 | CODE | |
| LOW | sanic/worker/reloader.py | 34 | CODE | |
| LOW | sanic/worker/reloader.py | 85 | CODE | |
| LOW | sanic/worker/serve.py | 26 | CODE | |
| LOW | sanic/worker/loader.py | 69 | CODE | |
| LOW | sanic/worker/manager.py | 285 | CODE | |
| LOW | sanic/worker/manager.py | 375 | CODE | |
| LOW | sanic/worker/manager.py | 466 | CODE | |
| LOW | sanic/pages/error.py | 56 | CODE | |
| LOW | sanic/pages/error.py | 98 | CODE | |
| LOW | sanic/pages/base.py | 47 | CODE | |
| LOW | sanic/logging/formatter.py | 137 | CODE | |
| LOW | sanic/cookies/response.py | 452 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_unix_socket.py | 201 | app_multi.run(host="myhost.invalid", unix=SOCKPATH, workers=2) | COMMENT |
| LOW | tests/test_unix_socket.py | 221 | # assert r.status_code == 200, r.text | COMMENT |
| LOW | tests/test_unix_socket.py | 241 | # while not os.path.exists(SOCKPATH): | COMMENT |
| LOW | tests/test_unix_socket.py | 261 | # processes[-1].send_signal(SIGINT) | COMMENT |
| LOW | tests/test_reloader.py | 1 | # 2024-12-22 AMH - Reloader tests have not been working for a while. | COMMENT |
| LOW | tests/test_reloader.py | 21 | COMMENT | |
| LOW | tests/test_reloader.py | 41 | # text = secrets.token_urlsafe() | COMMENT |
| LOW | tests/test_reloader.py | 61 | # ) | COMMENT |
| LOW | tests/test_reloader.py | 81 | # print("reload_start", os.getpid(), {start_text!r}) | COMMENT |
| LOW | tests/test_reloader.py | 101 | # from sanic import Sanic | COMMENT |
| LOW | tests/test_reloader.py | 121 | COMMENT | |
| LOW | tests/test_reloader.py | 141 | # "-m", | COMMENT |
| LOW | tests/test_reloader.py | 161 | # with TemporaryDirectory() as tmpdir: | COMMENT |
| LOW | tests/test_reloader.py | 181 | # proc.wait(timeout=3) | COMMENT |
| LOW | tests/test_reloader.py | 201 | # if mode == "sanic": | COMMENT |
| LOW | tests/test_reloader.py | 221 | COMMENT | |
| LOW | tests/test_reloader.py | 241 | # assert stop_text in next(line) | COMMENT |
| LOW | tests/test_tls.py | 661 | # ): | COMMENT |
| LOW | tests/test_multi_serve.py | 1 | # import logging | COMMENT |
| LOW | tests/test_multi_serve.py | 21 | # def app_one(): | COMMENT |
| LOW | tests/test_multi_serve.py | 41 | COMMENT | |
| LOW | tests/test_multi_serve.py | 61 | # "Goin' Fast @ http://127.0.0.1:23457", | COMMENT |
| LOW | tests/test_multi_serve.py | 81 | COMMENT | |
| LOW | tests/test_multi_serve.py | 101 | # after_stop.assert_awaited_once() | COMMENT |
| LOW | tests/test_multi_serve.py | 121 | # app_one.signal(event)(AsyncMock()) | COMMENT |
| LOW | tests/test_multi_serve.py | 141 | # app_two.main_process_stop(AsyncMock()) | COMMENT |
| LOW | tests/test_multi_serve.py | 161 | # message = "Did not find any applications." | COMMENT |
| LOW | tests/test_multi_serve.py | 181 | COMMENT | |
| LOW | tests/test_multi_serve.py | 201 | # app_two.prepare(port=23457) | COMMENT |
| LOW | tests/performance/sanic/varied_server.py | 61 | app.run(host="0.0.0.0", port=sys.argv[1]) | COMMENT |
| LOW | tests/performance/sanic/varied_server.py | 81 | COMMENT | |
| LOW | tests/performance/sanic/varied_server.py | 101 | # host='127.0.0.1', port=6379 | COMMENT |
| LOW | docs/conf.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | docs/conf.py | 41 | # General information about the project. | COMMENT |
| LOW | docs/conf.py | 61 | language = "en" | COMMENT |
| LOW | docs/conf.py | 81 | html_theme = "sphinx_rtd_theme" | COMMENT |
| LOW | sanic/server/protocols/base_protocol.py | 101 | # Check write-buffer data left _after_ close is called. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_cookies.py | 105 | CODE | |
| LOW | tests/typing/test_typing.py | 26 | CODE | |
| LOW | sanic/app.py | 228 | CODE | |
| LOW | sanic/app.py | 249 | CODE | |
| LOW | sanic/app.py | 270 | CODE | |
| LOW | sanic/app.py | 291 | CODE | |
| LOW | sanic/app.py | 311 | CODE | |
| LOW | sanic/app.py | 1130 | CODE | |
| LOW | sanic/router.py | 78 | CODE | |
| LOW | sanic/views.py | 117 | CODE | |
| LOW | sanic/response/convenience.py | 206 | CODE | |
| LOW | sanic/response/types.py | 124 | CODE | |
| LOW | sanic/mixins/startup.py | 152 | CODE | |
| LOW | sanic/mixins/startup.py | 282 | CODE | |
| LOW | sanic/mixins/startup.py | 464 | CODE | |
| LOW | sanic/mixins/startup.py | 630 | CODE | |
| LOW | sanic/mixins/static.py | 32 | CODE | |
| LOW | sanic/mixins/routes.py | 38 | CODE | |
| LOW | sanic/mixins/routes.py | 213 | CODE | |
| LOW | sanic/mixins/routes.py | 671 | CODE | |
| LOW | sanic/server/runners.py | 42 | CODE | |
| LOW | sanic/worker/serve.py | 26 | CODE | |
| LOW | sanic/cookies/response.py | 142 | CODE | |
| LOW | sanic/cookies/response.py | 386 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_errorpages.py | 170 | CODE | |
| MEDIUM | tests/test_errorpages.py | 175 | CODE | |
| MEDIUM | tests/test_errorpages.py | 180 | CODE | |
| MEDIUM | tests/test_errorpages.py | 196 | CODE | |
| MEDIUM | tests/test_errorpages.py | 201 | CODE | |
| MEDIUM | tests/test_errorpages.py | 216 | CODE | |
| MEDIUM | tests/test_errorpages.py | 221 | CODE | |
| MEDIUM | tests/test_errorpages.py | 279 | CODE | |
| MEDIUM | tests/test_ws_handlers.py | 61 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | guide/webapp/display/page/__init__.py | 5 | __all__ = ["Page", "PageRenderer"] | CODE |
| LOW | sanic/blueprint_group.py | 4 | __all__ = ["BlueprintGroup"] # noqa: F405 | CODE |
| LOW | sanic/app.py | 1955 | def update_config(self, config: bytes | str | dict | Any) -> None: | CODE |
| LOW | sanic/app.py | 2414 | def set_serving(self, serving: bool) -> None: | CODE |
| LOW | sanic/mixins/startup.py | 917 | def _set_startup_method(cls) -> None: | CODE |
| LOW | sanic/application/state.py | 80 | def set_verbosity(self, value: int) -> None: | CODE |
| LOW | sanic/worker/multiplexer.py | 86 | def set_serving(self, serving: bool) -> None: | CODE |
| LOW | sanic/worker/daemon.py | 495 | def _setup_signal_handlers(self) -> None: | CODE |
| LOW | sanic/logging/formatter.py | 74 | def _set_levelname(self, record: logging.LogRecord) -> None: | CODE |
| LOW | sanic/logging/formatter.py | 132 | def _set_levelname(self, record: logging.LogRecord) -> None: | CODE |
| LOW | sanic/logging/formatter.py | 231 | def _set_levelname(self, record: logging.LogRecord) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/override_logging.py | 13 | # Set logger to override default basicConfig | COMMENT |
| LOW | sanic/headers.py | 399 | # Check if we would return on next round, to avoid useless parse | COMMENT |
| LOW | sanic/mixins/static.py | 295 | # Check if the client has been sent this file before | COMMENT |
| LOW | sanic/mixins/static.py | 405 | # Check if it's a symlink and determine its type | COMMENT |
| LOW | sanic/server/protocols/base_protocol.py | 93 | # Check if write is already paused _before_ close() is called. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/conf.py | 7 | # This file is execfile()d with the current directory set to its | COMMENT |
| MEDIUM | sanic/blueprints.py | 612 | """This class provides a mechanism to implement a Blueprint Group. | STRING |
| MEDIUM | sanic/server/socket.py | 101 | # Create a listening socket or use the one in settings | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | guide/content/en/plugins/sanic-ext/injection.md | 237 | This works very similar to the [last example](#objects-from-the-request) where the goal is the extract something fro | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | guide/content/en/plugins/sanic-ext/injection.md | 237 | This works very similar to the [last example](#objects-from-the-request) where the goal is the extract something fro | CODE |
| MEDIUM | guide/content/en/plugins/sanic-ext/injection.md | 298 | Be carefule when using a [generic type](https://docs.python.org/3/library/typing.html#typing.Generic). The way that Sani | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_blueprint_copy.py | 15 | def handle_request(request): | CODE |
| LOW | examples/redirect_example.py | 8 | def handle_request(request): | CODE |
| LOW | examples/modify_header_example.py | 12 | def handle_request(request): | CODE |
| LOW | sanic/app.py | 1277 | async def handle_request(self, request: Request) -> None: # no cov | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | guide/webapp/worker/livereload.js | 325 | // #match works fine because it just return the exec results, even if it has | COMMENT |
| LOW | examples/exception_monitoring.py | 33 | # For this we can just call the super class' default handler | COMMENT |