All checks were successful
- Add centralized _is_noqa_suppressed() to BaseValidator with normalization (accepts both SEC001 and SEC-001 formats for ruff compatibility) - Wire noqa support into all 21 security and 18 performance check functions - Add ruff external config for SEC/PERF/MOD/EXC codes in pyproject.toml - Convert all 280 Python noqa comments to dashless format (ruff-compatible) - Add site/ to IGNORE_PATTERNS (excludes mkdocs build output) - Suppress 152 false positive findings (test passwords, seed data, validator self-references, Apple Wallet SHA1, etc.) - Security: 79 errors → 0, 60 warnings → 0 - Performance: 80 warnings → 77 (3 test script suppressions) - Add proposal doc with noqa inventory and remaining findings recommendations Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
78 lines
2.3 KiB
Python
78 lines
2.3 KiB
Python
# app/modules/dev_tools/exceptions.py
|
|
"""
|
|
Dev-Tools Module Exceptions
|
|
|
|
Module-specific exceptions for code quality and test runner functionality.
|
|
Re-exports code quality exceptions from the legacy location and adds
|
|
test runner specific exceptions.
|
|
"""
|
|
|
|
from app.exceptions.base import (
|
|
ExternalServiceException,
|
|
ResourceNotFoundException,
|
|
)
|
|
|
|
# Re-export code quality exceptions from their module location
|
|
from app.modules.monitoring.exceptions import (
|
|
InvalidViolationStatusException,
|
|
ScanExecutionException,
|
|
ScanNotFoundException,
|
|
ScanParseException,
|
|
ScanTimeoutException,
|
|
ViolationNotFoundException,
|
|
ViolationOperationException,
|
|
)
|
|
|
|
# =============================================================================
|
|
# Test Runner Exceptions (defined here as they don't exist in legacy location)
|
|
# =============================================================================
|
|
|
|
|
|
class TestRunNotFoundException(ResourceNotFoundException): # noqa: MOD025
|
|
"""Raised when a test run is not found."""
|
|
|
|
def __init__(self, run_id: int):
|
|
super().__init__(
|
|
resource_type="TestRun",
|
|
identifier=str(run_id),
|
|
error_code="TEST_RUN_NOT_FOUND",
|
|
)
|
|
|
|
|
|
class TestExecutionException(ExternalServiceException): # noqa: MOD025
|
|
"""Raised when test execution fails."""
|
|
|
|
def __init__(self, reason: str):
|
|
super().__init__(
|
|
service_name="TestRunner",
|
|
message=f"Test execution failed: {reason}",
|
|
error_code="TEST_EXECUTION_FAILED",
|
|
)
|
|
|
|
|
|
class TestTimeoutException(ExternalServiceException): # noqa: MOD025
|
|
"""Raised when test execution times out."""
|
|
|
|
def __init__(self, timeout_seconds: int = 3600):
|
|
super().__init__(
|
|
service_name="TestRunner",
|
|
message=f"Test execution timed out after {timeout_seconds} seconds",
|
|
error_code="TEST_TIMEOUT",
|
|
)
|
|
|
|
|
|
__all__ = [
|
|
# Code quality exceptions (re-exported)
|
|
"ViolationNotFoundException",
|
|
"ScanNotFoundException",
|
|
"ScanExecutionException",
|
|
"ScanTimeoutException",
|
|
"ScanParseException",
|
|
"ViolationOperationException",
|
|
"InvalidViolationStatusException",
|
|
# Test runner exceptions (defined here)
|
|
"TestRunNotFoundException",
|
|
"TestExecutionException",
|
|
"TestTimeoutException",
|
|
]
|