Coverage report: 91%

Files Functions Classes

coverage.py v7.13.0, created at 2026-04-03 18:53 +0000

File class   statements missing excluded   coverage
lintro / __init__.py (no class)   1 0 0   100%
lintro / __main__.py (no class)   3 1 0   67%
lintro / _tool_versions.py (no class)   117 24 2   79%
lintro / ai / __init__.py (no class)   6 0 0   100%
lintro / ai / apply.py (no class)   68 7 0   90%
lintro / ai / audit.py (no class)   13 0 2   100%
lintro / ai / availability.py (no class)   46 21 2   54%
lintro / ai / budget.py CostBudget   10 0 0   100%
lintro / ai / budget.py (no class)   14 0 0   100%
lintro / ai / cache.py (no class)   69 13 0   81%
lintro / ai / config.py AIConfig   7 3 0   57%
lintro / ai / config.py (no class)   56 0 0   100%
lintro / ai / config_views.py AIProviderConfig   0 0 0   100%
lintro / ai / config_views.py AIBudgetConfig   0 0 0   100%
lintro / ai / config_views.py AIOutputConfig   0 0 0   100%
lintro / ai / config_views.py (no class)   49 0 0   100%
lintro / ai / cost.py (no class)   19 1 0   95%
lintro / ai / display / __init__.py (no class)   5 0 0   100%
lintro / ai / display / fixes.py (no class)   163 71 0   56%
lintro / ai / display / shared.py (no class)   28 0 0   100%
lintro / ai / display / streaming.py (no class)   11 11 2   0%
lintro / ai / display / summary.py (no class)   130 9 0   93%
lintro / ai / display / validation.py (no class)   26 1 0   96%
lintro / ai / enums / __init__.py (no class)   4 0 0   100%
lintro / ai / enums / confidence_level.py ConfidenceLevel   1 0 0   100%
lintro / ai / enums / confidence_level.py (no class)   9 0 0   100%
lintro / ai / enums / risk_level.py RiskLevel   3 0 0   100%
lintro / ai / enums / risk_level.py (no class)   7 0 0   100%
lintro / ai / enums / sanitize_mode.py SanitizeMode   0 0 0   100%
lintro / ai / enums / sanitize_mode.py (no class)   6 0 0   100%
lintro / ai / exceptions.py AIError   0 0 0   100%
lintro / ai / exceptions.py AINotAvailableError   0 0 0   100%
lintro / ai / exceptions.py AIProviderError   0 0 0   100%
lintro / ai / exceptions.py AIAuthenticationError   0 0 0   100%
lintro / ai / exceptions.py AIRateLimitError   0 0 0   100%
lintro / ai / exceptions.py (no class)   7 0 0   100%
lintro / ai / fallback.py (no class)   48 2 0   96%
lintro / ai / filters.py (no class)   41 20 3   51%
lintro / ai / fix.py (no class)   182 35 3   81%
lintro / ai / fix_context.py (no class)   94 13 3   86%
lintro / ai / fix_params.py FixGenParams   0 0 0   100%
lintro / ai / fix_params.py (no class)   26 0 0   100%
lintro / ai / fix_parsing.py (no class)   62 0 2   100%
lintro / ai / hook.py AIPostExecutionHook   13 1 0   92%
lintro / ai / hook.py (no class)   9 0 4   100%
lintro / ai / integrations / __init__.py (no class)   0 0 0   100%
lintro / ai / integrations / github_pr.py GitHubPRReporter   101 53 0   48%
lintro / ai / integrations / github_pr.py (no class)   109 19 0   83%
lintro / ai / interactive.py ReviewKey   0 0 0   100%
lintro / ai / interactive.py (no class)   192 55 0   71%
lintro / ai / metadata / __init__.py (no class)   4 0 0   100%
lintro / ai / metadata / fix_suggestion_payload.py AIFixSuggestionPayload   1 0 0   100%
lintro / ai / metadata / fix_suggestion_payload.py (no class)   20 0 0   100%
lintro / ai / metadata / helpers.py (no class)   67 2 4   97%
lintro / ai / metadata / summary_payload.py AISummaryPayload   1 0 0   100%
lintro / ai / metadata / summary_payload.py (no class)   14 0 0   100%
lintro / ai / model_pricing.py ModelPricing   0 0 0   100%
lintro / ai / model_pricing.py (no class)   6 0 0   100%
lintro / ai / models / __init__.py (no class)   4 0 0   100%
lintro / ai / models / fix_suggestion.py AIFixSuggestion   0 0 0   100%
lintro / ai / models / fix_suggestion.py (no class)   18 0 0   100%
lintro / ai / models / result.py AIResult   0 0 0   100%
lintro / ai / models / result.py (no class)   10 0 0   100%
lintro / ai / models / summary.py AISummary   0 0 0   100%
lintro / ai / models / summary.py (no class)   12 0 0   100%
lintro / ai / orchestrator.py (no class)   153 41 9   73%
lintro / ai / output / __init__.py (no class)   0 0 0   100%
lintro / ai / output / sarif.py (no class)   92 0 0   100%
lintro / ai / output / sarif_bridge.py (no class)   56 16 2   71%
lintro / ai / paths.py (no class)   33 2 0   94%
lintro / ai / pipeline.py (no class)   212 57 7   73%
lintro / ai / prompts / __init__.py (no class)   4 0 0   100%
lintro / ai / prompts / fix.py (no class)   5 0 0   100%
lintro / ai / prompts / post_fix.py (no class)   2 0 0   100%
lintro / ai / prompts / summary.py (no class)   3 0 0   100%
lintro / ai / provider_enum.py AIProvider   0 0 0   100%
lintro / ai / provider_enum.py (no class)   5 0 0   100%
lintro / ai / provider_info.py ProviderInfo   0 0 0   100%
lintro / ai / provider_info.py (no class)   10 0 0   100%
lintro / ai / providers / __init__.py (no class)   27 2 3   93%
lintro / ai / providers / anthropic.py AnthropicProvider   50 32 0   36%
lintro / ai / providers / anthropic.py (no class)   26 1 0   96%
lintro / ai / providers / base.py BaseAIProvider   24 3 2   88%
lintro / ai / providers / base.py (no class)   24 0 4   100%
lintro / ai / providers / constants.py (no class)   3 0 0   100%
lintro / ai / providers / openai.py OpenAIProvider   59 40 0   32%
lintro / ai / providers / openai.py (no class)   26 1 0   96%
lintro / ai / providers / response.py AIResponse   0 0 0   100%
lintro / ai / providers / response.py (no class)   11 0 0   100%
lintro / ai / providers / stream_result.py AIStreamResult   9 0 0   100%
lintro / ai / providers / stream_result.py (no class)   12 0 0   100%
lintro / ai / refinement.py (no class)   85 10 5   88%
lintro / ai / registry.py AIProviderRegistry   11 0 0   100%
lintro / ai / registry.py (no class)   22 0 0   100%
lintro / ai / rerun.py (no class)   73 9 4   88%
lintro / ai / retry.py (no class)   50 12 0   76%
lintro / ai / risk.py PatchStats   0 0 0   100%
lintro / ai / risk.py (no class)   81 9 3   89%
lintro / ai / sanitize.py (no class)   23 0 0   100%
lintro / ai / secrets.py (no class)   13 0 0   100%
lintro / ai / summary.py (no class)   141 34 3   76%
lintro / ai / summary_params.py SummaryGenParams   0 0 0   100%
lintro / ai / summary_params.py (no class)   13 0 0   100%
lintro / ai / telemetry.py AITelemetry   6 0 0   100%
lintro / ai / telemetry.py (no class)   14 0 0   100%
lintro / ai / token_budget.py (no class)   16 0 0   100%
lintro / ai / undo.py (no class)   40 8 2   80%
lintro / ai / validation.py ValidationResult   0 0 0   100%
lintro / ai / validation.py (no class)   127 10 4   92%
lintro / cli.py LintroGroup   63 2 0   97%
lintro / cli.py (no class)   64 0 0   100%
lintro / cli_utils / __init__.py (no class)   0 0 0   100%
lintro / cli_utils / command_chainer.py CommandChainer   65 0 0   100%
lintro / cli_utils / command_chainer.py (no class)   14 0 2   100%
lintro / cli_utils / commands / __init__.py (no class)   5 0 0   100%
lintro / cli_utils / commands / check.py (no class)   73 12 0   84%
lintro / cli_utils / commands / config.py (no class)   140 24 3   83%
lintro / cli_utils / commands / doctor.py ToolCheckResult   0 0 0   100%
lintro / cli_utils / commands / doctor.py (no class)   261 67 0   74%
lintro / cli_utils / commands / format.py (no class)   56 2 0   96%
lintro / cli_utils / commands / init.py (no class)   67 6 0   91%
lintro / cli_utils / commands / install.py (no class)   100 16 0   84%
lintro / cli_utils / commands / list_tools.py (no class)   131 70 0   47%
lintro / cli_utils / commands / setup.py (no class)   163 82 0   50%
lintro / cli_utils / commands / test.py (no class)   95 5 0   95%
lintro / cli_utils / commands / versions.py (no class)   48 39 0   19%
lintro / config / __init__.py (no class)   4 0 0   100%
lintro / config / config_loader.py (no class)   174 38 0   78%
lintro / config / enforce_config.py EnforceConfig   0 0 0   100%
lintro / config / enforce_config.py (no class)   5 0 0   100%
lintro / config / execution_config.py ExecutionConfig   0 0 0   100%
lintro / config / execution_config.py (no class)   17 0 0   100%
lintro / config / lintro_config.py LintroConfig   13 0 0   100%
lintro / config / lintro_config.py (no class)   20 0 0   100%
lintro / config / tool_config.py LintroToolConfig   0 0 0   100%
lintro / config / tool_config.py (no class)   6 0 0   100%
lintro / config / tool_config_generator.py (no class)   140 28 0   80%
lintro / enums / __init__.py (no class)   0 0 0   100%
lintro / enums / action.py Action   0 0 0   100%
lintro / enums / action.py (no class)   15 2 0   87%
lintro / enums / bandit_levels.py BanditSeverityLevel   0 0 0   100%
lintro / enums / bandit_levels.py BanditConfidenceLevel   0 0 0   100%
lintro / enums / bandit_levels.py (no class)   26 0 0   100%
lintro / enums / boolean_string.py BooleanString   0 0 0   100%
lintro / enums / boolean_string.py (no class)   6 0 0   100%
lintro / enums / config_format.py ConfigFormat   0 0 0   100%
lintro / enums / config_format.py (no class)   12 0 0   100%
lintro / enums / config_key.py ConfigKey   0 0 0   100%
lintro / enums / config_key.py (no class)   5 0 0   100%
lintro / enums / display_column.py DisplayColumn   0 0 0   100%
lintro / enums / display_column.py (no class)   12 0 0   100%
lintro / enums / doc_url_template.py DocUrlTemplate   0 0 0   100%
lintro / enums / doc_url_template.py (no class)   22 0 0   100%
lintro / enums / env_bool.py EnvBool   0 0 0   100%
lintro / enums / env_bool.py (no class)   4 0 0   100%
lintro / enums / git_command.py GitCommand   0 0 0   100%
lintro / enums / git_command.py (no class)   6 0 0   100%
lintro / enums / git_ref.py GitRef   0 0 0   100%
lintro / enums / git_ref.py (no class)   4 0 0   100%
lintro / enums / group_by.py GroupBy   0 0 0   100%
lintro / enums / group_by.py (no class)   16 0 0   100%
lintro / enums / hadolint_enums.py HadolintFormat   0 0 0   100%
lintro / enums / hadolint_enums.py HadolintFailureThreshold   0 0 0   100%
lintro / enums / hadolint_enums.py (no class)   36 2 0   94%
lintro / enums / hyphenated_str_enum.py HyphenatedStrEnum   1 0 0   100%
lintro / enums / hyphenated_str_enum.py (no class)   5 0 0   100%
lintro / enums / install_context.py InstallContext   0 0 0   100%
lintro / enums / install_context.py PackageManager   0 0 0   100%
lintro / enums / install_context.py CISystem   4 0 0   100%
lintro / enums / install_context.py (no class)   27 0 0   100%
lintro / enums / output_format.py OutputFormat   0 0 0   100%
lintro / enums / output_format.py (no class)   20 0 0   100%
lintro / enums / pydoclint_style.py PydoclintStyle   0 0 0   100%
lintro / enums / pydoclint_style.py (no class)   15 15 0   0%
lintro / enums / pytest_enums.py TestStatus   0 0 0   100%
lintro / enums / pytest_enums.py PytestSpecialMode   0 0 0   100%
lintro / enums / pytest_enums.py PytestOutputFormat   0 0 0   100%
lintro / enums / pytest_enums.py PytestParallelPreset   0 0 0   100%
lintro / enums / pytest_enums.py (no class)   47 0 0   100%
lintro / enums / semgrep_enums.py SemgrepSeverity   0 0 0   100%
lintro / enums / semgrep_enums.py (no class)   14 0 0   100%
lintro / enums / severity_level.py SeverityLevel   0 0 0   100%
lintro / enums / severity_level.py (no class)   17 0 0   100%
lintro / enums / tool_name.py ToolName   0 0 0   100%
lintro / enums / tool_name.py (no class)   40 0 0   100%
lintro / enums / tool_option_key.py ToolOptionKey   0 0 0   100%
lintro / enums / tool_option_key.py (no class)   5 0 0   100%
lintro / enums / tool_order.py ToolOrder   0 0 0   100%
lintro / enums / tool_order.py (no class)   14 0 0   100%
lintro / enums / tool_status.py ToolStatus   0 0 0   100%
lintro / enums / tool_status.py (no class)   7 0 0   100%
lintro / enums / tool_type.py ToolType   0 0 0   100%
lintro / enums / tool_type.py (no class)   20 5 0   75%
lintro / enums / tools_value.py ToolsValue   0 0 0   100%
lintro / enums / tools_value.py (no class)   11 0 0   100%
lintro / enums / uppercase_str_enum.py UppercaseStrEnum   1 0 0   100%
lintro / enums / uppercase_str_enum.py (no class)   5 0 0   100%
lintro / enums / yamllint_format.py YamllintFormat   0 0 0   100%
lintro / enums / yamllint_format.py (no class)   17 3 0   82%
lintro / exceptions / __init__.py (no class)   0 0 0   100%
lintro / exceptions / errors.py LintroError   0 0 0   100%
lintro / exceptions / errors.py InvalidToolConfigError   0 0 0   100%
lintro / exceptions / errors.py InvalidToolOptionError   0 0 0   100%
lintro / exceptions / errors.py ToolExecutionError   0 0 0   100%
lintro / exceptions / errors.py ToolTimeoutError   0 0 0   100%
lintro / exceptions / errors.py ParserError   0 0 0   100%
lintro / exceptions / errors.py ConfigurationError   0 0 0   100%
lintro / exceptions / errors.py FileAccessError   0 0 0   100%
lintro / exceptions / errors.py (no class)   9 0 0   100%
lintro / formatters / __init__.py (no class)   4 0 0   100%
lintro / formatters / core / __init__.py (no class)   2 0 0   100%
lintro / formatters / core / format_registry.py OutputStyle   1 1 0   0%
lintro / formatters / core / format_registry.py TableDescriptor   2 2 0   0%
lintro / formatters / core / format_registry.py (no class)   45 3 2   93%
lintro / formatters / formatter.py UnifiedTableDescriptor   14 0 0   100%
lintro / formatters / formatter.py (no class)   50 4 0   92%
lintro / formatters / styles / __init__.py (no class)   8 0 0   100%
lintro / formatters / styles / csv.py CsvStyle   9 0 0   100%
lintro / formatters / styles / csv.py (no class)   6 0 0   100%
lintro / formatters / styles / github.py GitHubStyle   37 1 0   97%
lintro / formatters / styles / github.py (no class)   15 1 0   93%
lintro / formatters / styles / grid.py GridStyle   18 1 0   94%
lintro / formatters / styles / grid.py (no class)   9 2 0   78%
lintro / formatters / styles / html.py HtmlStyle   12 0 0   100%
lintro / formatters / styles / html.py (no class)   4 0 0   100%
lintro / formatters / styles / json.py JsonStyle   17 0 0   100%
lintro / formatters / styles / json.py (no class)   6 0 0   100%
lintro / formatters / styles / markdown.py MarkdownStyle   11 0 0   100%
lintro / formatters / styles / markdown.py (no class)   4 0 0   100%
lintro / formatters / styles / plain.py PlainStyle   10 0 0   100%
lintro / formatters / styles / plain.py (no class)   4 0 0   100%
lintro / models / __init__.py (no class)   0 0 0   100%
lintro / models / core / __init__.py (no class)   6 0 0   100%
lintro / models / core / base_tool_options.py BaseToolOptions   0 0 0   100%
lintro / models / core / base_tool_options.py (no class)   6 0 0   100%
lintro / models / core / black_options.py BlackOptions   0 0 0   100%
lintro / models / core / black_options.py (no class)   8 0 0   100%
lintro / models / core / prettier_options.py PrettierOptions   0 0 0   100%
lintro / models / core / prettier_options.py (no class)   16 16 0   0%
lintro / models / core / pytest_options.py PytestOptions   0 0 0   100%
lintro / models / core / pytest_options.py (no class)   22 0 0   100%
lintro / models / core / ruff_options.py RuffOptions   0 0 0   100%
lintro / models / core / ruff_options.py (no class)   16 0 0   100%
lintro / models / core / tool_result.py ToolResult   8 3 0   62%
lintro / models / core / tool_result.py (no class)   22 0 2   100%
lintro / models / core / yamllint_options.py YamllintOptions   0 0 0   100%
lintro / models / core / yamllint_options.py (no class)   6 0 0   100%
lintro / parsers / __init__.py (no class)   15 6 2   60%
lintro / parsers / actionlint / __init__.py (no class)   3 0 0   100%
lintro / parsers / actionlint / actionlint_issue.py ActionlintIssue   0 0 0   100%
lintro / parsers / actionlint / actionlint_issue.py (no class)   8 0 0   100%
lintro / parsers / actionlint / actionlint_parser.py (no class)   27 0 0   100%
lintro / parsers / astro_check / __init__.py (no class)   3 0 0   100%
lintro / parsers / astro_check / astro_check_issue.py AstroCheckIssue   0 0 0   100%
lintro / parsers / astro_check / astro_check_issue.py (no class)   8 0 0   100%
lintro / parsers / astro_check / astro_check_parser.py (no class)   55 9 0   84%
lintro / parsers / bandit / __init__.py (no class)   3 0 0   100%
lintro / parsers / bandit / bandit_issue.py BanditIssue   3 0 0   100%
lintro / parsers / bandit / bandit_issue.py (no class)   18 0 0   100%
lintro / parsers / bandit / bandit_parser.py (no class)   50 11 0   78%
lintro / parsers / base_issue.py BaseIssue   18 0 0   100%
lintro / parsers / base_issue.py (no class)   15 0 0   100%
lintro / parsers / base_parser.py (no class)   69 1 2   99%
lintro / parsers / black / __init__.py (no class)   3 0 0   100%
lintro / parsers / black / black_issue.py BlackIssue   0 0 0   100%
lintro / parsers / black / black_issue.py (no class)   11 0 0   100%
lintro / parsers / black / black_parser.py (no class)   56 15 0   73%
lintro / parsers / cargo_audit / __init__.py (no class)   0 0 0   100%
lintro / parsers / cargo_audit / cargo_audit_issue.py CargoAuditIssue   4 1 0   75%
lintro / parsers / cargo_audit / cargo_audit_issue.py (no class)   15 0 0   100%
lintro / parsers / cargo_audit / cargo_audit_parser.py (no class)   70 11 0   84%
lintro / parsers / cargo_deny / __init__.py (no class)   3 0 0   100%
lintro / parsers / cargo_deny / cargo_deny_issue.py CargoDenyIssue   16 0 0   100%
lintro / parsers / cargo_deny / cargo_deny_issue.py (no class)   16 0 0   100%
lintro / parsers / cargo_deny / cargo_deny_parser.py (no class)   87 16 0   82%
lintro / parsers / clippy / __init__.py (no class)   3 0 0   100%
lintro / parsers / clippy / clippy_issue.py ClippyIssue   0 0 0   100%
lintro / parsers / clippy / clippy_issue.py (no class)   11 0 0   100%
lintro / parsers / clippy / clippy_parser.py (no class)   67 14 0   79%
lintro / parsers / gitleaks / __init__.py (no class)   3 0 0   100%
lintro / parsers / gitleaks / gitleaks_issue.py GitleaksIssue   4 0 0   100%
lintro / parsers / gitleaks / gitleaks_issue.py (no class)   25 0 0   100%
lintro / parsers / gitleaks / gitleaks_parser.py (no class)   60 3 0   95%
lintro / parsers / hadolint / __init__.py (no class)   9 5 0   44%
lintro / parsers / hadolint / hadolint_issue.py HadolintIssue   0 0 0   100%
lintro / parsers / hadolint / hadolint_issue.py (no class)   8 0 0   100%
lintro / parsers / hadolint / hadolint_parser.py (no class)   19 0 0   100%
lintro / parsers / markdownlint / __init__.py (no class)   3 0 0   100%
lintro / parsers / markdownlint / markdownlint_issue.py MarkdownlintIssue   0 0 0   100%
lintro / parsers / markdownlint / markdownlint_issue.py (no class)   8 0 0   100%
lintro / parsers / markdownlint / markdownlint_parser.py (no class)   33 0 0   100%
lintro / parsers / mypy / __init__.py (no class)   3 0 0   100%
lintro / parsers / mypy / mypy_issue.py MypyIssue   0 0 0   100%
lintro / parsers / mypy / mypy_issue.py (no class)   9 0 0   100%
lintro / parsers / mypy / mypy_parser.py (no class)   71 15 0   79%
lintro / parsers / osv_scanner / __init__.py (no class)   6 0 0   100%
lintro / parsers / osv_scanner / osv_scanner_issue.py OsvScannerIssue   7 0 0   100%
lintro / parsers / osv_scanner / osv_scanner_issue.py (no class)   16 0 0   100%
lintro / parsers / osv_scanner / osv_scanner_parser.py (no class)   115 19 0   83%
lintro / parsers / osv_scanner / suppression_models.py SuppressionEntry   0 0 0   100%
lintro / parsers / osv_scanner / suppression_models.py ClassifiedSuppression   0 0 0   100%
lintro / parsers / osv_scanner / suppression_models.py (no class)   13 0 0   100%
lintro / parsers / osv_scanner / suppression_parser.py (no class)   49 3 0   94%
lintro / parsers / osv_scanner / suppression_status.py SuppressionStatus   0 0 0   100%
lintro / parsers / osv_scanner / suppression_status.py (no class)   5 0 0   100%
lintro / parsers / oxfmt / __init__.py (no class)   3 0 0   100%
lintro / parsers / oxfmt / oxfmt_issue.py OxfmtIssue   0 0 0   100%
lintro / parsers / oxfmt / oxfmt_issue.py (no class)   8 0 0   100%
lintro / parsers / oxfmt / oxfmt_parser.py (no class)   29 3 0   90%
lintro / parsers / oxlint / __init__.py (no class)   3 0 0   100%
lintro / parsers / oxlint / oxlint_issue.py OxlintIssue   0 0 0   100%
lintro / parsers / oxlint / oxlint_issue.py (no class)   8 0 0   100%
lintro / parsers / oxlint / oxlint_parser.py (no class)   59 11 0   81%
lintro / parsers / prettier / __init__.py (no class)   3 0 0   100%
lintro / parsers / prettier / prettier_issue.py PrettierIssue   0 0 0   100%
lintro / parsers / prettier / prettier_issue.py (no class)   8 0 0   100%
lintro / parsers / prettier / prettier_parser.py (no class)   22 3 0   86%
lintro / parsers / pydoclint / __init__.py (no class)   3 0 0   100%
lintro / parsers / pydoclint / pydoclint_issue.py PydoclintIssue   0 0 0   100%
lintro / parsers / pydoclint / pydoclint_issue.py (no class)   9 0 0   100%
lintro / parsers / pydoclint / pydoclint_parser.py (no class)   36 3 0   92%
lintro / parsers / pytest / __init__.py (no class)   3 0 0   100%
lintro / parsers / pytest / format_parsers.py (no class)   172 24 0   86%
lintro / parsers / pytest / models.py PytestSummary   0 0 0   100%
lintro / parsers / pytest / models.py (no class)   12 0 0   100%
lintro / parsers / pytest / pytest_issue.py PytestIssue   0 0 0   100%
lintro / parsers / pytest / pytest_issue.py (no class)   11 0 0   100%
lintro / parsers / pytest / pytest_parser.py (no class)   14 0 0   100%
lintro / parsers / pytest / summary_extractor.py (no class)   32 2 0   94%
lintro / parsers / ruff / __init__.py (no class)   4 0 0   100%
lintro / parsers / ruff / ruff_format_issue.py RuffFormatIssue   0 0 0   100%
lintro / parsers / ruff / ruff_format_issue.py (no class)   10 0 0   100%
lintro / parsers / ruff / ruff_issue.py RuffIssue   0 0 0   100%
lintro / parsers / ruff / ruff_issue.py (no class)   10 0 0   100%
lintro / parsers / ruff / ruff_parser.py (no class)   76 15 0   80%
lintro / parsers / rustfmt / __init__.py (no class)   0 0 0   100%
lintro / parsers / rustfmt / rustfmt_issue.py RustfmtIssue   0 0 0   100%
lintro / parsers / rustfmt / rustfmt_issue.py (no class)   10 0 0   100%
lintro / parsers / rustfmt / rustfmt_parser.py (no class)   34 2 0   94%
lintro / parsers / semgrep / __init__.py (no class)   3 0 0   100%
lintro / parsers / semgrep / semgrep_issue.py SemgrepIssue   9 0 0   100%
lintro / parsers / semgrep / semgrep_issue.py (no class)   16 0 0   100%
lintro / parsers / semgrep / semgrep_parser.py (no class)   63 6 0   90%
lintro / parsers / shellcheck / __init__.py (no class)   3 0 0   100%
lintro / parsers / shellcheck / shellcheck_issue.py ShellcheckIssue   0 0 0   100%
lintro / parsers / shellcheck / shellcheck_issue.py (no class)   11 0 0   100%
lintro / parsers / shellcheck / shellcheck_parser.py (no class)   40 2 0   95%
lintro / parsers / shfmt / __init__.py (no class)   3 0 0   100%
lintro / parsers / shfmt / shfmt_issue.py ShfmtIssue   0 0 0   100%
lintro / parsers / shfmt / shfmt_issue.py (no class)   10 0 0   100%
lintro / parsers / shfmt / shfmt_parser.py (no class)   46 3 0   93%
lintro / parsers / sqlfluff / __init__.py (no class)   3 0 0   100%
lintro / parsers / sqlfluff / sqlfluff_issue.py SqlfluffIssue   0 0 0   100%
lintro / parsers / sqlfluff / sqlfluff_issue.py (no class)   11 0 0   100%
lintro / parsers / sqlfluff / sqlfluff_parser.py (no class)   39 2 0   95%
lintro / parsers / streaming.py StreamingParser   6 0 0   100%
lintro / parsers / streaming.py (no class)   81 8 0   90%
lintro / parsers / svelte_check / __init__.py (no class)   3 0 0   100%
lintro / parsers / svelte_check / svelte_check_issue.py SvelteCheckIssue   0 0 0   100%
lintro / parsers / svelte_check / svelte_check_issue.py (no class)   9 0 0   100%
lintro / parsers / svelte_check / svelte_check_parser.py (no class)   99 13 0   87%
lintro / parsers / taplo / __init__.py (no class)   4 0 0   100%
lintro / parsers / taplo / taplo_issue.py TaploIssue   0 0 0   100%
lintro / parsers / taplo / taplo_issue.py (no class)   9 0 0   100%
lintro / parsers / taplo / taplo_parser.py (no class)   41 0 0   100%
lintro / parsers / tsc / __init__.py (no class)   3 0 0   100%
lintro / parsers / tsc / tsc_issue.py TscIssue   0 0 0   100%
lintro / parsers / tsc / tsc_issue.py (no class)   9 0 0   100%
lintro / parsers / tsc / tsc_parser.py (no class)   57 4 0   93%
lintro / parsers / vue_tsc / __init__.py (no class)   3 0 0   100%
lintro / parsers / vue_tsc / vue_tsc_issue.py VueTscIssue   0 0 0   100%
lintro / parsers / vue_tsc / vue_tsc_issue.py (no class)   7 0 0   100%
lintro / parsers / vue_tsc / vue_tsc_parser.py (no class)   57 4 0   93%
lintro / parsers / yamllint / __init__.py (no class)   3 0 0   100%
lintro / parsers / yamllint / yamllint_issue.py YamllintIssue   0 0 0   100%
lintro / parsers / yamllint / yamllint_issue.py (no class)   9 0 0   100%
lintro / parsers / yamllint / yamllint_parser.py (no class)   37 9 0   76%
lintro / plugins / __init__.py (no class)   4 0 1   100%
lintro / plugins / base.py ExecutionContext   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin   73 4 2   95%
lintro / plugins / base.py (no class)   57 0 6   100%
lintro / plugins / discovery.py (no class)   71 9 0   87%
lintro / plugins / execution_preparation.py (no class)   89 4 0   96%
lintro / plugins / file_discovery.py (no class)   56 3 0   95%
lintro / plugins / file_processor.py FileProcessingResult   0 0 0   100%
lintro / plugins / file_processor.py AggregatedResult   31 0 0   100%
lintro / plugins / file_processor.py (no class)   22 0 3   100%
lintro / plugins / protocol.py ToolDefinition   4 2 0   50%
lintro / plugins / protocol.py LintroPlugin   0 0 5   100%
lintro / plugins / protocol.py (no class)   27 0 7   100%
lintro / plugins / registry.py ToolRegistry   41 3 0   93%
lintro / plugins / registry.py (no class)   31 0 3   100%
lintro / plugins / subprocess_executor.py (no class)   105 13 2   88%
lintro / tools / __init__.py (no class)   5 0 0   100%
lintro / tools / core / __init__.py (no class)   0 0 0   100%
lintro / tools / core / command_builders.py CommandBuilder   0 0 2   100%
lintro / tools / core / command_builders.py CommandBuilderRegistry   7 0 0   100%
lintro / tools / core / command_builders.py PythonBundledBuilder   24 7 0   71%
lintro / tools / core / command_builders.py PytestBuilder   21 7 0   67%
lintro / tools / core / command_builders.py NodeJSBuilder   17 2 0   88%
lintro / tools / core / command_builders.py CargoBuilder   8 1 0   88%
lintro / tools / core / command_builders.py StandaloneBuilder   6 0 0   100%
lintro / tools / core / command_builders.py (no class)   80 1 5   99%
lintro / tools / core / config_injection.py (no class)   48 9 0   81%
lintro / tools / core / install_context.py RuntimeContext   2 2 0   0%
lintro / tools / core / install_context.py (no class)   46 12 0   74%
lintro / tools / core / install_plan.py InstallResult   0 0 0   100%
lintro / tools / core / install_plan.py InstallPlan   2 0 0   100%
lintro / tools / core / install_plan.py (no class)   20 0 0   100%
lintro / tools / core / install_strategies / __init__.py (no class)   5 0 0   100%
lintro / tools / core / install_strategies / base.py InstallStrategy   0 0 5   100%
lintro / tools / core / install_strategies / base.py (no class)   14 0 4   100%
lintro / tools / core / install_strategies / binary_strategy.py BinaryStrategy   13 2 0   85%
lintro / tools / core / install_strategies / binary_strategy.py (no class)   13 0 0   100%
lintro / tools / core / install_strategies / brew_names.py (no class)   2 0 0   100%
lintro / tools / core / install_strategies / cargo_strategy.py CargoStrategy   9 1 0   89%
lintro / tools / core / install_strategies / cargo_strategy.py (no class)   12 0 0   100%
lintro / tools / core / install_strategies / environment.py InstallEnvironment   9 8 0   11%
lintro / tools / core / install_strategies / environment.py (no class)   11 0 0   100%
lintro / tools / core / install_strategies / npm_strategy.py NpmStrategy   17 2 0   88%
lintro / tools / core / install_strategies / npm_strategy.py (no class)   17 0 0   100%
lintro / tools / core / install_strategies / pip_strategy.py PipStrategy   21 2 0   90%
lintro / tools / core / install_strategies / pip_strategy.py (no class)   17 0 0   100%
lintro / tools / core / install_strategies / registry.py (no class)   14 2 0   86%
lintro / tools / core / install_strategies / rustup_strategy.py RustupStrategy   10 1 0   90%
lintro / tools / core / install_strategies / rustup_strategy.py (no class)   12 0 0   100%
lintro / tools / core / line_length_checker.py LineLengthViolation   0 0 0   100%
lintro / tools / core / line_length_checker.py (no class)   58 1 0   98%
lintro / tools / core / manifest_models.py ManifestTool   0 0 0   100%
lintro / tools / core / manifest_models.py ProfileDefinition   0 0 0   100%
lintro / tools / core / manifest_models.py (no class)   22 0 0   100%
lintro / tools / core / option_spec.py OptionType   0 0 0   100%
lintro / tools / core / option_spec.py OptionSpec   32 1 0   97%
lintro / tools / core / option_spec.py ToolOptionsSpec   14 0 0   100%
lintro / tools / core / option_spec.py (no class)   45 0 0   100%
lintro / tools / core / option_validators.py (no class)   37 1 0   97%
lintro / tools / core / runtime_discovery.py _ToolProbeInfo   0 0 0   100%
lintro / tools / core / runtime_discovery.py DiscoveredTool   0 0 0   100%
lintro / tools / core / runtime_discovery.py ToolDiscoveryCache   0 0 0   100%
lintro / tools / core / runtime_discovery.py (no class)   129 16 0   88%
lintro / tools / core / timeout_utils.py TimeoutResult   0 0 0   100%
lintro / tools / core / timeout_utils.py (no class)   26 0 0   100%
lintro / tools / core / tool_installer.py ToolInstaller   146 57 0   61%
lintro / tools / core / tool_installer.py (no class)   31 0 0   100%
lintro / tools / core / tool_manager.py ToolManager   53 10 0   81%
lintro / tools / core / tool_manager.py (no class)   19 0 2   100%
lintro / tools / core / tool_registry.py ToolRegistry   103 23 0   78%
lintro / tools / core / tool_registry.py (no class)   37 0 0   100%
lintro / tools / core / version_checking.py (no class)   50 6 0   88%
lintro / tools / core / version_parsing.py ToolVersionInfo   0 0 0   100%
lintro / tools / core / version_parsing.py (no class)   126 8 0   94%
lintro / tools / core / version_requirements.py (no class)   23 7 0   70%
lintro / tools / definitions / __init__.py (no class)   0 0 0   100%
lintro / tools / definitions / actionlint.py ActionlintPlugin   45 16 4   64%
lintro / tools / definitions / actionlint.py (no class)   28 0 0   100%
lintro / tools / definitions / astro_check.py AstroCheckPlugin   100 35 0   65%
lintro / tools / definitions / astro_check.py (no class)   35 0 0   100%
lintro / tools / definitions / bandit.py BanditPlugin   143 49 0   66%
lintro / tools / definitions / bandit.py (no class)   46 1 0   98%
lintro / tools / definitions / black.py BlackPlugin   113 26 0   77%
lintro / tools / definitions / black.py (no class)   27 0 0   100%
lintro / tools / definitions / cargo_audit.py CargoAuditPlugin   29 1 0   97%
lintro / tools / definitions / cargo_audit.py (no class)   37 1 0   97%
lintro / tools / definitions / cargo_deny.py CargoDenyPlugin   23 9 0   61%
lintro / tools / definitions / cargo_deny.py (no class)   51 12 0   76%
lintro / tools / definitions / clippy.py ClippyPlugin   59 55 0   7%
lintro / tools / definitions / clippy.py (no class)   57 25 0   56%
lintro / tools / definitions / gitleaks.py GitleaksPlugin   71 8 0   89%
lintro / tools / definitions / gitleaks.py (no class)   31 0 0   100%
lintro / tools / definitions / hadolint.py HadolintPlugin   64 4 0   94%
lintro / tools / definitions / hadolint.py (no class)   33 0 0   100%
lintro / tools / definitions / markdownlint.py MarkdownlintPlugin   76 46 0   39%
lintro / tools / definitions / markdownlint.py (no class)   37 0 0   100%
lintro / tools / definitions / mypy.py MypyPlugin   131 43 0   67%
lintro / tools / definitions / mypy.py (no class)   51 0 0   100%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin   79 8 0   90%
lintro / tools / definitions / osv_scanner.py (no class)   35 0 0   100%
lintro / tools / definitions / oxfmt.py OxfmtPlugin   114 18 0   84%
lintro / tools / definitions / oxfmt.py (no class)   28 0 0   100%
lintro / tools / definitions / oxlint.py OxlintPlugin   141 11 0   92%
lintro / tools / definitions / oxlint.py (no class)   31 0 0   100%
lintro / tools / definitions / prettier.py PrettierPlugin   176 58 0   67%
lintro / tools / definitions / prettier.py (no class)   33 0 0   100%
lintro / tools / definitions / pydoclint.py PydoclintPlugin   23 2 0   91%
lintro / tools / definitions / pydoclint.py (no class)   24 0 0   100%
lintro / tools / definitions / pytest.py PytestPlugin   87 39 0   55%
lintro / tools / definitions / pytest.py (no class)   38 0 0   100%
lintro / tools / definitions / ruff.py RuffPlugin   58 3 0   95%
lintro / tools / definitions / ruff.py (no class)   34 0 0   100%
lintro / tools / definitions / rustfmt.py RustfmtPlugin   52 2 0   96%
lintro / tools / definitions / rustfmt.py (no class)   58 10 0   83%
lintro / tools / definitions / semgrep.py SemgrepPlugin   90 12 0   87%
lintro / tools / definitions / semgrep.py (no class)   47 1 0   98%
lintro / tools / definitions / shellcheck.py ShellcheckPlugin   40 2 0   95%
lintro / tools / definitions / shellcheck.py (no class)   45 0 0   100%
lintro / tools / definitions / shfmt.py ShfmtPlugin   91 7 0   92%
lintro / tools / definitions / shfmt.py (no class)   29 0 0   100%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin   74 4 0   95%
lintro / tools / definitions / sqlfluff.py (no class)   32 0 0   100%
lintro / tools / definitions / svelte_check.py SvelteCheckPlugin   87 31 0   64%
lintro / tools / definitions / svelte_check.py (no class)   31 0 0   100%
lintro / tools / definitions / taplo.py TaploPlugin   123 6 0   95%
lintro / tools / definitions / taplo.py (no class)   31 0 0   100%
lintro / tools / definitions / tsc.py TscPlugin   189 49 0   74%
lintro / tools / definitions / tsc.py (no class)   39 0 0   100%
lintro / tools / definitions / vue_tsc.py VueTscPlugin   173 55 0   68%
lintro / tools / definitions / vue_tsc.py (no class)   39 0 0   100%
lintro / tools / definitions / yamllint.py YamllintPlugin   157 76 0   52%
lintro / tools / definitions / yamllint.py (no class)   38 2 0   95%
lintro / tools / implementations / __init__.py (no class)   4 0 0   100%
lintro / tools / implementations / pytest / __init__.py (no class)   3 0 0   100%
lintro / tools / implementations / pytest / collection.py (no class)   111 61 0   45%
lintro / tools / implementations / pytest / coverage_processor.py (no class)   68 52 0   24%
lintro / tools / implementations / pytest / formatters.py (no class)   137 48 0   65%
lintro / tools / implementations / pytest / markers.py (no class)   64 50 2   22%
lintro / tools / implementations / pytest / output.py (no class)   79 23 2   71%
lintro / tools / implementations / pytest / output_parsers.py (no class)   59 28 0   53%
lintro / tools / implementations / pytest / pytest_command_builder.py (no class)   131 41 2   69%
lintro / tools / implementations / pytest / pytest_config.py PytestConfiguration   34 6 0   82%
lintro / tools / implementations / pytest / pytest_config.py (no class)   45 0 0   100%
lintro / tools / implementations / pytest / pytest_error_handler.py PytestErrorHandler   14 14 0   0%
lintro / tools / implementations / pytest / pytest_error_handler.py (no class)   9 0 0   100%
lintro / tools / implementations / pytest / pytest_executor.py PytestExecutor   30 16 0   47%
lintro / tools / implementations / pytest / pytest_executor.py (no class)   13 0 2   100%
lintro / tools / implementations / pytest / pytest_handlers.py (no class)   118 0 2   100%
lintro / tools / implementations / pytest / pytest_option_validators.py (no class)   78 28 0   64%
lintro / tools / implementations / pytest / pytest_output_processor.py (no class)   6 0 0   100%
lintro / tools / implementations / pytest / pytest_result_processor.py PytestResultProcessor   10 0 0   100%
lintro / tools / implementations / pytest / pytest_result_processor.py (no class)   12 0 0   100%
lintro / tools / implementations / pytest / test_analytics.py (no class)   54 10 0   81%
lintro / tools / implementations / ruff / __init__.py (no class)   4 0 0   100%
lintro / tools / implementations / ruff / check.py (no class)   75 3 3   96%
lintro / tools / implementations / ruff / commands.py (no class)   67 11 2   84%
lintro / tools / implementations / ruff / fix.py (no class)   112 1 4   99%
lintro / utils / __init__.py (no class)   0 0 0   100%
lintro / utils / ai_metadata.py (no class)   14 4 0   71%
lintro / utils / ascii_normalize_cli.py (no class)   39 0 2   100%
lintro / utils / async_tool_executor.py AsyncToolExecutor   38 3 0   92%
lintro / utils / async_tool_executor.py (no class)   52 1 4   98%
lintro / utils / config.py (no class)   127 11 0   91%
lintro / utils / config_constants.py ToolOrderStrategy   0 0 0   100%
lintro / utils / config_constants.py ToolConfigInfo   0 0 0   100%
lintro / utils / config_constants.py (no class)   19 0 0   100%
lintro / utils / config_priority.py (no class)   83 6 0   93%
lintro / utils / config_reporting.py (no class)   60 0 0   100%
lintro / utils / config_validation.py (no class)   43 5 0   88%
lintro / utils / console / __init__.py (no class)   7 0 0   100%
lintro / utils / console / constants.py (no class)   18 2 0   89%
lintro / utils / console / logger.py ThreadSafeConsoleLogger   159 1 0   99%
lintro / utils / console / logger.py (no class)   36 0 0   100%
lintro / utils / console / pre_execution_summary.py (no class)   82 19 3   77%
lintro / utils / display_helpers.py (no class)   68 0 0   100%
lintro / utils / env.py (no class)   12 2 0   83%
lintro / utils / environment / __init__.py (no class)   15 0 0   100%
lintro / utils / environment / _protocol.py Renderable   0 0 3   100%
lintro / utils / environment / _protocol.py (no class)   8 0 2   100%
lintro / utils / environment / ci_environment.py CIEnvironment   6 6 0   0%
lintro / utils / environment / ci_environment.py (no class)   11 0 0   100%
lintro / utils / environment / collectors.py (no class)   179 142 0   21%
lintro / utils / environment / container_detection.py (no class)   22 14 0   36%
lintro / utils / environment / environment_report.py EnvironmentReport   0 0 0   100%
lintro / utils / environment / environment_report.py (no class)   23 0 0   100%
lintro / utils / environment / go_info.py GoInfo   3 3 0   0%
lintro / utils / environment / go_info.py (no class)   11 0 0   100%
lintro / utils / environment / lintro_info.py LintroInfo   7 7 0   0%
lintro / utils / environment / lintro_info.py (no class)   12 0 0   100%
lintro / utils / environment / node_info.py NodeInfo   3 3 0   0%
lintro / utils / environment / node_info.py (no class)   13 0 0   100%
lintro / utils / environment / project_info.py ProjectInfo   6 6 0   0%
lintro / utils / environment / project_info.py (no class)   12 0 0   100%
lintro / utils / environment / python_info.py PythonInfo   3 3 0   0%
lintro / utils / environment / python_info.py (no class)   13 0 0   100%
lintro / utils / environment / renderer.py (no class)   60 47 2   22%
lintro / utils / environment / ruby_info.py RubyInfo   3 3 0   0%
lintro / utils / environment / ruby_info.py (no class)   11 0 0   100%
lintro / utils / environment / rust_info.py RustInfo   3 3 0   0%
lintro / utils / environment / rust_info.py (no class)   12 0 0   100%
lintro / utils / environment / system_info.py SystemInfo   7 7 0   0%
lintro / utils / environment / system_info.py (no class)   15 0 0   100%
lintro / utils / execution / __init__.py (no class)   4 0 0   100%
lintro / utils / execution / exit_codes.py (no class)   32 1 0   97%
lintro / utils / execution / parallel_executor.py (no class)   41 0 2   100%
lintro / utils / execution / tool_configuration.py SkippedTool   0 0 0   100%
lintro / utils / execution / tool_configuration.py ToolsToRunResult   0 0 0   100%
lintro / utils / execution / tool_configuration.py (no class)   116 7 3   94%
lintro / utils / file_cache.py FileFingerprint   2 0 0   100%
lintro / utils / file_cache.py ToolCache   55 15 0   73%
lintro / utils / file_cache.py (no class)   50 5 0   90%
lintro / utils / formatting.py (no class)   74 9 0   88%
lintro / utils / json_output.py (no class)   21 0 0   100%
lintro / utils / jsonc.py (no class)   120 11 0   91%
lintro / utils / logger_setup.py (no class)   13 0 0   100%
lintro / utils / native_parsers.py (no class)   164 56 0   66%
lintro / utils / node_deps.py (no class)   88 10 0   89%
lintro / utils / output / __init__.py (no class)   5 0 0   100%
lintro / utils / output / constants.py (no class)   5 0 0   100%
lintro / utils / output / file_writer.py (no class)   149 11 2   93%
lintro / utils / output / helpers.py (no class)   9 0 0   100%
lintro / utils / output / manager.py OutputManager   84 1 0   99%
lintro / utils / output / manager.py (no class)   26 0 2   100%
lintro / utils / output / parser_registration.py ParserError   0 0 0   100%
lintro / utils / output / parser_registration.py (no class)   46 2 0   96%
lintro / utils / output / parser_registry.py ParserEntry   0 0 0   100%
lintro / utils / output / parser_registry.py ParserRegistry   10 0 0   100%
lintro / utils / output / parser_registry.py (no class)   21 0 4   100%
lintro / utils / path_filtering.py (no class)   78 8 2   90%
lintro / utils / path_utils.py (no class)   76 7 0   91%
lintro / utils / post_checks.py (no class)   80 11 3   86%
lintro / utils / project_detection.py (no class)   80 13 0   84%
lintro / utils / result_formatters.py (no class)   180 78 0   57%
lintro / utils / streaming_output.py StreamingResultHandler   73 6 0   92%
lintro / utils / streaming_output.py (no class)   27 0 3   100%
lintro / utils / summary_tables.py (no class)   210 46 0   78%
lintro / utils / tool_config_info.py (no class)   3 0 0   100%
lintro / utils / tool_executor.py (no class)   298 70 3   77%
lintro / utils / tool_options.py (no class)   44 4 0   91%
lintro / utils / tool_utils.py (no class)   4 0 0   100%
lintro / utils / unified_config.py (no class)   8 0 0   100%
lintro / utils / unified_config_manager.py UnifiedConfigManager   34 0 0   100%
lintro / utils / unified_config_manager.py (no class)   22 0 0   100%
scripts / ci / maintenance / ghcr_prune_untagged.py GhcrVersion   0 0 0   100%
scripts / ci / maintenance / ghcr_prune_untagged.py _ResponseProto   0 0 2   100%
scripts / ci / maintenance / ghcr_prune_untagged.py GhcrClient   0 0 2   100%
scripts / ci / maintenance / ghcr_prune_untagged.py (no class)   170 36 7   79%
scripts / ci / maintenance / semantic_release_compute_next.py ComputeResult   0 0 0   100%
scripts / ci / maintenance / semantic_release_compute_next.py (no class)   177 106 0   40%
scripts / ci / verify-manifest-tools.py (no class)   140 106 0   24%
scripts / utils / delete-previous-lintro-comments.py (no class)   70 39 0   44%
scripts / utils / merge_pr_comment.py (no class)   51 3 20   94%
tests / __init__.py (no class)   0 0 0   100%
tests / cli / __init__.py (no class)   0 0 0   100%
tests / cli / conftest.py (no class)   14 6 0   57%
tests / cli / test_cli.py (no class)   59 0 0   100%
tests / cli / test_config_command.py (no class)   85 0 0   100%
tests / cli / test_init_command.py (no class)   67 0 0   100%
tests / config / __init__.py (no class)   0 0 0   100%
tests / config / test_config_loader.py (no class)   95 0 0   100%
tests / config / test_init_command.py (no class)   67 0 0   100%
tests / config / test_lintro_config.py (no class)   50 0 0   100%
tests / config / test_tool_config_generator.py (no class)   156 0 0   100%
tests / conftest.py (no class)   38 9 0   76%
tests / constants.py (no class)   13 0 0   100%
tests / formatters / __init__.py (no class)   0 0 0   100%
tests / formatters / test_formatters.py (no class)   54 0 0   100%
tests / integration / __init__.py (no class)   0 0 0   100%
tests / integration / conftest.py (no class)   38 12 0   68%
tests / integration / test_actionlint_integration.py (no class)   49 5 0   90%
tests / integration / test_bandit_integration.py (no class)   36 0 0   100%
tests / integration / test_built_package.py (no class)   35 1 0   97%
tests / integration / test_doc_url_e2e.py (no class)   82 0 0   100%
tests / integration / test_markdownlint_integration.py (no class)   79 14 0   82%
tests / integration / test_mypy_integration.py (no class)   54 1 2   98%
tests / integration / test_parallel_execution.py (no class)   56 0 0   100%
tests / integration / test_prettier_convergence.py (no class)   44 0 0   100%
tests / integration / test_pydoclint_integration.py (no class)   80 3 0   96%
tests / integration / tools / __init__.py (no class)   0 0 0   100%
tests / integration / tools / astro_check / __init__.py (no class)   0 0 0   100%
tests / integration / tools / astro_check / conftest.py (no class)   48 24 0   50%
tests / integration / tools / astro_check / test_check.py (no class)   32 0 2   100%
tests / integration / tools / gitleaks / __init__.py (no class)   0 0 0   100%
tests / integration / tools / gitleaks / conftest.py (no class)   24 1 0   96%
tests / integration / tools / gitleaks / test_check.py (no class)   26 0 2   100%
tests / integration / tools / gitleaks / test_definition.py (no class)   18 0 2   100%
tests / integration / tools / gitleaks / test_options.py (no class)   12 0 2   100%
tests / integration / tools / osv_scanner / __init__.py (no class)   0 0 0   100%
tests / integration / tools / osv_scanner / conftest.py (no class)   24 1 0   96%
tests / integration / tools / osv_scanner / test_check.py (no class)   28 0 2   100%
tests / integration / tools / osv_scanner / test_definition.py (no class)   12 0 2   100%
tests / integration / tools / osv_scanner / test_options.py (no class)   16 0 2   100%
tests / integration / tools / shellcheck / __init__.py (no class)   0 0 0   100%
tests / integration / tools / shellcheck / conftest.py (no class)   29 2 0   93%
tests / integration / tools / shellcheck / test_check.py (no class)   40 0 2   100%
tests / integration / tools / shellcheck / test_definition.py (no class)   19 0 2   100%
tests / integration / tools / shellcheck / test_options.py (no class)   31 0 2   100%
tests / integration / tools / svelte_check / __init__.py (no class)   0 0 0   100%
tests / integration / tools / svelte_check / conftest.py (no class)   38 12 0   68%
tests / integration / tools / svelte_check / test_check.py (no class)   37 0 2   100%
tests / integration / tools / test_bandit_integration.py (no class)   48 0 2   100%
tests / integration / tools / test_black_integration.py (no class)   61 0 2   100%
tests / integration / tools / test_cargo_deny_integration.py (no class)   53 4 2   92%
tests / integration / tools / test_mypy_integration.py (no class)   46 0 2   100%
tests / integration / tools / test_oxfmt_integration.py (no class)   129 4 2   97%
tests / integration / tools / test_oxlint_integration.py (no class)   134 4 2   97%
tests / integration / tools / test_prettier_integration.py (no class)   94 3 2   97%
tests / integration / tools / test_ruff_integration.py (no class)   104 0 2   100%
tests / integration / tools / test_rustfmt_integration.py (no class)   123 4 2   97%
tests / integration / tools / test_semgrep_integration.py (no class)   48 0 2   100%
tests / integration / tools / test_shfmt_integration.py (no class)   90 0 2   100%
tests / integration / tools / test_sqlfluff_integration.py (no class)   64 0 2   100%
tests / integration / tools / test_taplo_integration.py (no class)   60 0 2   100%
tests / integration / tools / test_yamllint_integration.py (no class)   81 0 2   100%
tests / integration / tools / tsc / __init__.py (no class)   0 0 0   100%
tests / integration / tools / tsc / conftest.py (no class)   33 4 0   88%
tests / integration / tools / tsc / test_check.py (no class)   59 0 2   100%
tests / integration / tools / vue_tsc / __init__.py (no class)   0 0 0   100%
tests / integration / tools / vue_tsc / conftest.py (no class)   48 24 0   50%
tests / integration / tools / vue_tsc / test_check.py (no class)   34 0 2   100%
tests / scripts / __init__.py (no class)   0 0 0   100%
tests / scripts / conftest.py (no class)   15 7 0   53%
tests / scripts / test_ci_post_pr_comment.py (no class)   96 1 0   99%
tests / scripts / test_coverage_pipeline_integration.py (no class)   73 0 0   100%
tests / scripts / test_delete_previous_lintro_comments.py (no class)   46 2 0   96%
tests / scripts / test_extract_test_summary.py (no class)   93 0 0   100%
tests / scripts / test_extract_version.py (no class)   25 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py MockOwnerResponse   4 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py MockDeleteResponse   1 0 3   100%
tests / scripts / test_ghcr_prune_untagged.py make_versions_response.MockVersionsResponse   5 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py make_mock_client._MockClient   11 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_list_container_versions_parses_minimal_structure.DummyResp   3 0 1   100%
tests / scripts / test_ghcr_prune_untagged.py test_list_container_versions_parses_minimal_structure.DummyClient   3 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_delete_version_calls_delete.DummyClient   2 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_delete_version_raises_on_non_204_non_404.DummyClient   1 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py (no class)   87 1 4   99%
tests / scripts / test_github_comment_utilities.py (no class)   0 0 0   100%
tests / scripts / test_github_comment_utilities_encode.py (no class)   49 0 0   100%
tests / scripts / test_github_comment_utilities_extract.py (no class)   41 0 0   100%
tests / scripts / test_github_comment_utilities_find.py (no class)   49 0 0   100%
tests / scripts / test_merge_pr_comment.py (no class)   117 0 0   100%
tests / scripts / test_semantic_release_compute_next.py (no class)   38 0 5   100%
tests / scripts / test_shell_scripts.py (no class)   13 0 0   100%
tests / scripts / test_verify_manifest_tools.py (no class)   18 1 0   94%
tests / test_documentation.py (no class)   93 20 0   78%
tests / unit / __init__.py (no class)   0 0 0   100%
tests / unit / ai / __init__.py (no class)   0 0 0   100%
tests / unit / ai / conftest.py MockAIProvider   15 2 0   87%
tests / unit / ai / conftest.py MockIssue   0 0 0   100%
tests / unit / ai / conftest.py (no class)   34 3 0   91%
tests / unit / ai / providers / __init__.py (no class)   0 0 0   100%
tests / unit / ai / providers / test_anthropic.py (no class)   93 0 0   100%
tests / unit / ai / providers / test_base.py test_base_ai_provider_complete_subclass.TestProvider   3 1 0   67%
tests / unit / ai / providers / test_base.py test_incomplete_subclass_fails.IncompleteProvider   0 0 0   100%
tests / unit / ai / providers / test_base.py (no class)   34 0 0   100%
tests / unit / ai / providers / test_factory.py (no class)   32 0 0   100%
tests / unit / ai / providers / test_openai.py (no class)   116 0 0   100%
tests / unit / ai / providers / test_stream.py _StubProvider   10 1 0   90%
tests / unit / ai / providers / test_stream.py test_base_provider_stream_complete_passes_kwargs._CapturingProvider   2 0 0   100%
tests / unit / ai / providers / test_stream.py (no class)   72 0 0   100%
tests / unit / ai / test_ai_config_validation.py (no class)   29 0 0   100%
tests / unit / ai / test_annotations.py (no class)   91 0 0   100%
tests / unit / ai / test_apply.py (no class)   207 0 0   100%
tests / unit / ai / test_audit.py (no class)   39 0 0   100%
tests / unit / ai / test_availability.py (no class)   37 0 0   100%
tests / unit / ai / test_budget.py (no class)   67 0 0   100%
tests / unit / ai / test_cache.py (no class)   103 0 0   100%
tests / unit / ai / test_config.py (no class)   74 0 0   100%
tests / unit / ai / test_config_wiring.py (no class)   108 0 0   100%
tests / unit / ai / test_cost.py (no class)   51 0 0   100%
tests / unit / ai / test_display.py (no class)   10 0 0   100%
tests / unit / ai / test_enums.py (no class)   44 0 0   100%
tests / unit / ai / test_exceptions.py (no class)   10 0 0   100%
tests / unit / ai / test_fallback.py (no class)   111 0 0   100%
tests / unit / ai / test_filters.py (no class)   129 0 0   100%
tests / unit / ai / test_fix_context.py (no class)   40 0 0   100%
tests / unit / ai / test_fix_generation_basic.py (no class)   139 6 0   96%
tests / unit / ai / test_fix_generation_batch.py (no class)   31 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_generate_fixes_handles_provider_error.ErrorProvider   1 1 0   0%
tests / unit / ai / test_fix_generation_edge.py test_retries_on_provider_error.RetryProvider   4 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_no_retry_on_auth_error.AuthErrorProvider   2 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_max_retries_zero_means_no_retry.FailOnceProvider   2 0 0   100%
tests / unit / ai / test_fix_generation_edge.py (no class)   80 1 0   99%
tests / unit / ai / test_fix_parsing.py (no class)   90 0 0   100%
tests / unit / ai / test_fix_reading.py (no class)   50 0 0   100%
tests / unit / ai / test_github_pr.py (no class)   157 0 0   100%
tests / unit / ai / test_hook.py (no class)   58 0 0   100%
tests / unit / ai / test_interactive.py (no class)   164 0 0   100%
tests / unit / ai / test_metadata.py (no class)   50 0 0   100%
tests / unit / ai / test_models.py (no class)   18 0 0   100%
tests / unit / ai / test_orchestrator_check.py (no class)   89 0 0   100%
tests / unit / ai / test_orchestrator_edge.py (no class)   84 0 0   100%
tests / unit / ai / test_orchestrator_fix.py (no class)   107 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_rerun_uses_original_tool_cwd._FakeTool   4 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_rerun_continues_on_tool_failure._FailingTool   2 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_rerun_continues_on_tool_failure._PassingTool   2 0 0   100%
tests / unit / ai / test_orchestrator_multi.py (no class)   139 0 0   100%
tests / unit / ai / test_paths.py (no class)   43 0 0   100%
tests / unit / ai / test_pipeline.py (no class)   184 0 0   100%
tests / unit / ai / test_prompts.py (no class)   94 0 0   100%
tests / unit / ai / test_refinement.py (no class)   117 0 0   100%
tests / unit / ai / test_registry.py (no class)   82 0 0   100%
tests / unit / ai / test_rerun.py (no class)   64 0 0   100%
tests / unit / ai / test_retry.py (no class)   101 1 0   99%
tests / unit / ai / test_risk.py (no class)   103 0 0   100%
tests / unit / ai / test_sanitize.py (no class)   50 0 0   100%
tests / unit / ai / test_sanitize_mode.py (no class)   32 0 0   100%
tests / unit / ai / test_sarif.py (no class)   120 0 0   100%
tests / unit / ai / test_sarif_artifact.py (no class)   86 0 0   100%
tests / unit / ai / test_sarif_bridge.py (no class)   64 0 0   100%
tests / unit / ai / test_secrets.py (no class)   47 0 0   100%
tests / unit / ai / test_stream_fallback.py _SuccessProvider   12 2 0   83%
tests / unit / ai / test_stream_fallback.py _FailingProvider   10 2 0   80%
tests / unit / ai / test_stream_fallback.py test_stream_fallback_tries_fallback_models._ModelTrackingProvider   4 0 0   100%
tests / unit / ai / test_stream_fallback.py test_stream_fallback_restores_model_name._FailThenSuccessProvider   3 0 0   100%
tests / unit / ai / test_stream_fallback.py (no class)   45 0 0   100%
tests / unit / ai / test_summary_formatting.py (no class)   74 0 0   100%
tests / unit / ai / test_summary_generation.py test_generate_summary_handles_provider_error.ErrorProvider   1 0 0   100%
tests / unit / ai / test_summary_generation.py (no class)   100 0 0   100%
tests / unit / ai / test_telemetry.py (no class)   46 0 0   100%
tests / unit / ai / test_token_budget.py (no class)   37 0 0   100%
tests / unit / ai / test_undo.py (no class)   36 0 0   100%
tests / unit / ai / test_validation_applied.py (no class)   151 0 0   100%
tests / unit / ai / test_validation_core.py (no class)   93 0 0   100%
tests / unit / cli / __init__.py (no class)   0 0 0   100%
tests / unit / cli / conftest.py (no class)   38 13 2   66%
tests / unit / cli / test_check_command.py (no class)   118 0 0   100%
tests / unit / cli / test_cli.py (no class)   98 0 0   100%
tests / unit / cli / test_cli_commands.py (no class)   14 0 0   100%
tests / unit / cli / test_cli_commands_more.py (no class)   36 0 0   100%
tests / unit / cli / test_cli_lintro_group.py (no class)   143 0 0   100%
tests / unit / cli / test_cli_programmatic.py (no class)   38 0 0   100%
tests / unit / cli / test_format_command.py (no class)   172 0 0   100%
tests / unit / cli_utils / __init__.py (no class)   0 0 0   100%
tests / unit / cli_utils / command_chainer / __init__.py (no class)   0 0 0   100%
tests / unit / cli_utils / command_chainer / conftest.py (no class)   20 2 0   90%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_single_command_uses_exit_code_attribute.CustomError   0 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py (no class)   68 0 0   100%
tests / unit / cli_utils / command_chainer / test_group_commands.py (no class)   24 0 0   100%
tests / unit / cli_utils / command_chainer / test_init.py (no class)   23 0 0   100%
tests / unit / cli_utils / command_chainer / test_integration.py (no class)   20 0 0   100%
tests / unit / cli_utils / command_chainer / test_normalize_args.py (no class)   24 0 0   100%
tests / unit / cli_utils / command_chainer / test_should_chain.py (no class)   19 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py (no class)   181 1 0   99%
tests / unit / cli_utils / commands / test_format.py (no class)   112 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py (no class)   96 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py (no class)   127 0 0   100%
tests / unit / compatibility / conftest.py (no class)   0 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py FakeToolDefinition   0 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py FakeTool   9 1 0   89%
tests / unit / compatibility / test_compatibility_ruff_black.py _stub_logger.SilentLogger   3 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py (no class)   66 0 2   100%
tests / unit / config / conftest.py (no class)   16 8 0   50%
tests / unit / config / test_config_compatibility.py (no class)   23 0 0   100%
tests / unit / config / test_config_cwd_cache.py (no class)   34 0 0   100%
tests / unit / config / test_config_loader.py (no class)   53 0 0   100%
tests / unit / config / test_config_loader_more.py (no class)   14 0 0   100%
tests / unit / config / test_config_loaders.py (no class)   74 0 0   100%
tests / unit / config / test_config_tool_specific.py (no class)   67 0 0   100%
tests / unit / config / test_enforce_config.py (no class)   32 0 0   100%
tests / unit / config / test_execution_config.py (no class)   62 0 0   100%
tests / unit / config / test_lintro_config.py (no class)   91 0 0   100%
tests / unit / config / test_unified_config.py (no class)   42 0 0   100%
tests / unit / conftest.py FakeLogger   16 8 0   50%
tests / unit / conftest.py (no class)   21 0 0   100%
tests / unit / core / conftest.py (no class)   0 0 0   100%
tests / unit / core / test_version_requirements.py (no class)   144 3 2   98%
tests / unit / enums / __init__.py (no class)   0 0 0   100%
tests / unit / enums / test_bandit_levels.py (no class)   30 0 0   100%
tests / unit / enums / test_base.py test_upper_case_str_enum_single_word.TestEnum   0 0 0   100%
tests / unit / enums / test_base.py test_upper_case_str_enum_with_underscores.TestEnum   0 0 0   100%
tests / unit / enums / test_base.py test_hyphenated_str_enum_single_word.TestEnum   0 0 0   100%
tests / unit / enums / test_base.py test_hyphenated_str_enum_with_underscores.TestEnum   0 0 0   100%
tests / unit / enums / test_base.py test_hyphenated_str_enum_multiple_underscores.TestEnum   0 0 0   100%
tests / unit / enums / test_base.py (no class)   49 0 0   100%
tests / unit / enums / test_enum_normalizers.py (no class)   34 0 0   100%
tests / unit / enums / test_output_format.py (no class)   20 0 0   100%
tests / unit / enums / test_severity_level.py (no class)   19 0 0   100%
tests / unit / enums / test_tool_name.py (no class)   24 0 0   100%
tests / unit / exceptions / conftest.py (no class)   0 0 0   100%
tests / unit / exceptions / test_exceptions.py (no class)   32 0 0   100%
tests / unit / formatters / __init__.py (no class)   1 0 0   100%
tests / unit / formatters / conftest.py (no class)   11 4 0   64%
tests / unit / formatters / styles / __init__.py (no class)   1 0 0   100%
tests / unit / formatters / styles / conftest.py (no class)   34 0 0   100%
tests / unit / formatters / styles / test_csv.py (no class)   26 0 0   100%
tests / unit / formatters / styles / test_html.py (no class)   28 0 0   100%
tests / unit / formatters / styles / test_json.py (no class)   44 0 0   100%
tests / unit / formatters / styles / test_markdown.py (no class)   29 0 0   100%
tests / unit / formatters / styles / test_plain.py (no class)   34 0 0   100%
tests / unit / formatters / styles / test_style_common.py (no class)   16 0 2   100%
tests / unit / formatters / styles / test_style_csv.py (no class)   20 0 0   100%
tests / unit / formatters / styles / test_style_github.py (no class)   62 0 0   100%
tests / unit / formatters / styles / test_style_grid.py (no class)   18 0 0   100%
tests / unit / formatters / styles / test_style_html.py (no class)   25 0 0   100%
tests / unit / formatters / styles / test_style_json.py (no class)   47 0 0   100%
tests / unit / formatters / styles / test_style_markdown.py (no class)   21 0 0   100%
tests / unit / formatters / styles / test_style_plain.py (no class)   21 0 0   100%
tests / unit / formatters / test_format_issues.py (no class)   137 0 0   100%
tests / unit / formatters / test_format_registry.py (no class)   75 0 0   100%
tests / unit / logging / conftest.py (no class)   0 0 0   100%
tests / unit / logging / test_console_logger.py test_create_logger_and_basic_methods.Result   4 0 0   100%
tests / unit / logging / test_console_logger.py test_create_logger_and_basic_methods.FmtResult   5 0 0   100%
tests / unit / logging / test_console_logger.py test_summary_marks_fail_on_tool_failure.Result   4 0 0   100%
tests / unit / logging / test_console_logger.py (no class)   38 0 0   100%
tests / unit / logging / test_console_logger_more.py (no class)   41 0 0   100%
tests / unit / output / conftest.py (no class)   0 0 0   100%
tests / unit / output / test_output_manager_reports.py DummyIssue   4 0 0   100%
tests / unit / output / test_output_manager_reports.py DummyResult   3 0 0   100%
tests / unit / output / test_output_manager_reports.py (no class)   18 0 0   100%
tests / unit / parsers / base_parser / __init__.py (no class)   0 0 0   100%
tests / unit / parsers / base_parser / test_continuation_lines.py (no class)   28 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py (no class)   68 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py TestIssue   0 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py (no class)   47 1 0   98%
tests / unit / parsers / base_parser / test_strip_ansi.py (no class)   22 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py (no class)   42 0 0   100%
tests / unit / parsers / conftest.py (no class)   16 7 0   56%
tests / unit / parsers / gitleaks_parser / __init__.py (no class)   0 0 0   100%
tests / unit / parsers / gitleaks_parser / test_edge_cases.py (no class)   27 0 0   100%
tests / unit / parsers / gitleaks_parser / test_field_parsing.py (no class)   34 0 0   100%
tests / unit / parsers / gitleaks_parser / test_issue_model.py (no class)   16 0 0   100%
tests / unit / parsers / gitleaks_parser / test_plugin_parsing.py (no class)   68 2 0   97%
tests / unit / parsers / gitleaks_parser / test_valid_output.py (no class)   28 0 0   100%
tests / unit / parsers / pydoclint_parser / __init__.py (no class)   0 0 0   100%
tests / unit / parsers / pydoclint_parser / conftest.py (no class)   12 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py (no class)   53 0 0   100%
tests / unit / parsers / pydoclint_parser / test_field_extraction.py (no class)   39 0 0   100%
tests / unit / parsers / pydoclint_parser / test_invalid_input.py (no class)   24 0 0   100%
tests / unit / parsers / pydoclint_parser / test_issue_model.py (no class)   30 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py (no class)   168 0 0   100%
tests / unit / parsers / shellcheck_parser / __init__.py (no class)   0 0 0   100%
tests / unit / parsers / shellcheck_parser / conftest.py (no class)   12 0 0   100%
tests / unit / parsers / shellcheck_parser / test_edge_cases.py (no class)   46 0 0   100%
tests / unit / parsers / shellcheck_parser / test_field_extraction.py (no class)   36 0 0   100%
tests / unit / parsers / shellcheck_parser / test_invalid_input.py (no class)   17 0 0   100%
tests / unit / parsers / shellcheck_parser / test_issue_model.py (no class)   14 0 0   100%
tests / unit / parsers / shellcheck_parser / test_multiple_issues.py (no class)   18 0 0   100%
tests / unit / parsers / streaming / __init__.py (no class)   0 0 0   100%
tests / unit / parsers / streaming / conftest.py SimpleIssue   0 0 0   100%
tests / unit / parsers / streaming / conftest.py (no class)   28 0 2   100%
tests / unit / parsers / streaming / test_collect.py (no class)   19 0 2   100%
tests / unit / parsers / streaming / test_json_array.py (no class)   24 0 3   100%
tests / unit / parsers / streaming / test_json_lines.py (no class)   44 0 3   100%
tests / unit / parsers / streaming / test_parser_class.py test_stream_json_lines_uses_parse_item.TestParser   2 0 0   100%
tests / unit / parsers / streaming / test_parser_class.py test_stream_text_lines_uses_parse_line.TestParser   3 0 0   100%
tests / unit / parsers / streaming / test_parser_class.py test_stream_json_array_uses_parse_item.TestParser   2 0 0   100%
tests / unit / parsers / streaming / test_parser_class.py (no class)   33 0 0   100%
tests / unit / parsers / streaming / test_text_lines.py (no class)   26 0 3   100%
tests / unit / parsers / test_actionlint_parser.py (no class)   21 0 0   100%
tests / unit / parsers / test_astro_check_parser.py (no class)   78 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_bandit_check_handles_nonzero_rc_with_errors_array.NS   3 0 0   100%
tests / unit / parsers / test_bandit_parser.py (no class)   85 0 0   100%
tests / unit / parsers / test_base_issue.py test_subclass_with_custom_fields.CustomIssue   0 0 0   100%
tests / unit / parsers / test_base_issue.py test_subclass_with_custom_field_map.MappedIssue   0 0 0   100%
tests / unit / parsers / test_base_issue.py test_to_display_row_fixable_true.FixableIssue   0 0 0   100%
tests / unit / parsers / test_base_issue.py test_to_display_row_fixable_false.FixableIssue   0 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_normalizes_string_field.SeverityIssue   0 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_uses_display_field_map.MappedIssue   0 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_falls_back_on_empty_string.SeverityIssue   0 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_falls_back_on_unknown_value.SeverityIssue   0 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_respects_custom_default.InfoIssue   0 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_passes_through_enum_instance.EnumIssue   0 0 0   100%
tests / unit / parsers / test_base_issue.py (no class)   121 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_valid_items.TestIssue   0 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_skips_non_dict.TestIssue   0 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_handles_parse_failure.TestIssue   0 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_handles_none_return.TestIssue   0 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_empty_list.TestIssue   0 0 0   100%
tests / unit / parsers / test_base_parser.py (no class)   175 1 0   99%
tests / unit / parsers / test_black_parser.py (no class)   24 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py (no class)   52 0 0   100%
tests / unit / parsers / test_cargo_deny_parser.py (no class)   48 0 0   100%
tests / unit / parsers / test_clippy_parser.py (no class)   50 0 0   100%
tests / unit / parsers / test_hadolint_parser.py (no class)   90 0 0   100%
tests / unit / parsers / test_markdownlint_parser.py (no class)   88 0 0   100%
tests / unit / parsers / test_mypy_parser.py (no class)   58 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py (no class)   85 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py (no class)   87 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py (no class)   84 0 0   100%
tests / unit / parsers / test_oxlint_parser.py (no class)   107 0 0   100%
tests / unit / parsers / test_prettier_parser.py (no class)   45 0 0   100%
tests / unit / parsers / test_pydoclint_parser.py (no class)   34 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py (no class)   53 0 0   100%
tests / unit / parsers / test_ruff_parser_more.py (no class)   23 0 0   100%
tests / unit / parsers / test_rustfmt_parser.py (no class)   44 0 0   100%
tests / unit / parsers / test_semgrep_parser.py (no class)   162 0 0   100%
tests / unit / parsers / test_shfmt_parser.py (no class)   101 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py (no class)   113 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py (no class)   163 0 0   100%
tests / unit / parsers / test_taplo_parser.py (no class)   144 0 0   100%
tests / unit / parsers / test_tsc_parser.py (no class)   142 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py (no class)   78 0 0   100%
tests / unit / parsers / test_yamllint_parser.py (no class)   53 0 0   100%
tests / unit / plugins / base / __init__.py (no class)   0 0 0   100%
tests / unit / plugins / base / conftest.py NoFixPlugin   2 1 0   50%
tests / unit / plugins / base / conftest.py (no class)   11 0 0   100%
tests / unit / plugins / base / test_execution.py (no class)   144 1 2   99%
tests / unit / plugins / base / test_options.py (no class)   72 0 2   100%
tests / unit / plugins / base / test_subprocess.py (no class)   66 0 2   100%
tests / unit / plugins / base / test_subprocess_streaming.py (no class)   86 0 0   100%
tests / unit / plugins / conftest.py FakeToolPlugin   2 1 0   50%
tests / unit / plugins / conftest.py create_fake_plugin.DynamicFakePlugin   2 1 0   50%
tests / unit / plugins / conftest.py (no class)   49 4 2   92%
tests / unit / plugins / test_base_plugin_config.py (no class)   69 0 2   100%
tests / unit / plugins / test_discovery.py test_discover_external_plugins_skips_non_plugin_class.NotAPlugin   0 0 0   100%
tests / unit / plugins / test_discovery.py (no class)   87 0 0   100%
tests / unit / plugins / test_file_processor.py (no class)   137 0 0   100%
tests / unit / plugins / test_registry.py test_register_tool_decorator_can_be_used_as_decorator.DecoratorSyntaxPlugin   2 1 0   50%
tests / unit / plugins / test_registry.py (no class)   151 0 0   100%
tests / unit / plugins / test_reset_options.py (no class)   45 0 2   100%
tests / unit / pytest / conftest.py (no class)   0 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py (no class)   109 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py (no class)   87 0 0   100%
tests / unit / pytest / test_pytest_handlers.py FakeToolDefinition   0 0 0   100%
tests / unit / pytest / test_pytest_handlers.py FakePytestPlugin   7 0 0   100%
tests / unit / pytest / test_pytest_handlers.py (no class)   180 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py (no class)   103 0 0   100%
tests / unit / security / __init__.py (no class)   0 0 0   100%
tests / unit / security / conftest.py (no class)   9 2 2   78%
tests / unit / security / test_json_edge_cases.py SimpleIssue   0 0 0   100%
tests / unit / security / test_json_edge_cases.py (no class)   148 1 0   99%
tests / unit / security / test_path_traversal.py (no class)   134 2 0   99%
tests / unit / security / test_subprocess_injection.py (no class)   77 0 0   100%
tests / unit / test_package_imports.py (no class)   37 4 0   89%
tests / unit / tools / assertions / __init__.py (no class)   1 0 0   100%
tests / unit / tools / assertions / conftest.py (no class)   31 16 0   48%
tests / unit / tools / astro_check / __init__.py (no class)   0 0 0   100%
tests / unit / tools / astro_check / conftest.py (no class)   9 0 0   100%
tests / unit / tools / astro_check / test_execution.py (no class)   77 0 0   100%
tests / unit / tools / astro_check / test_options.py (no class)   50 0 0   100%
tests / unit / tools / base / conftest.py (no class)   0 0 0   100%
tests / unit / tools / cargo_audit / __init__.py (no class)   0 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py (no class)   74 0 0   100%
tests / unit / tools / cargo_deny / __init__.py (no class)   0 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py (no class)   35 0 0   100%
tests / unit / tools / conftest.py (no class)   95 50 4   47%
tests / unit / tools / core / __init__.py (no class)   0 0 0   100%
tests / unit / tools / core / conftest.py (no class)   9 4 0   56%
tests / unit / tools / core / test_command_builders.py test_registry_uses_first_matching_builder.CustomRuffBuilder   2 0 0   100%
tests / unit / tools / core / test_command_builders.py (no class)   208 3 0   99%
tests / unit / tools / core / test_install_context.py (no class)   61 0 0   100%
tests / unit / tools / core / test_install_strategies.py (no class)   243 0 0   100%
tests / unit / tools / core / test_line_length_checker.py (no class)   91 0 2   100%
tests / unit / tools / core / test_option_spec.py (no class)   58 0 0   100%
tests / unit / tools / core / test_option_validators.py (no class)   83 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py (no class)   99 0 0   100%
tests / unit / tools / core / test_tool_installer.py (no class)   249 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py (no class)   37 0 0   100%
tests / unit / tools / core / test_tool_registry.py (no class)   128 0 0   100%
tests / unit / tools / core / test_version_checking.py (no class)   47 0 0   100%
tests / unit / tools / executor / conftest.py (no class)   0 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py _FakeToolDefinition   6 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py _FakeTool   3 1 0   67%
tests / unit / tools / executor / test_tool_configuration_enabled.py (no class)   129 3 0   98%
tests / unit / tools / executor / test_tool_executor.py FakeToolDefinition   0 0 0   100%
tests / unit / tools / executor / test_tool_executor.py FakeTool   10 1 0   90%
tests / unit / tools / executor / test_tool_executor.py (no class)   97 0 0   100%
tests / unit / tools / executor / test_tool_executor_fmt_exclusion.py (no class)   10 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py FakeToolDefinition   0 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py _stub_logger.SilentLogger   3 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_get_tools_to_run_fmt_with_cannot_fix_raises.NoFixTool   4 2 0   50%
tests / unit / tools / executor / test_tool_executor_more.py test_post_checks_early_filter_removes_black_from_main.LoggerCapture   10 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py (no class)   129 2 2   98%
tests / unit / tools / executor / test_tool_executor_post_checks.py FakeToolDefinition   0 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py FakeTool   10 3 0   70%
tests / unit / tools / executor / test_tool_executor_post_checks.py _stub_logger.SilentLogger   3 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py (no class)   70 0 2   100%
tests / unit / tools / executor / test_tool_executor_pytest.py (no class)   116 0 0   100%
tests / unit / tools / gitleaks / __init__.py (no class)   0 0 0   100%
tests / unit / tools / gitleaks / conftest.py (no class)   9 0 0   100%
tests / unit / tools / gitleaks / test_error_handling.py (no class)   26 0 0   100%
tests / unit / tools / gitleaks / test_execution.py (no class)   36 2 0   94%
tests / unit / tools / gitleaks / test_options.py (no class)   66 0 0   100%
tests / unit / tools / hadolint / __init__.py (no class)   0 0 0   100%
tests / unit / tools / hadolint / conftest.py (no class)   6 0 0   100%
tests / unit / tools / hadolint / test_execution.py (no class)   90 0 0   100%
tests / unit / tools / hadolint / test_options.py (no class)   90 0 0   100%
tests / unit / tools / manager / conftest.py (no class)   0 0 0   100%
tests / unit / tools / manager / test_tool_manager.py (no class)   74 0 0   100%
tests / unit / tools / mypy / test_mypy_plugin.py (no class)   35 0 2   100%
tests / unit / tools / osv_scanner / __init__.py (no class)   0 0 0   100%
tests / unit / tools / osv_scanner / conftest.py (no class)   9 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py (no class)   134 0 0   100%
tests / unit / tools / oxfmt / __init__.py (no class)   0 0 0   100%
tests / unit / tools / oxfmt / conftest.py (no class)   9 0 0   100%
tests / unit / tools / oxfmt / test_check_method.py (no class)   55 0 2   100%
tests / unit / tools / oxfmt / test_default_options.py (no class)   32 0 2   100%
tests / unit / tools / oxfmt / test_fix_method.py (no class)   72 0 2   100%
tests / unit / tools / oxfmt / test_set_options.py (no class)   36 0 2   100%
tests / unit / tools / oxlint / __init__.py (no class)   0 0 0   100%
tests / unit / tools / oxlint / conftest.py (no class)   6 0 0   100%
tests / unit / tools / oxlint / test_check_method.py (no class)   77 0 2   100%
tests / unit / tools / oxlint / test_default_options.py (no class)   14 0 2   100%
tests / unit / tools / oxlint / test_fix_method.py (no class)   188 0 2   100%
tests / unit / tools / oxlint / test_set_options.py (no class)   58 0 2   100%
tests / unit / tools / prettier / __init__.py (no class)   0 0 0   100%
tests / unit / tools / prettier / conftest.py (no class)   6 0 0   100%
tests / unit / tools / prettier / test_check_method.py (no class)   1 0 0   100%
tests / unit / tools / prettier / test_config_discovery.py (no class)   46 0 2   100%
tests / unit / tools / prettier / test_default_options.py (no class)   10 0 2   100%
tests / unit / tools / prettier / test_fix_method.py (no class)   42 0 2   100%
tests / unit / tools / prettier / test_output_parsing.py (no class)   16 0 2   100%
tests / unit / tools / prettier / test_set_options.py (no class)   12 0 2   100%
tests / unit / tools / prettier / test_timeout_handling.py (no class)   18 0 2   100%
tests / unit / tools / pydoclint / __init__.py (no class)   0 0 0   100%
tests / unit / tools / pydoclint / conftest.py (no class)   6 0 0   100%
tests / unit / tools / pydoclint / test_build_command.py (no class)   14 0 0   100%
tests / unit / tools / pydoclint / test_check_method.py (no class)   37 0 0   100%
tests / unit / tools / pydoclint / test_config_initialization.py (no class)   13 0 0   100%
tests / unit / tools / pydoclint / test_default_options.py (no class)   7 0 0   100%
tests / unit / tools / pydoclint / test_fix_method.py (no class)   9 0 0   100%
tests / unit / tools / pydoclint / test_set_options.py (no class)   9 0 0   100%
tests / unit / tools / pytest_tool / __init__.py (no class)   0 0 0   100%
tests / unit / tools / pytest_tool / conftest.py (no class)   86 22 2   74%
tests / unit / tools / pytest_tool / test_check_method.py (no class)   39 0 2   100%
tests / unit / tools / pytest_tool / test_configuration.py (no class)   30 0 0   100%
tests / unit / tools / pytest_tool / test_json_parsing.py (no class)   22 0 0   100%
tests / unit / tools / pytest_tool / test_junit_parsing.py (no class)   19 0 0   100%
tests / unit / tools / pytest_tool / test_output_parsing.py (no class)   41 0 0   100%
tests / unit / tools / pytest_tool / test_output_processing.py (no class)   36 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py (no class)   131 0 2   100%
tests / unit / tools / pytest_tool / test_pytest_issue.py (no class)   17 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_output_processor.py (no class)   31 0 0   100%
tests / unit / tools / pytest_tool / test_result_processor.py (no class)   27 0 0   100%
tests / unit / tools / pytest_tool / test_set_options.py (no class)   15 0 2   100%
tests / unit / tools / pytest_tool / test_text_parsing.py (no class)   22 0 0   100%
tests / unit / tools / pytest_tool / test_validators.py (no class)   17 0 0   100%
tests / unit / tools / ruff / __init__.py (no class)   0 0 0   100%
tests / unit / tools / ruff / check / __init__.py (no class)   0 0 0   100%
tests / unit / tools / ruff / check / conftest.py (no class)   0 0 0   100%
tests / unit / tools / ruff / check / test_config_detection.py (no class)   17 0 0   100%
tests / unit / tools / ruff / check / test_error_handling.py (no class)   33 0 0   100%
tests / unit / tools / ruff / check / test_format_normalization.py (no class)   16 0 0   100%
tests / unit / tools / ruff / check / test_json_parsing.py (no class)   35 0 0   100%
tests / unit / tools / ruff / check / test_no_issues.py (no class)   28 0 0   100%
tests / unit / tools / ruff / check / test_output_format.py (no class)   15 0 0   100%
tests / unit / tools / ruff / check / test_output_truncation.py (no class)   32 0 0   100%
tests / unit / tools / ruff / check / test_path_filtering.py (no class)   44 0 0   100%
tests / unit / tools / ruff / check / test_real_plugin.py (no class)   16 0 2   100%
tests / unit / tools / ruff / check / test_timeout.py (no class)   12 0 0   100%
tests / unit / tools / ruff / check / test_with_issues.py (no class)   40 0 0   100%
tests / unit / tools / ruff / conftest.py (no class)   54 1 2   98%
tests / unit / tools / ruff / fix / __init__.py (no class)   0 0 0   100%
tests / unit / tools / ruff / fix / conftest.py (no class)   0 0 0   100%
tests / unit / tools / ruff / fix / test_combined_issues.py (no class)   24 0 0   100%
tests / unit / tools / ruff / fix / test_config.py (no class)   10 0 0   100%
tests / unit / tools / ruff / fix / test_edge_cases.py (no class)   31 0 0   100%
tests / unit / tools / ruff / fix / test_format_option.py (no class)   27 0 0   100%
tests / unit / tools / ruff / fix / test_no_files.py (no class)   19 0 0   100%
tests / unit / tools / ruff / fix / test_real_plugin.py (no class)   19 0 2   100%
tests / unit / tools / ruff / fix / test_successful_fix.py (no class)   31 0 0   100%
tests / unit / tools / ruff / fix / test_temporary_option.py (no class)   27 0 0   100%
tests / unit / tools / ruff / fix / test_timeout.py (no class)   47 0 0   100%
tests / unit / tools / ruff / fix / test_unsafe_fixes.py (no class)   20 0 0   100%
tests / unit / tools / ruff / fix / test_version_check.py (no class)   10 0 0   100%
tests / unit / tools / rustfmt / __init__.py (no class)   0 0 0   100%
tests / unit / tools / rustfmt / conftest.py (no class)   8 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py (no class)   86 0 0   100%
tests / unit / tools / rustfmt / test_execution.py (no class)   82 0 0   100%
tests / unit / tools / rustfmt / test_options.py (no class)   30 0 2   100%
tests / unit / tools / semgrep / __init__.py (no class)   0 0 0   100%
tests / unit / tools / semgrep / conftest.py (no class)   9 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py (no class)   63 0 2   100%
tests / unit / tools / semgrep / test_execution.py (no class)   42 0 0   100%
tests / unit / tools / semgrep / test_options.py (no class)   88 0 0   100%
tests / unit / tools / shellcheck / __init__.py (no class)   0 0 0   100%
tests / unit / tools / shellcheck / conftest.py (no class)   9 0 0   100%
tests / unit / tools / shellcheck / test_error_handling.py (no class)   13 0 0   100%
tests / unit / tools / shellcheck / test_execution.py (no class)   54 0 0   100%
tests / unit / tools / shellcheck / test_options.py (no class)   77 0 0   100%
tests / unit / tools / shfmt / __init__.py (no class)   0 0 0   100%
tests / unit / tools / shfmt / conftest.py (no class)   8 0 0   100%
tests / unit / tools / shfmt / test_error_handling.py (no class)   47 0 2   100%
tests / unit / tools / shfmt / test_execution.py (no class)   54 0 2   100%
tests / unit / tools / shfmt / test_options.py (no class)   69 0 2   100%
tests / unit / tools / sqlfluff / __init__.py (no class)   0 0 0   100%
tests / unit / tools / sqlfluff / conftest.py (no class)   9 0 0   100%
tests / unit / tools / sqlfluff / test_error_handling.py (no class)   25 0 0   100%
tests / unit / tools / sqlfluff / test_execution.py (no class)   45 0 0   100%
tests / unit / tools / sqlfluff / test_options.py (no class)   103 0 0   100%
tests / unit / tools / sqlfluff / test_output_parsing.py (no class)   39 0 0   100%
tests / unit / tools / svelte_check / __init__.py (no class)   0 0 0   100%
tests / unit / tools / svelte_check / conftest.py (no class)   9 0 0   100%
tests / unit / tools / svelte_check / test_execution.py (no class)   71 0 0   100%
tests / unit / tools / svelte_check / test_options.py (no class)   64 0 0   100%
tests / unit / tools / taplo / __init__.py (no class)   0 0 0   100%
tests / unit / tools / taplo / conftest.py (no class)   9 0 0   100%
tests / unit / tools / taplo / test_error_handling.py (no class)   37 0 0   100%
tests / unit / tools / taplo / test_execution.py (no class)   77 0 0   100%
tests / unit / tools / taplo / test_options.py (no class)   63 0 0   100%
tests / unit / tools / test_common_behaviors.py (no class)   105 8 2   92%
tests / unit / tools / test_doc_url.py (no class)   127 0 0   100%
tests / unit / tools / test_edge_cases.py (no class)   131 7 2   95%
tests / unit / tools / test_helpers.py SampleIssue   0 0 0   100%
tests / unit / tools / test_helpers.py SampleToolConfig   0 0 0   100%
tests / unit / tools / test_helpers.py (no class)   81 49 3   40%
tests / unit / tools / test_plugin_definitions.py (no class)   52 0 0   100%
tests / unit / tools / test_tool_definitions.py (no class)   40 0 0   100%
tests / unit / tools / tsc / __init__.py (no class)   0 0 0   100%
tests / unit / tools / tsc / conftest.py (no class)   1 0 0   100%
tests / unit / tools / tsc / test_execution.py (no class)   51 0 0   100%
tests / unit / tools / tsc / test_options.py (no class)   90 1 0   99%
tests / unit / tools / tsc / test_tsc_plugin.py (no class)   192 0 0   100%
tests / unit / tools / vue_tsc / __init__.py (no class)   0 0 0   100%
tests / unit / tools / vue_tsc / conftest.py (no class)   9 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py (no class)   85 0 0   100%
tests / unit / tools / vue_tsc / test_options.py (no class)   73 0 0   100%
tests / unit / tools / vue_tsc / test_vue_tsc_plugin.py (no class)   70 0 0   100%
tests / unit / utils / __init__.py (no class)   0 0 0   100%
tests / unit / utils / async_tool_executor / __init__.py (no class)   0 0 0   100%
tests / unit / utils / async_tool_executor / conftest.py MockToolDefinition   0 0 0   100%
tests / unit / utils / async_tool_executor / conftest.py MockToolPlugin   16 4 0   75%
tests / unit / utils / async_tool_executor / conftest.py (no class)   27 0 0   100%
tests / unit / utils / async_tool_executor / test_callbacks.py (no class)   32 0 0   100%
tests / unit / utils / async_tool_executor / test_exceptions.py (no class)   22 0 0   100%
tests / unit / utils / async_tool_executor / test_init.py (no class)   17 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py (no class)   94 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py (no class)   46 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py (no class)   57 0 0   100%
tests / unit / utils / async_tool_executor / test_shutdown.py (no class)   13 0 0   100%
tests / unit / utils / config / __init__.py (no class)   0 0 0   100%
tests / unit / utils / config / conftest.py (no class)   17 0 2   100%
tests / unit / utils / config / test_manager_configuration.py (no class)   74 0 0   100%
tests / unit / utils / config / test_manager_core.py (no class)   61 0 0   100%
tests / unit / utils / conftest.py FakeToolResult   0 0 0   100%
tests / unit / utils / conftest.py FakeIssue   0 0 0   100%
tests / unit / utils / conftest.py (no class)   51 2 2   96%
tests / unit / utils / console / conftest.py (no class)   11 1 2   91%
tests / unit / utils / console / summary / __init__.py (no class)   0 0 0   100%
tests / unit / utils / console / summary / test_delegation.py (no class)   107 0 3   100%
tests / unit / utils / console / summary / test_execution_summary.py (no class)   77 0 3   100%
tests / unit / utils / console / test_logger_headers.py (no class)   32 0 0   100%
tests / unit / utils / console / test_logger_initialization.py (no class)   10 0 0   100%
tests / unit / utils / console / test_logger_levels.py (no class)   34 0 0   100%
tests / unit / utils / console / test_logger_metadata.py (no class)   31 0 0   100%
tests / unit / utils / console / test_logger_output_methods.py (no class)   42 0 0   100%
tests / unit / utils / console / test_logger_results.py (no class)   26 0 0   100%
tests / unit / utils / console / test_pre_execution_summary.py (no class)   32 0 0   100%
tests / unit / utils / native_parsers / __init__.py (no class)   0 0 0   100%
tests / unit / utils / native_parsers / conftest.py (no class)   14 0 0   100%
tests / unit / utils / native_parsers / test_config_constants.py (no class)   8 0 0   100%
tests / unit / utils / native_parsers / test_json_config.py (no class)   42 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py (no class)   92 0 0   100%
tests / unit / utils / native_parsers / test_markdownlint_config.py (no class)   40 0 0   100%
tests / unit / utils / native_parsers / test_oxfmt_config.py (no class)   43 0 0   100%
tests / unit / utils / native_parsers / test_oxlint_config.py (no class)   31 0 0   100%
tests / unit / utils / native_parsers / test_pyproject_tools.py (no class)   21 0 0   100%
tests / unit / utils / native_parsers / test_yamllint_config.py (no class)   29 0 0   100%
tests / unit / utils / output / __init__.py (no class)   1 0 0   100%
tests / unit / utils / output / conftest.py MockIssue   0 0 0   100%
tests / unit / utils / output / conftest.py MockToolResult   0 0 0   100%
tests / unit / utils / output / conftest.py (no class)   33 0 2   100%
tests / unit / utils / output / test_file_writer_common.py (no class)   14 0 3   100%
tests / unit / utils / output / test_file_writer_csv.py (no class)   30 0 2   100%
tests / unit / utils / output / test_file_writer_format.py (no class)   48 0 0   100%
tests / unit / utils / output / test_file_writer_html.py (no class)   33 0 3   100%
tests / unit / utils / output / test_file_writer_json.py (no class)   31 0 3   100%
tests / unit / utils / output / test_file_writer_markdown.py (no class)   32 0 3   100%
tests / unit / utils / output / test_file_writer_plain.py (no class)   23 0 3   100%
tests / unit / utils / output / test_helpers.py (no class)   53 0 0   100%
tests / unit / utils / result_formatters / __init__.py (no class)   0 0 0   100%
tests / unit / utils / result_formatters / conftest.py (no class)   9 0 2   100%
tests / unit / utils / result_formatters / test_action_normalization.py (no class)   19 0 2   100%
tests / unit / utils / result_formatters / test_fix_action.py (no class)   40 0 2   100%
tests / unit / utils / result_formatters / test_fixable_hints.py (no class)   33 0 2   100%
tests / unit / utils / result_formatters / test_generic_output.py (no class)   29 0 2   100%
tests / unit / utils / result_formatters / test_output_display.py (no class)   22 0 2   100%
tests / unit / utils / result_formatters / test_pytest_output.py (no class)   40 0 2   100%
tests / unit / utils / result_formatters / test_ruff_formatting.py (no class)   28 0 2   100%
tests / unit / utils / summary / __init__.py (no class)   0 0 0   100%
tests / unit / utils / summary / test_display.py (no class)   129 0 3   100%
tests / unit / utils / summary / test_safe_cast.py (no class)   30 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_count_affected_files_no_issues_attribute.NoIssuesResult   0 0 0   100%
tests / unit / utils / summary / test_totals_table.py (no class)   94 0 3   100%
tests / unit / utils / test_ascii_normalize.py (no class)   22 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py (no class)   72 0 0   100%
tests / unit / utils / test_config_reporting.py (no class)   84 0 0   100%
tests / unit / utils / test_console_output_writer.py (no class)   98 0 0   100%
tests / unit / utils / test_display_helpers.py (no class)   80 0 2   100%
tests / unit / utils / test_display_helpers_fallback.py (no class)   74 1 2   99%
tests / unit / utils / test_enrich_doc_urls.py (no class)   66 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py (no class)   45 0 0   100%
tests / unit / utils / test_file_cache.py (no class)   97 0 0   100%
tests / unit / utils / test_fix_retry.py _MockToolDefinition   0 0 0   100%
tests / unit / utils / test_fix_retry.py _ConvergingMockTool   4 0 0   100%
tests / unit / utils / test_fix_retry.py _NeverConvergingMockTool   2 0 0   100%
tests / unit / utils / test_fix_retry.py (no class)   47 0 0   100%
tests / unit / utils / test_json_output.py (no class)   48 0 0   100%
tests / unit / utils / test_jsonc.py (no class)   65 0 0   100%
tests / unit / utils / test_logger_setup.py (no class)   45 0 0   100%
tests / unit / utils / test_native_parsers.py (no class)   49 0 0   100%
tests / unit / utils / test_node_deps.py (no class)   149 0 0   100%
tests / unit / utils / test_output_writers.py (no class)   191 0 0   100%
tests / unit / utils / test_parser_registry.py (no class)   120 13 0   89%
tests / unit / utils / test_path_filtering.py (no class)   101 0 0   100%
tests / unit / utils / test_path_utils.py (no class)   98 0 0   100%
tests / unit / utils / test_streaming_output.py (no class)   167 0 0   100%
tests / unit / utils / test_timeout_utils.py MockDefinition   1 0 0   100%
tests / unit / utils / test_timeout_utils.py MockTool   4 1 0   75%
tests / unit / utils / test_timeout_utils.py (no class)   46 0 0   100%
tests / unit / utils / test_tool_config_info.py (no class)   9 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes._FakeTool   4 3 0   25%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes._FakeHook   3 0 0   100%
tests / unit / utils / test_tool_executor_ai.py (no class)   74 0 0   100%
tests / unit / utils / test_tool_utils.py (no class)   18 0 0   100%
tests / unit / utils / unified_config / __init__.py (no class)   0 0 0   100%
tests / unit / utils / unified_config / conftest.py (no class)   12 2 0   83%
tests / unit / utils / unified_config / test_config_summary.py (no class)   21 0 0   100%
tests / unit / utils / unified_config / test_consistency.py (no class)   17 0 0   100%
tests / unit / utils / unified_config / test_constants.py (no class)   30 0 0   100%
tests / unit / utils / unified_config / test_dataclasses.py (no class)   24 0 0   100%
tests / unit / utils / unified_config / test_enums.py (no class)   10 0 0   100%
tests / unit / utils / unified_config / test_injectable.py (no class)   14 0 0   100%
tests / unit / utils / unified_config / test_line_length.py (no class)   32 0 0   100%
tests / unit / utils / unified_config / test_nested_value.py (no class)   13 0 0   100%
tests / unit / utils / unified_config / test_ordered_tools.py (no class)   23 0 0   100%
tests / unit / utils / unified_config / test_tool_priority.py (no class)   21 0 0   100%
tests / utils / __init__.py (no class)   0 0 0   100%
tests / utils / test_formatting.py (no class)   22 0 0   100%
tests / utils / test_output_manager.py (no class)   118 0 0   100%
tests / utils / test_path_utils.py (no class)   53 0 0   100%
Total     48145 4110 461   91%

No items found using the specified filter.