Coverage report: 91%

Files Functions Classes

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

File function   statements missing excluded   coverage
lintro / __init__.py (no function)   1 0 0   100%
lintro / __main__.py (no function)   3 1 0   67%
lintro / _tool_versions.py _load_manifest_versions   30 9 0   70%
lintro / _tool_versions.py _load_package_json   12 3 0   75%
lintro / _tool_versions.py _load_npm_versions   10 2 0   80%
lintro / _tool_versions.py get_tool_version   19 6 0   68%
lintro / _tool_versions.py _get_npm_package_version   4 0 0   100%
lintro / _tool_versions.py get_min_version   4 0 0   100%
lintro / _tool_versions.py get_all_expected_versions   9 0 0   100%
lintro / _tool_versions.py is_npm_managed   4 4 0   0%
lintro / _tool_versions.py (no function)   25 0 2   100%
lintro / ai / __init__.py (no function)   6 0 0   100%
lintro / ai / apply.py _apply_fix   54 7 0   87%
lintro / ai / apply.py apply_fixes   4 0 0   100%
lintro / ai / apply.py (no function)   10 0 0   100%
lintro / ai / audit.py write_audit_log   5 0 0   100%
lintro / ai / audit.py (no function)   8 0 2   100%
lintro / ai / availability.py is_ai_available   16 10 0   38%
lintro / ai / availability.py is_provider_available   19 11 0   42%
lintro / ai / availability.py require_ai   2 0 0   100%
lintro / ai / availability.py reset_availability_cache   1 0 0   100%
lintro / ai / availability.py (no function)   8 0 2   100%
lintro / ai / budget.py CostBudget.record   2 0 0   100%
lintro / ai / budget.py CostBudget.spent   2 0 0   100%
lintro / ai / budget.py CostBudget.remaining   3 0 0   100%
lintro / ai / budget.py CostBudget.check   3 0 0   100%
lintro / ai / budget.py (no function)   14 0 0   100%
lintro / ai / cache.py _cache_key   2 0 0   100%
lintro / ai / cache.py get_cached_suggestion   24 8 0   67%
lintro / ai / cache.py _evict_lru   12 2 0   83%
lintro / ai / cache.py cache_suggestion   15 3 0   80%
lintro / ai / cache.py (no function)   16 0 0   100%
lintro / ai / config.py AIConfig._check_retry_delays   4 0 0   100%
lintro / ai / config.py AIConfig.provider_config   1 1 0   0%
lintro / ai / config.py AIConfig.budget_config   1 1 0   0%
lintro / ai / config.py AIConfig.output_config   1 1 0   0%
lintro / ai / config.py (no function)   56 0 0   100%
lintro / ai / config_views.py (no function)   49 0 0   100%
lintro / ai / cost.py estimate_cost   7 0 0   100%
lintro / ai / cost.py format_cost   5 1 0   80%
lintro / ai / cost.py format_token_count   1 0 0   100%
lintro / ai / cost.py (no function)   6 0 0   100%
lintro / ai / display / __init__.py (no function)   5 0 0   100%
lintro / ai / display / fixes.py render_fixes_terminal   31 31 0   0%
lintro / ai / display / fixes.py render_fixes_github   27 3 0   89%
lintro / ai / display / fixes.py render_fixes_markdown   34 34 0   0%
lintro / ai / display / fixes.py _risk_to_annotation_level   12 0 0   100%
lintro / ai / display / fixes.py _escape_annotation   1 0 0   100%
lintro / ai / display / fixes.py _escape_property   1 0 0   100%
lintro / ai / display / fixes.py render_fixes_annotations   26 1 0   96%
lintro / ai / display / fixes.py render_fixes   9 2 0   78%
lintro / ai / display / fixes.py (no function)   22 0 0   100%
lintro / ai / display / shared.py is_github_actions   1 0 0   100%
lintro / ai / display / shared.py cost_str   4 0 0   100%
lintro / ai / display / shared.py print_section_header   7 0 0   100%
lintro / ai / display / shared.py print_code_panel   4 0 0   100%
lintro / ai / display / shared.py (no function)   12 0 0   100%
lintro / ai / display / streaming.py stream_to_console   6 6 0   0%
lintro / ai / display / streaming.py (no function)   5 5 2   0%
lintro / ai / display / summary.py render_summary_terminal   31 0 0   100%
lintro / ai / display / summary.py render_summary_github   31 5 0   84%
lintro / ai / display / summary.py render_summary_markdown   38 3 0   92%
lintro / ai / display / summary.py render_summary_annotations   11 0 0   100%
lintro / ai / display / summary.py render_summary   5 1 0   80%
lintro / ai / display / summary.py (no function)   14 0 0   100%
lintro / ai / display / validation.py render_validation_terminal   17 1 0   94%
lintro / ai / display / validation.py render_validation   1 0 0   100%
lintro / ai / display / validation.py (no function)   8 0 0   100%
lintro / ai / enums / __init__.py (no function)   4 0 0   100%
lintro / ai / enums / confidence_level.py ConfidenceLevel.numeric_order   1 0 0   100%
lintro / ai / enums / confidence_level.py (no function)   9 0 0   100%
lintro / ai / enums / risk_level.py RiskLevel.to_severity_label   3 0 0   100%
lintro / ai / enums / risk_level.py (no function)   7 0 0   100%
lintro / ai / enums / sanitize_mode.py (no function)   6 0 0   100%
lintro / ai / exceptions.py (no function)   7 0 0   100%
lintro / ai / fallback.py _with_fallback   30 2 0   93%
lintro / ai / fallback.py complete_with_fallback   2 0 0   100%
lintro / ai / fallback.py complete_with_fallback._attempt   1 0 0   100%
lintro / ai / fallback.py stream_complete_with_fallback   2 0 0   100%
lintro / ai / fallback.py stream_complete_with_fallback._attempt   1 0 0   100%
lintro / ai / fallback.py (no function)   12 0 0   100%
lintro / ai / filters.py _glob_match   23 20 0   13%
lintro / ai / filters.py should_process_issue   9 0 0   100%
lintro / ai / filters.py filter_issues   1 0 0   100%
lintro / ai / filters.py (no function)   8 0 3   100%
lintro / ai / fix.py _call_provider   1 0 0   100%
lintro / ai / fix.py _call_and_cache_fix   16 2 0   88%
lintro / ai / fix.py _generate_single_fix   13 4 0   69%
lintro / ai / fix.py _generate_batch_fixes   48 13 0   73%
lintro / ai / fix.py generate_fixes   74 15 0   80%
lintro / ai / fix.py generate_fixes_from_params   1 1 0   0%
lintro / ai / fix.py (no function)   29 0 3   100%
lintro / ai / fix_context.py read_file_safely   5 0 0   100%
lintro / ai / fix_context.py extract_context   7 0 0   100%
lintro / ai / fix_context.py validate_and_read_file   19 4 0   79%
lintro / ai / fix_context.py check_cache   9 9 0   0%
lintro / ai / fix_context.py build_fix_context   33 0 0   100%
lintro / ai / fix_context.py (no function)   21 0 3   100%
lintro / ai / fix_params.py (no function)   26 0 0   100%
lintro / ai / fix_parsing.py generate_diff   5 0 0   100%
lintro / ai / fix_parsing.py parse_fix_response   21 0 0   100%
lintro / ai / fix_parsing.py parse_batch_response   27 0 0   100%
lintro / ai / fix_parsing.py (no function)   9 0 2   100%
lintro / ai / hook.py AIPostExecutionHook.__init__   2 0 0   100%
lintro / ai / hook.py AIPostExecutionHook.should_run   1 0 0   100%
lintro / ai / hook.py AIPostExecutionHook.execute   10 1 0   90%
lintro / ai / hook.py (no function)   9 0 4   100%
lintro / ai / integrations / __init__.py (no function)   0 0 0   100%
lintro / ai / integrations / github_pr.py GitHubPRReporter.__init__   9 0 0   100%
lintro / ai / integrations / github_pr.py GitHubPRReporter.is_available   1 0 0   100%
lintro / ai / integrations / github_pr.py GitHubPRReporter.post_review_comments   11 2 0   82%
lintro / ai / integrations / github_pr.py GitHubPRReporter._post_review   29 8 0   72%
lintro / ai / integrations / github_pr.py GitHubPRReporter._fetch_pr_diff_lines   29 29 0   0%
lintro / ai / integrations / github_pr.py GitHubPRReporter._post_issue_comment   2 2 0   0%
lintro / ai / integrations / github_pr.py GitHubPRReporter._api_request   20 12 0   40%
lintro / ai / integrations / github_pr.py _detect_repo_root   10 3 0   70%
lintro / ai / integrations / github_pr.py _parse_patch_lines   14 14 0   0%
lintro / ai / integrations / github_pr.py _detect_pr_number   17 2 0   88%
lintro / ai / integrations / github_pr.py _format_summary_comment   17 0 0   100%
lintro / ai / integrations / github_pr.py _format_inline_comment   25 0 0   100%
lintro / ai / integrations / github_pr.py (no function)   26 0 0   100%
lintro / ai / interactive.py _group_by_code   5 0 0   100%
lintro / ai / interactive.py _print_group_header   19 1 0   95%
lintro / ai / interactive.py _show_group_diffs   8 8 0   0%
lintro / ai / interactive.py _apply_group   9 1 0   89%
lintro / ai / interactive.py _validate_group   8 8 0   0%
lintro / ai / interactive.py _render_prompt   3 0 0   100%
lintro / ai / interactive.py review_fixes_interactive   105 37 0   65%
lintro / ai / interactive.py (no function)   35 0 0   100%
lintro / ai / metadata / __init__.py (no function)   4 0 0   100%
lintro / ai / metadata / fix_suggestion_payload.py AIFixSuggestionPayload.to_dict   1 0 0   100%
lintro / ai / metadata / fix_suggestion_payload.py (no function)   20 0 0   100%
lintro / ai / metadata / helpers.py summary_to_payload   1 0 0   100%
lintro / ai / metadata / helpers.py suggestion_to_payload   1 0 0   100%
lintro / ai / metadata / helpers.py ensure_ai_metadata   3 0 0   100%
lintro / ai / metadata / helpers.py attach_summary_metadata   3 0 0   100%
lintro / ai / metadata / helpers.py attach_fix_suggestions_metadata   4 0 0   100%
lintro / ai / metadata / helpers.py attach_fixed_count_metadata   4 0 0   100%
lintro / ai / metadata / helpers.py attach_validation_counts_metadata   3 0 0   100%
lintro / ai / metadata / helpers.py attach_telemetry_metadata   4 1 0   75%
lintro / ai / metadata / helpers.py normalize_ai_metadata   31 1 0   97%
lintro / ai / metadata / helpers.py (no function)   13 0 4   100%
lintro / ai / metadata / summary_payload.py AISummaryPayload.to_dict   1 0 0   100%
lintro / ai / metadata / summary_payload.py (no function)   14 0 0   100%
lintro / ai / model_pricing.py (no function)   6 0 0   100%
lintro / ai / models / __init__.py (no function)   4 0 0   100%
lintro / ai / models / fix_suggestion.py (no function)   18 0 0   100%
lintro / ai / models / result.py (no function)   10 0 0   100%
lintro / ai / models / summary.py (no function)   12 0 0   100%
lintro / ai / orchestrator.py run_ai_enhancement   23 4 0   83%
lintro / ai / orchestrator.py _run_ai_check   33 10 0   70%
lintro / ai / orchestrator.py _run_ai_fix   18 2 0   89%
lintro / ai / orchestrator.py _collect_and_fix   11 1 0   91%
lintro / ai / orchestrator.py _remaining_issues_for_fix_result   15 3 0   80%
lintro / ai / orchestrator.py _resolve_issue_path   11 11 0   0%
lintro / ai / orchestrator.py _post_pr_comments   10 10 0   0%
lintro / ai / orchestrator.py _log_fix_limit_message   4 0 0   100%
lintro / ai / orchestrator.py (no function)   28 0 9   100%
lintro / ai / output / __init__.py (no function)   0 0 0   100%
lintro / ai / output / sarif.py _risk_to_sarif_level   12 0 0   100%
lintro / ai / output / sarif.py _confidence_to_score   5 0 0   100%
lintro / ai / output / sarif.py to_sarif   55 0 0   100%
lintro / ai / output / sarif.py render_fixes_sarif   2 0 0   100%
lintro / ai / output / sarif.py write_sarif   3 0 0   100%
lintro / ai / output / sarif.py (no function)   15 0 0   100%
lintro / ai / output / sarif_bridge.py _coerce_confidence   8 4 0   50%
lintro / ai / output / sarif_bridge.py suggestions_from_results   15 4 0   73%
lintro / ai / output / sarif_bridge.py summary_from_results   21 7 0   67%
lintro / ai / output / sarif_bridge.py summary_from_results._str_list   5 1 0   80%
lintro / ai / output / sarif_bridge.py (no function)   7 0 2   100%
lintro / ai / paths.py relative_path   4 0 0   100%
lintro / ai / paths.py resolve_workspace_root   3 0 0   100%
lintro / ai / paths.py resolve_workspace_file   13 2 0   85%
lintro / ai / paths.py to_provider_path   4 0 0   100%
lintro / ai / paths.py (no function)   9 0 0   100%
lintro / ai / pipeline.py _confidence_numeric   4 2 0   50%
lintro / ai / pipeline.py _generate_all_suggestions   39 6 0   85%
lintro / ai / pipeline.py _generate_all_suggestions._progress_callback   2 2 0   0%
lintro / ai / pipeline.py _filter_by_confidence   12 8 0   33%
lintro / ai / pipeline.py _apply_or_review   36 1 0   97%
lintro / ai / pipeline.py _verify_and_refine   28 21 0   25%
lintro / ai / pipeline.py run_fix_pipeline   54 8 0   85%
lintro / ai / pipeline.py _unique_results_from_fix_issues   9 9 0   0%
lintro / ai / pipeline.py (no function)   28 0 7   100%
lintro / ai / prompts / __init__.py (no function)   4 0 0   100%
lintro / ai / prompts / fix.py (no function)   5 0 0   100%
lintro / ai / prompts / post_fix.py (no function)   2 0 0   100%
lintro / ai / prompts / summary.py (no function)   3 0 0   100%
lintro / ai / provider_enum.py (no function)   5 0 0   100%
lintro / ai / provider_info.py (no function)   10 0 0   100%
lintro / ai / providers / __init__.py get_provider   17 2 0   88%
lintro / ai / providers / __init__.py get_default_model   1 0 0   100%
lintro / ai / providers / __init__.py (no function)   9 0 3   100%
lintro / ai / providers / anthropic.py AnthropicProvider._map_errors   9 7 0   22%
lintro / ai / providers / anthropic.py AnthropicProvider.__init__   1 0 0   100%
lintro / ai / providers / anthropic.py AnthropicProvider._create_client   4 4 0   0%
lintro / ai / providers / anthropic.py AnthropicProvider.complete   15 0 0   100%
lintro / ai / providers / anthropic.py AnthropicProvider.stream_complete   10 10 0   0%
lintro / ai / providers / anthropic.py AnthropicProvider.stream_complete._generate   8 8 0   0%
lintro / ai / providers / anthropic.py AnthropicProvider.stream_complete._on_done   3 3 0   0%
lintro / ai / providers / anthropic.py (no function)   26 1 0   96%
lintro / ai / providers / base.py BaseAIProvider.__init__   9 0 0   100%
lintro / ai / providers / base.py BaseAIProvider._get_client   7 2 0   71%
lintro / ai / providers / base.py BaseAIProvider._create_client   0 0 1   100%
lintro / ai / providers / base.py BaseAIProvider.complete   0 0 1   100%
lintro / ai / providers / base.py BaseAIProvider.stream_complete   2 0 0   100%
lintro / ai / providers / base.py BaseAIProvider.is_available   3 1 0   67%
lintro / ai / providers / base.py BaseAIProvider.name   1 0 0   100%
lintro / ai / providers / base.py BaseAIProvider.model_name   1 0 0   100%
lintro / ai / providers / base.py BaseAIProvider.model_name   1 0 0   100%
lintro / ai / providers / base.py (no function)   24 0 4   100%
lintro / ai / providers / constants.py (no function)   3 0 0   100%
lintro / ai / providers / openai.py OpenAIProvider._map_errors   9 7 0   22%
lintro / ai / providers / openai.py OpenAIProvider.__init__   1 0 0   100%
lintro / ai / providers / openai.py OpenAIProvider._create_client   4 4 0   0%
lintro / ai / providers / openai.py OpenAIProvider.complete   16 0 0   100%
lintro / ai / providers / openai.py OpenAIProvider.stream_complete   12 12 0   0%
lintro / ai / providers / openai.py OpenAIProvider.stream_complete._generate   14 14 0   0%
lintro / ai / providers / openai.py OpenAIProvider.stream_complete._on_done   3 3 0   0%
lintro / ai / providers / openai.py (no function)   26 1 0   96%
lintro / ai / providers / response.py (no function)   11 0 0   100%
lintro / ai / providers / stream_result.py AIStreamResult.__iter__   3 0 0   100%
lintro / ai / providers / stream_result.py AIStreamResult.response   1 0 0   100%
lintro / ai / providers / stream_result.py AIStreamResult.collect   5 0 0   100%
lintro / ai / providers / stream_result.py (no function)   12 0 0   100%
lintro / ai / refinement.py _revert_fix   4 0 0   100%
lintro / ai / refinement.py refine_unverified_fixes   64 10 0   84%
lintro / ai / refinement.py (no function)   17 0 5   100%
lintro / ai / registry.py AIProviderRegistry.__post_init__   4 0 0   100%
lintro / ai / registry.py AIProviderRegistry.items   2 0 0   100%
lintro / ai / registry.py AIProviderRegistry.get   2 0 0   100%
lintro / ai / registry.py AIProviderRegistry.model_pricing   1 0 0   100%
lintro / ai / registry.py AIProviderRegistry.default_models   1 0 0   100%
lintro / ai / registry.py AIProviderRegistry.default_api_key_envs   1 0 0   100%
lintro / ai / registry.py (no function)   22 0 0   100%
lintro / ai / rerun.py _tool_cwd   9 0 0   100%
lintro / ai / rerun.py paths_for_context   18 5 0   72%
lintro / ai / rerun.py rerun_tools   21 3 0   86%
lintro / ai / rerun.py apply_rerun_results   12 1 0   92%
lintro / ai / rerun.py (no function)   13 0 4   100%
lintro / ai / retry.py with_retry   18 10 0   44%
lintro / ai / retry.py with_retry.decorator   2 0 0   100%
lintro / ai / retry.py with_retry.decorator.wrapper   17 2 0   88%
lintro / ai / retry.py (no function)   13 0 0   100%
lintro / ai / risk.py _ast_equivalent   7 2 0   71%
lintro / ai / risk.py _diff_is_style_only   7 2 0   71%
lintro / ai / risk.py _diff_is_style_only._normalize   5 5 0   0%
lintro / ai / risk.py classify_fix_risk   9 0 0   100%
lintro / ai / risk.py is_safe_style_fix   1 0 0   100%
lintro / ai / risk.py calculate_patch_stats   33 0 0   100%
lintro / ai / risk.py (no function)   19 0 3   100%
lintro / ai / sanitize.py _neutralize_role_markers   1 0 0   100%
lintro / ai / sanitize.py _neutralize_xml_tags   1 0 0   100%
lintro / ai / sanitize.py sanitize_code_content   3 0 0   100%
lintro / ai / sanitize.py detect_injection_patterns   5 0 0   100%
lintro / ai / sanitize.py make_boundary_marker   2 0 0   100%
lintro / ai / sanitize.py (no function)   11 0 0   100%
lintro / ai / secrets.py scan_for_secrets   5 0 0   100%
lintro / ai / secrets.py redact_secrets   3 0 0   100%
lintro / ai / secrets.py (no function)   5 0 0   100%
lintro / ai / summary.py _ensure_str_list   8 4 0   50%
lintro / ai / summary.py _build_issues_digest   62 21 0   66%
lintro / ai / summary.py _parse_summary_response   20 5 0   75%
lintro / ai / summary.py _call_summary_provider   8 0 0   100%
lintro / ai / summary.py _call_summary_provider._call   1 0 0   100%
lintro / ai / summary.py generate_summary   7 0 0   100%
lintro / ai / summary.py generate_summary_from_params   1 1 0   0%
lintro / ai / summary.py generate_post_fix_summary   9 2 0   78%
lintro / ai / summary.py generate_post_fix_summary_from_params   1 1 0   0%
lintro / ai / summary.py (no function)   24 0 3   100%
lintro / ai / summary_params.py (no function)   13 0 0   100%
lintro / ai / telemetry.py AITelemetry.record_call   5 0 0   100%
lintro / ai / telemetry.py AITelemetry.to_dict   1 0 0   100%
lintro / ai / telemetry.py (no function)   14 0 0   100%
lintro / ai / token_budget.py estimate_tokens   3 0 0   100%
lintro / ai / token_budget.py truncate_to_budget   10 0 0   100%
lintro / ai / token_budget.py (no function)   3 0 0   100%
lintro / ai / undo.py save_undo_patch   31 8 0   74%
lintro / ai / undo.py (no function)   9 0 2   100%
lintro / ai / validation.py verify_fixes   12 0 0   100%
lintro / ai / validation.py validate_applied_fixes   21 0 0   100%
lintro / ai / validation.py _validate_suggestions   30 1 0   97%
lintro / ai / validation.py _normalize_line   5 1 0   80%
lintro / ai / validation.py _consume_matching_remaining_issue   15 4 0   73%
lintro / ai / validation.py _normalize_file_path   6 3 0   50%
lintro / ai / validation.py _run_tool_check   14 1 0   93%
lintro / ai / validation.py (no function)   24 0 4   100%
lintro / cli.py LintroGroup.format_help   48 2 0   96%
lintro / cli.py LintroGroup.format_commands   1 0 0   100%
lintro / cli.py LintroGroup.invoke   14 0 0   100%
lintro / cli.py cli   1 0 0   100%
lintro / cli.py main   1 0 0   100%
lintro / cli.py (no function)   62 0 0   100%
lintro / cli_utils / __init__.py (no function)   0 0 0   100%
lintro / cli_utils / command_chainer.py CommandChainer.__init__   3 0 0   100%
lintro / cli_utils / command_chainer.py CommandChainer.command_names   4 0 0   100%
lintro / cli_utils / command_chainer.py CommandChainer.should_chain   8 0 0   100%
lintro / cli_utils / command_chainer.py CommandChainer.normalize_args   17 0 0   100%
lintro / cli_utils / command_chainer.py CommandChainer.group_commands   12 0 0   100%
lintro / cli_utils / command_chainer.py CommandChainer.execute_chain   7 0 0   100%
lintro / cli_utils / command_chainer.py CommandChainer._execute_single_command   14 0 0   100%
lintro / cli_utils / command_chainer.py (no function)   14 0 2   100%
lintro / cli_utils / commands / __init__.py (no function)   5 0 0   100%
lintro / cli_utils / commands / check.py check_command   10 2 0   80%
lintro / cli_utils / commands / check.py check   34 10 0   71%
lintro / cli_utils / commands / check.py (no function)   29 0 0   100%
lintro / cli_utils / commands / config.py _get_all_tool_names   2 0 0   100%
lintro / cli_utils / commands / config.py config_command   9 2 0   78%
lintro / cli_utils / commands / config.py _config_to_export_dict   2 2 0   0%
lintro / cli_utils / commands / config.py _export_yaml   7 7 3   0%
lintro / cli_utils / commands / config.py _output_json   21 5 0   76%
lintro / cli_utils / commands / config.py _output_rich   80 8 0   90%
lintro / cli_utils / commands / config.py (no function)   19 0 0   100%
lintro / cli_utils / commands / doctor.py _check_tool   28 2 0   93%
lintro / cli_utils / commands / doctor.py _compare_versions   4 0 0   100%
lintro / cli_utils / commands / doctor.py _render_category   8 0 0   100%
lintro / cli_utils / commands / doctor.py _render_tool_line   37 18 0   51%
lintro / cli_utils / commands / doctor.py _generate_markdown_report   29 6 0   79%
lintro / cli_utils / commands / doctor.py doctor_command   82 18 0   78%
lintro / cli_utils / commands / doctor.py _output_json   14 3 0   79%
lintro / cli_utils / commands / doctor.py _run_fix   20 20 0   0%
lintro / cli_utils / commands / doctor.py (no function)   39 0 0   100%
lintro / cli_utils / commands / format.py format_command   3 0 0   100%
lintro / cli_utils / commands / format.py format_code   26 2 0   92%
lintro / cli_utils / commands / format.py (no function)   27 0 0   100%
lintro / cli_utils / commands / init.py _write_file   10 3 0   70%
lintro / cli_utils / commands / init.py _write_json_file   2 0 0   100%
lintro / cli_utils / commands / init.py _generate_native_configs   5 0 0   100%
lintro / cli_utils / commands / init.py init_command   30 3 0   90%
lintro / cli_utils / commands / init.py (no function)   20 0 0   100%
lintro / cli_utils / commands / install.py install_command   78 12 0   85%
lintro / cli_utils / commands / install.py _detect_languages   8 4 0   50%
lintro / cli_utils / commands / install.py (no function)   14 0 0   100%
lintro / cli_utils / commands / list_tools.py _resolve_conflicts   8 8 0   0%
lintro / cli_utils / commands / list_tools.py list_tools_command   1 0 0   100%
lintro / cli_utils / commands / list_tools.py list_tools   74 33 0   55%
lintro / cli_utils / commands / list_tools.py _generate_plain_text_output   29 29 0   0%
lintro / cli_utils / commands / list_tools.py (no function)   19 0 0   100%
lintro / cli_utils / commands / setup.py _generate_config   12 0 0   100%
lintro / cli_utils / commands / setup.py setup_command   127 82 0   35%
lintro / cli_utils / commands / setup.py _print_next_steps   6 0 0   100%
lintro / cli_utils / commands / setup.py (no function)   18 0 0   100%
lintro / cli_utils / commands / test.py _ensure_pytest_prefix   8 1 0   88%
lintro / cli_utils / commands / test.py test_command   29 3 0   90%
lintro / cli_utils / commands / test.py test   27 1 0   96%
lintro / cli_utils / commands / test.py (no function)   31 0 0   100%
lintro / cli_utils / commands / versions.py versions_command   39 39 0   0%
lintro / cli_utils / commands / versions.py (no function)   9 0 0   100%
lintro / config / __init__.py (no function)   4 0 0   100%
lintro / config / config_loader.py _find_config_file   12 0 0   100%
lintro / config / config_loader.py _load_yaml_file   5 1 0   80%
lintro / config / config_loader.py _load_pyproject_fallback   19 6 0   68%
lintro / config / config_loader.py _parse_enforce_config   1 0 0   100%
lintro / config / config_loader.py _parse_execution_config   20 11 0   45%
lintro / config / config_loader.py _parse_tool_config   10 3 0   70%
lintro / config / config_loader.py _parse_tools_config   7 0 0   100%
lintro / config / config_loader.py _parse_defaults   5 0 0   100%
lintro / config / config_loader.py _parse_ai_config   8 1 0   88%
lintro / config / config_loader.py _convert_pyproject_to_config   25 8 0   68%
lintro / config / config_loader.py load_config   28 6 0   79%
lintro / config / config_loader.py get_default_config   1 0 0   100%
lintro / config / config_loader.py get_config   3 0 0   100%
lintro / config / config_loader.py clear_config_cache   1 0 0   100%
lintro / config / config_loader.py (no function)   29 2 0   93%
lintro / config / enforce_config.py (no function)   5 0 0   100%
lintro / config / execution_config.py _get_default_max_workers   2 0 0   100%
lintro / config / execution_config.py (no function)   15 0 0   100%
lintro / config / lintro_config.py LintroConfig.get_tool_config   1 0 0   100%
lintro / config / lintro_config.py LintroConfig.is_tool_enabled   7 0 0   100%
lintro / config / lintro_config.py LintroConfig.get_tool_defaults   1 0 0   100%
lintro / config / lintro_config.py LintroConfig.get_effective_line_length   2 0 0   100%
lintro / config / lintro_config.py LintroConfig.get_effective_target_python   2 0 0   100%
lintro / config / lintro_config.py (no function)   20 0 0   100%
lintro / config / tool_config.py (no function)   6 0 0   100%
lintro / config / tool_config_generator.py _convert_python_version_for_mypy   5 0 0   100%
lintro / config / tool_config_generator.py _cleanup_temp_files   7 7 0   0%
lintro / config / tool_config_generator.py get_enforce_cli_args   15 0 0   100%
lintro / config / tool_config_generator.py has_native_config   24 7 0   71%
lintro / config / tool_config_generator.py generate_defaults_config   15 3 0   80%
lintro / config / tool_config_generator.py _transform_keys_for_native_config   10 0 0   100%
lintro / config / tool_config_generator.py _write_defaults_config   19 1 0   95%
lintro / config / tool_config_generator.py get_defaults_injection_args   6 0 0   100%
lintro / config / tool_config_generator.py cleanup_temp_config   8 8 0   0%
lintro / config / tool_config_generator.py (no function)   31 2 0   94%
lintro / enums / __init__.py (no function)   0 0 0   100%
lintro / enums / action.py normalize_action   7 2 0   71%
lintro / enums / action.py (no function)   8 0 0   100%
lintro / enums / bandit_levels.py normalize_bandit_severity_level   7 0 0   100%
lintro / enums / bandit_levels.py normalize_bandit_confidence_level   6 0 0   100%
lintro / enums / bandit_levels.py (no function)   13 0 0   100%
lintro / enums / boolean_string.py (no function)   6 0 0   100%
lintro / enums / config_format.py normalize_config_format   6 0 0   100%
lintro / enums / config_format.py (no function)   6 0 0   100%
lintro / enums / config_key.py (no function)   5 0 0   100%
lintro / enums / display_column.py (no function)   12 0 0   100%
lintro / enums / doc_url_template.py (no function)   22 0 0   100%
lintro / enums / env_bool.py (no function)   4 0 0   100%
lintro / enums / git_command.py (no function)   6 0 0   100%
lintro / enums / git_ref.py (no function)   4 0 0   100%
lintro / enums / group_by.py normalize_group_by   7 0 0   100%
lintro / enums / group_by.py (no function)   9 0 0   100%
lintro / enums / hadolint_enums.py normalize_hadolint_format   7 1 0   86%
lintro / enums / hadolint_enums.py normalize_hadolint_threshold   7 1 0   86%
lintro / enums / hadolint_enums.py (no function)   22 0 0   100%
lintro / enums / hyphenated_str_enum.py HyphenatedStrEnum._generate_next_value_   1 0 0   100%
lintro / enums / hyphenated_str_enum.py (no function)   5 0 0   100%
lintro / enums / install_context.py CISystem.detect   4 0 0   100%
lintro / enums / install_context.py (no function)   27 0 0   100%
lintro / enums / output_format.py normalize_output_format   7 0 0   100%
lintro / enums / output_format.py (no function)   13 0 0   100%
lintro / enums / pydoclint_style.py normalize_pydoclint_style   7 7 0   0%
lintro / enums / pydoclint_style.py (no function)   8 8 0   0%
lintro / enums / pytest_enums.py normalize_pytest_special_mode   6 0 0   100%
lintro / enums / pytest_enums.py normalize_pytest_output_format   6 0 0   100%
lintro / enums / pytest_enums.py normalize_test_status   7 0 0   100%
lintro / enums / pytest_enums.py (no function)   28 0 0   100%
lintro / enums / semgrep_enums.py normalize_semgrep_severity   7 0 0   100%
lintro / enums / semgrep_enums.py (no function)   7 0 0   100%
lintro / enums / severity_level.py normalize_severity_level   8 0 0   100%
lintro / enums / severity_level.py (no function)   9 0 0   100%
lintro / enums / tool_name.py normalize_tool_name   7 0 0   100%
lintro / enums / tool_name.py (no function)   33 0 0   100%
lintro / enums / tool_option_key.py (no function)   5 0 0   100%
lintro / enums / tool_order.py normalize_tool_order   6 0 0   100%
lintro / enums / tool_order.py (no function)   8 0 0   100%
lintro / enums / tool_status.py (no function)   7 0 0   100%
lintro / enums / tool_type.py normalize_tool_type   9 5 0   44%
lintro / enums / tool_type.py (no function)   11 0 0   100%
lintro / enums / tools_value.py normalize_tools_value   6 0 0   100%
lintro / enums / tools_value.py (no function)   5 0 0   100%
lintro / enums / uppercase_str_enum.py UppercaseStrEnum._generate_next_value_   1 0 0   100%
lintro / enums / uppercase_str_enum.py (no function)   5 0 0   100%
lintro / enums / yamllint_format.py normalize_yamllint_format   7 3 0   57%
lintro / enums / yamllint_format.py (no function)   10 0 0   100%
lintro / exceptions / __init__.py (no function)   0 0 0   100%
lintro / exceptions / errors.py (no function)   9 0 0   100%
lintro / formatters / __init__.py (no function)   4 0 0   100%
lintro / formatters / core / __init__.py (no function)   2 0 0   100%
lintro / formatters / core / format_registry.py OutputStyle.format   1 1 0   0%
lintro / formatters / core / format_registry.py TableDescriptor.get_columns   1 1 0   0%
lintro / formatters / core / format_registry.py TableDescriptor.get_rows   1 1 0   0%
lintro / formatters / core / format_registry.py _create_style_instances   8 0 0   100%
lintro / formatters / core / format_registry.py get_style   15 3 0   80%
lintro / formatters / core / format_registry.py get_format_map   1 0 0   100%
lintro / formatters / core / format_registry.py get_string_format_map   2 0 0   100%
lintro / formatters / core / format_registry.py (no function)   19 0 2   100%
lintro / formatters / formatter.py UnifiedTableDescriptor.__init__   1 0 0   100%
lintro / formatters / formatter.py UnifiedTableDescriptor.get_columns   1 0 0   100%
lintro / formatters / formatter.py UnifiedTableDescriptor.get_rows   12 0 0   100%
lintro / formatters / formatter.py format_issues   11 0 0   100%
lintro / formatters / formatter.py format_issues_with_sections   21 1 0   95%
lintro / formatters / formatter.py format_tool_result   3 3 0   0%
lintro / formatters / formatter.py (no function)   15 0 0   100%
lintro / formatters / styles / __init__.py (no function)   8 0 0   100%
lintro / formatters / styles / csv.py CsvStyle.format   9 0 0   100%
lintro / formatters / styles / csv.py (no function)   6 0 0   100%
lintro / formatters / styles / github.py _escape   1 0 0   100%
lintro / formatters / styles / github.py _cell   4 1 0   75%
lintro / formatters / styles / github.py GitHubStyle.format   37 1 0   97%
lintro / formatters / styles / github.py (no function)   10 0 0   100%
lintro / formatters / styles / grid.py GridStyle.format   18 1 0   94%
lintro / formatters / styles / grid.py (no function)   9 2 0   78%
lintro / formatters / styles / html.py HtmlStyle.format   12 0 0   100%
lintro / formatters / styles / html.py (no function)   4 0 0   100%
lintro / formatters / styles / json.py JsonStyle.format   17 0 0   100%
lintro / formatters / styles / json.py (no function)   6 0 0   100%
lintro / formatters / styles / markdown.py MarkdownStyle.format   11 0 0   100%
lintro / formatters / styles / markdown.py (no function)   4 0 0   100%
lintro / formatters / styles / plain.py PlainStyle.format   10 0 0   100%
lintro / formatters / styles / plain.py (no function)   4 0 0   100%
lintro / models / __init__.py (no function)   0 0 0   100%
lintro / models / core / __init__.py (no function)   6 0 0   100%
lintro / models / core / base_tool_options.py (no function)   6 0 0   100%
lintro / models / core / black_options.py (no function)   8 0 0   100%
lintro / models / core / prettier_options.py (no function)   16 16 0   0%
lintro / models / core / pytest_options.py (no function)   22 0 0   100%
lintro / models / core / ruff_options.py (no function)   16 0 0   100%
lintro / models / core / tool_result.py ToolResult.__post_init__   8 3 0   62%
lintro / models / core / tool_result.py (no function)   22 0 2   100%
lintro / models / core / yamllint_options.py (no function)   6 0 0   100%
lintro / parsers / __init__.py __getattr__   5 5 0   0%
lintro / parsers / __init__.py __dir__   1 1 0   0%
lintro / parsers / __init__.py (no function)   9 0 2   100%
lintro / parsers / actionlint / __init__.py (no function)   3 0 0   100%
lintro / parsers / actionlint / actionlint_issue.py (no function)   8 0 0   100%
lintro / parsers / actionlint / actionlint_parser.py parse_actionlint_output   16 0 0   100%
lintro / parsers / actionlint / actionlint_parser.py _iter_nonempty_lines   3 0 0   100%
lintro / parsers / actionlint / actionlint_parser.py (no function)   8 0 0   100%
lintro / parsers / astro_check / __init__.py (no function)   3 0 0   100%
lintro / parsers / astro_check / astro_check_issue.py (no function)   8 0 0   100%
lintro / parsers / astro_check / astro_check_parser.py _parse_line   36 9 0   75%
lintro / parsers / astro_check / astro_check_parser.py parse_astro_check_output   9 0 0   100%
lintro / parsers / astro_check / astro_check_parser.py (no function)   10 0 0   100%
lintro / parsers / bandit / __init__.py (no function)   3 0 0   100%
lintro / parsers / bandit / bandit_issue.py BanditIssue.__post_init__   2 0 0   100%
lintro / parsers / bandit / bandit_issue.py BanditIssue._get_message   1 0 0   100%
lintro / parsers / bandit / bandit_issue.py (no function)   18 0 0   100%
lintro / parsers / bandit / bandit_parser.py parse_bandit_output   45 11 0   76%
lintro / parsers / bandit / bandit_parser.py (no function)   5 0 0   100%
lintro / parsers / base_issue.py BaseIssue.get_severity   10 0 0   100%
lintro / parsers / base_issue.py BaseIssue.to_display_row   8 0 0   100%
lintro / parsers / base_issue.py (no function)   15 0 0   100%
lintro / parsers / base_parser.py extract_int_field   5 0 0   100%
lintro / parsers / base_parser.py extract_str_field   5 0 0   100%
lintro / parsers / base_parser.py extract_dict_field   7 0 0   100%
lintro / parsers / base_parser.py is_empty_output   1 1 0   0%
lintro / parsers / base_parser.py strip_ansi_codes   1 0 0   100%
lintro / parsers / base_parser.py validate_str_field   5 0 0   100%
lintro / parsers / base_parser.py validate_int_field   5 0 0   100%
lintro / parsers / base_parser.py collect_continuation_lines   11 0 0   100%
lintro / parsers / base_parser.py safe_parse_items   13 0 0   100%
lintro / parsers / base_parser.py (no function)   16 0 2   100%
lintro / parsers / black / __init__.py (no function)   3 0 0   100%
lintro / parsers / black / black_issue.py (no function)   11 0 0   100%
lintro / parsers / black / black_parser.py _iter_issue_lines   5 0 0   100%
lintro / parsers / black / black_parser.py parse_black_output   39 15 0   62%
lintro / parsers / black / black_parser.py (no function)   12 0 0   100%
lintro / parsers / cargo_audit / __init__.py (no function)   0 0 0   100%
lintro / parsers / cargo_audit / cargo_audit_issue.py CargoAuditIssue.__post_init__   3 1 0   67%
lintro / parsers / cargo_audit / cargo_audit_issue.py CargoAuditIssue._get_message   1 0 0   100%
lintro / parsers / cargo_audit / cargo_audit_issue.py (no function)   15 0 0   100%
lintro / parsers / cargo_audit / cargo_audit_parser.py _extract_cargo_audit_json   13 1 0   92%
lintro / parsers / cargo_audit / cargo_audit_parser.py _normalize_severity   5 0 0   100%
lintro / parsers / cargo_audit / cargo_audit_parser.py parse_cargo_audit_output   43 10 0   77%
lintro / parsers / cargo_audit / cargo_audit_parser.py (no function)   9 0 0   100%
lintro / parsers / cargo_deny / __init__.py (no function)   3 0 0   100%
lintro / parsers / cargo_deny / cargo_deny_issue.py CargoDenyIssue.__post_init__   2 0 0   100%
lintro / parsers / cargo_deny / cargo_deny_issue.py CargoDenyIssue._build_message   14 0 0   100%
lintro / parsers / cargo_deny / cargo_deny_issue.py (no function)   16 0 0   100%
lintro / parsers / cargo_deny / cargo_deny_parser.py _extract_crate_info   11 2 0   82%
lintro / parsers / cargo_deny / cargo_deny_parser.py _parse_diagnostic   18 5 0   72%
lintro / parsers / cargo_deny / cargo_deny_parser.py _parse_advisory   25 5 0   80%
lintro / parsers / cargo_deny / cargo_deny_parser.py parse_cargo_deny_output   24 4 0   83%
lintro / parsers / cargo_deny / cargo_deny_parser.py (no function)   9 0 0   100%
lintro / parsers / clippy / __init__.py (no function)   3 0 0   100%
lintro / parsers / clippy / clippy_issue.py (no function)   11 0 0   100%
lintro / parsers / clippy / clippy_parser.py _parse_issue   41 11 0   73%
lintro / parsers / clippy / clippy_parser.py parse_clippy_output   18 3 0   83%
lintro / parsers / clippy / clippy_parser.py (no function)   8 0 0   100%
lintro / parsers / gitleaks / __init__.py (no function)   3 0 0   100%
lintro / parsers / gitleaks / gitleaks_issue.py GitleaksIssue.__post_init__   1 0 0   100%
lintro / parsers / gitleaks / gitleaks_issue.py GitleaksIssue._get_message   3 0 0   100%
lintro / parsers / gitleaks / gitleaks_issue.py (no function)   25 0 0   100%
lintro / parsers / gitleaks / gitleaks_parser.py parse_gitleaks_output   26 3 0   88%
lintro / parsers / gitleaks / gitleaks_parser.py _parse_single_finding   27 0 0   100%
lintro / parsers / gitleaks / gitleaks_parser.py (no function)   7 0 0   100%
lintro / parsers / hadolint / __init__.py __getattr__   5 5 0   0%
lintro / parsers / hadolint / __init__.py (no function)   4 0 0   100%
lintro / parsers / hadolint / hadolint_issue.py (no function)   8 0 0   100%
lintro / parsers / hadolint / hadolint_parser.py parse_hadolint_output   15 0 0   100%
lintro / parsers / hadolint / hadolint_parser.py (no function)   4 0 0   100%
lintro / parsers / markdownlint / __init__.py (no function)   3 0 0   100%
lintro / parsers / markdownlint / markdownlint_issue.py (no function)   8 0 0   100%
lintro / parsers / markdownlint / markdownlint_parser.py _is_markdownlint_continuation   1 0 0   100%
lintro / parsers / markdownlint / markdownlint_parser.py parse_markdownlint_output   27 0 0   100%
lintro / parsers / markdownlint / markdownlint_parser.py (no function)   5 0 0   100%
lintro / parsers / mypy / __init__.py (no function)   3 0 0   100%
lintro / parsers / mypy / mypy_issue.py (no function)   9 0 0   100%
lintro / parsers / mypy / mypy_parser.py _parse_issue   19 3 0   84%
lintro / parsers / mypy / mypy_parser.py _extract_errors   11 2 0   82%
lintro / parsers / mypy / mypy_parser.py parse_mypy_output   32 10 0   69%
lintro / parsers / mypy / mypy_parser.py (no function)   9 0 0   100%
lintro / parsers / osv_scanner / __init__.py (no function)   6 0 0   100%
lintro / parsers / osv_scanner / osv_scanner_issue.py OsvScannerIssue.__post_init__   3 0 0   100%
lintro / parsers / osv_scanner / osv_scanner_issue.py OsvScannerIssue._get_message   4 0 0   100%
lintro / parsers / osv_scanner / osv_scanner_issue.py (no function)   16 0 0   100%
lintro / parsers / osv_scanner / osv_scanner_parser.py _highest_severity   6 0 0   100%
lintro / parsers / osv_scanner / osv_scanner_parser.py _extract_fixed_version   26 8 0   69%
lintro / parsers / osv_scanner / osv_scanner_parser.py _parse_single_result   45 6 0   87%
lintro / parsers / osv_scanner / osv_scanner_parser.py parse_osv_scanner_output   27 5 0   81%
lintro / parsers / osv_scanner / osv_scanner_parser.py (no function)   11 0 0   100%
lintro / parsers / osv_scanner / suppression_models.py (no function)   13 0 0   100%
lintro / parsers / osv_scanner / suppression_parser.py parse_suppressions   28 3 0   89%
lintro / parsers / osv_scanner / suppression_parser.py classify_suppressions   11 0 0   100%
lintro / parsers / osv_scanner / suppression_parser.py (no function)   10 0 0   100%
lintro / parsers / osv_scanner / suppression_status.py (no function)   5 0 0   100%
lintro / parsers / oxfmt / __init__.py (no function)   3 0 0   100%
lintro / parsers / oxfmt / oxfmt_issue.py (no function)   8 0 0   100%
lintro / parsers / oxfmt / oxfmt_parser.py _is_valid_file_path   5 0 0   100%
lintro / parsers / oxfmt / oxfmt_parser.py parse_oxfmt_output   17 3 0   82%
lintro / parsers / oxfmt / oxfmt_parser.py (no function)   7 0 0   100%
lintro / parsers / oxlint / __init__.py (no function)   3 0 0   100%
lintro / parsers / oxlint / oxlint_issue.py (no function)   8 0 0   100%
lintro / parsers / oxlint / oxlint_parser.py parse_oxlint_output   34 11 0   68%
lintro / parsers / oxlint / oxlint_parser.py _parse_diagnostic   19 0 0   100%
lintro / parsers / oxlint / oxlint_parser.py (no function)   6 0 0   100%
lintro / parsers / prettier / __init__.py (no function)   3 0 0   100%
lintro / parsers / prettier / prettier_issue.py (no function)   8 0 0   100%
lintro / parsers / prettier / prettier_parser.py parse_prettier_output   18 3 0   83%
lintro / parsers / prettier / prettier_parser.py (no function)   4 0 0   100%
lintro / parsers / pydoclint / __init__.py (no function)   3 0 0   100%
lintro / parsers / pydoclint / pydoclint_issue.py (no function)   9 0 0   100%
lintro / parsers / pydoclint / pydoclint_parser.py _safe_int   4 2 0   50%
lintro / parsers / pydoclint / pydoclint_parser.py parse_pydoclint_output   23 1 0   96%
lintro / parsers / pydoclint / pydoclint_parser.py (no function)   9 0 0   100%
lintro / parsers / pytest / __init__.py (no function)   3 0 0   100%
lintro / parsers / pytest / format_parsers.py parse_pytest_json_output   17 0 0   100%
lintro / parsers / pytest / format_parsers.py _parse_json_test_item   23 0 0   100%
lintro / parsers / pytest / format_parsers.py parse_pytest_text_output   80 14 0   82%
lintro / parsers / pytest / format_parsers.py parse_pytest_junit_xml   42 10 0   76%
lintro / parsers / pytest / format_parsers.py (no function)   10 0 0   100%
lintro / parsers / pytest / models.py (no function)   12 0 0   100%
lintro / parsers / pytest / pytest_issue.py (no function)   11 0 0   100%
lintro / parsers / pytest / pytest_parser.py parse_pytest_output   6 0 0   100%
lintro / parsers / pytest / pytest_parser.py (no function)   8 0 0   100%
lintro / parsers / pytest / summary_extractor.py extract_pytest_summary   27 2 0   93%
lintro / parsers / pytest / summary_extractor.py (no function)   5 0 0   100%
lintro / parsers / ruff / __init__.py (no function)   4 0 0   100%
lintro / parsers / ruff / ruff_format_issue.py (no function)   10 0 0   100%
lintro / parsers / ruff / ruff_issue.py (no function)   10 0 0   100%
lintro / parsers / ruff / ruff_parser.py _parse_ruff_item   16 0 0   100%
lintro / parsers / ruff / ruff_parser.py parse_ruff_output   25 3 0   88%
lintro / parsers / ruff / ruff_parser.py parse_ruff_format_check_output   11 0 0   100%
lintro / parsers / ruff / ruff_parser.py stream_ruff_output   4 4 0   0%
lintro / parsers / ruff / ruff_parser.py stream_ruff_format_output   8 8 0   0%
lintro / parsers / ruff / ruff_parser.py (no function)   12 0 0   100%
lintro / parsers / rustfmt / __init__.py (no function)   0 0 0   100%
lintro / parsers / rustfmt / rustfmt_issue.py (no function)   10 0 0   100%
lintro / parsers / rustfmt / rustfmt_parser.py parse_rustfmt_output   27 2 0   93%
lintro / parsers / rustfmt / rustfmt_parser.py (no function)   7 0 0   100%
lintro / parsers / semgrep / __init__.py (no function)   3 0 0   100%
lintro / parsers / semgrep / semgrep_issue.py SemgrepIssue.__post_init__   1 0 0   100%
lintro / parsers / semgrep / semgrep_issue.py SemgrepIssue._get_message   8 0 0   100%
lintro / parsers / semgrep / semgrep_issue.py (no function)   16 0 0   100%
lintro / parsers / semgrep / semgrep_parser.py _parse_single_result   28 3 0   89%
lintro / parsers / semgrep / semgrep_parser.py parse_semgrep_output   27 3 0   89%
lintro / parsers / semgrep / semgrep_parser.py (no function)   8 0 0   100%
lintro / parsers / shellcheck / __init__.py (no function)   3 0 0   100%
lintro / parsers / shellcheck / shellcheck_issue.py (no function)   11 0 0   100%
lintro / parsers / shellcheck / shellcheck_parser.py _safe_int   4 2 0   50%
lintro / parsers / shellcheck / shellcheck_parser.py parse_shellcheck_output   29 0 0   100%
lintro / parsers / shellcheck / shellcheck_parser.py (no function)   7 0 0   100%
lintro / parsers / shfmt / __init__.py (no function)   3 0 0   100%
lintro / parsers / shfmt / shfmt_issue.py (no function)   10 0 0   100%
lintro / parsers / shfmt / shfmt_parser.py parse_shfmt_output   39 3 0   92%
lintro / parsers / shfmt / shfmt_parser.py (no function)   7 0 0   100%
lintro / parsers / sqlfluff / __init__.py (no function)   3 0 0   100%
lintro / parsers / sqlfluff / sqlfluff_issue.py (no function)   11 0 0   100%
lintro / parsers / sqlfluff / sqlfluff_parser.py _parse_sqlfluff_violation   8 0 0   100%
lintro / parsers / sqlfluff / sqlfluff_parser.py parse_sqlfluff_output   23 2 0   91%
lintro / parsers / sqlfluff / sqlfluff_parser.py parse_sqlfluff_output.parse_with_filepath   1 0 0   100%
lintro / parsers / sqlfluff / sqlfluff_parser.py (no function)   7 0 0   100%
lintro / parsers / streaming.py stream_json_lines   21 2 0   90%
lintro / parsers / streaming.py stream_text_lines   16 3 0   81%
lintro / parsers / streaming.py stream_json_array_fallback   24 3 0   88%
lintro / parsers / streaming.py StreamingParser.__init__   1 0 0   100%
lintro / parsers / streaming.py StreamingParser.parse_item   1 0 0   100%
lintro / parsers / streaming.py StreamingParser.parse_line   1 0 0   100%
lintro / parsers / streaming.py StreamingParser.stream_json_lines   1 0 0   100%
lintro / parsers / streaming.py StreamingParser.stream_text_lines   1 0 0   100%
lintro / parsers / streaming.py StreamingParser.stream_json_array   1 0 0   100%
lintro / parsers / streaming.py collect_streaming_results   1 0 0   100%
lintro / parsers / streaming.py (no function)   19 0 0   100%
lintro / parsers / svelte_check / __init__.py (no function)   3 0 0   100%
lintro / parsers / svelte_check / svelte_check_issue.py (no function)   9 0 0   100%
lintro / parsers / svelte_check / svelte_check_parser.py _normalize_severity   8 1 0   88%
lintro / parsers / svelte_check / svelte_check_parser.py _parse_ndjson_line   25 5 0   80%
lintro / parsers / svelte_check / svelte_check_parser.py _parse_legacy_machine_verbose_line   15 3 0   80%
lintro / parsers / svelte_check / svelte_check_parser.py _parse_machine_line   13 3 0   77%
lintro / parsers / svelte_check / svelte_check_parser.py _parse_line   15 1 0   93%
lintro / parsers / svelte_check / svelte_check_parser.py parse_svelte_check_output   9 0 0   100%
lintro / parsers / svelte_check / svelte_check_parser.py (no function)   14 0 0   100%
lintro / parsers / taplo / __init__.py (no function)   4 0 0   100%
lintro / parsers / taplo / taplo_issue.py (no function)   9 0 0   100%
lintro / parsers / taplo / taplo_parser.py parse_taplo_output   33 0 0   100%
lintro / parsers / taplo / taplo_parser.py (no function)   8 0 0   100%
lintro / parsers / tsc / __init__.py (no function)   3 0 0   100%
lintro / parsers / tsc / tsc_issue.py (no function)   9 0 0   100%
lintro / parsers / tsc / tsc_parser.py _parse_line   18 4 0   78%
lintro / parsers / tsc / tsc_parser.py parse_tsc_output   9 0 0   100%
lintro / parsers / tsc / tsc_parser.py categorize_tsc_issues   7 0 0   100%
lintro / parsers / tsc / tsc_parser.py extract_missing_modules   12 0 0   100%
lintro / parsers / tsc / tsc_parser.py (no function)   11 0 0   100%
lintro / parsers / vue_tsc / __init__.py (no function)   3 0 0   100%
lintro / parsers / vue_tsc / vue_tsc_issue.py (no function)   7 0 0   100%
lintro / parsers / vue_tsc / vue_tsc_parser.py _parse_line   18 4 0   78%
lintro / parsers / vue_tsc / vue_tsc_parser.py parse_vue_tsc_output   9 0 0   100%
lintro / parsers / vue_tsc / vue_tsc_parser.py categorize_vue_tsc_issues   7 0 0   100%
lintro / parsers / vue_tsc / vue_tsc_parser.py extract_missing_modules   9 0 0   100%
lintro / parsers / vue_tsc / vue_tsc_parser.py (no function)   14 0 0   100%
lintro / parsers / yamllint / __init__.py (no function)   3 0 0   100%
lintro / parsers / yamllint / yamllint_issue.py (no function)   9 0 0   100%
lintro / parsers / yamllint / yamllint_parser.py parse_yamllint_output   30 9 0   70%
lintro / parsers / yamllint / yamllint_parser.py (no function)   7 0 0   100%
lintro / plugins / __init__.py (no function)   4 0 1   100%
lintro / plugins / base.py ExecutionContext.should_skip   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin.__post_init__   2 0 0   100%
lintro / plugins / base.py BaseToolPlugin.definition   0 0 1   100%
lintro / plugins / base.py BaseToolPlugin.name   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin.reset_options   4 0 0   100%
lintro / plugins / base.py BaseToolPlugin.set_options   21 0 0   100%
lintro / plugins / base.py BaseToolPlugin.doc_url   1 1 0   0%
lintro / plugins / base.py BaseToolPlugin.check   0 0 1   100%
lintro / plugins / base.py BaseToolPlugin.fix   3 0 0   100%
lintro / plugins / base.py BaseToolPlugin._setup_defaults   3 0 0   100%
lintro / plugins / base.py BaseToolPlugin._discover_files   1 1 0   0%
lintro / plugins / base.py BaseToolPlugin._run_subprocess   2 0 0   100%
lintro / plugins / base.py BaseToolPlugin._run_subprocess_streaming   2 2 0   0%
lintro / plugins / base.py BaseToolPlugin._get_effective_timeout   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._validate_subprocess_command   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._validate_paths   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._get_cwd   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._prepare_execution   10 0 0   100%
lintro / plugins / base.py BaseToolPlugin._process_files_with_progress   11 0 0   100%
lintro / plugins / base.py BaseToolPlugin._get_executable_command   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._verify_tool_version   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._get_lintro_config   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._get_enforced_settings   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._get_enforce_cli_args   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._get_defaults_config_args   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._should_use_lintro_config   1 0 0   100%
lintro / plugins / base.py BaseToolPlugin._build_config_args   1 0 0   100%
lintro / plugins / base.py (no function)   57 0 6   100%
lintro / plugins / discovery.py discover_builtin_tools   18 4 0   78%
lintro / plugins / discovery.py discover_external_plugins   25 5 0   80%
lintro / plugins / discovery.py discover_all_tools   10 0 0   100%
lintro / plugins / discovery.py is_discovered   1 0 0   100%
lintro / plugins / discovery.py reset_discovery   1 0 0   100%
lintro / plugins / discovery.py (no function)   16 0 0   100%
lintro / plugins / execution_preparation.py get_effective_timeout   9 4 0   56%
lintro / plugins / execution_preparation.py get_executable_command   8 0 0   100%
lintro / plugins / execution_preparation.py verify_tool_version   7 0 0   100%
lintro / plugins / execution_preparation.py prepare_execution   24 0 0   100%
lintro / plugins / execution_preparation.py get_lintro_config   3 0 0   100%
lintro / plugins / execution_preparation.py get_enforced_settings   4 0 0   100%
lintro / plugins / execution_preparation.py get_enforce_cli_args   4 0 0   100%
lintro / plugins / execution_preparation.py get_defaults_config_args   4 0 0   100%
lintro / plugins / execution_preparation.py should_use_lintro_config   3 0 0   100%
lintro / plugins / execution_preparation.py build_config_args   4 0 0   100%
lintro / plugins / execution_preparation.py (no function)   19 0 0   100%
lintro / plugins / file_discovery.py setup_exclude_patterns   17 0 0   100%
lintro / plugins / file_discovery.py discover_files   7 0 0   100%
lintro / plugins / file_discovery.py validate_paths   5 0 0   100%
lintro / plugins / file_discovery.py get_cwd   14 3 0   79%
lintro / plugins / file_discovery.py (no function)   13 0 0   100%
lintro / plugins / file_processor.py AggregatedResult.add_file_result   18 0 0   100%
lintro / plugins / file_processor.py AggregatedResult.build_output   13 0 0   100%
lintro / plugins / file_processor.py (no function)   22 0 3   100%
lintro / plugins / protocol.py ToolDefinition.__post_init__   4 2 0   50%
lintro / plugins / protocol.py LintroPlugin.definition   0 0 1   100%
lintro / plugins / protocol.py LintroPlugin.check   0 0 1   100%
lintro / plugins / protocol.py LintroPlugin.fix   0 0 1   100%
lintro / plugins / protocol.py LintroPlugin.set_options   0 0 1   100%
lintro / plugins / protocol.py LintroPlugin.doc_url   0 0 1   100%
lintro / plugins / protocol.py (no function)   27 0 7   100%
lintro / plugins / registry.py ToolRegistry.register   10 0 0   100%
lintro / plugins / registry.py ToolRegistry._ensure_discovered   3 2 0   33%
lintro / plugins / registry.py ToolRegistry.get   9 1 0   89%
lintro / plugins / registry.py ToolRegistry.get_all   3 0 0   100%
lintro / plugins / registry.py ToolRegistry.get_definitions   3 0 0   100%
lintro / plugins / registry.py ToolRegistry.get_names   3 0 0   100%
lintro / plugins / registry.py ToolRegistry.is_registered   3 0 0   100%
lintro / plugins / registry.py ToolRegistry.clear   4 0 0   100%
lintro / plugins / registry.py ToolRegistry.get_check_tools   1 0 0   100%
lintro / plugins / registry.py ToolRegistry.get_fix_tools   2 0 0   100%
lintro / plugins / registry.py register_tool   1 0 0   100%
lintro / plugins / registry.py (no function)   30 0 3   100%
lintro / plugins / subprocess_executor.py is_compiled_binary   19 8 0   58%
lintro / plugins / subprocess_executor.py validate_subprocess_command   7 0 0   100%
lintro / plugins / subprocess_executor.py run_subprocess   25 4 0   84%
lintro / plugins / subprocess_executor.py run_subprocess_streaming   34 1 0   97%
lintro / plugins / subprocess_executor.py run_subprocess_streaming.read_output   6 0 0   100%
lintro / plugins / subprocess_executor.py (no function)   14 0 2   100%
lintro / tools / __init__.py (no function)   5 0 0   100%
lintro / tools / core / __init__.py (no function)   0 0 0   100%
lintro / tools / core / command_builders.py CommandBuilder.can_handle   0 0 1   100%
lintro / tools / core / command_builders.py CommandBuilder.get_command   0 0 1   100%
lintro / tools / core / command_builders.py CommandBuilderRegistry.register   1 0 0   100%
lintro / tools / core / command_builders.py CommandBuilderRegistry.get_command   4 0 0   100%
lintro / tools / core / command_builders.py CommandBuilderRegistry.clear   1 0 0   100%
lintro / tools / core / command_builders.py CommandBuilderRegistry.is_registered   1 0 0   100%
lintro / tools / core / command_builders.py register_command_builder   2 0 0   100%
lintro / tools / core / command_builders.py _is_compiled_binary   1 0 0   100%
lintro / tools / core / command_builders.py resolve_venv_tool_command   18 1 0   94%
lintro / tools / core / command_builders.py PythonBundledBuilder.tools   4 0 0   100%
lintro / tools / core / command_builders.py PythonBundledBuilder.can_handle   1 0 0   100%
lintro / tools / core / command_builders.py PythonBundledBuilder.get_command   19 7 0   63%
lintro / tools / core / command_builders.py PytestBuilder.can_handle   2 0 0   100%
lintro / tools / core / command_builders.py PytestBuilder.get_command   19 7 0   63%
lintro / tools / core / command_builders.py NodeJSBuilder.package_names   4 0 0   100%
lintro / tools / core / command_builders.py NodeJSBuilder.binary_names   4 0 0   100%
lintro / tools / core / command_builders.py NodeJSBuilder.can_handle   1 0 0   100%
lintro / tools / core / command_builders.py NodeJSBuilder.get_command   8 2 0   75%
lintro / tools / core / command_builders.py CargoBuilder.can_handle   2 0 0   100%
lintro / tools / core / command_builders.py CargoBuilder.get_command   6 1 0   83%
lintro / tools / core / command_builders.py StandaloneBuilder.tools   4 0 0   100%
lintro / tools / core / command_builders.py StandaloneBuilder.can_handle   1 0 0   100%
lintro / tools / core / command_builders.py StandaloneBuilder.get_command   1 0 0   100%
lintro / tools / core / command_builders.py (no function)   59 0 5   100%
lintro / tools / core / config_injection.py _get_lintro_config   1 0 0   100%
lintro / tools / core / config_injection.py _get_enforced_settings   8 2 0   75%
lintro / tools / core / config_injection.py _get_enforce_cli_args   4 1 0   75%
lintro / tools / core / config_injection.py _get_defaults_config_args   5 1 0   80%
lintro / tools / core / config_injection.py _should_use_lintro_config   11 3 0   73%
lintro / tools / core / config_injection.py _build_config_args   8 2 0   75%
lintro / tools / core / config_injection.py (no function)   11 0 0   100%
lintro / tools / core / install_context.py RuntimeContext.detect   2 2 0   0%
lintro / tools / core / install_context.py _detect_install_context   16 6 0   62%
lintro / tools / core / install_context.py _detect_platform_label   5 5 0   0%
lintro / tools / core / install_context.py _is_ci   6 1 0   83%
lintro / tools / core / install_context.py (no function)   19 0 0   100%
lintro / tools / core / install_plan.py InstallPlan.has_work   1 0 0   100%
lintro / tools / core / install_plan.py InstallPlan.total_actions   1 0 0   100%
lintro / tools / core / install_plan.py (no function)   20 0 0   100%
lintro / tools / core / install_strategies / __init__.py (no function)   5 0 0   100%
lintro / tools / core / install_strategies / base.py InstallStrategy.install_type   0 0 1   100%
lintro / tools / core / install_strategies / base.py InstallStrategy.is_available   0 0 1   100%
lintro / tools / core / install_strategies / base.py InstallStrategy.check_prerequisites   0 0 1   100%
lintro / tools / core / install_strategies / base.py InstallStrategy.install_hint   0 0 1   100%
lintro / tools / core / install_strategies / base.py InstallStrategy.upgrade_hint   0 0 1   100%
lintro / tools / core / install_strategies / base.py (no function)   14 0 4   100%
lintro / tools / core / install_strategies / binary_strategy.py BinaryStrategy.install_type   1 0 0   100%
lintro / tools / core / install_strategies / binary_strategy.py BinaryStrategy.is_available   1 1 0   0%
lintro / tools / core / install_strategies / binary_strategy.py BinaryStrategy.check_prerequisites   1 0 0   100%
lintro / tools / core / install_strategies / binary_strategy.py BinaryStrategy.install_hint   5 0 0   100%
lintro / tools / core / install_strategies / binary_strategy.py BinaryStrategy.upgrade_hint   5 1 0   80%
lintro / tools / core / install_strategies / binary_strategy.py (no function)   13 0 0   100%
lintro / tools / core / install_strategies / brew_names.py (no function)   2 0 0   100%
lintro / tools / core / install_strategies / cargo_strategy.py CargoStrategy.install_type   1 0 0   100%
lintro / tools / core / install_strategies / cargo_strategy.py CargoStrategy.is_available   1 1 0   0%
lintro / tools / core / install_strategies / cargo_strategy.py CargoStrategy.check_prerequisites   3 0 0   100%
lintro / tools / core / install_strategies / cargo_strategy.py CargoStrategy.install_hint   2 0 0   100%
lintro / tools / core / install_strategies / cargo_strategy.py CargoStrategy.upgrade_hint   2 0 0   100%
lintro / tools / core / install_strategies / cargo_strategy.py (no function)   12 0 0   100%
lintro / tools / core / install_strategies / environment.py InstallEnvironment.has   1 0 0   100%
lintro / tools / core / install_strategies / environment.py InstallEnvironment.detect   8 8 0   0%
lintro / tools / core / install_strategies / environment.py (no function)   11 0 0   100%
lintro / tools / core / install_strategies / npm_strategy.py NpmStrategy.install_type   1 0 0   100%
lintro / tools / core / install_strategies / npm_strategy.py NpmStrategy.is_available   1 1 0   0%
lintro / tools / core / install_strategies / npm_strategy.py NpmStrategy.check_prerequisites   5 0 0   100%
lintro / tools / core / install_strategies / npm_strategy.py NpmStrategy.install_hint   5 0 0   100%
lintro / tools / core / install_strategies / npm_strategy.py NpmStrategy.upgrade_hint   5 1 0   80%
lintro / tools / core / install_strategies / npm_strategy.py _npm_cmd   1 0 0   100%
lintro / tools / core / install_strategies / npm_strategy.py _is_homebrew_context   1 0 0   100%
lintro / tools / core / install_strategies / npm_strategy.py (no function)   15 0 0   100%
lintro / tools / core / install_strategies / pip_strategy.py PipStrategy.install_type   1 0 0   100%
lintro / tools / core / install_strategies / pip_strategy.py PipStrategy.is_available   1 0 0   100%
lintro / tools / core / install_strategies / pip_strategy.py PipStrategy.check_prerequisites   5 0 0   100%
lintro / tools / core / install_strategies / pip_strategy.py PipStrategy.install_hint   7 1 0   86%
lintro / tools / core / install_strategies / pip_strategy.py PipStrategy.upgrade_hint   7 1 0   86%
lintro / tools / core / install_strategies / pip_strategy.py _pip_cmd   1 0 0   100%
lintro / tools / core / install_strategies / pip_strategy.py _is_homebrew_context   1 0 0   100%
lintro / tools / core / install_strategies / pip_strategy.py (no function)   15 0 0   100%
lintro / tools / core / install_strategies / registry.py register_strategy   6 2 0   67%
lintro / tools / core / install_strategies / registry.py get_strategy   1 0 0   100%
lintro / tools / core / install_strategies / registry.py strategy_registry   1 0 0   100%
lintro / tools / core / install_strategies / registry.py (no function)   6 0 0   100%
lintro / tools / core / install_strategies / rustup_strategy.py RustupStrategy.install_type   1 0 0   100%
lintro / tools / core / install_strategies / rustup_strategy.py RustupStrategy.is_available   1 1 0   0%
lintro / tools / core / install_strategies / rustup_strategy.py RustupStrategy.check_prerequisites   3 0 0   100%
lintro / tools / core / install_strategies / rustup_strategy.py RustupStrategy.install_hint   4 0 0   100%
lintro / tools / core / install_strategies / rustup_strategy.py RustupStrategy.upgrade_hint   1 0 0   100%
lintro / tools / core / install_strategies / rustup_strategy.py (no function)   12 0 0   100%
lintro / tools / core / line_length_checker.py check_line_length_violations   43 1 0   98%
lintro / tools / core / line_length_checker.py (no function)   15 0 0   100%
lintro / tools / core / manifest_models.py (no function)   22 0 0   100%
lintro / tools / core / option_spec.py OptionSpec.validate   20 0 0   100%
lintro / tools / core / option_spec.py OptionSpec.to_cli_args   12 1 0   92%
lintro / tools / core / option_spec.py ToolOptionsSpec.add   2 0 0   100%
lintro / tools / core / option_spec.py ToolOptionsSpec.validate_all   6 0 0   100%
lintro / tools / core / option_spec.py ToolOptionsSpec.to_cli_args   5 0 0   100%
lintro / tools / core / option_spec.py ToolOptionsSpec.get_defaults   1 0 0   100%
lintro / tools / core / option_spec.py bool_option   1 0 0   100%
lintro / tools / core / option_spec.py int_option   1 0 0   100%
lintro / tools / core / option_spec.py positive_int_option   1 0 0   100%
lintro / tools / core / option_spec.py str_option   1 0 0   100%
lintro / tools / core / option_spec.py list_option   1 0 0   100%
lintro / tools / core / option_spec.py enum_option   1 0 0   100%
lintro / tools / core / option_spec.py (no function)   39 0 0   100%
lintro / tools / core / option_validators.py validate_bool   2 0 0   100%
lintro / tools / core / option_validators.py validate_str   2 0 0   100%
lintro / tools / core / option_validators.py validate_int   8 0 0   100%
lintro / tools / core / option_validators.py validate_positive_int   5 0 0   100%
lintro / tools / core / option_validators.py validate_list   2 0 0   100%
lintro / tools / core / option_validators.py normalize_str_or_list   9 1 0   89%
lintro / tools / core / option_validators.py filter_none_options   1 0 0   100%
lintro / tools / core / option_validators.py (no function)   8 0 0   100%
lintro / tools / core / runtime_discovery.py _get_tool_probe_info   7 3 0   57%
lintro / tools / core / runtime_discovery.py _extract_version   6 0 0   100%
lintro / tools / core / runtime_discovery.py discover_tool   41 7 0   83%
lintro / tools / core / runtime_discovery.py discover_all_tools   17 6 0   65%
lintro / tools / core / runtime_discovery.py clear_discovery_cache   3 0 0   100%
lintro / tools / core / runtime_discovery.py is_tool_available   1 0 0   100%
lintro / tools / core / runtime_discovery.py get_tool_path   2 0 0   100%
lintro / tools / core / runtime_discovery.py get_unavailable_tools   2 0 0   100%
lintro / tools / core / runtime_discovery.py get_available_tools   2 0 0   100%
lintro / tools / core / runtime_discovery.py format_tool_status_table   12 0 0   100%
lintro / tools / core / runtime_discovery.py (no function)   36 0 0   100%
lintro / tools / core / timeout_utils.py run_subprocess_with_timeout   9 0 0   100%
lintro / tools / core / timeout_utils.py get_timeout_value   3 0 0   100%
lintro / tools / core / timeout_utils.py create_timeout_result   2 0 0   100%
lintro / tools / core / timeout_utils.py (no function)   12 0 0   100%
lintro / tools / core / tool_installer.py ToolInstaller.__init__   2 0 0   100%
lintro / tools / core / tool_installer.py ToolInstaller.plan   13 2 0   85%
lintro / tools / core / tool_installer.py ToolInstaller._is_manual_hint   1 0 0   100%
lintro / tools / core / tool_installer.py ToolInstaller._plan_tool   30 3 0   90%
lintro / tools / core / tool_installer.py ToolInstaller._check_prerequisites   4 1 0   75%
lintro / tools / core / tool_installer.py ToolInstaller._get_installed_version   13 13 0   0%
lintro / tools / core / tool_installer.py ToolInstaller._version_meets_minimum   5 0 0   100%
lintro / tools / core / tool_installer.py ToolInstaller._get_install_command   14 5 0   64%
lintro / tools / core / tool_installer.py ToolInstaller._is_brew_managed   7 2 0   71%
lintro / tools / core / tool_installer.py ToolInstaller.execute   8 0 0   100%
lintro / tools / core / tool_installer.py ToolInstaller._run_install   23 5 0   78%
lintro / tools / core / tool_installer.py ToolInstaller._has_install_script   6 6 0   0%
lintro / tools / core / tool_installer.py ToolInstaller._install_via_script   20 20 0   0%
lintro / tools / core / tool_installer.py (no function)   31 0 0   100%
lintro / tools / core / tool_manager.py ToolManager._ensure_initialized   3 0 0   100%
lintro / tools / core / tool_manager.py ToolManager.get_tool   2 0 0   100%
lintro / tools / core / tool_manager.py ToolManager.get_tool_execution_order   36 10 0   72%
lintro / tools / core / tool_manager.py ToolManager.set_tool_options   2 0 0   100%
lintro / tools / core / tool_manager.py ToolManager.get_all_tools   2 0 0   100%
lintro / tools / core / tool_manager.py ToolManager.get_check_tools   2 0 0   100%
lintro / tools / core / tool_manager.py ToolManager.get_fix_tools   2 0 0   100%
lintro / tools / core / tool_manager.py ToolManager.get_tool_names   2 0 0   100%
lintro / tools / core / tool_manager.py ToolManager.is_tool_registered   2 0 0   100%
lintro / tools / core / tool_manager.py (no function)   19 0 2   100%
lintro / tools / core / tool_registry.py ToolRegistry.__init__   3 0 0   100%
lintro / tools / core / tool_registry.py ToolRegistry.load   1 0 0   100%
lintro / tools / core / tool_registry.py ToolRegistry.clear_cache   1 1 0   0%
lintro / tools / core / tool_registry.py ToolRegistry._load_from_path   29 6 0   79%
lintro / tools / core / tool_registry.py ToolRegistry._parse_tool_entry   17 0 0   100%
lintro / tools / core / tool_registry.py ToolRegistry.get   3 0 0   100%
lintro / tools / core / tool_registry.py ToolRegistry.get_or_none   1 0 0   100%
lintro / tools / core / tool_registry.py ToolRegistry.all_tools   4 0 0   100%
lintro / tools / core / tool_registry.py ToolRegistry.tools_for_languages   8 0 0   100%
lintro / tools / core / tool_registry.py ToolRegistry.tools_for_profile   19 3 0   84%
lintro / tools / core / tool_registry.py ToolRegistry.tools_by_category   11 11 0   0%
lintro / tools / core / tool_registry.py ToolRegistry.version_command   1 1 0   0%
lintro / tools / core / tool_registry.py ToolRegistry.profile_names   1 0 0   100%
lintro / tools / core / tool_registry.py ToolRegistry.profiles   1 1 0   0%
lintro / tools / core / tool_registry.py ToolRegistry.language_map   1 0 0   100%
lintro / tools / core / tool_registry.py ToolRegistry.__len__   1 0 0   100%
lintro / tools / core / tool_registry.py ToolRegistry.__contains__   1 0 0   100%
lintro / tools / core / tool_registry.py (no function)   37 0 0   100%
lintro / tools / core / version_checking.py _get_version_timeout   13 0 0   100%
lintro / tools / core / version_checking.py get_minimum_versions   11 1 0   91%
lintro / tools / core / version_checking.py get_install_hints   15 5 0   67%
lintro / tools / core / version_checking.py (no function)   11 0 0   100%
lintro / tools / core / version_parsing.py _get_minimum_versions_cached   1 0 0   100%
lintro / tools / core / version_parsing.py _get_install_hints_cached   1 0 0   100%
lintro / tools / core / version_parsing.py get_minimum_versions   1 0 0   100%
lintro / tools / core / version_parsing.py get_install_hints   1 0 0   100%
lintro / tools / core / version_parsing.py parse_version   11 0 0   100%
lintro / tools / core / version_parsing.py compare_versions   3 0 0   100%
lintro / tools / core / version_parsing.py check_tool_version   48 7 0   85%
lintro / tools / core / version_parsing.py extract_version_from_output   28 1 0   96%
lintro / tools / core / version_parsing.py (no function)   32 0 0   100%
lintro / tools / core / version_requirements.py get_all_tool_versions   16 7 0   56%
lintro / tools / core / version_requirements.py (no function)   7 0 0   100%
lintro / tools / definitions / __init__.py (no function)   0 0 0   100%
lintro / tools / definitions / actionlint.py ActionlintPlugin.definition   1 0 0   100%
lintro / tools / definitions / actionlint.py ActionlintPlugin.set_options   1 1 0   0%
lintro / tools / definitions / actionlint.py ActionlintPlugin._build_command   1 0 0   100%
lintro / tools / definitions / actionlint.py ActionlintPlugin._process_single_file   14 4 4   71%
lintro / tools / definitions / actionlint.py ActionlintPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / actionlint.py ActionlintPlugin.check   24 10 0   58%
lintro / tools / definitions / actionlint.py ActionlintPlugin.fix   1 1 0   0%
lintro / tools / definitions / actionlint.py (no function)   28 0 0   100%
lintro / tools / definitions / astro_check.py AstroCheckPlugin.definition   1 0 0   100%
lintro / tools / definitions / astro_check.py AstroCheckPlugin.set_options   5 0 0   100%
lintro / tools / definitions / astro_check.py AstroCheckPlugin._get_astro_command   7 5 0   29%
lintro / tools / definitions / astro_check.py AstroCheckPlugin._find_astro_config   11 0 0   100%
lintro / tools / definitions / astro_check.py AstroCheckPlugin._build_command   7 0 0   100%
lintro / tools / definitions / astro_check.py AstroCheckPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / astro_check.py AstroCheckPlugin.check   65 30 0   54%
lintro / tools / definitions / astro_check.py AstroCheckPlugin.fix   1 0 0   100%
lintro / tools / definitions / astro_check.py (no function)   35 0 0   100%
lintro / tools / definitions / bandit.py _extract_bandit_json   13 1 0   92%
lintro / tools / definitions / bandit.py BanditPlugin.definition   1 0 0   100%
lintro / tools / definitions / bandit.py BanditPlugin.__post_init__   2 0 0   100%
lintro / tools / definitions / bandit.py BanditPlugin.reset_options   2 0 0   100%
lintro / tools / definitions / bandit.py BanditPlugin._apply_native_config   34 10 0   71%
lintro / tools / definitions / bandit.py BanditPlugin.set_options   11 3 0   73%
lintro / tools / definitions / bandit.py BanditPlugin._build_check_command   48 21 0   56%
lintro / tools / definitions / bandit.py BanditPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / bandit.py BanditPlugin.check   41 14 0   66%
lintro / tools / definitions / bandit.py BanditPlugin.fix   1 1 0   0%
lintro / tools / definitions / bandit.py (no function)   33 0 0   100%
lintro / tools / definitions / black.py BlackPlugin.definition   1 0 0   100%
lintro / tools / definitions / black.py BlackPlugin.set_options   7 0 0   100%
lintro / tools / definitions / black.py BlackPlugin._build_common_args   13 6 0   54%
lintro / tools / definitions / black.py BlackPlugin._check_line_length_violations   21 7 0   67%
lintro / tools / definitions / black.py BlackPlugin._handle_timeout_error   4 1 0   75%
lintro / tools / definitions / black.py BlackPlugin.check   18 0 0   100%
lintro / tools / definitions / black.py BlackPlugin.fix   49 12 0   76%
lintro / tools / definitions / black.py (no function)   27 0 0   100%
lintro / tools / definitions / cargo_audit.py _find_cargo_root   9 1 0   89%
lintro / tools / definitions / cargo_audit.py CargoAuditPlugin.definition   1 0 0   100%
lintro / tools / definitions / cargo_audit.py CargoAuditPlugin.set_options   8 0 0   100%
lintro / tools / definitions / cargo_audit.py CargoAuditPlugin._build_command   1 0 0   100%
lintro / tools / definitions / cargo_audit.py CargoAuditPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / cargo_audit.py CargoAuditPlugin.check   15 1 0   93%
lintro / tools / definitions / cargo_audit.py CargoAuditPlugin.fix   1 0 0   100%
lintro / tools / definitions / cargo_audit.py (no function)   28 0 0   100%
lintro / tools / definitions / cargo_deny.py _find_cargo_root   21 11 0   48%
lintro / tools / definitions / cargo_deny.py _build_cargo_deny_command   1 1 0   0%
lintro / tools / definitions / cargo_deny.py CargoDenyPlugin.definition   1 0 0   100%
lintro / tools / definitions / cargo_deny.py CargoDenyPlugin.set_options   3 0 0   100%
lintro / tools / definitions / cargo_deny.py CargoDenyPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / cargo_deny.py CargoDenyPlugin.check   15 9 0   40%
lintro / tools / definitions / cargo_deny.py CargoDenyPlugin.fix   1 0 0   100%
lintro / tools / definitions / cargo_deny.py (no function)   29 0 0   100%
lintro / tools / definitions / clippy.py _find_cargo_root   21 21 0   0%
lintro / tools / definitions / clippy.py _build_clippy_command   4 4 0   0%
lintro / tools / definitions / clippy.py ClippyPlugin.definition   1 0 0   100%
lintro / tools / definitions / clippy.py ClippyPlugin._verify_tool_version   6 6 0   0%
lintro / tools / definitions / clippy.py ClippyPlugin.set_options   3 3 0   0%
lintro / tools / definitions / clippy.py ClippyPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / clippy.py ClippyPlugin.check   16 16 0   0%
lintro / tools / definitions / clippy.py ClippyPlugin.fix   30 30 0   0%
lintro / tools / definitions / clippy.py (no function)   32 0 0   100%
lintro / tools / definitions / gitleaks.py GitleaksPlugin.definition   1 0 0   100%
lintro / tools / definitions / gitleaks.py GitleaksPlugin.set_options   7 0 0   100%
lintro / tools / definitions / gitleaks.py GitleaksPlugin._build_check_command   20 0 0   100%
lintro / tools / definitions / gitleaks.py GitleaksPlugin.check   42 8 0   81%
lintro / tools / definitions / gitleaks.py GitleaksPlugin.fix   1 0 0   100%
lintro / tools / definitions / gitleaks.py (no function)   31 0 0   100%
lintro / tools / definitions / hadolint.py HadolintPlugin.definition   1 0 0   100%
lintro / tools / definitions / hadolint.py HadolintPlugin.set_options   14 0 0   100%
lintro / tools / definitions / hadolint.py HadolintPlugin._build_command   26 0 0   100%
lintro / tools / definitions / hadolint.py HadolintPlugin._process_single_file   9 4 0   56%
lintro / tools / definitions / hadolint.py HadolintPlugin.doc_url   8 0 0   100%
lintro / tools / definitions / hadolint.py HadolintPlugin.check   5 0 0   100%
lintro / tools / definitions / hadolint.py HadolintPlugin.fix   1 0 0   100%
lintro / tools / definitions / hadolint.py (no function)   33 0 0   100%
lintro / tools / definitions / markdownlint.py MarkdownlintPlugin.definition   1 0 0   100%
lintro / tools / definitions / markdownlint.py MarkdownlintPlugin._verify_tool_version   7 7 0   0%
lintro / tools / definitions / markdownlint.py MarkdownlintPlugin.set_options   10 10 0   0%
lintro / tools / definitions / markdownlint.py MarkdownlintPlugin._get_markdownlint_command   5 3 0   40%
lintro / tools / definitions / markdownlint.py MarkdownlintPlugin._create_temp_markdownlint_config   10 10 0   0%
lintro / tools / definitions / markdownlint.py MarkdownlintPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / markdownlint.py MarkdownlintPlugin.check   39 16 0   59%
lintro / tools / definitions / markdownlint.py MarkdownlintPlugin.fix   1 0 0   100%
lintro / tools / definitions / markdownlint.py (no function)   37 0 0   100%
lintro / tools / definitions / mypy.py _split_config_values   6 0 0   100%
lintro / tools / definitions / mypy.py _regex_to_glob   9 0 0   100%
lintro / tools / definitions / mypy.py MypyPlugin.definition   1 0 0   100%
lintro / tools / definitions / mypy.py MypyPlugin.set_options   13 0 0   100%
lintro / tools / definitions / mypy.py MypyPlugin._glob_to_regex   14 14 0   0%
lintro / tools / definitions / mypy.py MypyPlugin._build_command   28 11 0   61%
lintro / tools / definitions / mypy.py MypyPlugin._build_effective_excludes   11 0 0   100%
lintro / tools / definitions / mypy.py MypyPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / mypy.py MypyPlugin.check   60 18 0   70%
lintro / tools / definitions / mypy.py MypyPlugin.fix   1 0 0   100%
lintro / tools / definitions / mypy.py (no function)   36 0 0   100%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin.definition   1 0 0   100%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin.set_options   5 0 0   100%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin._build_command   6 0 0   100%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin._build_probe_command   1 0 0   100%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin._find_config_file   6 0 0   100%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin._resolve_scan_root   10 4 0   60%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin.check   24 1 0   96%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin._check_suppression_staleness   22 3 0   86%
lintro / tools / definitions / osv_scanner.py OsvScannerPlugin.fix   1 0 0   100%
lintro / tools / definitions / osv_scanner.py (no function)   35 0 0   100%
lintro / tools / definitions / oxfmt.py OxfmtPlugin.definition   1 0 0   100%
lintro / tools / definitions / oxfmt.py OxfmtPlugin.set_options   9 0 0   100%
lintro / tools / definitions / oxfmt.py OxfmtPlugin._create_timeout_result   5 5 0   0%
lintro / tools / definitions / oxfmt.py OxfmtPlugin._build_oxfmt_args   8 0 0   100%
lintro / tools / definitions / oxfmt.py OxfmtPlugin.check   33 3 0   91%
lintro / tools / definitions / oxfmt.py OxfmtPlugin.fix   58 10 0   83%
lintro / tools / definitions / oxfmt.py (no function)   28 0 0   100%
lintro / tools / definitions / oxlint.py OxlintPlugin.definition   1 0 0   100%
lintro / tools / definitions / oxlint.py OxlintPlugin.__post_init__   2 0 0   100%
lintro / tools / definitions / oxlint.py OxlintPlugin.set_options   14 0 0   100%
lintro / tools / definitions / oxlint.py OxlintPlugin._create_timeout_result   6 1 0   83%
lintro / tools / definitions / oxlint.py OxlintPlugin._build_oxlint_args   20 0 0   100%
lintro / tools / definitions / oxlint.py OxlintPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / oxlint.py OxlintPlugin.check   35 3 0   91%
lintro / tools / definitions / oxlint.py OxlintPlugin.fix   60 7 0   88%
lintro / tools / definitions / oxlint.py (no function)   31 0 0   100%
lintro / tools / definitions / prettier.py PrettierPlugin.definition   1 0 0   100%
lintro / tools / definitions / prettier.py PrettierPlugin.set_options   4 0 0   100%
lintro / tools / definitions / prettier.py PrettierPlugin._find_prettier_config   22 7 0   68%
lintro / tools / definitions / prettier.py PrettierPlugin._find_prettierignore   13 0 0   100%
lintro / tools / definitions / prettier.py PrettierPlugin._create_not_found_result   1 1 0   0%
lintro / tools / definitions / prettier.py PrettierPlugin._create_timeout_result   5 5 0   0%
lintro / tools / definitions / prettier.py PrettierPlugin.check   45 13 0   71%
lintro / tools / definitions / prettier.py PrettierPlugin.fix   85 32 0   62%
lintro / tools / definitions / prettier.py (no function)   33 0 0   100%
lintro / tools / definitions / pydoclint.py PydoclintPlugin.definition   1 0 0   100%
lintro / tools / definitions / pydoclint.py PydoclintPlugin._build_command   4 0 0   100%
lintro / tools / definitions / pydoclint.py PydoclintPlugin._process_single_file   9 2 0   78%
lintro / tools / definitions / pydoclint.py PydoclintPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / pydoclint.py PydoclintPlugin.check   5 0 0   100%
lintro / tools / definitions / pydoclint.py PydoclintPlugin.fix   1 0 0   100%
lintro / tools / definitions / pydoclint.py (no function)   24 0 0   100%
lintro / tools / definitions / pytest.py PytestPlugin.__post_init__   14 2 0   86%
lintro / tools / definitions / pytest.py PytestPlugin.definition   1 0 0   100%
lintro / tools / definitions / pytest.py PytestPlugin.set_options   8 1 0   88%
lintro / tools / definitions / pytest.py PytestPlugin._parse_output   4 4 0   0%
lintro / tools / definitions / pytest.py PytestPlugin.check   59 32 0   46%
lintro / tools / definitions / pytest.py PytestPlugin.fix   1 0 0   100%
lintro / tools / definitions / pytest.py (no function)   38 0 0   100%
lintro / tools / definitions / ruff.py RuffPlugin.definition   1 0 0   100%
lintro / tools / definitions / ruff.py RuffPlugin.__post_init__   14 1 0   93%
lintro / tools / definitions / ruff.py RuffPlugin.set_options   14 0 0   100%
lintro / tools / definitions / ruff.py RuffPlugin._resolve_rule_name   15 0 0   100%
lintro / tools / definitions / ruff.py RuffPlugin.doc_url   6 0 0   100%
lintro / tools / definitions / ruff.py RuffPlugin.check   4 1 0   75%
lintro / tools / definitions / ruff.py RuffPlugin.fix   4 1 0   75%
lintro / tools / definitions / ruff.py (no function)   34 0 0   100%
lintro / tools / definitions / rustfmt.py _find_cargo_root   25 10 0   60%
lintro / tools / definitions / rustfmt.py _build_rustfmt_check_command   1 0 0   100%
lintro / tools / definitions / rustfmt.py _build_rustfmt_fix_command   1 0 0   100%
lintro / tools / definitions / rustfmt.py RustfmtPlugin.definition   1 0 0   100%
lintro / tools / definitions / rustfmt.py RustfmtPlugin.set_options   3 0 0   100%
lintro / tools / definitions / rustfmt.py RustfmtPlugin.check   16 0 0   100%
lintro / tools / definitions / rustfmt.py RustfmtPlugin.fix   32 2 0   94%
lintro / tools / definitions / rustfmt.py (no function)   31 0 0   100%
lintro / tools / definitions / semgrep.py _extract_semgrep_json   13 1 0   92%
lintro / tools / definitions / semgrep.py SemgrepPlugin.definition   1 0 0   100%
lintro / tools / definitions / semgrep.py SemgrepPlugin.set_options   12 0 0   100%
lintro / tools / definitions / semgrep.py SemgrepPlugin._build_check_command   28 0 0   100%
lintro / tools / definitions / semgrep.py SemgrepPlugin.doc_url   5 0 0   100%
lintro / tools / definitions / semgrep.py SemgrepPlugin.check   35 6 0   83%
lintro / tools / definitions / semgrep.py SemgrepPlugin.check._is_partial_parsing   8 6 0   25%
lintro / tools / definitions / semgrep.py SemgrepPlugin.fix   1 0 0   100%
lintro / tools / definitions / semgrep.py (no function)   34 0 0   100%
lintro / tools / definitions / shellcheck.py normalize_shellcheck_severity   5 0 0   100%
lintro / tools / definitions / shellcheck.py normalize_shellcheck_shell   5 0 0   100%
lintro / tools / definitions / shellcheck.py ShellcheckPlugin.definition   1 0 0   100%
lintro / tools / definitions / shellcheck.py ShellcheckPlugin.set_options   9 0 0   100%
lintro / tools / definitions / shellcheck.py ShellcheckPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / shellcheck.py ShellcheckPlugin._build_command   12 0 0   100%
lintro / tools / definitions / shellcheck.py ShellcheckPlugin._process_single_file   9 2 0   78%
lintro / tools / definitions / shellcheck.py ShellcheckPlugin.check   5 0 0   100%
lintro / tools / definitions / shellcheck.py ShellcheckPlugin.fix   1 0 0   100%
lintro / tools / definitions / shellcheck.py (no function)   35 0 0   100%
lintro / tools / definitions / shfmt.py ShfmtPlugin.definition   1 0 0   100%
lintro / tools / definitions / shfmt.py ShfmtPlugin.set_options   14 0 0   100%
lintro / tools / definitions / shfmt.py ShfmtPlugin._build_common_args   16 0 0   100%
lintro / tools / definitions / shfmt.py ShfmtPlugin._process_single_file   11 2 0   82%
lintro / tools / definitions / shfmt.py ShfmtPlugin._process_single_file_fix   19 3 0   84%
lintro / tools / definitions / shfmt.py ShfmtPlugin.check   5 0 0   100%
lintro / tools / definitions / shfmt.py ShfmtPlugin.fix   19 2 0   89%
lintro / tools / definitions / shfmt.py ShfmtPlugin.fix.process_fix   6 0 0   100%
lintro / tools / definitions / shfmt.py (no function)   29 0 0   100%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin.definition   1 0 0   100%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin.set_options   6 0 0   100%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin._build_lint_command   16 0 0   100%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin._build_fix_command   16 0 0   100%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin._process_single_file_check   10 2 0   80%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin._process_single_file_fix   8 2 0   75%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin.check   6 0 0   100%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin.check.processor   1 0 0   100%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin.fix   6 0 0   100%
lintro / tools / definitions / sqlfluff.py SqlfluffPlugin.fix.processor   1 0 0   100%
lintro / tools / definitions / sqlfluff.py (no function)   32 0 0   100%
lintro / tools / definitions / svelte_check.py SvelteCheckPlugin.definition   1 0 0   100%
lintro / tools / definitions / svelte_check.py SvelteCheckPlugin.set_options   10 0 0   100%
lintro / tools / definitions / svelte_check.py SvelteCheckPlugin._get_svelte_check_command   7 5 0   29%
lintro / tools / definitions / svelte_check.py SvelteCheckPlugin._find_svelte_config   6 0 0   100%
lintro / tools / definitions / svelte_check.py SvelteCheckPlugin._build_command   11 0 0   100%
lintro / tools / definitions / svelte_check.py SvelteCheckPlugin.check   51 26 0   49%
lintro / tools / definitions / svelte_check.py SvelteCheckPlugin.fix   1 0 0   100%
lintro / tools / definitions / svelte_check.py (no function)   31 0 0   100%
lintro / tools / definitions / taplo.py TaploPlugin.definition   1 0 0   100%
lintro / tools / definitions / taplo.py TaploPlugin.set_options   8 0 0   100%
lintro / tools / definitions / taplo.py TaploPlugin._build_format_args   12 0 0   100%
lintro / tools / definitions / taplo.py TaploPlugin._build_lint_args   4 0 0   100%
lintro / tools / definitions / taplo.py TaploPlugin._handle_timeout_error   6 0 0   100%
lintro / tools / definitions / taplo.py TaploPlugin.doc_url   3 0 0   100%
lintro / tools / definitions / taplo.py TaploPlugin.check   37 0 0   100%
lintro / tools / definitions / taplo.py TaploPlugin.fix   52 6 0   88%
lintro / tools / definitions / taplo.py (no function)   31 0 0   100%
lintro / tools / definitions / tsc.py TscPlugin.definition   1 0 0   100%
lintro / tools / definitions / tsc.py TscPlugin.set_options   11 0 0   100%
lintro / tools / definitions / tsc.py TscPlugin._get_tsc_command   7 0 0   100%
lintro / tools / definitions / tsc.py TscPlugin._find_tsconfig   9 1 0   89%
lintro / tools / definitions / tsc.py TscPlugin._detect_framework_project   6 0 0   100%
lintro / tools / definitions / tsc.py TscPlugin._create_temp_tsconfig   37 7 0   81%
lintro / tools / definitions / tsc.py TscPlugin._build_command   13 0 0   100%
lintro / tools / definitions / tsc.py TscPlugin.doc_url   7 0 0   100%
lintro / tools / definitions / tsc.py TscPlugin.check   97 41 0   58%
lintro / tools / definitions / tsc.py TscPlugin.fix   1 0 0   100%
lintro / tools / definitions / tsc.py (no function)   39 0 0   100%
lintro / tools / definitions / vue_tsc.py VueTscPlugin.definition   1 0 0   100%
lintro / tools / definitions / vue_tsc.py VueTscPlugin.set_options   11 0 0   100%
lintro / tools / definitions / vue_tsc.py VueTscPlugin._vue_tsc_cmd   7 5 0   29%
lintro / tools / definitions / vue_tsc.py VueTscPlugin._find_tsconfig   12 5 0   58%
lintro / tools / definitions / vue_tsc.py VueTscPlugin._create_temp_tsconfig   37 8 0   78%
lintro / tools / definitions / vue_tsc.py VueTscPlugin._build_command   13 0 0   100%
lintro / tools / definitions / vue_tsc.py VueTscPlugin.doc_url   7 0 0   100%
lintro / tools / definitions / vue_tsc.py VueTscPlugin.check   84 37 0   56%
lintro / tools / definitions / vue_tsc.py VueTscPlugin.fix   1 0 0   100%
lintro / tools / definitions / vue_tsc.py (no function)   39 0 0   100%
lintro / tools / definitions / yamllint.py YamllintPlugin.definition   1 0 0   100%
lintro / tools / definitions / yamllint.py YamllintPlugin.set_options   10 0 0   100%
lintro / tools / definitions / yamllint.py YamllintPlugin._find_yamllint_config   19 4 0   79%
lintro / tools / definitions / yamllint.py YamllintPlugin._load_yamllint_ignore_patterns   22 20 0   9%
lintro / tools / definitions / yamllint.py YamllintPlugin._should_ignore_file   14 14 0   0%
lintro / tools / definitions / yamllint.py YamllintPlugin._process_single_file   49 23 0   53%
lintro / tools / definitions / yamllint.py YamllintPlugin.doc_url   4 0 0   100%
lintro / tools / definitions / yamllint.py YamllintPlugin.check   37 15 0   59%
lintro / tools / definitions / yamllint.py YamllintPlugin.fix   1 0 0   100%
lintro / tools / definitions / yamllint.py (no function)   38 2 0   95%
lintro / tools / implementations / __init__.py (no function)   4 0 0   100%
lintro / tools / implementations / pytest / __init__.py (no function)   3 0 0   100%
lintro / tools / implementations / pytest / collection.py extract_all_test_results_from_junit   31 31 0   0%
lintro / tools / implementations / pytest / collection.py get_cpu_count   5 2 0   60%
lintro / tools / implementations / pytest / collection.py get_parallel_workers_from_preset   13 13 0   0%
lintro / tools / implementations / pytest / collection.py is_ci_environment   2 0 0   100%
lintro / tools / implementations / pytest / collection.py get_flaky_cache_path   3 0 0   100%
lintro / tools / implementations / pytest / collection.py load_flaky_test_history   10 3 0   70%
lintro / tools / implementations / pytest / collection.py save_flaky_test_history   7 2 0   71%
lintro / tools / implementations / pytest / collection.py compute_updated_flaky_test_history   22 10 0   55%
lintro / tools / implementations / pytest / collection.py (no function)   18 0 0   100%
lintro / tools / implementations / pytest / coverage_processor.py parse_coverage_summary   26 15 0   42%
lintro / tools / implementations / pytest / coverage_processor.py extract_coverage_report   37 37 0   0%
lintro / tools / implementations / pytest / coverage_processor.py (no function)   5 0 0   100%
lintro / tools / implementations / pytest / formatters.py process_test_summary   12 0 0   100%
lintro / tools / implementations / pytest / formatters.py format_pytest_issue   30 30 0   0%
lintro / tools / implementations / pytest / formatters.py _extract_brief_message   26 5 0   81%
lintro / tools / implementations / pytest / formatters.py format_pytest_issues_table   33 10 0   70%
lintro / tools / implementations / pytest / formatters.py build_output_with_failures   24 3 0   88%
lintro / tools / implementations / pytest / formatters.py (no function)   12 0 0   100%
lintro / tools / implementations / pytest / markers.py check_plugin_installed   11 7 0   36%
lintro / tools / implementations / pytest / markers.py list_installed_plugins   10 10 0   0%
lintro / tools / implementations / pytest / markers.py get_pytest_version_info   7 7 0   0%
lintro / tools / implementations / pytest / markers.py collect_tests_once   25 25 0   0%
lintro / tools / implementations / pytest / markers.py get_total_test_count   1 1 0   0%
lintro / tools / implementations / pytest / markers.py (no function)   10 0 2   100%
lintro / tools / implementations / pytest / output.py detect_flaky_tests   11 4 0   64%
lintro / tools / implementations / pytest / output.py clear_pytest_config_cache   1 1 0   0%
lintro / tools / implementations / pytest / output.py load_pytest_config   33 6 0   82%
lintro / tools / implementations / pytest / output.py load_file_patterns_from_config   12 6 0   50%
lintro / tools / implementations / pytest / output.py initialize_pytest_tool_config   6 6 0   0%
lintro / tools / implementations / pytest / output.py (no function)   16 0 2   100%
lintro / tools / implementations / pytest / output_parsers.py parse_pytest_output_with_fallback   52 28 0   46%
lintro / tools / implementations / pytest / output_parsers.py (no function)   7 0 0   100%
lintro / tools / implementations / pytest / pytest_command_builder.py build_base_command   1 0 0   100%
lintro / tools / implementations / pytest / pytest_command_builder.py add_verbosity_options   13 1 0   92%
lintro / tools / implementations / pytest / pytest_command_builder.py add_output_options   18 5 0   72%
lintro / tools / implementations / pytest / pytest_command_builder.py add_parallel_options   9 2 0   78%
lintro / tools / implementations / pytest / pytest_command_builder.py add_coverage_options   34 22 0   35%
lintro / tools / implementations / pytest / pytest_command_builder.py add_test_mode_options   3 2 0   33%
lintro / tools / implementations / pytest / pytest_command_builder.py add_plugin_options   16 7 0   56%
lintro / tools / implementations / pytest / pytest_command_builder.py add_ignore_options   11 2 0   82%
lintro / tools / implementations / pytest / pytest_command_builder.py build_check_command   10 0 0   100%
lintro / tools / implementations / pytest / pytest_command_builder.py (no function)   16 0 2   100%
lintro / tools / implementations / pytest / pytest_config.py PytestConfiguration.set_options   14 0 0   100%
lintro / tools / implementations / pytest / pytest_config.py PytestConfiguration.get_options_dict   6 0 0   100%
lintro / tools / implementations / pytest / pytest_config.py PytestConfiguration.is_special_mode   3 0 0   100%
lintro / tools / implementations / pytest / pytest_config.py PytestConfiguration.get_special_mode   6 1 0   83%
lintro / tools / implementations / pytest / pytest_config.py PytestConfiguration.get_special_mode_value   5 5 0   0%
lintro / tools / implementations / pytest / pytest_config.py (no function)   45 0 0   100%
lintro / tools / implementations / pytest / pytest_error_handler.py PytestErrorHandler.handle_timeout_error   6 6 0   0%
lintro / tools / implementations / pytest / pytest_error_handler.py PytestErrorHandler.handle_execution_error   8 8 0   0%
lintro / tools / implementations / pytest / pytest_error_handler.py (no function)   9 0 0   100%
lintro / tools / implementations / pytest / pytest_executor.py PytestExecutor.prepare_test_execution   4 4 0   0%
lintro / tools / implementations / pytest / pytest_executor.py PytestExecutor.execute_tests   5 5 0   0%
lintro / tools / implementations / pytest / pytest_executor.py PytestExecutor.display_run_config   21 7 0   67%
lintro / tools / implementations / pytest / pytest_executor.py (no function)   13 0 2   100%
lintro / tools / implementations / pytest / pytest_handlers.py handle_list_plugins   9 0 0   100%
lintro / tools / implementations / pytest / pytest_handlers.py handle_check_plugins   23 0 0   100%
lintro / tools / implementations / pytest / pytest_handlers.py handle_collect_only   24 0 0   100%
lintro / tools / implementations / pytest / pytest_handlers.py handle_list_fixtures   11 0 0   100%
lintro / tools / implementations / pytest / pytest_handlers.py handle_fixture_info   26 0 0   100%
lintro / tools / implementations / pytest / pytest_handlers.py handle_list_markers   10 0 0   100%
lintro / tools / implementations / pytest / pytest_handlers.py handle_parametrize_help   2 0 0   100%
lintro / tools / implementations / pytest / pytest_handlers.py (no function)   13 0 2   100%
lintro / tools / implementations / pytest / pytest_option_validators.py validate_pytest_options   76 28 0   63%
lintro / tools / implementations / pytest / pytest_option_validators.py (no function)   2 0 0   100%
lintro / tools / implementations / pytest / pytest_output_processor.py (no function)   6 0 0   100%
lintro / tools / implementations / pytest / pytest_result_processor.py PytestResultProcessor.process_test_results   5 0 0   100%
lintro / tools / implementations / pytest / pytest_result_processor.py PytestResultProcessor.build_result   5 0 0   100%
lintro / tools / implementations / pytest / pytest_result_processor.py (no function)   12 0 0   100%
lintro / tools / implementations / pytest / test_analytics.py detect_and_log_slow_tests   16 1 0   94%
lintro / tools / implementations / pytest / test_analytics.py check_total_time_warning   4 2 0   50%
lintro / tools / implementations / pytest / test_analytics.py detect_and_log_flaky_tests   20 7 0   65%
lintro / tools / implementations / pytest / test_analytics.py (no function)   14 0 0   100%
lintro / tools / implementations / ruff / __init__.py (no function)   4 0 0   100%
lintro / tools / implementations / ruff / check.py execute_ruff_check   65 3 0   95%
lintro / tools / implementations / ruff / check.py (no function)   10 0 3   100%
lintro / tools / implementations / ruff / commands.py _get_list_option   9 3 0   67%
lintro / tools / implementations / ruff / commands.py _get_set_option   1 0 0   100%
lintro / tools / implementations / ruff / commands.py build_ruff_check_command   37 6 0   84%
lintro / tools / implementations / ruff / commands.py build_ruff_format_command   12 2 0   83%
lintro / tools / implementations / ruff / commands.py (no function)   8 0 2   100%
lintro / tools / implementations / ruff / fix.py _temporary_option   9 0 1   100%
lintro / tools / implementations / ruff / fix.py execute_ruff_fix   90 1 0   99%
lintro / tools / implementations / ruff / fix.py (no function)   13 0 3   100%
lintro / utils / __init__.py (no function)   0 0 0   100%
lintro / utils / ai_metadata.py get_ai_count   12 4 0   67%
lintro / utils / ai_metadata.py (no function)   2 0 0   100%
lintro / utils / ascii_normalize_cli.py _ascii_art_dir   1 0 0   100%
lintro / utils / ascii_normalize_cli.py _write_sections   6 0 0   100%
lintro / utils / ascii_normalize_cli.py main   25 0 0   100%
lintro / utils / ascii_normalize_cli.py (no function)   7 0 2   100%
lintro / utils / async_tool_executor.py _get_default_max_workers   2 0 0   100%
lintro / utils / async_tool_executor.py AsyncToolExecutor.__post_init__   1 0 0   100%
lintro / utils / async_tool_executor.py AsyncToolExecutor.__enter__   1 1 0   0%
lintro / utils / async_tool_executor.py AsyncToolExecutor.__exit__   1 1 0   0%
lintro / utils / async_tool_executor.py AsyncToolExecutor.run_tool_async   13 1 0   92%
lintro / utils / async_tool_executor.py AsyncToolExecutor.run_tools_parallel   14 0 0   100%
lintro / utils / async_tool_executor.py AsyncToolExecutor.run_tools_parallel.run_with_name   5 0 0   100%
lintro / utils / async_tool_executor.py AsyncToolExecutor.shutdown   3 0 0   100%
lintro / utils / async_tool_executor.py get_parallel_batches   30 1 0   97%
lintro / utils / async_tool_executor.py (no function)   20 0 4   100%
lintro / utils / config.py clear_pyproject_cache   2 0 0   100%
lintro / utils / config.py _find_pyproject   12 0 0   100%
lintro / utils / config.py load_pyproject   18 6 0   67%
lintro / utils / config.py load_pyproject_config   1 0 0   100%
lintro / utils / config.py _get_lintro_section   5 0 0   100%
lintro / utils / config.py load_lintro_global_config   3 0 0   100%
lintro / utils / config.py load_lintro_tool_config   3 0 0   100%
lintro / utils / config.py get_tool_order_config   2 0 0   100%
lintro / utils / config.py load_post_checks_config   5 0 0   100%
lintro / utils / config.py load_tool_config_from_pyproject   7 0 0   100%
lintro / utils / config.py load_ruff_config   13 0 0   100%
lintro / utils / config.py load_bandit_config   1 0 0   100%
lintro / utils / config.py load_pydoclint_config   1 1 0   0%
lintro / utils / config.py load_black_config   1 0 0   100%
lintro / utils / config.py load_mypy_config   23 4 0   83%
lintro / utils / config.py get_central_line_length   2 0 0   100%
lintro / utils / config.py validate_line_length_consistency   2 0 0   100%
lintro / utils / config.py (no function)   26 0 0   100%
lintro / utils / config_constants.py (no function)   19 0 0   100%
lintro / utils / config_priority.py _get_nested_value   7 0 0   100%
lintro / utils / config_priority.py get_tool_priority   8 0 0   100%
lintro / utils / config_priority.py get_ordered_tools   32 3 0   91%
lintro / utils / config_priority.py get_effective_line_length   26 3 0   88%
lintro / utils / config_priority.py (no function)   10 0 0   100%
lintro / utils / config_reporting.py get_config_report   45 0 0   100%
lintro / utils / config_reporting.py print_config_report   10 0 0   100%
lintro / utils / config_reporting.py (no function)   5 0 0   100%
lintro / utils / config_validation.py is_tool_injectable   3 0 0   100%
lintro / utils / config_validation.py validate_config_consistency   16 1 0   94%
lintro / utils / config_validation.py get_tool_config_summary   15 4 0   73%
lintro / utils / config_validation.py (no function)   9 0 0   100%
lintro / utils / console / __init__.py create_logger   1 0 0   100%
lintro / utils / console / __init__.py (no function)   6 0 0   100%
lintro / utils / console / constants.py get_tool_emoji   1 0 0   100%
lintro / utils / console / constants.py get_summary_value   5 2 0   60%
lintro / utils / console / constants.py (no function)   12 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.__init__   3 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.console_output   5 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.info   2 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.info_blue   2 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.debug   1 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.warning   3 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.error   5 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.success   2 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.save_console_log   13 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.print_execution_summary   59 1 0   98%
lintro / utils / console / logger.py ThreadSafeConsoleLogger._print_summary_table   3 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger._print_totals_table   2 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger._print_final_status   2 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger._print_final_status_format   1 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger._print_ascii_art   1 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.print_lintro_header   4 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.print_tool_header   7 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.print_tool_result   7 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger._print_metadata_messages   18 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger._print_pytest_results   9 0 0   100%
lintro / utils / console / logger.py ThreadSafeConsoleLogger.print_post_checks_header   10 0 0   100%
lintro / utils / console / logger.py (no function)   36 0 0   100%
lintro / utils / console / pre_execution_summary.py print_pre_execution_summary   77 19 0   75%
lintro / utils / console / pre_execution_summary.py (no function)   5 0 3   100%
lintro / utils / display_helpers.py print_ascii_art   9 0 0   100%
lintro / utils / display_helpers.py print_final_status   25 0 0   100%
lintro / utils / display_helpers.py print_final_status_format   25 0 0   100%
lintro / utils / display_helpers.py (no function)   9 0 0   100%
lintro / utils / env.py get_subprocess_env   6 2 0   67%
lintro / utils / env.py (no function)   6 0 0   100%
lintro / utils / environment / __init__.py (no function)   15 0 0   100%
lintro / utils / environment / _protocol.py Renderable.section_title   0 0 1   100%
lintro / utils / environment / _protocol.py Renderable.to_display_rows   0 0 1   100%
lintro / utils / environment / _protocol.py Renderable.is_available   0 0 1   100%
lintro / utils / environment / _protocol.py (no function)   8 0 2   100%
lintro / utils / environment / ci_environment.py CIEnvironment.section_title   1 1 0   0%
lintro / utils / environment / ci_environment.py CIEnvironment.to_display_rows   4 4 0   0%
lintro / utils / environment / ci_environment.py CIEnvironment.is_available   1 1 0   0%
lintro / utils / environment / ci_environment.py (no function)   11 0 0   100%
lintro / utils / environment / collectors.py _run_command   7 7 0   0%
lintro / utils / environment / collectors.py _extract_version   10 10 0   0%
lintro / utils / environment / collectors.py collect_system_info   15 15 0   0%
lintro / utils / environment / collectors.py collect_python_info   8 8 0   0%
lintro / utils / environment / collectors.py collect_node_info   8 8 0   0%
lintro / utils / environment / collectors.py collect_rust_info   8 8 0   0%
lintro / utils / environment / collectors.py collect_go_info   7 7 0   0%
lintro / utils / environment / collectors.py collect_ruby_info   7 7 0   0%
lintro / utils / environment / collectors.py _find_git_root   5 5 0   0%
lintro / utils / environment / collectors.py collect_project_info   39 39 0   0%
lintro / utils / environment / collectors.py collect_lintro_info   22 22 0   0%
lintro / utils / environment / collectors.py detect_ci_environment   8 3 0   62%
lintro / utils / environment / collectors.py collect_environment_vars   2 2 0   0%
lintro / utils / environment / collectors.py collect_full_environment   1 1 0   0%
lintro / utils / environment / collectors.py (no function)   32 0 0   100%
lintro / utils / environment / container_detection.py is_container_environment   16 14 0   12%
lintro / utils / environment / container_detection.py (no function)   6 0 0   100%
lintro / utils / environment / environment_report.py (no function)   23 0 0   100%
lintro / utils / environment / go_info.py GoInfo.section_title   1 1 0   0%
lintro / utils / environment / go_info.py GoInfo.to_display_rows   1 1 0   0%
lintro / utils / environment / go_info.py GoInfo.is_available   1 1 0   0%
lintro / utils / environment / go_info.py (no function)   11 0 0   100%
lintro / utils / environment / lintro_info.py LintroInfo.section_title   1 1 0   0%
lintro / utils / environment / lintro_info.py LintroInfo.to_display_rows   5 5 0   0%
lintro / utils / environment / lintro_info.py LintroInfo.is_available   1 1 0   0%
lintro / utils / environment / lintro_info.py (no function)   12 0 0   100%
lintro / utils / environment / node_info.py NodeInfo.section_title   1 1 0   0%
lintro / utils / environment / node_info.py NodeInfo.to_display_rows   1 1 0   0%
lintro / utils / environment / node_info.py NodeInfo.is_available   1 1 0   0%
lintro / utils / environment / node_info.py (no function)   13 0 0   100%
lintro / utils / environment / project_info.py ProjectInfo.section_title   1 1 0   0%
lintro / utils / environment / project_info.py ProjectInfo.to_display_rows   4 4 0   0%
lintro / utils / environment / project_info.py ProjectInfo.is_available   1 1 0   0%
lintro / utils / environment / project_info.py (no function)   12 0 0   100%
lintro / utils / environment / python_info.py PythonInfo.section_title   1 1 0   0%
lintro / utils / environment / python_info.py PythonInfo.to_display_rows   1 1 0   0%
lintro / utils / environment / python_info.py PythonInfo.is_available   1 1 0   0%
lintro / utils / environment / python_info.py (no function)   13 0 0   100%
lintro / utils / environment / renderer.py render_section   12 12 0   0%
lintro / utils / environment / renderer.py _get_path_truncate_len   5 5 0   0%
lintro / utils / environment / renderer.py _render_env_vars   24 24 0   0%
lintro / utils / environment / renderer.py render_environment_report   6 6 0   0%
lintro / utils / environment / renderer.py (no function)   13 0 2   100%
lintro / utils / environment / ruby_info.py RubyInfo.section_title   1 1 0   0%
lintro / utils / environment / ruby_info.py RubyInfo.to_display_rows   1 1 0   0%
lintro / utils / environment / ruby_info.py RubyInfo.is_available   1 1 0   0%
lintro / utils / environment / ruby_info.py (no function)   11 0 0   100%
lintro / utils / environment / rust_info.py RustInfo.section_title   1 1 0   0%
lintro / utils / environment / rust_info.py RustInfo.to_display_rows   1 1 0   0%
lintro / utils / environment / rust_info.py RustInfo.is_available   1 1 0   0%
lintro / utils / environment / rust_info.py (no function)   12 0 0   100%
lintro / utils / environment / system_info.py SystemInfo.section_title   1 1 0   0%
lintro / utils / environment / system_info.py SystemInfo.to_display_rows   5 5 0   0%
lintro / utils / environment / system_info.py SystemInfo.is_available   1 1 0   0%
lintro / utils / environment / system_info.py (no function)   15 0 0   100%
lintro / utils / execution / __init__.py (no function)   4 0 0   100%
lintro / utils / execution / exit_codes.py determine_exit_code   11 0 0   100%
lintro / utils / execution / exit_codes.py aggregate_tool_results   13 1 0   92%
lintro / utils / execution / exit_codes.py (no function)   8 0 0   100%
lintro / utils / execution / parallel_executor.py run_tools_parallel   26 0 0   100%
lintro / utils / execution / parallel_executor.py run_tools_parallel.on_tool_complete   4 0 0   100%
lintro / utils / execution / parallel_executor.py (no function)   11 0 2   100%
lintro / utils / execution / tool_configuration.py _apply_conflict_resolution   7 1 0   86%
lintro / utils / execution / tool_configuration.py _get_disabled_reason   9 1 0   89%
lintro / utils / execution / tool_configuration.py configure_tool_for_execution   28 2 0   93%
lintro / utils / execution / tool_configuration.py get_tool_display_name   1 0 0   100%
lintro / utils / execution / tool_configuration.py get_tool_lookup_keys   1 0 0   100%
lintro / utils / execution / tool_configuration.py get_tools_to_run   47 3 0   94%
lintro / utils / execution / tool_configuration.py (no function)   23 0 3   100%
lintro / utils / file_cache.py FileFingerprint.to_dict   1 0 0   100%
lintro / utils / file_cache.py FileFingerprint.from_dict   1 0 0   100%
lintro / utils / file_cache.py ToolCache.get_changed_files   17 4 0   76%
lintro / utils / file_cache.py ToolCache.update   10 4 0   60%
lintro / utils / file_cache.py ToolCache.save   13 4 0   69%
lintro / utils / file_cache.py ToolCache.load   13 3 0   77%
lintro / utils / file_cache.py ToolCache.clear   2 0 0   100%
lintro / utils / file_cache.py clear_all_caches   9 3 0   67%
lintro / utils / file_cache.py get_cache_stats   13 2 0   85%
lintro / utils / file_cache.py (no function)   28 0 0   100%
lintro / utils / formatting.py read_ascii_art   20 1 0   95%
lintro / utils / formatting.py normalize_ascii_block   21 5 0   76%
lintro / utils / formatting.py normalize_ascii_block._pad_line   11 1 0   91%
lintro / utils / formatting.py normalize_ascii_file_sections   17 2 0   88%
lintro / utils / formatting.py (no function)   5 0 0   100%
lintro / utils / json_output.py create_json_output   16 0 0   100%
lintro / utils / json_output.py (no function)   5 0 0   100%
lintro / utils / jsonc.py strip_jsonc_comments   50 0 0   100%
lintro / utils / jsonc.py strip_trailing_commas   39 8 0   79%
lintro / utils / jsonc.py extract_type_roots   19 3 0   84%
lintro / utils / jsonc.py load_jsonc   3 0 0   100%
lintro / utils / jsonc.py (no function)   9 0 0   100%
lintro / utils / logger_setup.py setup_cli_logging   2 0 0   100%
lintro / utils / logger_setup.py setup_execution_logging   6 0 0   100%
lintro / utils / logger_setup.py (no function)   5 0 0   100%
lintro / utils / native_parsers.py _load_json_config   13 3 0   77%
lintro / utils / native_parsers.py _load_native_tool_config   132 51 0   61%
lintro / utils / native_parsers.py (no function)   19 2 0   89%
lintro / utils / node_deps.py should_install_deps   22 3 0   86%
lintro / utils / node_deps.py get_package_manager_command   5 0 0   100%
lintro / utils / node_deps.py install_node_deps   40 5 0   88%
lintro / utils / node_deps.py _get_frozen_install_cmd   9 2 0   78%
lintro / utils / node_deps.py (no function)   12 0 0   100%
lintro / utils / output / __init__.py (no function)   5 0 0   100%
lintro / utils / output / constants.py (no function)   5 0 0   100%
lintro / utils / output / file_writer.py build_doc_url_map   9 5 0   44%
lintro / utils / output / file_writer.py write_output_file   97 4 0   96%
lintro / utils / output / file_writer.py format_tool_output   17 0 0   100%
lintro / utils / output / file_writer.py (no function)   26 2 2   92%
lintro / utils / output / helpers.py markdown_escape   1 0 0   100%
lintro / utils / output / helpers.py html_escape   1 0 0   100%
lintro / utils / output / helpers.py sanitize_csv_value   3 0 0   100%
lintro / utils / output / helpers.py (no function)   4 0 0   100%
lintro / utils / output / manager.py OutputManager.__init__   6 0 0   100%
lintro / utils / output / manager.py OutputManager._create_run_dir   10 0 0   100%
lintro / utils / output / manager.py OutputManager.write_console_log   1 0 0   100%
lintro / utils / output / manager.py OutputManager.write_json   2 0 0   100%
lintro / utils / output / manager.py OutputManager.write_markdown   1 0 0   100%
lintro / utils / output / manager.py OutputManager.write_html   1 0 0   100%
lintro / utils / output / manager.py OutputManager.write_csv   4 0 0   100%
lintro / utils / output / manager.py OutputManager.write_reports_from_results   3 0 0   100%
lintro / utils / output / manager.py OutputManager._write_markdown_report   21 0 0   100%
lintro / utils / output / manager.py OutputManager._write_html_report   21 0 0   100%
lintro / utils / output / manager.py OutputManager._write_csv_summary   8 0 0   100%
lintro / utils / output / manager.py OutputManager.cleanup_old_runs   5 1 0   80%
lintro / utils / output / manager.py OutputManager.get_run_dir   1 0 0   100%
lintro / utils / output / manager.py (no function)   26 0 2   100%
lintro / utils / output / parser_registration.py _ruff_is_fixable   1 1 0   0%
lintro / utils / output / parser_registration.py _black_is_fixable   1 1 0   0%
lintro / utils / output / parser_registration.py _parse_bandit_output   5 0 0   100%
lintro / utils / output / parser_registration.py register_all_parsers   12 0 0   100%
lintro / utils / output / parser_registration.py (no function)   27 0 0   100%
lintro / utils / output / parser_registry.py ParserRegistry.register   1 0 0   100%
lintro / utils / output / parser_registry.py ParserRegistry.get   1 0 0   100%
lintro / utils / output / parser_registry.py ParserRegistry.parse   4 0 0   100%
lintro / utils / output / parser_registry.py ParserRegistry.get_fixability_predicate   2 0 0   100%
lintro / utils / output / parser_registry.py ParserRegistry.clear   1 0 0   100%
lintro / utils / output / parser_registry.py ParserRegistry.is_registered   1 0 0   100%
lintro / utils / output / parser_registry.py (no function)   21 0 4   100%
lintro / utils / path_filtering.py _compile_pathspec   1 0 0   100%
lintro / utils / path_filtering.py should_exclude_path   19 1 0   95%
lintro / utils / path_filtering.py walk_files_with_excludes   34 6 0   82%
lintro / utils / path_filtering.py _should_exclude_with_spec   11 1 0   91%
lintro / utils / path_filtering.py _is_venv_directory   2 0 0   100%
lintro / utils / path_filtering.py (no function)   11 0 2   100%
lintro / utils / path_utils.py validate_safe_path   9 2 0   78%
lintro / utils / path_utils.py find_lintro_ignore   19 3 0   84%
lintro / utils / path_utils.py load_lintro_ignore   13 0 0   100%
lintro / utils / path_utils.py normalize_file_path_for_display   29 2 0   93%
lintro / utils / path_utils.py (no function)   6 0 0   100%
lintro / utils / post_checks.py execute_post_checks   68 11 0   84%
lintro / utils / post_checks.py execute_post_checks.success_func   1 0 0   100%
lintro / utils / post_checks.py (no function)   11 0 3   100%
lintro / utils / project_detection.py detect_project_languages   57 9 0   84%
lintro / utils / project_detection.py detect_package_managers   17 4 0   76%
lintro / utils / project_detection.py (no function)   6 0 0   100%
lintro / utils / result_formatters.py _print_suppression_table   32 30 0   6%
lintro / utils / result_formatters.py print_tool_result   137 48 0   65%
lintro / utils / result_formatters.py (no function)   11 0 0   100%
lintro / utils / streaming_output.py StreamingResultHandler.__post_init__   1 0 0   100%
lintro / utils / streaming_output.py StreamingResultHandler.__enter__   11 0 0   100%
lintro / utils / streaming_output.py StreamingResultHandler.__exit__   7 2 0   71%
lintro / utils / streaming_output.py StreamingResultHandler.handle_result   17 0 0   100%
lintro / utils / streaming_output.py StreamingResultHandler._write_jsonl   5 0 0   100%
lintro / utils / streaming_output.py StreamingResultHandler._write_json_item   9 0 0   100%
lintro / utils / streaming_output.py StreamingResultHandler._result_to_dict   12 2 0   83%
lintro / utils / streaming_output.py StreamingResultHandler.get_totals   1 0 0   100%
lintro / utils / streaming_output.py StreamingResultHandler.get_results   1 0 0   100%
lintro / utils / streaming_output.py StreamingResultHandler.get_exit_code   9 2 0   78%
lintro / utils / streaming_output.py create_streaming_handler   1 0 0   100%
lintro / utils / streaming_output.py (no function)   26 0 3   100%
lintro / utils / summary_tables.py _extract_skip_reason   18 16 0   11%
lintro / utils / summary_tables.py _safe_cast   4 0 0   100%
lintro / utils / summary_tables.py _format_tool_display_name   1 0 0   100%
lintro / utils / summary_tables.py _get_ai_applied_count   1 0 0   100%
lintro / utils / summary_tables.py _get_ai_verified_count   1 0 0   100%
lintro / utils / summary_tables.py _get_ai_unverified_count   1 0 0   100%
lintro / utils / summary_tables.py _is_result_skipped   9 2 0   78%
lintro / utils / summary_tables.py count_affected_files   9 0 0   100%
lintro / utils / summary_tables.py print_summary_table   122 26 0   79%
lintro / utils / summary_tables.py print_totals_table   20 2 0   90%
lintro / utils / summary_tables.py (no function)   24 0 0   100%
lintro / utils / tool_config_info.py (no function)   3 0 0   100%
lintro / utils / tool_executor.py _get_remaining_count   5 1 0   80%
lintro / utils / tool_executor.py _run_fix_with_retry   20 2 0   90%
lintro / utils / tool_executor.py _warn_ai_fix_disabled   5 0 0   100%
lintro / utils / tool_executor.py _display_fix_result   22 7 0   68%
lintro / utils / tool_executor.py _write_artifacts   22 0 0   100%
lintro / utils / tool_executor.py _enrich_issues_with_doc_urls   12 0 0   100%
lintro / utils / tool_executor.py run_lint_tools_simple   186 58 0   69%
lintro / utils / tool_executor.py run_lint_tools_simple.success_func   1 0 0   100%
lintro / utils / tool_executor.py run_lint_tools_simple._warn   4 2 0   50%
lintro / utils / tool_executor.py (no function)   21 0 3   100%
lintro / utils / tool_options.py _coerce_value   19 0 0   100%
lintro / utils / tool_options.py parse_tool_options   22 4 0   82%
lintro / utils / tool_options.py (no function)   3 0 0   100%
lintro / utils / tool_utils.py (no function)   4 0 0   100%
lintro / utils / unified_config.py (no function)   8 0 0   100%
lintro / utils / unified_config_manager.py UnifiedConfigManager.__post_init__   1 0 0   100%
lintro / utils / unified_config_manager.py UnifiedConfigManager.refresh   3 0 0   100%
lintro / utils / unified_config_manager.py UnifiedConfigManager.get_effective_line_length   1 0 0   100%
lintro / utils / unified_config_manager.py UnifiedConfigManager.get_tool_config   3 0 0   100%
lintro / utils / unified_config_manager.py UnifiedConfigManager.get_ordered_tools   1 0 0   100%
lintro / utils / unified_config_manager.py UnifiedConfigManager.apply_config_to_tool   21 0 0   100%
lintro / utils / unified_config_manager.py UnifiedConfigManager.get_report   2 0 0   100%
lintro / utils / unified_config_manager.py UnifiedConfigManager.print_report   2 0 0   100%
lintro / utils / unified_config_manager.py (no function)   22 0 0   100%
scripts / ci / maintenance / ghcr_prune_untagged.py _ResponseProto.raise_for_status   0 0 1   100%
scripts / ci / maintenance / ghcr_prune_untagged.py _ResponseProto.json   0 0 1   100%
scripts / ci / maintenance / ghcr_prune_untagged.py GhcrClient.get   0 0 1   100%
scripts / ci / maintenance / ghcr_prune_untagged.py GhcrClient.delete   0 0 1   100%
scripts / ci / maintenance / ghcr_prune_untagged.py get_repo_owner_repo   3 0 0   100%
scripts / ci / maintenance / ghcr_prune_untagged.py _parse_link_header   10 8 0   20%
scripts / ci / maintenance / ghcr_prune_untagged.py _parse_version_item   14 5 0   64%
scripts / ci / maintenance / ghcr_prune_untagged.py _get_owner_type   4 0 0   100%
scripts / ci / maintenance / ghcr_prune_untagged.py list_container_versions   17 1 0   94%
scripts / ci / maintenance / ghcr_prune_untagged.py parse_iso_datetime   11 5 0   55%
scripts / ci / maintenance / ghcr_prune_untagged.py is_older_than_days   5 1 0   80%
scripts / ci / maintenance / ghcr_prune_untagged.py delete_version   9 4 0   56%
scripts / ci / maintenance / ghcr_prune_untagged.py prune_package   32 3 0   91%
scripts / ci / maintenance / ghcr_prune_untagged.py main   32 8 0   75%
scripts / ci / maintenance / ghcr_prune_untagged.py (no function)   33 1 7   97%
scripts / ci / maintenance / semantic_release_compute_next.py _validate_git_args   32 4 0   88%
scripts / ci / maintenance / semantic_release_compute_next.py _validate_git_args.is_sha   1 0 0   100%
scripts / ci / maintenance / semantic_release_compute_next.py _validate_git_args.is_head_range   3 0 0   100%
scripts / ci / maintenance / semantic_release_compute_next.py run_git   6 1 0   83%
scripts / ci / maintenance / semantic_release_compute_next.py read_last_tag   1 1 0   0%
scripts / ci / maintenance / semantic_release_compute_next.py read_last_prepare_commit   6 6 0   0%
scripts / ci / maintenance / semantic_release_compute_next.py read_pyproject_version   8 8 0   0%
scripts / ci / maintenance / semantic_release_compute_next.py parse_semver   4 4 0   0%
scripts / ci / maintenance / semantic_release_compute_next.py detect_commit_types   7 7 0   0%
scripts / ci / maintenance / semantic_release_compute_next.py compute_next_version   12 12 0   0%
scripts / ci / maintenance / semantic_release_compute_next.py clamp_to_minor   9 9 0   0%
scripts / ci / maintenance / semantic_release_compute_next.py compute   38 38 0   0%
scripts / ci / maintenance / semantic_release_compute_next.py main   15 15 0   0%
scripts / ci / maintenance / semantic_release_compute_next.py (no function)   35 1 0   97%
scripts / ci / verify-manifest-tools.py _run   13 13 0   0%
scripts / ci / verify-manifest-tools.py _parse_version   8 8 0   0%
scripts / ci / verify-manifest-tools.py _tool_command   15 10 0   33%
scripts / ci / verify-manifest-tools.py _fallback_version_command   20 9 0   55%
scripts / ci / verify-manifest-tools.py _load_manifest   21 21 0   0%
scripts / ci / verify-manifest-tools.py _iter_tools   7 7 0   0%
scripts / ci / verify-manifest-tools.py main   37 37 0   0%
scripts / ci / verify-manifest-tools.py (no function)   19 1 0   95%
scripts / utils / delete-previous-lintro-comments.py get_marker   3 0 0   100%
scripts / utils / delete-previous-lintro-comments.py get_env_var   5 2 0   60%
scripts / utils / delete-previous-lintro-comments.py get_pr_comments   25 25 0   0%
scripts / utils / delete-previous-lintro-comments.py delete_comment   8 8 0   0%
scripts / utils / delete-previous-lintro-comments.py main   18 3 0   83%
scripts / utils / delete-previous-lintro-comments.py (no function)   11 1 0   91%
scripts / utils / merge_pr_comment.py _normalize_newline   1 0 0   100%
scripts / utils / merge_pr_comment.py _extract_details_blocks   4 0 0   100%
scripts / utils / merge_pr_comment.py _extract_timestamp_from_details   3 0 0   100%
scripts / utils / merge_pr_comment.py _sort_history_by_timestamp   2 0 0   100%
scripts / utils / merge_pr_comment.py _sort_history_by_timestamp.sort_key   5 1 0   80%
scripts / utils / merge_pr_comment.py merge_comment_bodies   27 2 0   93%
scripts / utils / merge_pr_comment.py (no function)   9 0 20   100%
tests / __init__.py (no function)   0 0 0   100%
tests / cli / __init__.py (no function)   0 0 0   100%
tests / cli / conftest.py mock_tool_manager   4 4 0   0%
tests / cli / conftest.py mock_format_output   1 1 0   0%
tests / cli / conftest.py mock_print_summary   1 1 0   0%
tests / cli / conftest.py (no function)   8 0 0   100%
tests / cli / test_cli.py test_cli_help   4 0 0   100%
tests / cli / test_cli.py test_cli_version   4 0 0   100%
tests / cli / test_cli.py test_cli_commands_registered   3 0 0   100%
tests / cli / test_cli.py test_main_function   4 0 0   100%
tests / cli / test_cli.py test_cli_command_aliases   4 0 0   100%
tests / cli / test_cli.py test_cli_with_no_args   4 0 0   100%
tests / cli / test_cli.py test_main_module_execution   3 0 0   100%
tests / cli / test_cli.py test_main_module_as_script   3 0 0   100%
tests / cli / test_cli.py test_command_chaining_basic   6 0 0   100%
tests / cli / test_cli.py test_pytest_excluded_from_command_help   4 0 0   100%
tests / cli / test_cli.py (no function)   20 0 0   100%
tests / cli / test_config_command.py cli_runner   1 0 0   100%
tests / cli / test_config_command.py mock_config   1 0 0   100%
tests / cli / test_config_command.py test_json_output_is_valid_json   8 0 0   100%
tests / cli / test_config_command.py test_json_output_includes_line_length   6 0 0   100%
tests / cli / test_config_command.py test_json_output_includes_tool_order   10 0 0   100%
tests / cli / test_config_command.py test_json_output_includes_warnings   8 0 0   100%
tests / cli / test_config_command.py test_json_output_includes_config_source   7 0 0   100%
tests / cli / test_config_command.py test_verbose_shows_native_config   7 0 0   100%
tests / cli / test_config_command.py (no function)   37 0 0   100%
tests / cli / test_init_command.py test_init_command_help   5 0 0   100%
tests / cli / test_init_command.py test_init_creates_minimal_config   8 0 0   100%
tests / cli / test_init_command.py test_init_overwrites_with_force   8 0 0   100%
tests / cli / test_init_command.py test_with_native_configs_creates_all_files   6 0 0   100%
tests / cli / test_init_command.py test_markdownlint_config_has_correct_content   7 0 0   100%
tests / cli / test_init_command.py test_native_configs_skips_existing_without_force   8 0 0   100%
tests / cli / test_init_command.py test_output_shows_all_created_files   7 0 0   100%
tests / cli / test_init_command.py test_init_via_cli   5 0 0   100%
tests / cli / test_init_command.py (no function)   13 0 0   100%
tests / config / __init__.py (no function)   0 0 0   100%
tests / config / test_config_loader.py test_empty_data   3 0 0   100%
tests / config / test_config_loader.py test_execution_config_empty_data   5 0 0   100%
tests / config / test_config_loader.py test_string_enabled_tools   3 0 0   100%
tests / config / test_config_loader.py test_tool_config_empty_data   3 0 0   100%
tests / config / test_config_loader.py test_disabled_tool   3 0 0   100%
tests / config / test_config_loader.py test_tools_config_empty_data   2 0 0   100%
tests / config / test_config_loader.py test_with_bool_values   4 0 0   100%
tests / config / test_config_loader.py test_defaults_empty_data   2 0 0   100%
tests / config / test_config_loader.py test_case_normalization   4 0 0   100%
tests / config / test_config_loader.py test_convert_pyproject_empty_data   5 0 0   100%
tests / config / test_config_loader.py test_enforce_settings   4 0 0   100%
tests / config / test_config_loader.py test_tool_sections   4 0 0   100%
tests / config / test_config_loader.py test_execution_settings   4 0 0   100%
tests / config / test_config_loader.py test_load_yaml_config_with_defaults   12 0 0   100%
tests / config / test_config_loader.py test_load_explicit_path   5 0 0   100%
tests / config / test_config_loader.py test_returns_default_when_no_config   8 0 0   100%
tests / config / test_config_loader.py test_returns_sensible_defaults   4 0 0   100%
tests / config / test_config_loader.py (no function)   20 0 0   100%
tests / config / test_init_command.py runner   1 0 0   100%
tests / config / test_init_command.py test_creates_minimal_template   8 0 0   100%
tests / config / test_init_command.py test_refuses_to_overwrite_existing   8 0 0   100%
tests / config / test_init_command.py test_force_overwrites_existing   7 0 0   100%
tests / config / test_init_command.py test_custom_output_path   6 0 0   100%
tests / config / test_init_command.py test_shows_next_steps   5 0 0   100%
tests / config / test_init_command.py test_default_template_is_valid_yaml   5 0 0   100%
tests / config / test_init_command.py test_minimal_template_is_valid_yaml   4 0 0   100%
tests / config / test_init_command.py test_default_template_has_sensible_defaults   8 0 0   100%
tests / config / test_init_command.py (no function)   15 0 0   100%
tests / config / test_lintro_config.py test_default_values   3 0 0   100%
tests / config / test_lintro_config.py test_execution_config_defaults   5 0 0   100%
tests / config / test_lintro_config.py test_tool_config_defaults   3 0 0   100%
tests / config / test_lintro_config.py test_lintro_config_defaults   6 0 0   100%
tests / config / test_lintro_config.py test_get_tool_config_returns_default   4 0 0   100%
tests / config / test_lintro_config.py test_get_tool_config_case_insensitive   4 0 0   100%
tests / config / test_lintro_config.py test_is_tool_enabled_filtered   3 0 0   100%
tests / config / test_lintro_config.py test_get_tool_defaults   4 0 0   100%
tests / config / test_lintro_config.py test_get_effective_line_length_from_enforce   3 0 0   100%
tests / config / test_lintro_config.py test_get_effective_target_python   3 0 0   100%
tests / config / test_lintro_config.py (no function)   12 0 0   100%
tests / config / test_tool_config_generator.py test_returns_empty_when_no_enforce_settings   3 0 0   100%
tests / config / test_tool_config_generator.py test_injects_line_length_for_black   3 0 0   100%
tests / config / test_tool_config_generator.py test_injects_target_version_for_ruff   3 0 0   100%
tests / config / test_tool_config_generator.py test_injects_both_line_length_and_target_version   6 0 0   100%
tests / config / test_tool_config_generator.py test_converts_target_version_format_for_mypy   3 0 0   100%
tests / config / test_tool_config_generator.py test_convert_python_version_helper_handles_plain_version   1 0 0   100%
tests / config / test_tool_config_generator.py test_returns_empty_for_unsupported_tool   3 0 0   100%
tests / config / test_tool_config_generator.py test_returns_empty_for_none_path   2 0 0   100%
tests / config / test_tool_config_generator.py test_markdownlint_config_uses_correct_suffix   5 0 0   100%
tests / config / test_tool_config_generator.py test_generic_tool_config_uses_json_suffix   5 0 0   100%
tests / config / test_tool_config_generator.py test_hadolint_key_mapping_exists   4 0 0   100%
tests / config / test_tool_config_generator.py test_transform_keys_converts_hadolint_trusted_registries   7 0 0   100%
tests / config / test_tool_config_generator.py test_transform_keys_preserves_unmapped_keys   4 0 0   100%
tests / config / test_tool_config_generator.py test_transform_keys_returns_unchanged_for_unknown_tool   3 0 0   100%
tests / config / test_tool_config_generator.py test_hadolint_config_file_has_correct_keys   11 0 0   100%
tests / config / test_tool_config_generator.py test_get_defaults_injection_args_oxlint   4 0 0   100%
tests / config / test_tool_config_generator.py test_get_defaults_injection_args_oxfmt   4 0 0   100%
tests / config / test_tool_config_generator.py test_has_native_config_oxlint   3 0 0   100%
tests / config / test_tool_config_generator.py test_has_native_config_oxfmt   3 0 0   100%
tests / config / test_tool_config_generator.py test_has_native_config_oxlint_not_found   2 0 0   100%
tests / config / test_tool_config_generator.py test_has_native_config_oxfmt_not_found   2 0 0   100%
tests / config / test_tool_config_generator.py test_prettier_builtin_defaults_applied_when_no_user_defaults   10 0 0   100%
tests / config / test_tool_config_generator.py test_prettier_user_defaults_override_builtin_defaults   9 0 0   100%
tests / config / test_tool_config_generator.py test_prettier_user_defaults_merged_with_builtin_defaults   10 0 0   100%
tests / config / test_tool_config_generator.py test_prettier_native_config_skips_defaults_generation   5 0 0   100%
tests / config / test_tool_config_generator.py test_has_native_config_prettier_detects_prettierrc   3 0 0   100%
tests / config / test_tool_config_generator.py test_get_defaults_injection_args_prettier   4 0 0   100%
tests / config / test_tool_config_generator.py (no function)   34 0 0   100%
tests / conftest.py _discover_tools   1 0 0   100%
tests / conftest.py cli_runner   1 0 0   100%
tests / conftest.py temp_dir   2 2 0   0%
tests / conftest.py ruff_violation_file   5 5 0   0%
tests / conftest.py skip_config_injection   2 2 0   0%
tests / conftest.py clear_logging_handlers   3 0 0   100%
tests / conftest.py (no function)   24 0 0   100%
tests / constants.py (no function)   13 0 0   100%
tests / formatters / __init__.py (no function)   0 0 0   100%
tests / formatters / test_formatters.py test_style_format   6 0 0   100%
tests / formatters / test_formatters.py test_style_format_empty   7 0 0   100%
tests / formatters / test_formatters.py test_grid_style_format_fallback   10 0 0   100%
tests / formatters / test_formatters.py test_grid_style_format_fallback_empty   6 0 0   100%
tests / formatters / test_formatters.py test_grid_style_format_fallback_single_column   8 0 0   100%
tests / formatters / test_formatters.py (no function)   17 0 0   100%
tests / integration / __init__.py (no function)   0 0 0   100%
tests / integration / conftest.py temp_project_dir   10 10 0   0%
tests / integration / conftest.py lintro_test_mode   2 0 0   100%
tests / integration / conftest.py skip_if_tool_unavailable   2 0 0   100%
tests / integration / conftest.py skip_if_tool_unavailable._skip_if_unavailable   3 1 0   67%
tests / integration / conftest.py get_plugin   3 0 0   100%
tests / integration / conftest.py get_plugin._get_plugin   5 1 0   80%
tests / integration / conftest.py (no function)   13 0 0   100%
tests / integration / test_actionlint_integration.py actionlint_available   5 2 0   60%
tests / integration / test_actionlint_integration.py test_actionlint_available   2 1 0   50%
tests / integration / test_actionlint_integration.py test_actionlint_reports_violations   16 1 0   94%
tests / integration / test_actionlint_integration.py test_actionlint_no_files   9 1 0   89%
tests / integration / test_actionlint_integration.py (no function)   17 0 0   100%
tests / integration / test_bandit_integration.py test_bandit_detects_issues_on_sample_file   10 0 0   100%
tests / integration / test_bandit_integration.py test_bandit_no_crash_on_clean_temp_file   13 0 0   100%
tests / integration / test_bandit_integration.py (no function)   13 0 0   100%
tests / integration / test_built_package.py test_built_wheel_imports   26 1 0   96%
tests / integration / test_built_package.py (no function)   9 0 0   100%
tests / integration / test_doc_url_e2e.py enriched_ruff_result   8 0 0   100%
tests / integration / test_doc_url_e2e.py test_grid_output_contains_docs_column_and_urls   5 0 0   100%
tests / integration / test_doc_url_e2e.py test_grid_output_omits_docs_when_no_urls   3 0 0   100%
tests / integration / test_doc_url_e2e.py test_json_output_contains_doc_url   7 0 0   100%
tests / integration / test_doc_url_e2e.py test_markdown_output_contains_clickable_links   5 0 0   100%
tests / integration / test_doc_url_e2e.py test_csv_output_contains_doc_url_column   5 0 0   100%
tests / integration / test_doc_url_e2e.py test_template_format_with_code   2 0 0   100%
tests / integration / test_doc_url_e2e.py test_static_template_unchanged   2 0 0   100%
tests / integration / test_doc_url_e2e.py test_osv_advisory_url   2 0 0   100%
tests / integration / test_doc_url_e2e.py test_cargo_audit_advisory_url   2 0 0   100%
tests / integration / test_doc_url_e2e.py test_sarif_includes_help_uri   8 0 0   100%
tests / integration / test_doc_url_e2e.py test_sarif_omits_help_uri_when_no_doc_urls   6 0 0   100%
tests / integration / test_doc_url_e2e.py (no function)   27 0 0   100%
tests / integration / test_markdownlint_integration.py find_markdownlint_cmd   5 2 0   60%
tests / integration / test_markdownlint_integration.py run_markdownlint_directly   16 4 0   75%
tests / integration / test_markdownlint_integration.py test_markdownlint_available   9 3 0   67%
tests / integration / test_markdownlint_integration.py test_markdownlint_direct_vs_lintro_parity   13 3 0   77%
tests / integration / test_markdownlint_integration.py test_markdownlint_integration_basic   17 2 0   88%
tests / integration / test_markdownlint_integration.py (no function)   19 0 0   100%
tests / integration / test_mypy_integration.py set_lintro_test_mode_env   1 0 0   100%
tests / integration / test_mypy_integration.py mypy_tool   3 0 0   100%
tests / integration / test_mypy_integration.py mypy_violation_file   8 1 0   88%
tests / integration / test_mypy_integration.py mypy_clean_file   8 0 0   100%
tests / integration / test_mypy_integration.py test_mypy_tool_available   2 0 0   100%
tests / integration / test_mypy_integration.py test_mypy_check_finds_violations   3 0 0   100%
tests / integration / test_mypy_integration.py test_mypy_check_clean_file   4 0 0   100%
tests / integration / test_mypy_integration.py test_mypy_handles_empty_path_list   2 0 0   100%
tests / integration / test_mypy_integration.py (no function)   23 0 2   100%
tests / integration / test_parallel_execution.py set_lintro_test_mode_env   1 0 0   100%
tests / integration / test_parallel_execution.py temp_python_files   14 0 0   100%
tests / integration / test_parallel_execution.py test_check_multiple_files   2 0 0   100%
tests / integration / test_parallel_execution.py test_consistent_results_across_runs   3 0 0   100%
tests / integration / test_parallel_execution.py test_check_with_single_file   2 0 0   100%
tests / integration / test_parallel_execution.py test_format_action   2 0 0   100%
tests / integration / test_parallel_execution.py test_different_output_formats   3 0 0   100%
tests / integration / test_parallel_execution.py test_tool_definition_exists   4 0 0   100%
tests / integration / test_parallel_execution.py test_tool_respects_execution_order   5 0 0   100%
tests / integration / test_parallel_execution.py (no function)   20 0 0   100%
tests / integration / test_prettier_convergence.py changelog_project   4 0 0   100%
tests / integration / test_prettier_convergence.py prettier_plugin   2 0 0   100%
tests / integration / test_prettier_convergence.py test_prettier_fmt_converges_on_changelog   12 0 0   100%
tests / integration / test_prettier_convergence.py test_prettier_fmt_stable_after_convergence   9 0 0   100%
tests / integration / test_prettier_convergence.py (no function)   17 0 0   100%
tests / integration / test_pydoclint_integration.py run_pydoclint_directly   7 0 0   100%
tests / integration / test_pydoclint_integration.py _ensure_pydoclint_available   6 3 0   50%
tests / integration / test_pydoclint_integration.py test_pydoclint_reports_violations_direct   9 0 0   100%
tests / integration / test_pydoclint_integration.py test_pydoclint_reports_violations_through_lintro   11 0 0   100%
tests / integration / test_pydoclint_integration.py test_pydoclint_output_consistency_direct_vs_lintro   12 0 0   100%
tests / integration / test_pydoclint_integration.py test_pydoclint_fix_method_not_implemented   8 0 0   100%
tests / integration / test_pydoclint_integration.py test_pydoclint_clean_file_passes   10 0 0   100%
tests / integration / test_pydoclint_integration.py (no function)   17 0 0   100%
tests / integration / tools / __init__.py (no function)   0 0 0   100%
tests / integration / tools / astro_check / __init__.py (no function)   0 0 0   100%
tests / integration / tools / astro_check / conftest.py astro_check_is_available   22 17 0   23%
tests / integration / tools / astro_check / conftest.py _find_project_root   5 1 0   80%
tests / integration / tools / astro_check / conftest.py astro_check_violation_file   3 3 0   0%
tests / integration / tools / astro_check / conftest.py astro_check_clean_file   3 3 0   0%
tests / integration / tools / astro_check / conftest.py (no function)   15 0 0   100%
tests / integration / tools / astro_check / test_check.py test_definition_attributes   2 0 0   100%
tests / integration / tools / astro_check / test_check.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / astro_check / test_check.py test_definition_has_version_command   2 0 0   100%
tests / integration / tools / astro_check / test_check.py test_check_empty_directory   3 0 0   100%
tests / integration / tools / astro_check / test_check.py test_set_options   3 0 0   100%
tests / integration / tools / astro_check / test_check.py test_set_exclude_patterns   4 0 0   100%
tests / integration / tools / astro_check / test_check.py (no function)   16 0 2   100%
tests / integration / tools / gitleaks / __init__.py (no function)   0 0 0   100%
tests / integration / tools / gitleaks / conftest.py _find_project_root   5 1 0   80%
tests / integration / tools / gitleaks / conftest.py gitleaks_violation_file   3 0 0   100%
tests / integration / tools / gitleaks / conftest.py gitleaks_clean_file   3 0 0   100%
tests / integration / tools / gitleaks / conftest.py (no function)   13 0 0   100%
tests / integration / tools / gitleaks / test_check.py test_check_file_with_secrets   5 0 0   100%
tests / integration / tools / gitleaks / test_check.py test_check_clean_file   5 0 0   100%
tests / integration / tools / gitleaks / test_check.py test_check_empty_directory   5 0 0   100%
tests / integration / tools / gitleaks / test_check.py (no function)   11 0 2   100%
tests / integration / tools / gitleaks / test_definition.py test_definition_attributes   2 0 0   100%
tests / integration / tools / gitleaks / test_definition.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / gitleaks / test_definition.py test_definition_tool_type   3 0 0   100%
tests / integration / tools / gitleaks / test_definition.py (no function)   11 0 2   100%
tests / integration / tools / gitleaks / test_options.py test_set_options   3 0 0   100%
tests / integration / tools / gitleaks / test_options.py (no function)   9 0 2   100%
tests / integration / tools / osv_scanner / __init__.py (no function)   0 0 0   100%
tests / integration / tools / osv_scanner / conftest.py _find_project_root   5 1 0   80%
tests / integration / tools / osv_scanner / conftest.py osv_violation_file   3 0 0   100%
tests / integration / tools / osv_scanner / conftest.py osv_clean_file   3 0 0   100%
tests / integration / tools / osv_scanner / conftest.py (no function)   13 0 0   100%
tests / integration / tools / osv_scanner / test_check.py test_check_file_with_vulnerabilities   6 0 0   100%
tests / integration / tools / osv_scanner / test_check.py test_check_clean_file   6 0 0   100%
tests / integration / tools / osv_scanner / test_check.py test_check_empty_directory   5 0 0   100%
tests / integration / tools / osv_scanner / test_check.py (no function)   11 0 2   100%
tests / integration / tools / osv_scanner / test_definition.py test_definition_attributes   2 0 0   100%
tests / integration / tools / osv_scanner / test_definition.py test_definition_file_patterns_empty   2 0 0   100%
tests / integration / tools / osv_scanner / test_definition.py (no function)   8 0 2   100%
tests / integration / tools / osv_scanner / test_options.py test_set_options_timeout   3 0 0   100%
tests / integration / tools / osv_scanner / test_options.py test_invalid_timeout   3 0 0   100%
tests / integration / tools / osv_scanner / test_options.py (no function)   10 0 2   100%
tests / integration / tools / shellcheck / __init__.py (no function)   0 0 0   100%
tests / integration / tools / shellcheck / conftest.py shellcheck_violation_file   3 0 0   100%
tests / integration / tools / shellcheck / conftest.py shellcheck_clean_file   3 0 0   100%
tests / integration / tools / shellcheck / conftest.py shellcheck_style_issues_file   3 0 0   100%
tests / integration / tools / shellcheck / conftest.py (no function)   20 2 0   90%
tests / integration / tools / shellcheck / test_check.py test_check_file_with_issues   5 0 0   100%
tests / integration / tools / shellcheck / test_check.py test_check_clean_file   5 0 0   100%
tests / integration / tools / shellcheck / test_check.py test_check_empty_directory   4 0 0   100%
tests / integration / tools / shellcheck / test_check.py test_check_severity_filters_issues   7 0 0   100%
tests / integration / tools / shellcheck / test_check.py test_check_exclude_filters_issues   6 0 0   100%
tests / integration / tools / shellcheck / test_check.py (no function)   13 0 2   100%
tests / integration / tools / shellcheck / test_definition.py test_definition_attributes   2 0 0   100%
tests / integration / tools / shellcheck / test_definition.py test_definition_file_patterns   4 0 0   100%
tests / integration / tools / shellcheck / test_definition.py test_definition_has_version_command   2 0 0   100%
tests / integration / tools / shellcheck / test_definition.py (no function)   11 0 2   100%
tests / integration / tools / shellcheck / test_options.py test_check_with_options   5 0 0   100%
tests / integration / tools / shellcheck / test_options.py test_set_options   3 0 0   100%
tests / integration / tools / shellcheck / test_options.py test_invalid_severity   3 0 0   100%
tests / integration / tools / shellcheck / test_options.py test_invalid_shell   3 0 0   100%
tests / integration / tools / shellcheck / test_options.py test_fix_raises_not_implemented   3 0 0   100%
tests / integration / tools / shellcheck / test_options.py (no function)   14 0 2   100%
tests / integration / tools / svelte_check / __init__.py (no function)   0 0 0   100%
tests / integration / tools / svelte_check / conftest.py _check_command_version   5 2 0   60%
tests / integration / tools / svelte_check / conftest.py svelte_check_is_available   5 3 0   40%
tests / integration / tools / svelte_check / conftest.py _find_project_root   5 1 0   80%
tests / integration / tools / svelte_check / conftest.py svelte_check_violation_file   3 3 0   0%
tests / integration / tools / svelte_check / conftest.py svelte_check_clean_file   3 3 0   0%
tests / integration / tools / svelte_check / conftest.py (no function)   17 0 0   100%
tests / integration / tools / svelte_check / test_check.py test_definition_attributes   2 0 0   100%
tests / integration / tools / svelte_check / test_check.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / svelte_check / test_check.py test_definition_has_version_command   5 0 0   100%
tests / integration / tools / svelte_check / test_check.py test_check_empty_directory   5 0 0   100%
tests / integration / tools / svelte_check / test_check.py test_set_options   3 0 0   100%
tests / integration / tools / svelte_check / test_check.py test_set_exclude_patterns   4 0 0   100%
tests / integration / tools / svelte_check / test_check.py (no function)   16 0 2   100%
tests / integration / tools / test_bandit_integration.py temp_python_file_with_security_issues   3 0 0   100%
tests / integration / tools / test_bandit_integration.py temp_python_file_secure   3 0 0   100%
tests / integration / tools / test_bandit_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_bandit_integration.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / test_bandit_integration.py test_check_file_with_security_issues   5 0 0   100%
tests / integration / tools / test_bandit_integration.py test_check_secure_file   5 0 0   100%
tests / integration / tools / test_bandit_integration.py test_check_empty_directory   3 0 0   100%
tests / integration / tools / test_bandit_integration.py test_set_options   5 0 0   100%
tests / integration / tools / test_bandit_integration.py (no function)   20 0 2   100%
tests / integration / tools / test_black_integration.py temp_python_file_unformatted   3 0 0   100%
tests / integration / tools / test_black_integration.py temp_python_file_formatted   3 0 0   100%
tests / integration / tools / test_black_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_black_integration.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / test_black_integration.py test_check_file_formatting_state   8 0 0   100%
tests / integration / tools / test_black_integration.py test_check_empty_directory   3 0 0   100%
tests / integration / tools / test_black_integration.py test_fix_formats_file   8 0 0   100%
tests / integration / tools / test_black_integration.py test_fix_preserves_formatted_file   7 0 0   100%
tests / integration / tools / test_black_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_black_integration.py (no function)   22 0 2   100%
tests / integration / tools / test_cargo_deny_integration.py _get_cargo_deny_version   10 4 0   60%
tests / integration / tools / test_cargo_deny_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_cargo_deny_integration.py test_definition_file_patterns   3 0 0   100%
tests / integration / tools / test_cargo_deny_integration.py test_check_empty_directory   4 0 0   100%
tests / integration / tools / test_cargo_deny_integration.py test_check_no_cargo_toml   6 0 0   100%
tests / integration / tools / test_cargo_deny_integration.py test_set_options_timeout   3 0 0   100%
tests / integration / tools / test_cargo_deny_integration.py test_invalid_timeout   3 0 0   100%
tests / integration / tools / test_cargo_deny_integration.py (no function)   22 0 2   100%
tests / integration / tools / test_mypy_integration.py temp_python_file_with_type_errors   3 0 0   100%
tests / integration / tools / test_mypy_integration.py temp_python_file_type_correct   3 0 0   100%
tests / integration / tools / test_mypy_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_mypy_integration.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / test_mypy_integration.py test_check_file_with_type_errors   5 0 0   100%
tests / integration / tools / test_mypy_integration.py test_check_type_correct_file   5 0 0   100%
tests / integration / tools / test_mypy_integration.py test_check_empty_directory   3 0 0   100%
tests / integration / tools / test_mypy_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_mypy_integration.py (no function)   20 0 2   100%
tests / integration / tools / test_oxfmt_integration.py oxfmt_is_available   10 4 0   60%
tests / integration / tools / test_oxfmt_integration.py temp_js_file_unformatted   3 0 0   100%
tests / integration / tools / test_oxfmt_integration.py temp_js_file_formatted   4 0 0   100%
tests / integration / tools / test_oxfmt_integration.py temp_ts_file_unformatted   3 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_definition_file_patterns   6 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_definition_has_version_command   2 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_check_file_unformatted   5 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_check_file_formatted   5 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_check_typescript_file   5 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_check_empty_directory   4 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_fix_formats_file   7 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_fix_typescript_file   6 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_fix_formatted_file_unchanged   7 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_fix_reports_issue_counts   6 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_set_formatting_options   3 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_set_exclude_patterns   4 0 0   100%
tests / integration / tools / test_oxfmt_integration.py test_config_option_accepted_by_fix   10 0 0   100%
tests / integration / tools / test_oxfmt_integration.py (no function)   34 0 2   100%
tests / integration / tools / test_oxlint_integration.py oxlint_is_available   10 4 0   60%
tests / integration / tools / test_oxlint_integration.py temp_js_file_with_issues   3 0 0   100%
tests / integration / tools / test_oxlint_integration.py temp_js_file_clean   3 0 0   100%
tests / integration / tools / test_oxlint_integration.py temp_ts_file_with_issues   3 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_definition_file_patterns   13 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_definition_has_version_command   2 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_check_file_with_issues   5 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_check_clean_file   5 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_check_typescript_file   5 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_check_empty_directory   4 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_fix_applies_fixes   11 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_fix_clean_file_unchanged   7 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_set_exclude_patterns   4 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_set_config_options   3 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_set_deny_option   3 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_set_allow_option   3 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_set_warn_option   3 0 0   100%
tests / integration / tools / test_oxlint_integration.py test_deny_option_affects_check_output   7 0 0   100%
tests / integration / tools / test_oxlint_integration.py (no function)   35 0 2   100%
tests / integration / tools / test_prettier_integration.py temp_json_file_unformatted   3 0 0   100%
tests / integration / tools / test_prettier_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_prettier_integration.py test_definition_file_patterns   6 0 0   100%
tests / integration / tools / test_prettier_integration.py temp_json_file_formatted   3 0 0   100%
tests / integration / tools / test_prettier_integration.py test_check_json_file_formatting_state   8 0 0   100%
tests / integration / tools / test_prettier_integration.py test_fix_formats_json_file   7 0 0   100%
tests / integration / tools / test_prettier_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_prettier_integration.py astro_project_dir   10 3 0   70%
tests / integration / tools / test_prettier_integration.py temp_astro_file_unformatted   3 0 0   100%
tests / integration / tools / test_prettier_integration.py temp_astro_file_formatted   3 0 0   100%
tests / integration / tools / test_prettier_integration.py test_check_astro_file_formatting_state   8 0 0   100%
tests / integration / tools / test_prettier_integration.py test_fix_formats_astro_file   7 0 0   100%
tests / integration / tools / test_prettier_integration.py (no function)   31 0 2   100%
tests / integration / tools / test_ruff_integration.py temp_python_file_with_issues   3 0 0   100%
tests / integration / tools / test_ruff_integration.py temp_python_file_clean   3 0 0   100%
tests / integration / tools / test_ruff_integration.py temp_python_file_formatting_issues   3 0 0   100%
tests / integration / tools / test_ruff_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_ruff_integration.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / test_ruff_integration.py test_definition_has_version_command   2 0 0   100%
tests / integration / tools / test_ruff_integration.py test_check_file_with_issues   5 0 0   100%
tests / integration / tools / test_ruff_integration.py test_check_clean_file   5 0 0   100%
tests / integration / tools / test_ruff_integration.py test_check_nonexistent_file   4 0 0   100%
tests / integration / tools / test_ruff_integration.py test_check_empty_directory   4 0 0   100%
tests / integration / tools / test_ruff_integration.py test_fix_formats_file   7 0 0   100%
tests / integration / tools / test_ruff_integration.py test_fix_removes_unused_imports   6 0 0   100%
tests / integration / tools / test_ruff_integration.py test_check_with_options   5 0 0   100%
tests / integration / tools / test_ruff_integration.py test_fix_with_unsafe_fixes   6 0 0   100%
tests / integration / tools / test_ruff_integration.py test_fix_with_format_disabled   6 0 0   100%
tests / integration / tools / test_ruff_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_ruff_integration.py test_invalid_line_length   6 0 0   100%
tests / integration / tools / test_ruff_integration.py (no function)   32 0 2   100%
tests / integration / tools / test_rustfmt_integration.py _get_rustfmt_version   10 4 0   60%
tests / integration / tools / test_rustfmt_integration.py temp_rust_project_with_issues   7 0 0   100%
tests / integration / tools / test_rustfmt_integration.py temp_rust_project_clean   7 0 0   100%
tests / integration / tools / test_rustfmt_integration.py temp_rust_project_complex_issues   7 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_definition_has_version_command   2 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_check_project_with_issues   5 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_check_clean_project   5 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_check_empty_directory   4 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_check_no_cargo_toml   6 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_fix_formats_project   9 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_fix_complex_project   8 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_fix_clean_project_unchanged   9 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_rustfmt_integration.py test_invalid_timeout   3 0 0   100%
tests / integration / tools / test_rustfmt_integration.py (no function)   34 0 2   100%
tests / integration / tools / test_semgrep_integration.py temp_python_file_with_security_issues   3 0 0   100%
tests / integration / tools / test_semgrep_integration.py temp_python_file_secure   3 0 0   100%
tests / integration / tools / test_semgrep_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_semgrep_integration.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / test_semgrep_integration.py test_definition_tool_type   3 0 0   100%
tests / integration / tools / test_semgrep_integration.py test_check_file_with_security_issues   4 0 0   100%
tests / integration / tools / test_semgrep_integration.py test_check_secure_file   4 0 0   100%
tests / integration / tools / test_semgrep_integration.py test_check_empty_directory   3 0 0   100%
tests / integration / tools / test_semgrep_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_semgrep_integration.py (no function)   21 0 2   100%
tests / integration / tools / test_shfmt_integration.py temp_shell_file_with_issues   3 0 0   100%
tests / integration / tools / test_shfmt_integration.py temp_shell_file_clean   3 0 0   100%
tests / integration / tools / test_shfmt_integration.py temp_shell_file_complex_issues   3 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_definition_file_patterns   3 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_definition_has_version_command   2 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_check_file_with_issues   5 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_check_clean_file   5 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_check_empty_directory   4 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_fix_formats_file   7 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_fix_complex_file   6 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_fix_clean_file_unchanged   7 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_check_with_options   5 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_shfmt_integration.py test_invalid_language_dialect   3 0 0   100%
tests / integration / tools / test_shfmt_integration.py (no function)   29 0 2   100%
tests / integration / tools / test_sqlfluff_integration.py temp_sql_file_with_issues   5 0 0   100%
tests / integration / tools / test_sqlfluff_integration.py temp_sql_file_clean   5 0 0   100%
tests / integration / tools / test_sqlfluff_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_sqlfluff_integration.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / test_sqlfluff_integration.py test_definition_tool_type   4 0 0   100%
tests / integration / tools / test_sqlfluff_integration.py test_check_file_with_issues   6 0 0   100%
tests / integration / tools / test_sqlfluff_integration.py test_check_clean_file   6 0 0   100%
tests / integration / tools / test_sqlfluff_integration.py test_check_empty_directory   3 0 0   100%
tests / integration / tools / test_sqlfluff_integration.py test_fix_formats_sql_file   6 0 0   100%
tests / integration / tools / test_sqlfluff_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_sqlfluff_integration.py (no function)   22 0 2   100%
tests / integration / tools / test_taplo_integration.py temp_toml_file_with_issues   3 0 0   100%
tests / integration / tools / test_taplo_integration.py temp_toml_file_clean   3 0 0   100%
tests / integration / tools / test_taplo_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_taplo_integration.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / test_taplo_integration.py test_definition_tool_type   4 0 0   100%
tests / integration / tools / test_taplo_integration.py test_check_file_with_issues   5 0 0   100%
tests / integration / tools / test_taplo_integration.py test_check_clean_file   5 0 0   100%
tests / integration / tools / test_taplo_integration.py test_check_empty_directory   3 0 0   100%
tests / integration / tools / test_taplo_integration.py test_fix_formats_toml_file   8 0 0   100%
tests / integration / tools / test_taplo_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_taplo_integration.py (no function)   22 0 2   100%
tests / integration / tools / test_yamllint_integration.py temp_yaml_file_valid   3 0 0   100%
tests / integration / tools / test_yamllint_integration.py temp_yaml_file_with_issues   3 0 0   100%
tests / integration / tools / test_yamllint_integration.py temp_yaml_file_syntax_error   3 0 0   100%
tests / integration / tools / test_yamllint_integration.py test_definition_attributes   2 0 0   100%
tests / integration / tools / test_yamllint_integration.py test_definition_file_patterns   3 0 0   100%
tests / integration / tools / test_yamllint_integration.py test_check_valid_yaml_file   6 0 0   100%
tests / integration / tools / test_yamllint_integration.py test_check_yaml_file_with_issues   6 0 0   100%
tests / integration / tools / test_yamllint_integration.py test_check_yaml_file_with_syntax_error   6 0 0   100%
tests / integration / tools / test_yamllint_integration.py test_check_empty_directory   4 0 0   100%
tests / integration / tools / test_yamllint_integration.py test_check_nonexistent_file   4 0 0   100%
tests / integration / tools / test_yamllint_integration.py test_check_preserves_output_on_failure   9 0 0   100%
tests / integration / tools / test_yamllint_integration.py test_set_options   3 0 0   100%
tests / integration / tools / test_yamllint_integration.py test_set_options_format   3 0 0   100%
tests / integration / tools / test_yamllint_integration.py (no function)   26 0 2   100%
tests / integration / tools / tsc / __init__.py (no function)   0 0 0   100%
tests / integration / tools / tsc / conftest.py tsc_is_available   7 3 0   57%
tests / integration / tools / tsc / conftest.py _find_project_root   5 1 0   80%
tests / integration / tools / tsc / conftest.py tsc_violation_file   3 0 0   100%
tests / integration / tools / tsc / conftest.py tsc_clean_file   3 0 0   100%
tests / integration / tools / tsc / conftest.py (no function)   15 0 0   100%
tests / integration / tools / tsc / test_check.py test_definition_attributes   2 0 0   100%
tests / integration / tools / tsc / test_check.py test_definition_file_patterns   3 0 0   100%
tests / integration / tools / tsc / test_check.py test_check_file_with_type_errors   5 0 0   100%
tests / integration / tools / tsc / test_check.py test_check_type_correct_file   5 0 0   100%
tests / integration / tools / tsc / test_check.py test_check_empty_directory   3 0 0   100%
tests / integration / tools / tsc / test_check.py test_set_options   3 0 0   100%
tests / integration / tools / tsc / test_check.py test_file_targeting_with_tsconfig   11 0 0   100%
tests / integration / tools / tsc / test_check.py test_use_project_files_checks_all_files   9 0 0   100%
tests / integration / tools / tsc / test_check.py (no function)   18 0 2   100%
tests / integration / tools / vue_tsc / __init__.py (no function)   0 0 0   100%
tests / integration / tools / vue_tsc / conftest.py vue_tsc_is_available   22 17 0   23%
tests / integration / tools / vue_tsc / conftest.py _find_project_root   5 1 0   80%
tests / integration / tools / vue_tsc / conftest.py vue_tsc_violation_file   3 3 0   0%
tests / integration / tools / vue_tsc / conftest.py vue_tsc_clean_file   3 3 0   0%
tests / integration / tools / vue_tsc / conftest.py (no function)   15 0 0   100%
tests / integration / tools / vue_tsc / test_check.py test_definition_attributes   2 0 0   100%
tests / integration / tools / vue_tsc / test_check.py test_definition_file_patterns   2 0 0   100%
tests / integration / tools / vue_tsc / test_check.py test_definition_has_version_command   2 0 0   100%
tests / integration / tools / vue_tsc / test_check.py test_check_empty_directory   5 0 0   100%
tests / integration / tools / vue_tsc / test_check.py test_set_options   3 0 0   100%
tests / integration / tools / vue_tsc / test_check.py test_set_exclude_patterns   4 0 0   100%
tests / integration / tools / vue_tsc / test_check.py (no function)   16 0 2   100%
tests / scripts / __init__.py (no function)   0 0 0   100%
tests / scripts / conftest.py temp_script_dir   3 3 0   0%
tests / scripts / conftest.py mock_github_env   4 4 0   0%
tests / scripts / conftest.py (no function)   8 0 0   100%
tests / scripts / test_ci_post_pr_comment.py ci_script_path   1 0 0   100%
tests / scripts / test_ci_post_pr_comment.py sample_data_dir   1 0 0   100%
tests / scripts / test_ci_post_pr_comment.py test_script_help_output   5 0 0   100%
tests / scripts / test_ci_post_pr_comment.py test_script_help_short_flag   3 0 0   100%
tests / scripts / test_ci_post_pr_comment.py test_script_exits_when_not_in_pr_context   12 0 0   100%
tests / scripts / test_ci_post_pr_comment.py test_script_fails_with_missing_comment_file   7 0 0   100%
tests / scripts / test_ci_post_pr_comment.py test_script_uses_default_comment_file   8 0 0   100%
tests / scripts / test_ci_post_pr_comment.py test_script_integrates_with_python_utilities   10 0 0   100%
tests / scripts / test_ci_post_pr_comment.py test_script_syntax_check   4 1 0   75%
tests / scripts / test_ci_post_pr_comment.py test_script_has_proper_shebang   3 0 0   100%
tests / scripts / test_ci_post_pr_comment.py test_script_sources_utilities   6 0 0   100%
tests / scripts / test_ci_post_pr_comment.py test_script_handles_marker_logic   6 0 0   100%
tests / scripts / test_ci_post_pr_comment.py test_python_utilities_are_executable   6 0 0   100%
tests / scripts / test_ci_post_pr_comment.py (no function)   24 0 0   100%
tests / scripts / test_coverage_pipeline_integration.py test_full_pipeline_extract_to_comment   39 0 0   100%
tests / scripts / test_coverage_pipeline_integration.py test_pipeline_handles_missing_coverage_xml   11 0 0   100%
tests / scripts / test_coverage_pipeline_integration.py test_pipeline_quiet_mode_produces_valid_json   11 0 0   100%
tests / scripts / test_coverage_pipeline_integration.py (no function)   12 0 0   100%
tests / scripts / test_delete_previous_lintro_comments.py patch_env   3 0 0   100%
tests / scripts / test_delete_previous_lintro_comments.py test_deletes_only_marker_comments   11 0 0   100%
tests / scripts / test_delete_previous_lintro_comments.py test_deletes_only_marker_comments.mock_get_pr_comments   1 0 0   100%
tests / scripts / test_delete_previous_lintro_comments.py test_deletes_only_marker_comments.mock_delete_comment   1 0 0   100%
tests / scripts / test_delete_previous_lintro_comments.py test_no_marker_comments   9 0 0   100%
tests / scripts / test_delete_previous_lintro_comments.py test_no_marker_comments.mock_get_pr_comments   1 0 0   100%
tests / scripts / test_delete_previous_lintro_comments.py test_no_marker_comments.mock_delete_comment   1 1 0   0%
tests / scripts / test_delete_previous_lintro_comments.py (no function)   19 1 0   95%
tests / scripts / test_extract_test_summary.py test_script_help_output   6 0 0   100%
tests / scripts / test_extract_test_summary.py test_script_syntax_check   3 0 0   100%
tests / scripts / test_extract_test_summary.py test_extract_from_standard_pytest_output   13 0 0   100%
tests / scripts / test_extract_test_summary.py test_extract_from_lintro_table_format   13 0 0   100%
tests / scripts / test_extract_test_summary.py test_extract_with_coverage_xml   16 0 0   100%
tests / scripts / test_extract_test_summary.py test_extract_from_environment_variables   16 0 0   100%
tests / scripts / test_extract_test_summary.py test_default_output_file   10 0 0   100%
tests / scripts / test_extract_test_summary.py (no function)   16 0 0   100%
tests / scripts / test_extract_version.py run   1 0 0   100%
tests / scripts / test_extract_version.py test_extract_version_from_repo_root   9 0 0   100%
tests / scripts / test_extract_version.py test_extract_version_with_custom_file   7 0 0   100%
tests / scripts / test_extract_version.py (no function)   8 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py MockOwnerResponse.__init__   2 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py MockOwnerResponse.raise_for_status   1 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py MockOwnerResponse.json   1 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py MockDeleteResponse.__init__   1 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py MockDeleteResponse.raise_for_status   0 0 3   100%
tests / scripts / test_ghcr_prune_untagged.py make_versions_response   6 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py make_versions_response.MockVersionsResponse.__init__   2 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py make_versions_response.MockVersionsResponse.raise_for_status   2 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py make_versions_response.MockVersionsResponse.json   1 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py make_mock_client   10 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py make_mock_client._MockClient.__init__   1 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py make_mock_client._MockClient.__enter__   1 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py make_mock_client._MockClient.__exit__   1 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py make_mock_client._MockClient.get   6 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py make_mock_client._MockClient.delete   2 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_version_dataclass   3 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_list_container_versions_parses_minimal_structure   9 0 1   100%
tests / scripts / test_ghcr_prune_untagged.py test_list_container_versions_parses_minimal_structure.DummyResp.__init__   2 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_list_container_versions_parses_minimal_structure.DummyResp.raise_for_status   0 0 1   100%
tests / scripts / test_ghcr_prune_untagged.py test_list_container_versions_parses_minimal_structure.DummyResp.json   1 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_list_container_versions_parses_minimal_structure.DummyClient.get   3 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_delete_version_calls_delete   6 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_delete_version_calls_delete.DummyClient.delete   2 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_delete_version_raises_on_non_204_non_404   7 1 0   86%
tests / scripts / test_ghcr_prune_untagged.py test_delete_version_raises_on_non_204_non_404.DummyClient.delete   1 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_main_deletes_only_untagged   12 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py test_main_respects_keep_n_and_dry_run   14 0 0   100%
tests / scripts / test_ghcr_prune_untagged.py (no function)   20 0 3   100%
tests / scripts / test_github_comment_utilities.py (no function)   0 0 0   100%
tests / scripts / test_github_comment_utilities_encode.py json_encode_script_path   1 0 0   100%
tests / scripts / test_github_comment_utilities_encode.py sample_data_dir   1 0 0   100%
tests / scripts / test_github_comment_utilities_encode.py test_json_encode_simple_body   5 0 0   100%
tests / scripts / test_github_comment_utilities_encode.py test_json_encode_special_chars   6 0 0   100%
tests / scripts / test_github_comment_utilities_encode.py test_json_encode_from_stdin   5 0 0   100%
tests / scripts / test_github_comment_utilities_encode.py test_json_encode_nonexistent_file   5 0 0   100%
tests / scripts / test_github_comment_utilities_encode.py test_json_encode_empty_body   11 0 0   100%
tests / scripts / test_github_comment_utilities_encode.py (no function)   15 0 0   100%
tests / scripts / test_github_comment_utilities_extract.py extract_comment_script_path   1 0 0   100%
tests / scripts / test_github_comment_utilities_extract.py sample_data_dir   1 0 0   100%
tests / scripts / test_github_comment_utilities_extract.py test_extract_comment_body_success   5 0 0   100%
tests / scripts / test_github_comment_utilities_extract.py test_extract_comment_body_paginated   5 0 0   100%
tests / scripts / test_github_comment_utilities_extract.py test_extract_comment_body_not_found   5 0 0   100%
tests / scripts / test_github_comment_utilities_extract.py test_extract_comment_body_invalid_json   11 0 0   100%
tests / scripts / test_github_comment_utilities_extract.py (no function)   13 0 0   100%
tests / scripts / test_github_comment_utilities_find.py find_comment_script_path   1 0 0   100%
tests / scripts / test_github_comment_utilities_find.py sample_data_dir   1 0 0   100%
tests / scripts / test_github_comment_utilities_find.py test_find_comment_with_marker_success   5 0 0   100%
tests / scripts / test_github_comment_utilities_find.py test_find_comment_with_marker_paginated   6 0 0   100%
tests / scripts / test_github_comment_utilities_find.py test_find_comment_no_marker_found   5 0 0   100%
tests / scripts / test_github_comment_utilities_find.py test_find_comment_invalid_json   11 0 0   100%
tests / scripts / test_github_comment_utilities_find.py test_find_comment_empty_marker   5 0 0   100%
tests / scripts / test_github_comment_utilities_find.py (no function)   15 0 0   100%
tests / scripts / test_merge_pr_comment.py test_extract_details_blocks_no_blocks   4 0 0   100%
tests / scripts / test_merge_pr_comment.py test_extract_details_blocks_single_block   7 0 0   100%
tests / scripts / test_merge_pr_comment.py test_extract_details_blocks_multiple_blocks   6 0 0   100%
tests / scripts / test_merge_pr_comment.py test_extract_details_blocks_no_newline_after_tag   7 0 0   100%
tests / scripts / test_merge_pr_comment.py test_extract_details_blocks_preserves_non_history_blocks   7 0 0   100%
tests / scripts / test_merge_pr_comment.py test_extract_timestamp_from_details_valid   2 0 0   100%
tests / scripts / test_merge_pr_comment.py test_extract_timestamp_from_details_no_timestamp   3 0 0   100%
tests / scripts / test_merge_pr_comment.py test_merge_no_previous_body   6 0 0   100%
tests / scripts / test_merge_pr_comment.py test_merge_second_run_creates_history   9 0 0   100%
tests / scripts / test_merge_pr_comment.py test_merge_new_content_above_history   7 0 0   100%
tests / scripts / test_merge_pr_comment.py test_merge_place_new_below   7 0 0   100%
tests / scripts / test_merge_pr_comment.py test_merge_preserves_existing_history_blocks   9 0 0   100%
tests / scripts / test_merge_pr_comment.py test_merge_history_limit_enforced   7 0 0   100%
tests / scripts / test_merge_pr_comment.py test_merge_marker_only_appears_once   7 0 0   100%
tests / scripts / test_merge_pr_comment.py test_merge_normalizes_newlines   6 0 0   100%
tests / scripts / test_merge_pr_comment.py (no function)   23 0 0   100%
tests / scripts / test_semantic_release_compute_next.py _fake_completed   1 0 0   100%
tests / scripts / test_semantic_release_compute_next.py _ensure_repo_root_on_path   2 0 0   100%
tests / scripts / test_semantic_release_compute_next.py test_run_git_describe_allowed   5 0 0   100%
tests / scripts / test_semantic_release_compute_next.py test_run_git_rev_parse_head_allowed   5 0 0   100%
tests / scripts / test_semantic_release_compute_next.py test_run_git_log_allowed   5 0 0   100%
tests / scripts / test_semantic_release_compute_next.py test_run_git_rejects_unsupported_or_unsafe   5 0 4   100%
tests / scripts / test_semantic_release_compute_next.py test_run_git_rejects_unsupported_or_unsafe._should_not_run   0 0 1   100%
tests / scripts / test_semantic_release_compute_next.py (no function)   15 0 0   100%
tests / scripts / test_shell_scripts.py test_detect_changes_help   4 0 0   100%
tests / scripts / test_shell_scripts.py test_renovate_regex_manager_current_value   4 0 0   100%
tests / scripts / test_shell_scripts.py (no function)   5 0 0   100%
tests / scripts / test_verify_manifest_tools.py _load_verify_manifest_tools_module   7 1 0   86%
tests / scripts / test_verify_manifest_tools.py test_tool_command_uses_install_bin_when_provided   4 0 0   100%
tests / scripts / test_verify_manifest_tools.py (no function)   7 0 0   100%
tests / test_documentation.py test_scripts_have_help   15 6 0   60%
tests / test_documentation.py test_scripts_readme_coverage   18 2 0   89%
tests / test_documentation.py test_cli_help_works   8 2 0   75%
tests / test_documentation.py test_internal_doc_links   17 4 0   76%
tests / test_documentation.py test_all_docs_have_titles   11 3 0   73%
tests / test_documentation.py test_command_consistency   13 3 0   77%
tests / test_documentation.py (no function)   11 0 0   100%
tests / unit / __init__.py (no function)   0 0 0   100%
tests / unit / ai / __init__.py (no function)   0 0 0   100%
tests / unit / ai / conftest.py MockAIProvider.__init__   6 0 0   100%
tests / unit / ai / conftest.py MockAIProvider._create_client   1 1 0   0%
tests / unit / ai / conftest.py MockAIProvider.complete   7 0 0   100%
tests / unit / ai / conftest.py MockAIProvider.is_available   1 1 0   0%
tests / unit / ai / conftest.py mock_provider   1 0 0   100%
tests / unit / ai / conftest.py ai_config   1 1 0   0%
tests / unit / ai / conftest.py ai_config_disabled   1 1 0   0%
tests / unit / ai / conftest.py sample_issues   1 1 0   0%
tests / unit / ai / conftest.py sample_fix_suggestions   1 0 0   100%
tests / unit / ai / conftest.py (no function)   29 0 0   100%
tests / unit / ai / providers / __init__.py (no function)   0 0 0   100%
tests / unit / ai / providers / test_anthropic.py test_anthropic_provider_raises_when_sdk_missing   2 0 0   100%
tests / unit / ai / providers / test_anthropic.py test_anthropic_provider_default_model   4 0 0   100%
tests / unit / ai / providers / test_anthropic.py test_anthropic_provider_is_available_with_no_key   5 0 0   100%
tests / unit / ai / providers / test_anthropic.py test_anthropic_provider_is_available_with_key   5 0 0   100%
tests / unit / ai / providers / test_anthropic.py test_anthropic_provider_get_client_no_key_raises   5 0 0   100%
tests / unit / ai / providers / test_anthropic.py test_anthropic_complete_parses_response   24 0 0   100%
tests / unit / ai / providers / test_anthropic.py test_anthropic_complete_multiple_text_blocks   18 0 0   100%
tests / unit / ai / providers / test_anthropic.py test_anthropic_complete_respects_max_tokens_cap   15 0 0   100%
tests / unit / ai / providers / test_anthropic.py (no function)   15 0 0   100%
tests / unit / ai / providers / test_base.py test_ai_response_defaults   7 0 0   100%
tests / unit / ai / providers / test_base.py test_ai_response_with_all_fields   3 0 0   100%
tests / unit / ai / providers / test_base.py test_base_ai_provider_complete_subclass   9 0 0   100%
tests / unit / ai / providers / test_base.py test_base_ai_provider_complete_subclass.TestProvider.__init__   1 0 0   100%
tests / unit / ai / providers / test_base.py test_base_ai_provider_complete_subclass.TestProvider._create_client   1 1 0   0%
tests / unit / ai / providers / test_base.py test_base_ai_provider_complete_subclass.TestProvider.complete   1 0 0   100%
tests / unit / ai / providers / test_base.py test_base_ai_provider_cannot_instantiate_directly   2 0 0   100%
tests / unit / ai / providers / test_base.py test_incomplete_subclass_fails   4 0 0   100%
tests / unit / ai / providers / test_base.py (no function)   9 0 0   100%
tests / unit / ai / providers / test_factory.py test_get_provider_anthropic   4 0 0   100%
tests / unit / ai / providers / test_factory.py test_get_provider_openai   4 0 0   100%
tests / unit / ai / providers / test_factory.py test_get_provider_unknown_raises   3 0 0   100%
tests / unit / ai / providers / test_factory.py test_get_provider_case_insensitive   4 0 0   100%
tests / unit / ai / providers / test_factory.py test_get_provider_passes_model   4 0 0   100%
tests / unit / ai / providers / test_factory.py (no function)   13 0 0   100%
tests / unit / ai / providers / test_openai.py test_openai_provider_raises_when_sdk_missing   2 0 0   100%
tests / unit / ai / providers / test_openai.py test_openai_provider_default_model   4 0 0   100%
tests / unit / ai / providers / test_openai.py test_openai_provider_is_available_with_no_key   5 0 0   100%
tests / unit / ai / providers / test_openai.py test_openai_provider_is_available_with_key   5 0 0   100%
tests / unit / ai / providers / test_openai.py test_openai_provider_get_client_no_key_raises   5 0 0   100%
tests / unit / ai / providers / test_openai.py test_openai_complete_parses_response   25 0 0   100%
tests / unit / ai / providers / test_openai.py test_openai_complete_without_system_prompt   19 0 0   100%
tests / unit / ai / providers / test_openai.py test_openai_complete_handles_none_usage   16 0 0   100%
tests / unit / ai / providers / test_openai.py test_openai_complete_respects_max_tokens_cap   19 0 0   100%
tests / unit / ai / providers / test_openai.py (no function)   16 0 0   100%
tests / unit / ai / providers / test_stream.py _StubProvider.__init__   8 0 0   100%
tests / unit / ai / providers / test_stream.py _StubProvider._create_client   1 1 0   0%
tests / unit / ai / providers / test_stream.py _StubProvider.complete   1 0 0   100%
tests / unit / ai / providers / test_stream.py _make_response   1 0 0   100%
tests / unit / ai / providers / test_stream.py test_stream_result_iter_yields_chunks   4 0 0   100%
tests / unit / ai / providers / test_stream.py test_stream_result_response_returns_metadata   4 0 0   100%
tests / unit / ai / providers / test_stream.py test_stream_result_collect_concatenates_and_returns_response   8 0 0   100%
tests / unit / ai / providers / test_stream.py test_stream_result_collect_empty_stream   3 0 0   100%
tests / unit / ai / providers / test_stream.py test_stream_result_collect_various_chunk_patterns   3 0 0   100%
tests / unit / ai / providers / test_stream.py test_base_provider_stream_complete_delegates_to_complete   7 0 0   100%
tests / unit / ai / providers / test_stream.py test_base_provider_stream_complete_passes_kwargs   11 0 0   100%
tests / unit / ai / providers / test_stream.py test_base_provider_stream_complete_passes_kwargs._CapturingProvider.complete   2 0 0   100%
tests / unit / ai / providers / test_stream.py test_base_provider_stream_complete_single_chunk_iteration   5 0 0   100%
tests / unit / ai / providers / test_stream.py test_collect_raises_on_double_call   6 0 0   100%
tests / unit / ai / providers / test_stream.py (no function)   20 0 0   100%
tests / unit / ai / test_ai_config_validation.py test_max_tokens_default   2 0 0   100%
tests / unit / ai / test_ai_config_validation.py test_max_tokens_valid_upper_bound   2 0 0   100%
tests / unit / ai / test_ai_config_validation.py test_max_tokens_exceeds_upper_bound   2 0 0   100%
tests / unit / ai / test_ai_config_validation.py test_max_tokens_zero_rejected   2 0 0   100%
tests / unit / ai / test_ai_config_validation.py test_max_tokens_negative_rejected   2 0 0   100%
tests / unit / ai / test_ai_config_validation.py test_sanitize_mode_default   2 0 0   100%
tests / unit / ai / test_ai_config_validation.py test_sanitize_mode_block   2 0 0   100%
tests / unit / ai / test_ai_config_validation.py test_sanitize_mode_off   2 0 0   100%
tests / unit / ai / test_ai_config_validation.py (no function)   13 0 0   100%
tests / unit / ai / test_annotations.py test_risk_to_annotation_level   1 0 0   100%
tests / unit / ai / test_annotations.py test_escapes_percent   1 0 0   100%
tests / unit / ai / test_annotations.py test_escapes_newline   1 0 0   100%
tests / unit / ai / test_annotations.py test_escapes_carriage_return   1 0 0   100%
tests / unit / ai / test_annotations.py test_plain_text_unchanged   1 0 0   100%
tests / unit / ai / test_annotations.py test_empty_suggestions_returns_empty   2 0 0   100%
tests / unit / ai / test_annotations.py test_single_suggestion_emits_annotation   7 0 0   100%
tests / unit / ai / test_annotations.py test_high_risk_emits_error   3 0 0   100%
tests / unit / ai / test_annotations.py test_medium_risk_emits_warning   3 0 0   100%
tests / unit / ai / test_annotations.py test_no_risk_level_defaults_to_warning   3 0 0   100%
tests / unit / ai / test_annotations.py test_multiple_suggestions_emit_multiple_lines   6 0 0   100%
tests / unit / ai / test_annotations.py test_includes_confidence_in_message   3 0 0   100%
tests / unit / ai / test_annotations.py test_no_file_omits_file_prop   3 0 0   100%
tests / unit / ai / test_annotations.py test_code_without_tool_name   3 0 0   100%
tests / unit / ai / test_annotations.py test_empty_summary_returns_empty   3 0 0   100%
tests / unit / ai / test_annotations.py test_key_patterns_emit_warnings   4 0 0   100%
tests / unit / ai / test_annotations.py test_priority_actions_emit_notices   4 0 0   100%
tests / unit / ai / test_annotations.py test_no_patterns_or_actions_returns_empty   3 0 0   100%
tests / unit / ai / test_annotations.py test_escapes_special_characters   4 0 0   100%
tests / unit / ai / test_annotations.py test_github_actions_includes_annotations   7 0 0   100%
tests / unit / ai / test_annotations.py (no function)   28 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_exact_line_match   6 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_adjacent_line_within_radius   8 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_prefers_closest_occurrence   8 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_search_radius_1_limits_search   6 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_large_radius_finds_distant_match   7 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_rejects_symlink_escape   10 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_rejects_parent_traversal   8 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_accepts_file_inside_workspace   8 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_empty_original_code_returns_false   6 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_whitespace_only_original_code   5 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_missing_file_returns_false   3 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_empty_file_path_returns_false   3 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_multi_line_original_and_suggested   11 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_multi_line_to_single_line   9 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_single_line_to_multi_line   8 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_file_without_trailing_newline   6 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_preserves_other_lines_newlines   6 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_negative_line_returns_false   5 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_line_zero_returns_false   5 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_line_beyond_file_length_clamps   6 0 0   100%
tests / unit / ai / test_apply.py test_apply_fixes_returns_only_successful   6 0 0   100%
tests / unit / ai / test_apply.py test_apply_fixes_empty_list   2 0 0   100%
tests / unit / ai / test_apply.py test_apply_fixes_all_fail   5 0 0   100%
tests / unit / ai / test_apply.py test_apply_fixes_forwards_search_radius   7 0 0   100%
tests / unit / ai / test_apply.py test_apply_fixes_forwards_auto_apply   7 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_logs_debug_for_invalid_line   6 0 0   100%
tests / unit / ai / test_apply.py test_apply_fix_successful_no_warning   6 0 0   100%
tests / unit / ai / test_apply.py (no function)   34 0 0   100%
tests / unit / ai / test_audit.py suggestion   1 0 0   100%
tests / unit / ai / test_audit.py test_writes_json_file   5 0 0   100%
tests / unit / ai / test_audit.py test_contains_correct_fields   13 0 0   100%
tests / unit / ai / test_audit.py test_handles_empty_applied_list   4 0 0   100%
tests / unit / ai / test_audit.py test_rounds_cost_properly   3 0 0   100%
tests / unit / ai / test_audit.py (no function)   13 0 0   100%
tests / unit / ai / test_availability.py test_availability_available_when_anthropic_installed   4 0 0   100%
tests / unit / ai / test_availability.py test_availability_caching   11 0 0   100%
tests / unit / ai / test_availability.py test_availability_caching._tracking_import   3 0 0   100%
tests / unit / ai / test_availability.py test_availability_unknown_provider   2 0 0   100%
tests / unit / ai / test_availability.py test_availability_require_raises_when_unavailable   2 0 0   100%
tests / unit / ai / test_availability.py test_availability_require_passes_when_available   2 0 0   100%
tests / unit / ai / test_availability.py (no function)   13 0 0   100%
tests / unit / ai / test_budget.py test_default_budget_has_no_limit   4 0 0   100%
tests / unit / ai / test_budget.py test_budget_with_limit   3 0 0   100%
tests / unit / ai / test_budget.py test_record_increments_spent   5 0 0   100%
tests / unit / ai / test_budget.py test_record_updates_remaining   3 0 0   100%
tests / unit / ai / test_budget.py test_remaining_never_negative   3 0 0   100%
tests / unit / ai / test_budget.py test_check_passes_when_under_limit   3 0 0   100%
tests / unit / ai / test_budget.py test_check_passes_with_no_limit   3 0 0   100%
tests / unit / ai / test_budget.py test_check_raises_when_at_limit   4 0 0   100%
tests / unit / ai / test_budget.py test_check_raises_when_over_limit   4 0 0   100%
tests / unit / ai / test_budget.py test_check_error_message_contains_amounts   4 0 0   100%
tests / unit / ai / test_budget.py test_thread_safety_concurrent_records   12 0 0   100%
tests / unit / ai / test_budget.py test_thread_safety_concurrent_records.worker   2 0 0   100%
tests / unit / ai / test_budget.py (no function)   17 0 0   100%
tests / unit / ai / test_cache.py _make_suggestion   3 0 0   100%
tests / unit / ai / test_cache.py test_cache_key_is_deterministic   3 0 0   100%
tests / unit / ai / test_cache.py test_cache_key_differs_for_different_inputs   3 0 0   100%
tests / unit / ai / test_cache.py test_cache_key_is_16_hex_chars   2 0 0   100%
tests / unit / ai / test_cache.py test_cache_miss_returns_none   2 0 0   100%
tests / unit / ai / test_cache.py test_cache_hit_returns_data   9 0 0   100%
tests / unit / ai / test_cache.py test_expired_cache_returns_none_and_deletes_file   10 0 0   100%
tests / unit / ai / test_cache.py test_cache_stores_to_correct_path   9 0 0   100%
tests / unit / ai / test_cache.py test_evict_lru_removes_oldest_entries   10 0 0   100%
tests / unit / ai / test_cache.py test_evict_lru_no_op_when_under_limit   7 0 0   100%
tests / unit / ai / test_cache.py test_cache_suggestion_evicts_when_over_max   14 0 0   100%
tests / unit / ai / test_cache.py test_get_cached_suggestion_updates_mtime   12 0 0   100%
tests / unit / ai / test_cache.py (no function)   19 0 0   100%
tests / unit / ai / test_config.py test_default_config_booleans_and_provider   8 0 0   100%
tests / unit / ai / test_config.py test_default_config_optional_fields   3 0 0   100%
tests / unit / ai / test_config.py test_default_config_numeric_fields   11 0 0   100%
tests / unit / ai / test_config.py test_provider_anthropic   2 0 0   100%
tests / unit / ai / test_config.py test_provider_openai   2 0 0   100%
tests / unit / ai / test_config.py test_provider_invalid_rejected   2 0 0   100%
tests / unit / ai / test_config.py test_enabled_override   2 0 0   100%
tests / unit / ai / test_config.py test_auto_apply_override   2 0 0   100%
tests / unit / ai / test_config.py test_auto_apply_safe_fixes_override   2 0 0   100%
tests / unit / ai / test_config.py test_default_fix_override   2 0 0   100%
tests / unit / ai / test_config.py test_validate_after_group_override   2 0 0   100%
tests / unit / ai / test_config.py test_custom_model   2 0 0   100%
tests / unit / ai / test_config.py test_custom_api_key_env   2 0 0   100%
tests / unit / ai / test_config.py test_numeric_field_accepts_valid_value   2 0 0   100%
tests / unit / ai / test_config.py test_numeric_field_rejects_invalid_value   2 0 0   100%
tests / unit / ai / test_config.py test_retry_max_delay_less_than_base_raises   2 0 0   100%
tests / unit / ai / test_config.py test_extra_fields_forbidden   2 0 0   100%
tests / unit / ai / test_config.py (no function)   24 0 0   100%
tests / unit / ai / test_config_wiring.py _make_suggestion   3 0 0   100%
tests / unit / ai / test_config_wiring.py _make_fix_issues   3 0 0   100%
tests / unit / ai / test_config_wiring.py test_context_lines_flows_to_generate_fixes   6 0 0   100%
tests / unit / ai / test_config_wiring.py test_fix_search_radius_flows_to_apply_fixes   9 0 0   100%
tests / unit / ai / test_config_wiring.py test_retry_delays_flow_to_generate_fixes   8 0 0   100%
tests / unit / ai / test_config_wiring.py test_timeout_and_retries_flow_to_post_fix_summary   14 0 0   100%
tests / unit / ai / test_config_wiring.py test_timeout_and_retries_flow_to_generate_summary   14 0 0   100%
tests / unit / ai / test_config_wiring.py (no function)   51 0 0   100%
tests / unit / ai / test_cost.py test_cost_known_model   4 0 0   100%
tests / unit / ai / test_cost.py test_cost_unknown_model_uses_default   3 0 0   100%
tests / unit / ai / test_cost.py test_cost_unknown_model_logs_debug   5 0 0   100%
tests / unit / ai / test_cost.py test_cost_known_model_does_not_log   2 0 0   100%
tests / unit / ai / test_cost.py test_cost_zero_tokens   2 0 0   100%
tests / unit / ai / test_cost.py test_cost_large_token_count   2 0 0   100%
tests / unit / ai / test_cost.py test_cost_all_known_models_have_pricing   2 0 0   100%
tests / unit / ai / test_cost.py test_cost_format_small   2 0 0   100%
tests / unit / ai / test_cost.py test_cost_format_normal   2 0 0   100%
tests / unit / ai / test_cost.py test_cost_format_larger   2 0 0   100%
tests / unit / ai / test_cost.py test_cost_format_token_count_small   2 0 0   100%
tests / unit / ai / test_cost.py test_cost_format_token_count_large   2 0 0   100%
tests / unit / ai / test_cost.py (no function)   21 0 0   100%
tests / unit / ai / test_display.py test_render_summary_auto_detect_markdown_format   5 0 0   100%
tests / unit / ai / test_display.py (no function)   5 0 0   100%
tests / unit / ai / test_enums.py test_confidence_string_value   1 0 0   100%
tests / unit / ai / test_enums.py test_confidence_string_equality   2 0 0   100%
tests / unit / ai / test_enums.py test_confidence_numeric_order   1 0 0   100%
tests / unit / ai / test_enums.py test_ordering_high_gt_medium_gt_low   2 0 0   100%
tests / unit / ai / test_enums.py test_confidence_is_str_subclass   1 0 0   100%
tests / unit / ai / test_enums.py test_confidence_construction_from_string   3 0 0   100%
tests / unit / ai / test_enums.py test_confidence_invalid_value_raises   2 0 0   100%
tests / unit / ai / test_enums.py test_risk_hyphenated_string_value   1 0 0   100%
tests / unit / ai / test_enums.py test_risk_string_equality   2 0 0   100%
tests / unit / ai / test_enums.py test_risk_to_severity_label   1 0 0   100%
tests / unit / ai / test_enums.py test_risk_is_str_subclass   1 0 0   100%
tests / unit / ai / test_enums.py test_risk_construction_from_string   2 0 0   100%
tests / unit / ai / test_enums.py test_risk_invalid_value_raises   2 0 0   100%
tests / unit / ai / test_enums.py (no function)   23 0 0   100%
tests / unit / ai / test_exceptions.py test_exceptions_hierarchy   5 0 0   100%
tests / unit / ai / test_exceptions.py (no function)   5 0 0   100%
tests / unit / ai / test_fallback.py _make_provider   3 0 0   100%
tests / unit / ai / test_fallback.py _ok_response   1 0 0   100%
tests / unit / ai / test_fallback.py test_returns_response_without_fallback   5 0 0   100%
tests / unit / ai / test_fallback.py test_returns_response_with_empty_fallback_list   5 0 0   100%
tests / unit / ai / test_fallback.py test_does_not_try_fallbacks_on_success   6 0 0   100%
tests / unit / ai / test_fallback.py test_falls_back_on_provider_error   6 0 0   100%
tests / unit / ai / test_fallback.py test_falls_back_on_rate_limit_error   5 0 0   100%
tests / unit / ai / test_fallback.py test_tries_multiple_fallbacks_in_order   6 0 0   100%
tests / unit / ai / test_fallback.py test_model_is_swapped_for_each_fallback   7 0 0   100%
tests / unit / ai / test_fallback.py test_model_is_swapped_for_each_fallback.capture_model   4 0 0   100%
tests / unit / ai / test_fallback.py test_raises_last_error_when_all_fail   5 0 0   100%
tests / unit / ai / test_fallback.py test_raises_primary_error_when_no_fallbacks   4 0 0   100%
tests / unit / ai / test_fallback.py test_auth_error_propagates_immediately   6 0 0   100%
tests / unit / ai / test_fallback.py test_auth_error_on_fallback_propagates   6 0 0   100%
tests / unit / ai / test_fallback.py test_model_restored_on_auth_error   5 0 0   100%
tests / unit / ai / test_fallback.py test_model_restored_on_provider_error   5 0 0   100%
tests / unit / ai / test_fallback.py test_model_restored_on_success   4 0 0   100%
tests / unit / ai / test_fallback.py test_forwards_all_kwargs   4 0 0   100%
tests / unit / ai / test_fallback.py (no function)   24 0 0   100%
tests / unit / ai / test_filters.py test_no_filters_allows_all   3 0 0   100%
tests / unit / ai / test_filters.py test_no_filters_allows_empty_fields   3 0 0   100%
tests / unit / ai / test_filters.py test_include_paths_matches   3 0 0   100%
tests / unit / ai / test_filters.py test_include_paths_no_match   3 0 0   100%
tests / unit / ai / test_filters.py test_include_paths_multiple_patterns   3 0 0   100%
tests / unit / ai / test_filters.py test_include_paths_glob_star_star   6 0 0   100%
tests / unit / ai / test_filters.py test_exclude_paths_matches   3 0 0   100%
tests / unit / ai / test_filters.py test_exclude_paths_no_match   3 0 0   100%
tests / unit / ai / test_filters.py test_exclude_paths_multiple_patterns   3 0 0   100%
tests / unit / ai / test_filters.py test_include_and_exclude_paths_include_wins_when_not_excluded   3 0 0   100%
tests / unit / ai / test_filters.py test_include_and_exclude_paths_exclude_overrides   3 0 0   100%
tests / unit / ai / test_filters.py test_include_paths_rejects_before_exclude_checked   3 0 0   100%
tests / unit / ai / test_filters.py test_include_rules_matches   3 0 0   100%
tests / unit / ai / test_filters.py test_include_rules_no_match   3 0 0   100%
tests / unit / ai / test_filters.py test_include_rules_exact_match   3 0 0   100%
tests / unit / ai / test_filters.py test_exclude_rules_matches   3 0 0   100%
tests / unit / ai / test_filters.py test_exclude_rules_no_match   3 0 0   100%
tests / unit / ai / test_filters.py test_exclude_rules_glob_pattern   3 0 0   100%
tests / unit / ai / test_filters.py test_include_and_exclude_rules_together   3 0 0   100%
tests / unit / ai / test_filters.py test_include_rules_passes_exclude_rules_does_not_match   3 0 0   100%
tests / unit / ai / test_filters.py test_path_and_rule_filters_both_pass   3 0 0   100%
tests / unit / ai / test_filters.py test_path_passes_rule_fails   3 0 0   100%
tests / unit / ai / test_filters.py test_rule_passes_path_fails   3 0 0   100%
tests / unit / ai / test_filters.py test_filter_issues_returns_matching_only   5 0 0   100%
tests / unit / ai / test_filters.py test_filter_issues_empty_list   3 0 0   100%
tests / unit / ai / test_filters.py test_filter_issues_no_filters   4 0 0   100%
tests / unit / ai / test_filters.py test_filter_issues_all_excluded   4 0 0   100%
tests / unit / ai / test_filters.py test_issue_without_code_attribute   3 0 0   100%
tests / unit / ai / test_filters.py test_issue_without_file   3 0 0   100%
tests / unit / ai / test_filters.py (no function)   35 0 0   100%
tests / unit / ai / test_fix_context.py test_full_file_context_for_small_file   10 0 0   100%
tests / unit / ai / test_fix_context.py test_full_file_skipped_when_file_exceeds_threshold   10 0 0   100%
tests / unit / ai / test_fix_context.py test_full_file_skipped_when_over_token_budget   11 0 0   100%
tests / unit / ai / test_fix_context.py (no function)   9 0 0   100%
tests / unit / ai / test_fix_generation_basic.py source_file   3 3 0   0%
tests / unit / ai / test_fix_generation_basic.py single_issue   1 1 0   0%
tests / unit / ai / test_fix_generation_basic.py test_generate_fixes_empty_issues   2 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_generate_fixes_generates_fixes_for_unfixable   9 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_generate_fixes_processes_fixable_issues   6 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_generate_fixes_skips_issues_without_file   3 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_generate_fixes_respects_max_issues   9 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_generate_fixes_provider_prompt_uses_workspace_relative_path   12 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_generate_fixes_skips_issue_outside_workspace_root   7 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_timeout_reaches_provider   7 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_default_timeout_is_60   7 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_tool_result_cwd_defaults_to_none   2 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_tool_result_cwd_preserves_value   2 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_resolves_relative_paths_with_cwd   12 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_absolute_paths_unchanged_by_resolution   5 1 0   80%
tests / unit / ai / test_fix_generation_basic.py test_no_resolution_when_cwd_is_none   5 1 0   80%
tests / unit / ai / test_fix_generation_basic.py test_generate_fixes_skips_issues_with_unreadable_relative_paths   9 0 0   100%
tests / unit / ai / test_fix_generation_basic.py test_single_issue_file_not_batched   9 0 0   100%
tests / unit / ai / test_fix_generation_basic.py (no function)   29 0 0   100%
tests / unit / ai / test_fix_generation_batch.py test_batch_prompt_for_multi_issue_file   15 0 0   100%
tests / unit / ai / test_fix_generation_batch.py test_batch_fallback_to_single_on_parse_failure   8 0 0   100%
tests / unit / ai / test_fix_generation_batch.py (no function)   8 0 0   100%
tests / unit / ai / test_fix_generation_edge.py _make_ai_response   4 1 0   75%
tests / unit / ai / test_fix_generation_edge.py test_generate_fixes_handles_provider_error   8 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_generate_fixes_handles_provider_error.ErrorProvider.complete   1 1 0   0%
tests / unit / ai / test_fix_generation_edge.py test_concurrent_generation_with_multiple_workers   11 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_concurrent_mixed_success_and_failure   10 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_retries_on_provider_error   12 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_retries_on_provider_error.RetryProvider.complete   4 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_no_retry_on_auth_error   11 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_no_retry_on_auth_error.AuthErrorProvider.complete   2 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_max_retries_zero_means_no_retry   11 0 0   100%
tests / unit / ai / test_fix_generation_edge.py test_max_retries_zero_means_no_retry.FailOnceProvider.complete   2 0 0   100%
tests / unit / ai / test_fix_generation_edge.py (no function)   13 0 0   100%
tests / unit / ai / test_fix_parsing.py test_generate_diff_generates_unified_diff   5 0 0   100%
tests / unit / ai / test_fix_parsing.py test_generate_diff_no_diff_for_identical   2 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_fix_response_valid_response   6 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_fix_response_non_object_json   3 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_fix_response_non_string_code_fields   3 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_fix_response_invalid_json   2 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_fix_response_identical_code   3 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_fix_response_empty_original   3 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_fix_response_empty_suggested   3 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_fix_response_extracts_risk_level   4 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_fix_response_risk_level_defaults_to_empty   4 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_fix_response_confidence_defaults_to_medium   4 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_batch_response_valid   6 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_batch_response_invalid_json   2 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_batch_response_not_array   2 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_batch_response_mixed_valid_and_invalid   6 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_batch_response_skips_identical_code   3 0 0   100%
tests / unit / ai / test_fix_parsing.py test_parse_batch_response_coerces_line_and_code   7 0 0   100%
tests / unit / ai / test_fix_parsing.py (no function)   22 0 0   100%
tests / unit / ai / test_fix_reading.py test_read_file_safely_reads_existing_file   4 0 0   100%
tests / unit / ai / test_fix_reading.py test_read_file_safely_returns_none_for_missing   3 0 0   100%
tests / unit / ai / test_fix_reading.py test_read_file_safely_returns_empty_string_for_empty_file   4 0 0   100%
tests / unit / ai / test_fix_reading.py test_extract_context_extracts_context   5 0 0   100%
tests / unit / ai / test_fix_reading.py test_extract_context_clamps_to_start   3 0 0   100%
tests / unit / ai / test_fix_reading.py test_extract_context_clamps_to_end   3 0 0   100%
tests / unit / ai / test_fix_reading.py test_extract_context_empty_content   4 0 0   100%
tests / unit / ai / test_fix_reading.py test_extract_context_non_positive_line   7 0 0   100%
tests / unit / ai / test_fix_reading.py test_extract_context_clamps_out_of_bounds_line   4 0 0   100%
tests / unit / ai / test_fix_reading.py (no function)   13 0 0   100%
tests / unit / ai / test_github_pr.py test_token   1 0 0   100%
tests / unit / ai / test_github_pr.py test_detects_pr_number_from_event_payload   4 0 0   100%
tests / unit / ai / test_github_pr.py test_detects_pr_number_from_ref   2 0 0   100%
tests / unit / ai / test_github_pr.py test_returns_none_for_branch_ref   2 0 0   100%
tests / unit / ai / test_github_pr.py test_returns_none_for_empty_ref   2 0 0   100%
tests / unit / ai / test_github_pr.py test_returns_none_for_missing_ref   2 0 0   100%
tests / unit / ai / test_github_pr.py test_returns_none_for_malformed_ref   2 0 0   100%
tests / unit / ai / test_github_pr.py test_is_available_with_all_context   2 0 0   100%
tests / unit / ai / test_github_pr.py test_is_not_available_without_token   2 0 0   100%
tests / unit / ai / test_github_pr.py test_is_not_available_without_repo   2 0 0   100%
tests / unit / ai / test_github_pr.py test_is_not_available_without_pr_number   3 0 0   100%
tests / unit / ai / test_github_pr.py test_reads_env_vars   6 0 0   100%
tests / unit / ai / test_github_pr.py test_post_review_comments_returns_false_when_unavailable   3 0 0   100%
tests / unit / ai / test_github_pr.py test_post_review_comments_posts_summary   9 0 0   100%
tests / unit / ai / test_github_pr.py test_post_review_comments_posts_suggestions   6 0 0   100%
tests / unit / ai / test_github_pr.py test_api_request_constructs_correct_request   11 0 0   100%
tests / unit / ai / test_github_pr.py test_includes_overview   4 0 0   100%
tests / unit / ai / test_github_pr.py test_includes_key_patterns   5 0 0   100%
tests / unit / ai / test_github_pr.py test_includes_priority_actions   5 0 0   100%
tests / unit / ai / test_github_pr.py test_includes_triage_suggestions   4 0 0   100%
tests / unit / ai / test_github_pr.py test_includes_effort_estimate   3 0 0   100%
tests / unit / ai / test_github_pr.py test_includes_code_and_tool   4 0 0   100%
tests / unit / ai / test_github_pr.py test_includes_explanation   3 0 0   100%
tests / unit / ai / test_github_pr.py test_includes_diff   4 0 0   100%
tests / unit / ai / test_github_pr.py test_includes_suggestion_block   3 0 0   100%
tests / unit / ai / test_github_pr.py test_includes_confidence_and_risk   4 0 0   100%
tests / unit / ai / test_github_pr.py test_sanitizes_backticks_in_diff   3 0 0   100%
tests / unit / ai / test_github_pr.py test_post_review_uses_workspace_relative_paths   9 0 0   100%
tests / unit / ai / test_github_pr.py test_post_review_skips_out_of_workspace_suggestions   7 0 0   100%
tests / unit / ai / test_github_pr.py (no function)   40 0 0   100%
tests / unit / ai / test_hook.py test_should_run_returns_true_for_check_when_enabled   4 0 0   100%
tests / unit / ai / test_hook.py test_should_run_returns_true_for_fix_when_enabled   4 0 0   100%
tests / unit / ai / test_hook.py test_should_run_returns_false_for_test_action   4 0 0   100%
tests / unit / ai / test_hook.py test_should_run_returns_false_when_disabled   4 0 0   100%
tests / unit / ai / test_hook.py test_execute_calls_run_ai_enhancement   6 0 0   100%
tests / unit / ai / test_hook.py test_execute_catches_exceptions_and_logs_warning   9 0 0   100%
tests / unit / ai / test_hook.py test_execute_handles_import_failure   9 0 0   100%
tests / unit / ai / test_hook.py (no function)   18 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_no_fallback_when_line_targeting_misses   7 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_line_targeted_does_not_log_warning   6 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_applies_fix   8 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_skips_when_original_not_found   5 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_handles_missing_file   3 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_line_targeted_replacement   9 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_fails_when_line_targeting_misses   7 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_empty_original_code   5 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_blocks_writes_outside_workspace_root   8 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_fails_when_line_misses_with_flag   7 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fix_search_radius_limits_search   7 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fixes_returns_only_successful   5 0 0   100%
tests / unit / ai / test_interactive.py test_apply_fixes_with_auto_apply_flag_fails_when_line_misses   6 0 0   100%
tests / unit / ai / test_interactive.py test_group_by_code_groups_by_code   6 0 0   100%
tests / unit / ai / test_interactive.py test_group_by_code_empty_code_uses_unknown   3 0 0   100%
tests / unit / ai / test_interactive.py test_group_by_code_empty_list   2 0 0   100%
tests / unit / ai / test_interactive.py test_review_fixes_interactive_empty_suggestions   4 0 0   100%
tests / unit / ai / test_interactive.py test_review_fixes_interactive_non_interactive_skips   6 0 0   100%
tests / unit / ai / test_interactive.py test_review_fixes_interactive_prompt_text_clarifies_scope   3 0 0   100%
tests / unit / ai / test_interactive.py test_review_fixes_interactive_accept_via_keyboard   9 0 0   100%
tests / unit / ai / test_interactive.py test_review_fixes_interactive_reject_via_keyboard   7 0 0   100%
tests / unit / ai / test_interactive.py test_review_fixes_interactive_quit_via_keyboard   6 0 0   100%
tests / unit / ai / test_interactive.py (no function)   35 0 0   100%
tests / unit / ai / test_metadata.py test_metadata_summary_and_fixes_coexist   10 0 0   100%
tests / unit / ai / test_metadata.py test_metadata_normalize_supports_legacy_suggestions_key   5 0 0   100%
tests / unit / ai / test_metadata.py test_metadata_fixed_count_is_attached_and_normalized   17 0 0   100%
tests / unit / ai / test_metadata.py test_payload_to_dict_serialization   9 0 0   100%
tests / unit / ai / test_metadata.py (no function)   9 0 0   100%
tests / unit / ai / test_models.py test_models_fix_suggestion_defaults   14 0 0   100%
tests / unit / ai / test_models.py (no function)   4 0 0   100%
tests / unit / ai / test_orchestrator_check.py single_issue_result   1 0 0   100%
tests / unit / ai / test_orchestrator_check.py check_config   1 0 0   100%
tests / unit / ai / test_orchestrator_check.py mock_logger   1 0 0   100%
tests / unit / ai / test_orchestrator_check.py test_run_ai_enhancement_check_fix_preserves_summary_and_fix_metadata   15 0 0   100%
tests / unit / ai / test_orchestrator_check.py test_summary_attachment_summary_attached_to_all_results_with_issues   13 0 0   100%
tests / unit / ai / test_orchestrator_check.py test_log_fix_limit_message_no_log_when_within_limit   3 0 0   100%
tests / unit / ai / test_orchestrator_check.py test_log_fix_limit_message_no_log_when_exactly_at_limit   3 0 0   100%
tests / unit / ai / test_orchestrator_check.py test_log_fix_limit_message_logs_when_over_limit   7 0 0   100%
tests / unit / ai / test_orchestrator_check.py test_integration_orchestrator_end_to_end_check_with_real_summary_generation   9 0 0   100%
tests / unit / ai / test_orchestrator_check.py (no function)   36 0 0   100%
tests / unit / ai / test_orchestrator_edge.py test_ai_result_default_no_error   12 0 0   100%
tests / unit / ai / test_orchestrator_edge.py test_ai_result_unfixed_issues_when_fixes_fail   10 0 0   100%
tests / unit / ai / test_orchestrator_edge.py test_ai_result_error_on_exception   6 0 0   100%
tests / unit / ai / test_orchestrator_edge.py test_ai_result_error_propagates_when_fail_on_ai_error   4 0 0   100%
tests / unit / ai / test_orchestrator_edge.py test_ai_result_tracks_applied_fixes   14 0 0   100%
tests / unit / ai / test_orchestrator_edge.py test_fail_on_unfixed_config_default_is_false   2 0 0   100%
tests / unit / ai / test_orchestrator_edge.py test_fail_on_unfixed_config_can_be_set   2 0 0   100%
tests / unit / ai / test_orchestrator_edge.py (no function)   34 0 0   100%
tests / unit / ai / test_orchestrator_fix.py test_run_ai_enhancement_fix_action_generates_fix_metadata   19 0 0   100%
tests / unit / ai / test_orchestrator_fix.py test_run_ai_enhancement_fix_action_passes_validate_mode_to_interactive_review   10 0 0   100%
tests / unit / ai / test_orchestrator_fix.py test_run_ai_enhancement_fix_action_uses_only_remaining_issue_tail   15 0 0   100%
tests / unit / ai / test_orchestrator_fix.py test_run_ai_enhancement_fix_action_skips_tools_with_zero_remaining_issues   6 0 0   100%
tests / unit / ai / test_orchestrator_fix.py test_run_ai_enhancement_fix_action_uses_fresh_rerun_results_for_post_summary   14 0 0   100%
tests / unit / ai / test_orchestrator_fix.py (no function)   43 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_run_ai_enhancement_fix_action_noninteractive_applies_safe_then_reviews_risky   18 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_run_ai_enhancement_fix_action_json_auto_applies_safe_style_suggestions   18 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_run_ai_enhancement_fix_action_json_uses_fresh_rerun_results   10 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_paths_for_context_relativizes_to_tool_cwd   10 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_rerun_uses_original_tool_cwd   16 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_rerun_uses_original_tool_cwd._FakeTool.check   4 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_rerun_cwd_lock_exists   2 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_rerun_continues_on_tool_failure   20 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_rerun_continues_on_tool_failure._FailingTool.check   2 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_rerun_continues_on_tool_failure._PassingTool.check   2 0 0   100%
tests / unit / ai / test_orchestrator_multi.py test_rerun_context_rerun_continues_on_tool_failure._side_effect   3 0 0   100%
tests / unit / ai / test_orchestrator_multi.py (no function)   42 0 0   100%
tests / unit / ai / test_paths.py _normalize   1 0 0   100%
tests / unit / ai / test_paths.py test_paths_relative_for_cwd_child   4 0 0   100%
tests / unit / ai / test_paths.py test_paths_already_relative   2 0 0   100%
tests / unit / ai / test_paths.py test_paths_relative_on_empty   2 0 0   100%
tests / unit / ai / test_paths.py test_paths_resolve_workspace_root_from_config   4 0 0   100%
tests / unit / ai / test_paths.py test_paths_resolve_workspace_file_accepts_inside   5 0 0   100%
tests / unit / ai / test_paths.py test_paths_resolve_workspace_file_rejects_outside   3 0 0   100%
tests / unit / ai / test_paths.py test_paths_to_provider_path_is_workspace_relative   5 0 0   100%
tests / unit / ai / test_paths.py test_paths_to_provider_path_falls_back_without_leaking_absolute   3 0 0   100%
tests / unit / ai / test_paths.py (no function)   14 0 0   100%
tests / unit / ai / test_pipeline.py _make_suggestion   3 0 0   100%
tests / unit / ai / test_pipeline.py _default_ai_config   3 0 0   100%
tests / unit / ai / test_pipeline.py _make_result   1 0 0   100%
tests / unit / ai / test_pipeline.py _make_fix_issues   1 0 0   100%
tests / unit / ai / test_pipeline.py test_budget_tracking_across_multiple_tools   20 0 0   100%
tests / unit / ai / test_pipeline.py test_safe_vs_risky_suggestion_splitting   15 0 0   100%
tests / unit / ai / test_pipeline.py test_auto_apply_fast_path_json_mode   13 0 0   100%
tests / unit / ai / test_pipeline.py test_interactive_review_path   13 0 0   100%
tests / unit / ai / test_pipeline.py test_no_suggestions_returns_early   11 0 0   100%
tests / unit / ai / test_pipeline.py test_post_fix_summary_generation   15 0 0   100%
tests / unit / ai / test_pipeline.py test_verify_fixes_flow   15 0 0   100%
tests / unit / ai / test_pipeline.py (no function)   74 0 0   100%
tests / unit / ai / test_prompts.py test_fix_system_is_non_empty   1 0 0   100%
tests / unit / ai / test_prompts.py test_fix_system_mentions_json   1 0 0   100%
tests / unit / ai / test_prompts.py test_prompts_template_renders   4 0 0   100%
tests / unit / ai / test_prompts.py test_prompts_template_includes_risk_level   1 0 0   100%
tests / unit / ai / test_prompts.py test_fix_prompt_no_leftover_placeholders   2 0 0   100%
tests / unit / ai / test_prompts.py test_fix_prompt_contains_all_values   3 0 0   100%
tests / unit / ai / test_prompts.py test_fix_prompt_renders_various_issue_types   5 0 0   100%
tests / unit / ai / test_prompts.py test_fix_prompt_special_characters_in_message   5 0 0   100%
tests / unit / ai / test_prompts.py test_fix_prompt_unicode_in_file_path   3 0 0   100%
tests / unit / ai / test_prompts.py test_fix_prompt_spaces_in_file_path   3 0 0   100%
tests / unit / ai / test_prompts.py test_fix_prompt_empty_code_context   3 0 0   100%
tests / unit / ai / test_prompts.py test_fix_prompt_zero_line_number   3 0 0   100%
tests / unit / ai / test_prompts.py test_fix_prompt_very_long_message   3 0 0   100%
tests / unit / ai / test_prompts.py test_summary_system_is_non_empty   1 0 0   100%
tests / unit / ai / test_prompts.py test_summary_prompt_renders   4 0 0   100%
tests / unit / ai / test_prompts.py test_summary_prompt_no_leftover_placeholders   2 0 0   100%
tests / unit / ai / test_prompts.py test_summary_prompt_recommends_lintro   2 0 0   100%
tests / unit / ai / test_prompts.py test_refinement_prompt_renders   4 0 0   100%
tests / unit / ai / test_prompts.py test_batch_prompt_renders   5 0 0   100%
tests / unit / ai / test_prompts.py test_post_fix_summary_prompt_renders   5 0 0   100%
tests / unit / ai / test_prompts.py test_post_fix_summary_prompt_no_leftover_placeholders   2 0 0   100%
tests / unit / ai / test_prompts.py test_post_fix_summary_recommends_lintro   2 0 0   100%
tests / unit / ai / test_prompts.py (no function)   30 0 0   100%
tests / unit / ai / test_refinement.py _make_suggestion   3 0 0   100%
tests / unit / ai / test_refinement.py test_revert_fix_calls_apply_fixes_with_reversed_suggestion   11 0 0   100%
tests / unit / ai / test_refinement.py test_revert_fix_returns_false_when_apply_fails   5 0 0   100%
tests / unit / ai / test_refinement.py test_refine_returns_empty_when_no_unverified_keys   12 0 0   100%
tests / unit / ai / test_refinement.py test_refine_parses_detail_strings_correctly   32 0 0   100%
tests / unit / ai / test_refinement.py test_refine_skips_when_revert_fails   14 0 0   100%
tests / unit / ai / test_refinement.py test_refine_skips_when_parse_returns_none   26 0 0   100%
tests / unit / ai / test_refinement.py (no function)   14 0 0   100%
tests / unit / ai / test_registry.py test_aiprovider_members   2 0 0   100%
tests / unit / ai / test_registry.py test_aiprovider_is_str   2 0 0   100%
tests / unit / ai / test_registry.py test_aiprovider_iteration   3 0 0   100%
tests / unit / ai / test_registry.py test_aiprovider_from_string   2 0 0   100%
tests / unit / ai / test_registry.py test_aiprovider_invalid_value_raises   2 0 0   100%
tests / unit / ai / test_registry.py test_model_pricing_fields   3 0 0   100%
tests / unit / ai / test_registry.py test_model_pricing_frozen   3 0 0   100%
tests / unit / ai / test_registry.py test_provider_info_fields   4 0 0   100%
tests / unit / ai / test_registry.py test_provider_info_default_models_empty   2 0 0   100%
tests / unit / ai / test_registry.py test_registry_items   4 0 0   100%
tests / unit / ai / test_registry.py test_registry_get   4 0 0   100%
tests / unit / ai / test_registry.py test_registry_model_pricing_contains_all_models   4 0 0   100%
tests / unit / ai / test_registry.py test_registry_model_pricing_values_are_model_pricing   2 0 0   100%
tests / unit / ai / test_registry.py test_registry_default_models   5 0 0   100%
tests / unit / ai / test_registry.py test_registry_default_api_key_envs   5 0 0   100%
tests / unit / ai / test_registry.py test_registry_default_model_in_provider_models   2 0 0   100%
tests / unit / ai / test_registry.py test_asdict_produces_nested_dict   6 0 0   100%
tests / unit / ai / test_registry.py test_default_pricing_is_model_pricing   1 0 0   100%
tests / unit / ai / test_registry.py test_default_pricing_values   2 0 0   100%
tests / unit / ai / test_registry.py (no function)   24 0 0   100%
tests / unit / ai / test_rerun.py test_tool_cwd_restores_original_cwd   5 0 0   100%
tests / unit / ai / test_rerun.py test_tool_cwd_skips_when_none   4 0 0   100%
tests / unit / ai / test_rerun.py test_paths_for_context_relativizes_paths   7 0 0   100%
tests / unit / ai / test_rerun.py test_paths_for_context_returns_originals_when_no_cwd   3 0 0   100%
tests / unit / ai / test_rerun.py test_rerun_tools_with_missing_tools   9 0 0   100%
tests / unit / ai / test_rerun.py test_apply_rerun_results_preserves_native_counters   7 0 0   100%
tests / unit / ai / test_rerun.py test_apply_rerun_results_updates_remaining_issues   12 0 0   100%
tests / unit / ai / test_rerun.py (no function)   17 0 0   100%
tests / unit / ai / test_retry.py test_retry_succeeds_on_first_attempt   6 0 0   100%
tests / unit / ai / test_retry.py test_retry_succeeds_on_first_attempt.fn   2 0 0   100%
tests / unit / ai / test_retry.py test_retry_retries_on_provider_error   7 0 0   100%
tests / unit / ai / test_retry.py test_retry_retries_on_provider_error.fn   4 0 0   100%
tests / unit / ai / test_retry.py test_retry_retries_on_rate_limit_error   7 0 0   100%
tests / unit / ai / test_retry.py test_retry_retries_on_rate_limit_error.fn   4 0 0   100%
tests / unit / ai / test_retry.py test_retry_does_not_retry_on_authentication_error   6 0 0   100%
tests / unit / ai / test_retry.py test_retry_does_not_retry_on_authentication_error.fn   2 0 0   100%
tests / unit / ai / test_retry.py test_retry_raises_after_max_retries_exhausted   5 0 0   100%
tests / unit / ai / test_retry.py test_retry_raises_after_max_retries_exhausted.fn   1 0 0   100%
tests / unit / ai / test_retry.py test_retry_exponential_backoff_delays   7 0 0   100%
tests / unit / ai / test_retry.py test_retry_exponential_backoff_delays.fn   4 0 0   100%
tests / unit / ai / test_retry.py test_retry_max_delay_cap   7 0 0   100%
tests / unit / ai / test_retry.py test_retry_max_delay_cap.fn   4 0 0   100%
tests / unit / ai / test_retry.py test_retry_does_not_retry_non_ai_exceptions   6 0 0   100%
tests / unit / ai / test_retry.py test_retry_does_not_retry_non_ai_exceptions.fn   2 0 0   100%
tests / unit / ai / test_retry.py test_retry_preserves_function_metadata   4 0 0   100%
tests / unit / ai / test_retry.py test_retry_preserves_function_metadata.my_function   1 1 0   0%
tests / unit / ai / test_retry.py (no function)   22 0 0   100%
tests / unit / ai / test_risk.py test_safe_style_high_confidence_returns_safe_style   2 0 0   100%
tests / unit / ai / test_risk.py test_safe_style_medium_confidence_returns_safe_style   2 0 0   100%
tests / unit / ai / test_risk.py test_safe_style_low_confidence_returns_behavioral   2 0 0   100%
tests / unit / ai / test_risk.py test_safe_style_empty_confidence_returns_behavioral   2 0 0   100%
tests / unit / ai / test_risk.py test_classify_fix_risk_matrix   2 0 0   100%
tests / unit / ai / test_risk.py test_explicit_behavioral_risk_returns_behavioral   2 0 0   100%
tests / unit / ai / test_risk.py test_empty_risk_level_returns_behavioral   2 0 0   100%
tests / unit / ai / test_risk.py test_unexpected_risk_level_returns_behavioral   2 0 0   100%
tests / unit / ai / test_risk.py test_whitespace_risk_level_returns_behavioral   2 0 0   100%
tests / unit / ai / test_risk.py test_case_insensitive_risk_level   2 0 0   100%
tests / unit / ai / test_risk.py test_case_insensitive_confidence   2 0 0   100%
tests / unit / ai / test_risk.py test_is_safe_style_fix_returns_true_for_safe_style   2 0 0   100%
tests / unit / ai / test_risk.py test_is_safe_style_fix_returns_false_for_behavioral   2 0 0   100%
tests / unit / ai / test_risk.py test_is_safe_style_fix_returns_false_for_empty_risk   2 0 0   100%
tests / unit / ai / test_risk.py test_is_safe_style_fix_returns_false_for_low_confidence_safe   2 0 0   100%
tests / unit / ai / test_risk.py test_heuristic_downgrades_safe_claim_with_behavioral_diff   2 0 0   100%
tests / unit / ai / test_risk.py test_heuristic_allows_whitespace_only_diff   2 0 0   100%
tests / unit / ai / test_risk.py test_heuristic_allows_quote_normalization   2 0 0   100%
tests / unit / ai / test_risk.py test_heuristic_allows_trailing_comma_changes   2 0 0   100%
tests / unit / ai / test_risk.py test_patch_stats_defaults   5 0 0   100%
tests / unit / ai / test_risk.py test_patch_stats_is_frozen   3 0 0   100%
tests / unit / ai / test_risk.py test_calculate_patch_stats_empty_list   2 0 0   100%
tests / unit / ai / test_risk.py test_calculate_patch_stats_from_unified_diff   6 0 0   100%
tests / unit / ai / test_risk.py test_calculate_patch_stats_fallback_without_diff   6 0 0   100%
tests / unit / ai / test_risk.py test_calculate_patch_stats_multiple_files   6 0 0   100%
tests / unit / ai / test_risk.py test_calculate_patch_stats_fallback_lines_removed   4 0 0   100%
tests / unit / ai / test_risk.py (no function)   33 0 0   100%
tests / unit / ai / test_sanitize.py test_normal_python_code_unchanged   2 0 0   100%
tests / unit / ai / test_sanitize.py test_empty_string_unchanged   1 0 0   100%
tests / unit / ai / test_sanitize.py test_safe_code_unchanged   1 0 0   100%
tests / unit / ai / test_sanitize.py test_neutralizes_role_marker   3 0 0   100%
tests / unit / ai / test_sanitize.py test_escapes_xml_tag   4 0 0   100%
tests / unit / ai / test_sanitize.py test_detects_injection_pattern   2 0 0   100%
tests / unit / ai / test_sanitize.py test_no_injection_in_clean_code   2 0 0   100%
tests / unit / ai / test_sanitize.py test_no_injection_for_system_variable   2 0 0   100%
tests / unit / ai / test_sanitize.py test_multiple_injection_patterns_detected   7 0 0   100%
tests / unit / ai / test_sanitize.py test_boundary_marker_starts_with_prefix   2 0 0   100%
tests / unit / ai / test_sanitize.py test_boundary_markers_are_unique   2 0 0   100%
tests / unit / ai / test_sanitize.py test_boundary_marker_is_reasonable_length   2 0 0   100%
tests / unit / ai / test_sanitize.py (no function)   20 0 0   100%
tests / unit / ai / test_sanitize_mode.py _make_issue   1 0 0   100%
tests / unit / ai / test_sanitize_mode.py test_sanitize_mode_warn_returns_prompt   5 0 0   100%
tests / unit / ai / test_sanitize_mode.py test_sanitize_mode_block_returns_none   5 0 0   100%
tests / unit / ai / test_sanitize_mode.py test_sanitize_mode_off_skips_detection   5 0 0   100%
tests / unit / ai / test_sanitize_mode.py test_sanitize_mode_block_allows_clean_files   5 0 0   100%
tests / unit / ai / test_sanitize_mode.py (no function)   11 0 0   100%
tests / unit / ai / test_sarif.py test_risk_to_sarif_level   1 0 0   100%
tests / unit / ai / test_sarif.py test_confidence_to_score   1 0 0   100%
tests / unit / ai / test_sarif.py test_empty_suggestions_produces_valid_sarif   5 0 0   100%
tests / unit / ai / test_sarif.py test_single_suggestion_produces_result   20 0 0   100%
tests / unit / ai / test_sarif.py test_multiple_suggestions_same_rule_deduplicates_rules   6 0 0   100%
tests / unit / ai / test_sarif.py test_different_rules_create_separate_entries   4 0 0   100%
tests / unit / ai / test_sarif.py test_risk_level_maps_correctly   4 0 0   100%
tests / unit / ai / test_sarif.py test_summary_attached_as_run_properties   7 0 0   100%
tests / unit / ai / test_sarif.py test_no_summary_omits_run_properties   2 0 0   100%
tests / unit / ai / test_sarif.py test_custom_tool_name_and_version   4 0 0   100%
tests / unit / ai / test_sarif.py test_no_file_omits_locations   4 0 0   100%
tests / unit / ai / test_sarif.py test_no_suggested_code_omits_fixes   4 0 0   100%
tests / unit / ai / test_sarif.py test_tool_name_in_rule_properties   4 0 0   100%
tests / unit / ai / test_sarif.py test_returns_valid_json   4 0 0   100%
tests / unit / ai / test_sarif.py test_empty_suggestions_returns_valid_json   3 0 0   100%
tests / unit / ai / test_sarif.py test_includes_summary_when_provided   4 0 0   100%
tests / unit / ai / test_sarif.py test_writes_valid_sarif_file   7 0 0   100%
tests / unit / ai / test_sarif.py test_creates_parent_directories   3 0 0   100%
tests / unit / ai / test_sarif.py test_writes_with_summary   5 0 0   100%
tests / unit / ai / test_sarif.py (no function)   28 0 0   100%
tests / unit / ai / test_sarif_artifact.py _make_config   3 0 0   100%
tests / unit / ai / test_sarif_artifact.py _make_logger   1 0 0   100%
tests / unit / ai / test_sarif_artifact.py _call_write   1 0 0   100%
tests / unit / ai / test_sarif_artifact.py test_no_artifacts_when_disabled   6 0 0   100%
tests / unit / ai / test_sarif_artifact.py test_sarif_artifact_written_when_configured   8 0 0   100%
tests / unit / ai / test_sarif_artifact.py test_json_artifact_written_when_configured   8 0 0   100%
tests / unit / ai / test_sarif_artifact.py test_csv_artifact_written_when_configured   7 0 0   100%
tests / unit / ai / test_sarif_artifact.py test_multiple_artifacts_written   7 0 0   100%
tests / unit / ai / test_sarif_artifact.py test_sarif_auto_emits_in_github_actions   6 0 0   100%
tests / unit / ai / test_sarif_artifact.py test_unknown_artifact_format_warns   8 0 0   100%
tests / unit / ai / test_sarif_artifact.py test_artifact_logs_warning_on_write_failure   11 0 0   100%
tests / unit / ai / test_sarif_artifact.py (no function)   20 0 0   100%
tests / unit / ai / test_sarif_bridge.py test_suggestions_from_results_with_metadata   14 0 0   100%
tests / unit / ai / test_sarif_bridge.py test_suggestions_from_results_no_metadata   2 0 0   100%
tests / unit / ai / test_sarif_bridge.py test_suggestions_from_results_empty_fix_suggestions   2 0 0   100%
tests / unit / ai / test_sarif_bridge.py test_summary_from_results_with_metadata   8 0 0   100%
tests / unit / ai / test_sarif_bridge.py test_summary_from_results_no_metadata   2 0 0   100%
tests / unit / ai / test_sarif_bridge.py test_summary_from_results_picks_first   6 0 0   100%
tests / unit / ai / test_sarif_bridge.py test_sarif_format_end_to_end   17 0 0   100%
tests / unit / ai / test_sarif_bridge.py (no function)   13 0 0   100%
tests / unit / ai / test_secrets.py test_no_secrets_in_clean_code   2 0 0   100%
tests / unit / ai / test_secrets.py test_empty_string_no_secrets   1 0 0   100%
tests / unit / ai / test_secrets.py test_normal_variable_assignments   2 0 0   100%
tests / unit / ai / test_secrets.py test_detects_secret_pattern   3 0 0   100%
tests / unit / ai / test_secrets.py test_does_not_detect_short_values   1 0 0   100%
tests / unit / ai / test_secrets.py test_detects_multiple_secrets   3 0 0   100%
tests / unit / ai / test_secrets.py test_redact_clean_text_unchanged   2 0 0   100%
tests / unit / ai / test_secrets.py test_redact_replaces_secret   3 0 0   100%
tests / unit / ai / test_secrets.py test_redact_multiple_secrets   6 0 0   100%
tests / unit / ai / test_secrets.py test_redact_preserves_surrounding_text   5 0 0   100%
tests / unit / ai / test_secrets.py test_empty_string_redact   1 0 0   100%
tests / unit / ai / test_secrets.py (no function)   18 0 0   100%
tests / unit / ai / test_stream_fallback.py _make_response   1 0 0   100%
tests / unit / ai / test_stream_fallback.py _SuccessProvider.__init__   8 0 0   100%
tests / unit / ai / test_stream_fallback.py _SuccessProvider._create_client   1 1 0   0%
tests / unit / ai / test_stream_fallback.py _SuccessProvider.complete   1 1 0   0%
tests / unit / ai / test_stream_fallback.py _SuccessProvider.stream_complete   2 0 0   100%
tests / unit / ai / test_stream_fallback.py _FailingProvider.__init__   7 0 0   100%
tests / unit / ai / test_stream_fallback.py _FailingProvider._create_client   1 1 0   0%
tests / unit / ai / test_stream_fallback.py _FailingProvider.complete   1 1 0   0%
tests / unit / ai / test_stream_fallback.py _FailingProvider.stream_complete   1 0 0   100%
tests / unit / ai / test_stream_fallback.py test_stream_fallback_returns_first_success   4 0 0   100%
tests / unit / ai / test_stream_fallback.py test_stream_fallback_tries_fallback_models   8 0 0   100%
tests / unit / ai / test_stream_fallback.py test_stream_fallback_tries_fallback_models._ModelTrackingProvider.stream_complete   4 0 0   100%
tests / unit / ai / test_stream_fallback.py test_stream_fallback_raises_when_all_fail   3 0 0   100%
tests / unit / ai / test_stream_fallback.py test_stream_fallback_restores_model_name   7 0 0   100%
tests / unit / ai / test_stream_fallback.py test_stream_fallback_restores_model_name._FailThenSuccessProvider.stream_complete   3 0 0   100%
tests / unit / ai / test_stream_fallback.py (no function)   22 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_terminal_renders_overview   6 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_terminal_empty_summary   3 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_terminal_cost_display   5 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_terminal_strips_leading_numbers_from_priority_actions   7 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_terminal_renders_triage_suggestions   5 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_terminal_omits_triage_when_empty   3 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_github_renders_with_groups   6 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_github_strips_leading_numbers_from_priority_actions   4 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_github_renders_triage_suggestions   5 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_github_omits_triage_when_empty   3 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_markdown_renders_with_details   7 0 0   100%
tests / unit / ai / test_summary_formatting.py test_render_summary_markdown_renders_triage_suggestions   4 0 0   100%
tests / unit / ai / test_summary_formatting.py (no function)   16 0 0   100%
tests / unit / ai / test_summary_generation.py test_build_issues_digest_builds_digest_from_results   7 0 0   100%
tests / unit / ai / test_summary_generation.py test_build_issues_digest_empty_results   2 0 0   100%
tests / unit / ai / test_summary_generation.py test_build_issues_digest_skipped_results_excluded   3 0 0   100%
tests / unit / ai / test_summary_generation.py test_build_issues_digest_sample_locations_capped   4 0 0   100%
tests / unit / ai / test_summary_generation.py test_build_issues_digest_redacts_absolute_paths_for_provider   7 0 0   100%
tests / unit / ai / test_summary_generation.py test_parse_summary_response_valid_json   8 0 0   100%
tests / unit / ai / test_summary_generation.py test_parse_summary_response_parses_triage_suggestions   4 0 0   100%
tests / unit / ai / test_summary_generation.py test_parse_summary_response_missing_triage_defaults_to_empty   3 0 0   100%
tests / unit / ai / test_summary_generation.py test_parse_summary_response_invalid_json_fallback   3 0 0   100%
tests / unit / ai / test_summary_generation.py test_parse_summary_response_empty_content   2 0 0   100%
tests / unit / ai / test_summary_generation.py test_parse_summary_response_non_dict_json_list   6 0 0   100%
tests / unit / ai / test_summary_generation.py test_parse_summary_response_non_dict_json_string   5 0 0   100%
tests / unit / ai / test_summary_generation.py test_parse_summary_response_non_dict_json_int   4 0 0   100%
tests / unit / ai / test_summary_generation.py test_generate_summary_returns_none_for_no_issues   5 0 0   100%
tests / unit / ai / test_summary_generation.py test_generate_summary_generates_summary   8 0 0   100%
tests / unit / ai / test_summary_generation.py test_generate_summary_handles_provider_error   6 0 0   100%
tests / unit / ai / test_summary_generation.py test_generate_summary_handles_provider_error.ErrorProvider.complete   1 0 0   100%
tests / unit / ai / test_summary_generation.py (no function)   23 0 0   100%
tests / unit / ai / test_telemetry.py test_defaults_are_zero   8 0 0   100%
tests / unit / ai / test_telemetry.py test_record_call_increments_all_fields   7 0 0   100%
tests / unit / ai / test_telemetry.py test_multiple_calls_accumulate   8 0 0   100%
tests / unit / ai / test_telemetry.py test_to_dict_returns_correct_dict   6 0 0   100%
tests / unit / ai / test_telemetry.py test_to_dict_rounds_cost   4 0 0   100%
tests / unit / ai / test_telemetry.py test_to_dict_rounds_latency   4 0 0   100%
tests / unit / ai / test_telemetry.py (no function)   9 0 0   100%
tests / unit / ai / test_token_budget.py test_empty_string_returns_zero   1 0 0   100%
tests / unit / ai / test_token_budget.py test_short_string_returns_at_least_one   1 0 0   100%
tests / unit / ai / test_token_budget.py test_four_chars_equals_one_token   1 0 0   100%
tests / unit / ai / test_token_budget.py test_eight_chars_equals_two_tokens   1 0 0   100%
tests / unit / ai / test_token_budget.py test_no_truncation_when_under_budget   4 0 0   100%
tests / unit / ai / test_token_budget.py test_truncation_sets_flag   4 0 0   100%
tests / unit / ai / test_token_budget.py test_truncation_cuts_at_newline   6 0 0   100%
tests / unit / ai / test_token_budget.py test_empty_string_no_truncation   3 0 0   100%
tests / unit / ai / test_token_budget.py test_truncate_raises_on_non_positive_max_tokens   2 0 0   100%
tests / unit / ai / test_token_budget.py (no function)   14 0 0   100%
tests / unit / ai / test_undo.py _make_suggestion   1 0 0   100%
tests / unit / ai / test_undo.py test_saves_patch_file   5 0 0   100%
tests / unit / ai / test_undo.py test_returns_path   4 0 0   100%
tests / unit / ai / test_undo.py test_reverse_diff_suggested_to_original   6 0 0   100%
tests / unit / ai / test_undo.py test_empty_list_returns_none   2 0 0   100%
tests / unit / ai / test_undo.py test_patch_content_is_valid_unified_diff   7 0 0   100%
tests / unit / ai / test_undo.py (no function)   11 0 0   100%
tests / unit / ai / test_validation_applied.py _make_suggestion   1 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_returns_none_for_empty   2 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_verified_when_issue_gone   6 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_unverified_when_issue_remains   11 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_mixed_verified_and_unverified   13 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_matches_by_line_before_file_code   13 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_unknown_remaining_line_marks_issue_unverified   10 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_skips_unknown_tool   4 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_skips_when_check_returns_none   4 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_groups_by_tool   7 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_matches_relative_remaining_paths_against_absolute_fixes   13 0 0   100%
tests / unit / ai / test_validation_applied.py test_validate_applied_fixes_tracks_new_issues   14 0 0   100%
tests / unit / ai / test_validation_applied.py test_run_tool_check_returns_issues   8 0 0   100%
tests / unit / ai / test_validation_applied.py test_run_tool_check_returns_none_on_error   6 0 0   100%
tests / unit / ai / test_validation_applied.py test_run_tool_check_returns_none_for_missing_tool   4 0 0   100%
tests / unit / ai / test_validation_applied.py (no function)   35 0 0   100%
tests / unit / ai / test_validation_core.py _make_suggestion   1 0 0   100%
tests / unit / ai / test_validation_core.py test_render_validation_terminal_renders_verified   3 0 0   100%
tests / unit / ai / test_validation_core.py test_render_validation_terminal_renders_unverified_with_details   6 0 0   100%
tests / unit / ai / test_validation_core.py test_render_validation_terminal_empty_result_returns_empty   3 0 0   100%
tests / unit / ai / test_validation_core.py test_validate_suggestions_verified_when_no_remaining_issues   4 0 0   100%
tests / unit / ai / test_validation_core.py test_validate_suggestions_unverified_when_issue_remains   8 0 0   100%
tests / unit / ai / test_validation_core.py test_validate_suggestions_skips_tool_without_fresh_issues   4 0 0   100%
tests / unit / ai / test_validation_core.py test_verify_fixes_returns_none_for_empty_suggestions   2 0 0   100%
tests / unit / ai / test_validation_core.py test_verify_fixes_runs_tools_once_and_validates   13 0 0   100%
tests / unit / ai / test_validation_core.py test_verify_fixes_updates_tool_results_and_validates   16 0 0   100%
tests / unit / ai / test_validation_core.py test_verify_fixes_handles_no_rerun_results   8 0 0   100%
tests / unit / ai / test_validation_core.py (no function)   25 0 0   100%
tests / unit / cli / __init__.py (no function)   0 0 0   100%
tests / unit / cli / conftest.py isolated_cli_runner   1 1 0   0%
tests / unit / cli / conftest.py mock_run_lint_tools_simple   4 4 0   0%
tests / unit / cli / conftest.py mock_run_lint_tools_check   3 0 0   100%
tests / unit / cli / conftest.py mock_run_lint_tools_format   3 0 0   100%
tests / unit / cli / conftest.py mock_tool_registry   5 5 0   0%
tests / unit / cli / conftest.py mock_subprocess_success   3 3 0   0%
tests / unit / cli / conftest.py (no function)   19 0 2   100%
tests / unit / cli / test_check_command.py test_check_command_help   3 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_default_paths   5 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_with_paths   6 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_exit_code_zero_on_success   4 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_exit_code_nonzero_on_issues   4 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_tools_option   5 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_exclude_option   5 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_include_venv_flag   5 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_output_format_option   5 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_output_format_valid_choices   3 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_group_by_option   5 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_group_by_valid_choices   3 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_verbose_flag   5 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_raw_output_flag   5 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_tool_options   5 0 0   100%
tests / unit / cli / test_check_command.py test_check_command_output_file   6 0 0   100%
tests / unit / cli / test_check_command.py test_check_function_calls_command   8 0 0   100%
tests / unit / cli / test_check_command.py test_check_function_exits_on_failure   9 0 0   100%
tests / unit / cli / test_check_command.py (no function)   27 0 0   100%
tests / unit / cli / test_cli.py test_cli_version_option   3 0 0   100%
tests / unit / cli / test_cli.py test_cli_help_option   3 0 0   100%
tests / unit / cli / test_cli.py test_cli_no_command_shows_help   2 0 0   100%
tests / unit / cli / test_cli.py test_cli_invalid_command   2 0 0   100%
tests / unit / cli / test_cli.py test_main_entry_point   5 0 0   100%
tests / unit / cli / test_cli.py test_lintro_group_format_help_includes_commands   4 0 0   100%
tests / unit / cli / test_cli.py test_lintro_group_format_help_includes_aliases   4 0 0   100%
tests / unit / cli / test_cli.py test_lintro_group_format_commands_empty   5 0 0   100%
tests / unit / cli / test_cli.py test_cli_has_check_command   3 0 0   100%
tests / unit / cli / test_cli.py test_cli_has_format_command   3 0 0   100%
tests / unit / cli / test_cli.py test_cli_has_test_command   2 0 0   100%
tests / unit / cli / test_cli.py test_cli_has_config_command   2 0 0   100%
tests / unit / cli / test_cli.py test_cli_has_versions_command   2 0 0   100%
tests / unit / cli / test_cli.py test_cli_has_list_tools_command   2 0 0   100%
tests / unit / cli / test_cli.py test_cli_has_init_command   2 0 0   100%
tests / unit / cli / test_cli.py test_cli_alias_resolves_to_command   2 0 0   100%
tests / unit / cli / test_cli.py test_lintro_group_invoke_normalizes_comma_separated_commands   7 0 0   100%
tests / unit / cli / test_cli.py test_lintro_group_invoke_single_command   5 0 0   100%
tests / unit / cli / test_cli.py test_lintro_group_invoke_handles_keyboard_interrupt   5 0 0   100%
tests / unit / cli / test_cli.py test_lintro_group_invoke_aggregates_exit_codes   6 0 0   100%
tests / unit / cli / test_cli.py (no function)   29 0 0   100%
tests / unit / cli / test_cli_commands.py test_cli_lists_commands_and_aliases   9 0 0   100%
tests / unit / cli / test_cli_commands.py (no function)   5 0 0   100%
tests / unit / cli / test_cli_commands_more.py test_check_invokes_executor   8 0 0   100%
tests / unit / cli / test_cli_commands_more.py test_check_invokes_executor.fake_run   2 0 0   100%
tests / unit / cli / test_cli_commands_more.py test_format_invokes_executor   8 0 0   100%
tests / unit / cli / test_cli_commands_more.py test_format_invokes_executor.fake_run   2 0 0   100%
tests / unit / cli / test_cli_commands_more.py test_list_tools_outputs   5 0 0   100%
tests / unit / cli / test_cli_commands_more.py (no function)   11 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_format_commands_displays_canonical_names   7 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_format_commands_with_aliases   5 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_check_command_help_displays   4 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_format_command_help_displays   4 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_test_command_help_displays   4 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_list_tools_command_help_displays   3 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_single_command_execution   6 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_with_comma_separated_commands   10 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_aggregates_exit_codes_success   5 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_with_version_flag   4 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_with_help_flag   4 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_without_command_shows_help   3 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_with_invalid_command   3 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_command_not_found   4 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_chaining_ignores_empty_command_groups   8 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_chaining_with_flags   10 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_with_realistic_comma_separated_inputs   8 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_with_chk_tst_input   8 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_handles_system_exit   7 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_preserves_max_exit_code   5 0 0   100%
tests / unit / cli / test_cli_lintro_group.py test_invoke_with_exception_in_command   6 0 0   100%
tests / unit / cli / test_cli_lintro_group.py (no function)   25 0 0   100%
tests / unit / cli / test_cli_programmatic.py test_check_programmatic_success   9 0 0   100%
tests / unit / cli / test_cli_programmatic.py test_check_programmatic_failure_raises   5 0 0   100%
tests / unit / cli / test_cli_programmatic.py test_format_programmatic_success   9 0 0   100%
tests / unit / cli / test_cli_programmatic.py test_format_programmatic_failure_raises   4 0 0   100%
tests / unit / cli / test_cli_programmatic.py (no function)   11 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_help   3 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_default_paths   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_with_paths   6 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_exit_code_zero_on_success   4 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_exit_code_nonzero_on_error   4 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_tools_option   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_exclude_option   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_include_venv_flag   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_output_format_option   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_output_format_valid_choices   3 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_group_by_option   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_group_by_valid_choices   3 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_verbose_flag   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_verbose_short_flag   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_raw_output_flag   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_tool_options   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_uses_fmt_action   5 0 0   100%
tests / unit / cli / test_format_command.py test_format_code_function_calls_command   8 0 0   100%
tests / unit / cli / test_format_command.py test_format_code_function_raises_on_failure   10 0 0   100%
tests / unit / cli / test_format_command.py test_format_code_function_default_parameters   11 0 0   100%
tests / unit / cli / test_format_command.py test_format_code_function_with_all_options   16 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_invalid_output_format   4 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_invalid_group_by   4 0 0   100%
tests / unit / cli / test_format_command.py test_format_command_multiple_paths   8 0 0   100%
tests / unit / cli / test_format_command.py (no function)   33 0 0   100%
tests / unit / cli_utils / __init__.py (no function)   0 0 0   100%
tests / unit / cli_utils / command_chainer / __init__.py (no function)   0 0 0   100%
tests / unit / cli_utils / command_chainer / conftest.py mock_group   11 0 0   100%
tests / unit / cli_utils / command_chainer / conftest.py mock_group.cli   1 0 0   100%
tests / unit / cli_utils / command_chainer / conftest.py mock_group.fmt_cmd   1 0 0   100%
tests / unit / cli_utils / command_chainer / conftest.py mock_group.chk_cmd   1 1 0   0%
tests / unit / cli_utils / command_chainer / conftest.py mock_group.tst_cmd   1 1 0   0%
tests / unit / cli_utils / command_chainer / conftest.py (no function)   5 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_chain_all_success   6 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_chain_returns_max_exit_code   5 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_chain_empty_groups   4 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_chain_skips_empty_groups   6 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_single_command_success   4 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_single_command_handles_system_exit   5 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_single_command_handles_system_exit_none   5 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_single_command_reraises_keyboard_interrupt   5 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_single_command_handles_exception   5 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py test_execute_single_command_uses_exit_code_attribute   7 0 0   100%
tests / unit / cli_utils / command_chainer / test_execute.py (no function)   16 0 0   100%
tests / unit / cli_utils / command_chainer / test_group_commands.py test_group_single_command   3 0 0   100%
tests / unit / cli_utils / command_chainer / test_group_commands.py test_group_two_commands   3 0 0   100%
tests / unit / cli_utils / command_chainer / test_group_commands.py test_group_three_commands   3 0 0   100%
tests / unit / cli_utils / command_chainer / test_group_commands.py test_group_empty_args   3 0 0   100%
tests / unit / cli_utils / command_chainer / test_group_commands.py test_group_ignores_empty_groups   3 0 0   100%
tests / unit / cli_utils / command_chainer / test_group_commands.py (no function)   9 0 0   100%
tests / unit / cli_utils / command_chainer / test_init.py test_init_with_default_separator   4 0 0   100%
tests / unit / cli_utils / command_chainer / test_init.py test_init_with_custom_separator   2 0 0   100%
tests / unit / cli_utils / command_chainer / test_init.py test_command_names_lazy_loading   5 0 0   100%
tests / unit / cli_utils / command_chainer / test_init.py test_command_names_cached   4 0 0   100%
tests / unit / cli_utils / command_chainer / test_init.py (no function)   8 0 0   100%
tests / unit / cli_utils / command_chainer / test_integration.py test_full_workflow_parse_and_group   7 0 0   100%
tests / unit / cli_utils / command_chainer / test_integration.py test_full_workflow_joined_commands   7 0 0   100%
tests / unit / cli_utils / command_chainer / test_integration.py (no function)   6 0 0   100%
tests / unit / cli_utils / command_chainer / test_normalize_args.py test_normalize_already_separated   3 0 0   100%
tests / unit / cli_utils / command_chainer / test_normalize_args.py test_normalize_joined_commands   3 0 0   100%
tests / unit / cli_utils / command_chainer / test_normalize_args.py test_normalize_preserves_arguments   3 0 0   100%
tests / unit / cli_utils / command_chainer / test_normalize_args.py test_normalize_preserves_comma_in_option_value   3 0 0   100%
tests / unit / cli_utils / command_chainer / test_normalize_args.py test_normalize_multiple_commands   3 0 0   100%
tests / unit / cli_utils / command_chainer / test_normalize_args.py (no function)   9 0 0   100%
tests / unit / cli_utils / command_chainer / test_should_chain.py test_should_chain_with_comma_separator   2 0 0   100%
tests / unit / cli_utils / command_chainer / test_should_chain.py test_should_chain_with_joined_commands   2 0 0   100%
tests / unit / cli_utils / command_chainer / test_should_chain.py test_should_not_chain_single_command   2 0 0   100%
tests / unit / cli_utils / command_chainer / test_should_chain.py test_should_not_chain_comma_in_argument   2 0 0   100%
tests / unit / cli_utils / command_chainer / test_should_chain.py test_should_not_chain_empty_args   2 0 0   100%
tests / unit / cli_utils / command_chainer / test_should_chain.py (no function)   9 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py _make_tool   1 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py _make_context   4 1 0   75%
tests / unit / cli_utils / commands / test_doctor_command.py test_compare_versions   1 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_check_tool_ok   8 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_check_tool_outdated   7 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_check_tool_missing_not_in_path   6 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_check_tool_missing_command_failed   7 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_check_tool_missing_timeout   6 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_check_tool_missing_os_error   6 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_check_tool_unknown_no_version   7 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_check_tool_no_version_command   5 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_check_tool_upgrade_hint_populated   7 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_output_json_produces_valid_json   10 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_output_json_includes_unknown_in_issues   10 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_markdown_report_contains_headers   14 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py _patch_doctor_deps   7 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_doctor_all_ok_exit_0   6 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_doctor_missing_tool_exit_1   5 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_doctor_json_output_valid   7 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_doctor_fix_incompatible_with_json   7 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_doctor_tools_filter_known_tool   7 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py test_doctor_unknown_tool_name_exit_1   6 0 0   100%
tests / unit / cli_utils / commands / test_doctor_command.py (no function)   37 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_default_paths_is_current_dir   1 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_default_exit_code_is_zero   1 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_default_action_is_fmt   1 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_command_defaults_to_current_dir   8 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_command_with_paths   6 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_command_with_tools_option   6 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_command_with_exclude   6 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_command_with_include_venv   6 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_command_with_verbose   6 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_command_with_output_format   6 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_command_returns_tool_exit_code   4 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_code_invokes_command   7 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_code_raises_on_failure   8 0 0   100%
tests / unit / cli_utils / commands / test_format.py test_format_code_passes_options   14 0 0   100%
tests / unit / cli_utils / commands / test_format.py (no function)   32 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py _make_tool   1 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py _mock_registry   7 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py _patches   2 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py test_install_all_already_installed   8 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py test_install_specific_tools   10 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py test_install_dry_run   10 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py test_install_conflicting_selectors   6 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py test_install_unknown_tool_name   6 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py test_install_unknown_profile   6 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py test_install_all_flag   8 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py test_install_failure_exit_1   9 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py test_detect_languages_returns_list   3 0 0   100%
tests / unit / cli_utils / commands / test_install_command.py (no function)   20 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_python   4 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_javascript   4 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_typescript_via_tsconfig   5 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_rust   4 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_shell   6 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_docker   4 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_github_actions   4 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_multiple_languages   6 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_empty_project   3 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_uv_manager   5 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_pip_manager_no_uv   5 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_detect_bun_manager   5 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_generate_config_structure   6 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_generate_config_python_line_length   2 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_generate_config_no_python   2 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py _patch_setup_deps   6 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_setup_dry_run   7 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_setup_profile_yes   7 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_setup_invalid_profile   7 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py test_setup_skip_install   6 0 0   100%
tests / unit / cli_utils / commands / test_setup_command.py (no function)   29 0 0   100%
tests / unit / compatibility / conftest.py (no function)   0 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py FakeTool.__init__   3 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py FakeTool.definition   1 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py FakeTool.can_fix   1 1 0   0%
tests / unit / compatibility / test_compatibility_ruff_black.py FakeTool.set_options   1 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py FakeTool.reset_options   1 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py FakeTool.check   1 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py FakeTool.fix   1 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py _stub_logger   4 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py _stub_logger.SilentLogger.__getattr__   2 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py _stub_logger.SilentLogger.__getattr__._   1 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py _setup_tools   10 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py _setup_tools.fake_get_tools   1 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py _setup_tools.noop_write_reports_from_results   1 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py test_ruff_formatting_disabled_when_black_present   5 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py test_ruff_formatting_respects_cli_override   6 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py test_ruff_format_check_disabled_in_check_when_black_present   5 0 0   100%
tests / unit / compatibility / test_compatibility_ruff_black.py (no function)   34 0 2   100%
tests / unit / config / conftest.py temp_config_dir   5 5 0   0%
tests / unit / config / conftest.py mock_config_loader   3 3 0   0%
tests / unit / config / conftest.py (no function)   8 0 0   100%
tests / unit / config / test_config_compatibility.py test_get_central_line_length_delegates_to_unified_config   5 0 0   100%
tests / unit / config / test_config_compatibility.py test_validate_line_length_consistency_delegates_to_unified_config   7 0 0   100%
tests / unit / config / test_config_compatibility.py test_validate_line_length_consistency_returns_empty_list_when_valid   4 0 0   100%
tests / unit / config / test_config_compatibility.py (no function)   7 0 0   100%
tests / unit / config / test_config_cwd_cache.py test_load_pyproject_returns_different_data_per_cwd   14 0 0   100%
tests / unit / config / test_config_cwd_cache.py test_load_pyproject_cwd_aware_without_cache_clear   13 0 0   100%
tests / unit / config / test_config_cwd_cache.py (no function)   7 0 0   100%
tests / unit / config / test_config_loader.py test_load_lintro_tool_config   11 0 0   100%
tests / unit / config / test_config_loader.py test_config_loader_handles_missing_and_malformed_pyproject   8 0 0   100%
tests / unit / config / test_config_loader.py test_load_pyproject_toml_parse_error_logs_warning   12 0 0   100%
tests / unit / config / test_config_loader.py test_load_pyproject_os_error_logs_debug   11 0 0   100%
tests / unit / config / test_config_loader.py (no function)   11 0 0   100%
tests / unit / config / test_config_loader_more.py test_load_post_checks_config_present   8 0 0   100%
tests / unit / config / test_config_loader_more.py (no function)   6 0 0   100%
tests / unit / config / test_config_loaders.py reset_pyproject_cache   1 0 0   100%
tests / unit / config / test_config_loaders.py mock_empty_pyproject   1 0 0   100%
tests / unit / config / test_config_loaders.py mock_lintro_section   2 0 0   100%
tests / unit / config / test_config_loaders.py mock_lintro_section._create_mock   1 0 0   100%
tests / unit / config / test_config_loaders.py test_load_pyproject_config_is_alias_for_load_pyproject   4 0 0   100%
tests / unit / config / test_config_loaders.py test_get_lintro_section_handles_various_inputs   4 0 0   100%
tests / unit / config / test_config_loaders.py test_load_lintro_global_config_filters_tool_sections   6 0 0   100%
tests / unit / config / test_config_loaders.py test_load_lintro_global_config_returns_empty_when_no_globals   3 0 0   100%
tests / unit / config / test_config_loaders.py test_load_lintro_tool_config_handles_various_inputs   4 0 0   100%
tests / unit / config / test_config_loaders.py test_get_tool_order_config_returns_defaults_when_not_configured   7 0 0   100%
tests / unit / config / test_config_loaders.py test_get_tool_order_config_returns_custom_values_when_configured   8 0 0   100%
tests / unit / config / test_config_loaders.py test_load_post_checks_config_handles_various_inputs   4 0 0   100%
tests / unit / config / test_config_loaders.py test_load_tool_config_from_pyproject_handles_various_inputs   4 0 0   100%
tests / unit / config / test_config_loaders.py (no function)   25 0 0   100%
tests / unit / config / test_config_tool_specific.py mock_load_tool_config   2 0 0   100%
tests / unit / config / test_config_tool_specific.py mock_load_tool_config._create_mock   1 0 0   100%
tests / unit / config / test_config_tool_specific.py test_load_ruff_config_flattens_lint_section   8 0 0   100%
tests / unit / config / test_config_tool_specific.py test_load_ruff_config_handles_non_dict_lint_section   4 0 0   100%
tests / unit / config / test_config_tool_specific.py test_load_ruff_config_handles_empty_config   3 0 0   100%
tests / unit / config / test_config_tool_specific.py test_tool_config_loaders_return_correct_config   4 0 0   100%
tests / unit / config / test_config_tool_specific.py test_load_mypy_config_from_pyproject   6 0 0   100%
tests / unit / config / test_config_tool_specific.py test_load_mypy_config_from_mypy_ini   5 0 0   100%
tests / unit / config / test_config_tool_specific.py test_load_mypy_config_from_dot_mypy_ini   5 0 0   100%
tests / unit / config / test_config_tool_specific.py test_load_mypy_config_returns_empty_when_no_config_file   4 0 0   100%
tests / unit / config / test_config_tool_specific.py test_load_mypy_config_defaults_to_cwd_when_no_base_dir   6 0 0   100%
tests / unit / config / test_config_tool_specific.py (no function)   19 0 0   100%
tests / unit / config / test_enforce_config.py test_enforce_config_default_line_length   2 0 0   100%
tests / unit / config / test_enforce_config.py test_enforce_config_default_target_python   2 0 0   100%
tests / unit / config / test_enforce_config.py test_enforce_config_set_line_length   2 0 0   100%
tests / unit / config / test_enforce_config.py test_enforce_config_set_target_python   2 0 0   100%
tests / unit / config / test_enforce_config.py test_enforce_config_full_init   3 0 0   100%
tests / unit / config / test_enforce_config.py test_enforce_config_line_length_minimum   2 0 0   100%
tests / unit / config / test_enforce_config.py test_enforce_config_line_length_maximum   2 0 0   100%
tests / unit / config / test_enforce_config.py test_enforce_config_line_length_boundary_min   2 0 0   100%
tests / unit / config / test_enforce_config.py test_enforce_config_line_length_boundary_max   2 0 0   100%
tests / unit / config / test_enforce_config.py (no function)   13 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_default_enabled_tools   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_default_tool_order   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_default_fail_fast   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_default_parallel   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_max_workers_uses_cpu_count   3 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_set_enabled_tools   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_tool_order_alphabetical   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_tool_order_custom_list   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_set_fail_fast   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_set_parallel_false   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_set_max_workers   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_max_workers_minimum   2 0 0   100%
tests / unit / config / test_execution_config.py test_execution_config_max_workers_maximum   2 0 0   100%
tests / unit / config / test_execution_config.py test_get_default_max_workers_returns_cpu_count   3 0 0   100%
tests / unit / config / test_execution_config.py test_get_default_max_workers_handles_none_cpu_count   3 0 0   100%
tests / unit / config / test_execution_config.py test_get_default_max_workers_clamps_high_count   3 0 0   100%
tests / unit / config / test_execution_config.py test_get_default_max_workers_fallback_on_zero   3 0 0   100%
tests / unit / config / test_execution_config.py (no function)   23 0 0   100%
tests / unit / config / test_lintro_config.py test_lintro_config_default_execution   2 0 0   100%
tests / unit / config / test_lintro_config.py test_lintro_config_default_enforce   2 0 0   100%
tests / unit / config / test_lintro_config.py test_lintro_config_default_defaults   2 0 0   100%
tests / unit / config / test_lintro_config.py test_lintro_config_default_tools   2 0 0   100%
tests / unit / config / test_lintro_config.py test_lintro_config_default_config_path   2 0 0   100%
tests / unit / config / test_lintro_config.py test_lintro_config_set_config_path   2 0 0   100%
tests / unit / config / test_lintro_config.py test_get_tool_config_returns_configured_tool   4 0 0   100%
tests / unit / config / test_lintro_config.py test_get_tool_config_returns_default_for_missing   4 0 0   100%
tests / unit / config / test_lintro_config.py test_get_tool_config_case_insensitive   4 0 0   100%
tests / unit / config / test_lintro_config.py test_is_tool_enabled_default_true   2 0 0   100%
tests / unit / config / test_lintro_config.py test_is_tool_enabled_respects_tool_config   3 0 0   100%
tests / unit / config / test_lintro_config.py test_is_tool_enabled_respects_enabled_tools_filter   4 0 0   100%
tests / unit / config / test_lintro_config.py test_is_tool_enabled_empty_enabled_tools_allows_all   4 0 0   100%
tests / unit / config / test_lintro_config.py test_is_tool_enabled_case_insensitive   4 0 0   100%
tests / unit / config / test_lintro_config.py test_get_tool_defaults_returns_configured_defaults   3 0 0   100%
tests / unit / config / test_lintro_config.py test_get_tool_defaults_returns_empty_for_missing   3 0 0   100%
tests / unit / config / test_lintro_config.py test_get_tool_defaults_case_insensitive   3 0 0   100%
tests / unit / config / test_lintro_config.py test_get_effective_line_length_returns_enforced   4 0 0   100%
tests / unit / config / test_lintro_config.py test_get_effective_line_length_returns_none_when_not_set   3 0 0   100%
tests / unit / config / test_lintro_config.py test_get_effective_target_python_returns_enforced   4 0 0   100%
tests / unit / config / test_lintro_config.py test_get_effective_target_python_returns_none_when_not_set   3 0 0   100%
tests / unit / config / test_lintro_config.py (no function)   27 0 0   100%
tests / unit / config / test_unified_config.py test_tool_order_strategy_values   1 0 0   100%
tests / unit / config / test_unified_config.py test_default_values   7 0 0   100%
tests / unit / config / test_unified_config.py test_line_length_setting_exists   1 0 0   100%
tests / unit / config / test_unified_config.py test_line_length_has_tools   6 0 0   100%
tests / unit / config / test_unified_config.py test_line_length_has_injectable_tools   6 0 0   100%
tests / unit / config / test_unified_config.py test_formatters_have_lower_priority_than_linters   2 0 0   100%
tests / unit / config / test_unified_config.py test_pytest_runs_last   4 0 0   100%
tests / unit / config / test_unified_config.py test_tool_is_injectable   1 0 0   100%
tests / unit / config / test_unified_config.py (no function)   14 0 0   100%
tests / unit / conftest.py FakeLogger.__init__   2 0 0   100%
tests / unit / conftest.py FakeLogger._rec   1 0 0   100%
tests / unit / conftest.py FakeLogger.info   1 1 0   0%
tests / unit / conftest.py FakeLogger.debug   1 1 0   0%
tests / unit / conftest.py FakeLogger.warning   1 1 0   0%
tests / unit / conftest.py FakeLogger.error   1 1 0   0%
tests / unit / conftest.py FakeLogger.success   1 1 0   0%
tests / unit / conftest.py FakeLogger.console_output   1 0 0   100%
tests / unit / conftest.py FakeLogger.print_lintro_header   1 0 0   100%
tests / unit / conftest.py FakeLogger.print_verbose_info   1 1 0   0%
tests / unit / conftest.py FakeLogger.print_tool_header   1 0 0   100%
tests / unit / conftest.py FakeLogger.print_tool_result   1 1 0   0%
tests / unit / conftest.py FakeLogger.print_execution_summary   1 0 0   100%
tests / unit / conftest.py FakeLogger.print_post_checks_header   1 0 0   100%
tests / unit / conftest.py FakeLogger.save_console_log   1 1 0   0%
tests / unit / conftest.py fake_logger   1 0 0   100%
tests / unit / conftest.py (no function)   20 0 0   100%
tests / unit / core / conftest.py (no function)   0 0 0   100%
tests / unit / core / test_version_requirements.py test_parse_version   1 0 0   100%
tests / unit / core / test_version_requirements.py test_parse_version_invalid   2 0 0   100%
tests / unit / core / test_version_requirements.py test_compare_versions   1 0 0   100%
tests / unit / core / test_version_requirements.py test_extract_version_from_output   1 0 0   100%
tests / unit / core / test_version_requirements.py test_get_minimum_versions_from_tool_versions   7 0 0   100%
tests / unit / core / test_version_requirements.py test_get_min_version_returns_version_for_registered_tools   3 0 0   100%
tests / unit / core / test_version_requirements.py test_get_min_version_raises_keyerror_for_unknown_tool   2 0 0   100%
tests / unit / core / test_version_requirements.py test_get_tool_version_supports_companion_packages   5 0 0   100%
tests / unit / core / test_version_requirements.py test_tool_versions_uses_toolname_enum_keys   2 0 0   100%
tests / unit / core / test_version_requirements.py test_all_external_tools_registered_in_tool_versions   14 3 0   79%
tests / unit / core / test_version_requirements.py test_get_tool_version_returns_version_for_toolname_enum   3 0 0   100%
tests / unit / core / test_version_requirements.py test_get_tool_version_typescript_alias_resolves_to_tsc   4 0 0   100%
tests / unit / core / test_version_requirements.py test_get_tool_version_returns_none_for_unknown_tool   2 0 0   100%
tests / unit / core / test_version_requirements.py test_get_install_hints   5 0 0   100%
tests / unit / core / test_version_requirements.py test_version_caching   6 0 0   100%
tests / unit / core / test_version_requirements.py test_check_tool_version_success   8 0 0   100%
tests / unit / core / test_version_requirements.py test_check_tool_version_hyphenated_alias_uses_requirements   8 0 0   100%
tests / unit / core / test_version_requirements.py test_check_tool_version_failure   8 0 0   100%
tests / unit / core / test_version_requirements.py test_check_tool_version_command_failure   7 0 0   100%
tests / unit / core / test_version_requirements.py test_tool_version_info_creation   4 0 0   100%
tests / unit / core / test_version_requirements.py test_get_all_tool_versions   9 0 0   100%
tests / unit / core / test_version_requirements.py (no function)   42 0 2   100%
tests / unit / enums / __init__.py (no function)   0 0 0   100%
tests / unit / enums / test_bandit_levels.py test_severity_level_values   1 0 0   100%
tests / unit / enums / test_bandit_levels.py test_confidence_level_values   1 0 0   100%
tests / unit / enums / test_bandit_levels.py test_normalize_severity_from_string   1 0 0   100%
tests / unit / enums / test_bandit_levels.py test_normalize_severity_case_insensitive   2 0 0   100%
tests / unit / enums / test_bandit_levels.py test_normalize_severity_passthrough   1 0 0   100%
tests / unit / enums / test_bandit_levels.py test_normalize_severity_invalid_raises   2 0 0   100%
tests / unit / enums / test_bandit_levels.py test_normalize_confidence_from_string   1 0 0   100%
tests / unit / enums / test_bandit_levels.py test_normalize_confidence_case_insensitive   2 0 0   100%
tests / unit / enums / test_bandit_levels.py test_normalize_confidence_passthrough   1 0 0   100%
tests / unit / enums / test_bandit_levels.py test_normalize_confidence_invalid_raises   2 0 0   100%
tests / unit / enums / test_bandit_levels.py (no function)   16 0 0   100%
tests / unit / enums / test_base.py test_upper_case_str_enum_single_word   7 0 0   100%
tests / unit / enums / test_base.py test_upper_case_str_enum_with_underscores   5 0 0   100%
tests / unit / enums / test_base.py test_hyphenated_str_enum_single_word   7 0 0   100%
tests / unit / enums / test_base.py test_hyphenated_str_enum_with_underscores   7 0 0   100%
tests / unit / enums / test_base.py test_hyphenated_str_enum_multiple_underscores   5 0 0   100%
tests / unit / enums / test_base.py test_git_ref_enum_uses_upper_case   2 0 0   100%
tests / unit / enums / test_base.py test_git_command_enum_uses_hyphenated   4 0 0   100%
tests / unit / enums / test_base.py (no function)   12 0 0   100%
tests / unit / enums / test_enum_normalizers.py test_normalizer_with_enum_instance   2 0 0   100%
tests / unit / enums / test_enum_normalizers.py test_normalizer_with_lowercase_string   2 0 0   100%
tests / unit / enums / test_enum_normalizers.py test_normalizer_with_uppercase_string   2 0 0   100%
tests / unit / enums / test_enum_normalizers.py test_normalizer_with_invalid_string   2 0 0   100%
tests / unit / enums / test_enum_normalizers.py test_normalize_tool_type_with_combined_enum   3 0 0   100%
tests / unit / enums / test_enum_normalizers.py test_normalize_tool_type_with_invalid_type   2 0 0   100%
tests / unit / enums / test_enum_normalizers.py (no function)   21 0 0   100%
tests / unit / enums / test_output_format.py test_output_format_values   1 0 0   100%
tests / unit / enums / test_output_format.py test_output_format_is_str_enum   1 0 0   100%
tests / unit / enums / test_output_format.py test_normalize_output_format_from_string   1 0 0   100%
tests / unit / enums / test_output_format.py test_normalize_output_format_case_insensitive   2 0 0   100%
tests / unit / enums / test_output_format.py test_normalize_output_format_passthrough   1 0 0   100%
tests / unit / enums / test_output_format.py test_normalize_output_format_invalid_defaults_to_grid   1 0 0   100%
tests / unit / enums / test_output_format.py test_normalize_output_format_none_defaults_to_grid   1 0 0   100%
tests / unit / enums / test_output_format.py (no function)   12 0 0   100%
tests / unit / enums / test_severity_level.py test_normalize_maps_alias_to_expected_level   1 0 0   100%
tests / unit / enums / test_severity_level.py test_normalize_is_case_insensitive   1 0 0   100%
tests / unit / enums / test_severity_level.py test_normalize_passes_through_enum_instance   2 0 0   100%
tests / unit / enums / test_severity_level.py test_normalize_raises_for_unknown_value   2 0 0   100%
tests / unit / enums / test_severity_level.py test_alias_table_covers_all_enum_members   2 0 0   100%
tests / unit / enums / test_severity_level.py (no function)   11 0 0   100%
tests / unit / enums / test_tool_name.py test_tool_name_values   1 0 0   100%
tests / unit / enums / test_tool_name.py test_tool_name_is_str_enum   1 0 0   100%
tests / unit / enums / test_tool_name.py test_tool_name_string_comparison   1 0 0   100%
tests / unit / enums / test_tool_name.py test_normalize_tool_name_from_string   1 0 0   100%
tests / unit / enums / test_tool_name.py test_normalize_tool_name_case_insensitive   2 0 0   100%
tests / unit / enums / test_tool_name.py test_normalize_tool_name_hyphenated   2 0 0   100%
tests / unit / enums / test_tool_name.py test_normalize_tool_name_passthrough   1 0 0   100%
tests / unit / enums / test_tool_name.py test_normalize_tool_name_invalid_raises   2 0 0   100%
tests / unit / enums / test_tool_name.py (no function)   13 0 0   100%
tests / unit / exceptions / conftest.py (no function)   0 0 0   100%
tests / unit / exceptions / test_exceptions.py test_exception_inheritance_and_message   4 0 0   100%
tests / unit / exceptions / test_exceptions.py test_exception_can_be_raised_and_caught   3 0 0   100%
tests / unit / exceptions / test_exceptions.py test_subclass_caught_by_base_exception   2 0 0   100%
tests / unit / exceptions / test_exceptions.py test_exception_args_preserved   2 0 0   100%
tests / unit / exceptions / test_exceptions.py test_exception_chaining   9 0 0   100%
tests / unit / exceptions / test_exceptions.py (no function)   12 0 0   100%
tests / unit / formatters / __init__.py (no function)   1 0 0   100%
tests / unit / formatters / conftest.py sample_tool_result   1 1 0   0%
tests / unit / formatters / conftest.py sample_tool_results   3 3 0   0%
tests / unit / formatters / conftest.py (no function)   7 0 0   100%
tests / unit / formatters / styles / __init__.py (no function)   1 0 0   100%
tests / unit / formatters / styles / conftest.py plain_style   1 0 0   100%
tests / unit / formatters / styles / conftest.py grid_style   1 0 0   100%
tests / unit / formatters / styles / conftest.py json_style   1 0 0   100%
tests / unit / formatters / styles / conftest.py html_style   1 0 0   100%
tests / unit / formatters / styles / conftest.py markdown_style   1 0 0   100%
tests / unit / formatters / styles / conftest.py csv_style   1 0 0   100%
tests / unit / formatters / styles / conftest.py github_style   1 0 0   100%
tests / unit / formatters / styles / conftest.py (no function)   27 0 0   100%
tests / unit / formatters / styles / test_csv.py test_csv_style_empty_rows   2 0 0   100%
tests / unit / formatters / styles / test_csv.py test_csv_style_single_row   3 0 0   100%
tests / unit / formatters / styles / test_csv.py test_csv_style_multiple_rows   3 0 0   100%
tests / unit / formatters / styles / test_csv.py test_csv_style_pads_short_rows   2 0 0   100%
tests / unit / formatters / styles / test_csv.py test_csv_style_escapes_special_characters   2 0 0   100%
tests / unit / formatters / styles / test_csv.py test_csv_style_ignores_tool_name   2 0 0   100%
tests / unit / formatters / styles / test_csv.py test_csv_style_ignores_kwargs   2 0 0   100%
tests / unit / formatters / styles / test_csv.py (no function)   10 0 0   100%
tests / unit / formatters / styles / test_html.py test_html_style_empty_rows   2 0 0   100%
tests / unit / formatters / styles / test_html.py test_html_style_single_row   5 0 0   100%
tests / unit / formatters / styles / test_html.py test_html_style_multiple_rows   2 0 0   100%
tests / unit / formatters / styles / test_html.py test_html_style_escapes_html_characters   3 0 0   100%
tests / unit / formatters / styles / test_html.py test_html_style_escapes_ampersand   2 0 0   100%
tests / unit / formatters / styles / test_html.py test_html_style_pads_short_rows   2 0 0   100%
tests / unit / formatters / styles / test_html.py test_html_style_ignores_tool_name   2 0 0   100%
tests / unit / formatters / styles / test_html.py (no function)   10 0 0   100%
tests / unit / formatters / styles / test_json.py test_json_style_basic_format   6 0 0   100%
tests / unit / formatters / styles / test_json.py test_json_style_includes_tool_name   3 0 0   100%
tests / unit / formatters / styles / test_json.py test_json_style_normalizes_column_names   5 0 0   100%
tests / unit / formatters / styles / test_json.py test_json_style_counts_issues   3 0 0   100%
tests / unit / formatters / styles / test_json.py test_json_style_empty_rows   4 0 0   100%
tests / unit / formatters / styles / test_json.py test_json_style_includes_metadata   4 0 0   100%
tests / unit / formatters / styles / test_json.py test_json_style_extra_kwargs_as_metadata   4 0 0   100%
tests / unit / formatters / styles / test_json.py test_json_style_has_timestamp   3 0 0   100%
tests / unit / formatters / styles / test_json.py (no function)   12 0 0   100%
tests / unit / formatters / styles / test_markdown.py test_markdown_style_empty_rows   2 0 0   100%
tests / unit / formatters / styles / test_markdown.py test_markdown_style_single_row   4 0 0   100%
tests / unit / formatters / styles / test_markdown.py test_markdown_style_multiple_rows   3 0 0   100%
tests / unit / formatters / styles / test_markdown.py test_markdown_style_escapes_pipe_character   2 0 0   100%
tests / unit / formatters / styles / test_markdown.py test_markdown_style_pads_short_rows   3 0 0   100%
tests / unit / formatters / styles / test_markdown.py test_markdown_style_ignores_tool_name   2 0 0   100%
tests / unit / formatters / styles / test_markdown.py test_markdown_style_separator_matches_columns   3 0 0   100%
tests / unit / formatters / styles / test_markdown.py (no function)   10 0 0   100%
tests / unit / formatters / styles / test_plain.py test_plain_style_empty_rows   2 0 0   100%
tests / unit / formatters / styles / test_plain.py test_plain_style_single_row   3 0 0   100%
tests / unit / formatters / styles / test_plain.py test_plain_style_multiple_rows   3 0 0   100%
tests / unit / formatters / styles / test_plain.py test_plain_style_has_separator_line   3 0 0   100%
tests / unit / formatters / styles / test_plain.py test_plain_style_separator_matches_header_length   5 0 0   100%
tests / unit / formatters / styles / test_plain.py test_plain_style_pads_short_rows   3 0 0   100%
tests / unit / formatters / styles / test_plain.py test_plain_style_ignores_tool_name   2 0 0   100%
tests / unit / formatters / styles / test_plain.py test_plain_style_converts_values_to_string   2 0 0   100%
tests / unit / formatters / styles / test_plain.py (no function)   11 0 0   100%
tests / unit / formatters / styles / test_style_common.py test_empty_rows_returns_expected_output   3 0 0   100%
tests / unit / formatters / styles / test_style_common.py (no function)   13 0 2   100%
tests / unit / formatters / styles / test_style_csv.py test_csv_style_single_row_produces_valid_csv   5 0 0   100%
tests / unit / formatters / styles / test_style_csv.py test_csv_style_multiple_rows_produces_correct_line_count   3 0 0   100%
tests / unit / formatters / styles / test_style_csv.py test_csv_style_quotes_values_with_commas   2 0 0   100%
tests / unit / formatters / styles / test_style_csv.py test_csv_style_row_shorter_than_columns   2 0 0   100%
tests / unit / formatters / styles / test_style_csv.py (no function)   8 0 0   100%
tests / unit / formatters / styles / test_style_github.py test_github_style_single_error_annotation   9 0 0   100%
tests / unit / formatters / styles / test_style_github.py test_github_style_warning_severity   4 0 0   100%
tests / unit / formatters / styles / test_style_github.py test_github_style_info_severity_maps_to_notice   4 0 0   100%
tests / unit / formatters / styles / test_style_github.py test_github_style_alias_severity   4 0 0   100%
tests / unit / formatters / styles / test_style_github.py test_github_style_missing_severity_defaults_to_warning   4 0 0   100%
tests / unit / formatters / styles / test_style_github.py test_github_style_escapes_special_characters   6 0 0   100%
tests / unit / formatters / styles / test_style_github.py test_github_style_empty_rows_returns_empty_string   2 0 0   100%
tests / unit / formatters / styles / test_style_github.py test_github_style_multiple_rows   7 0 0   100%
tests / unit / formatters / styles / test_style_github.py test_github_style_no_tool_name   4 0 0   100%
tests / unit / formatters / styles / test_style_github.py test_github_style_dash_line_column_omitted   5 0 0   100%
tests / unit / formatters / styles / test_style_github.py (no function)   13 0 0   100%
tests / unit / formatters / styles / test_style_grid.py test_grid_style_single_row_contains_header_and_data   3 0 0   100%
tests / unit / formatters / styles / test_style_grid.py test_grid_style_multiple_rows_contains_all_files   3 0 0   100%
tests / unit / formatters / styles / test_style_grid.py test_grid_style_column_alignment_produces_output   2 0 0   100%
tests / unit / formatters / styles / test_style_grid.py test_grid_style_empty_columns_handles_gracefully   2 0 0   100%
tests / unit / formatters / styles / test_style_grid.py (no function)   8 0 0   100%
tests / unit / formatters / styles / test_style_html.py test_html_style_single_row_produces_valid_table   5 0 0   100%
tests / unit / formatters / styles / test_style_html.py test_html_style_multiple_rows_produces_correct_row_count   4 0 0   100%
tests / unit / formatters / styles / test_style_html.py test_html_style_escapes_script_tags   3 0 0   100%
tests / unit / formatters / styles / test_style_html.py test_html_style_escapes_ampersand   2 0 0   100%
tests / unit / formatters / styles / test_style_html.py test_html_style_row_shorter_than_columns   2 0 0   100%
tests / unit / formatters / styles / test_style_html.py (no function)   9 0 0   100%
tests / unit / formatters / styles / test_style_json.py test_json_style_empty_rows_produces_valid_json   5 0 0   100%
tests / unit / formatters / styles / test_style_json.py test_json_style_single_row_produces_correct_structure   8 0 0   100%
tests / unit / formatters / styles / test_style_json.py test_json_style_multiple_rows_counts_correctly   4 0 0   100%
tests / unit / formatters / styles / test_style_json.py test_json_style_column_name_normalization   4 0 0   100%
tests / unit / formatters / styles / test_style_json.py test_json_style_with_metadata   3 0 0   100%
tests / unit / formatters / styles / test_style_json.py test_json_style_with_extra_kwargs_in_metadata   3 0 0   100%
tests / unit / formatters / styles / test_style_json.py test_json_style_has_timestamp   3 0 0   100%
tests / unit / formatters / styles / test_style_json.py test_json_style_row_shorter_than_columns   4 0 0   100%
tests / unit / formatters / styles / test_style_json.py (no function)   13 0 0   100%
tests / unit / formatters / styles / test_style_markdown.py test_markdown_style_single_row_produces_valid_table   6 0 0   100%
tests / unit / formatters / styles / test_style_markdown.py test_markdown_style_multiple_rows_produces_correct_line_count   3 0 0   100%
tests / unit / formatters / styles / test_style_markdown.py test_markdown_style_escapes_pipe_characters   2 0 0   100%
tests / unit / formatters / styles / test_style_markdown.py test_markdown_style_row_shorter_than_columns   2 0 0   100%
tests / unit / formatters / styles / test_style_markdown.py (no function)   8 0 0   100%
tests / unit / formatters / styles / test_style_plain.py test_plain_style_single_row_contains_all_data   4 0 0   100%
tests / unit / formatters / styles / test_style_plain.py test_plain_style_multiple_rows_contains_all_files   3 0 0   100%
tests / unit / formatters / styles / test_style_plain.py test_plain_style_row_shorter_than_columns   2 0 0   100%
tests / unit / formatters / styles / test_style_plain.py test_plain_style_has_separator_line   4 0 0   100%
tests / unit / formatters / styles / test_style_plain.py (no function)   8 0 0   100%
tests / unit / formatters / test_format_issues.py test_standard_columns_has_expected_fields   1 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_ruff_issue_contains_standard_columns   9 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_ruff_issue_contains_issue_data   7 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_shows_fixable_status   4 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_shows_non_fixable_status   4 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_shows_severity   4 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_black_issue_contains_standard_columns   11 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_ruff_format_issue_contains_standard_columns   12 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_bandit_issue_uses_display_field_map   5 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_bandit_issue_shows_severity   4 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_sections_groups_by_fixable   6 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_sections_only_fixable   4 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_sections_only_non_fixable   4 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_sections_without_grouping   6 0 0   100%
tests / unit / formatters / test_format_issues.py test_all_tool_issues_produce_tables_with_standard_columns   8 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_empty_list_returns_no_issues_message   2 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_with_sections_empty_list_returns_no_issues_message   2 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_shows_docs_column_when_doc_url_present   4 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_hides_docs_column_when_no_doc_url   3 0 0   100%
tests / unit / formatters / test_format_issues.py test_format_issues_docs_column_respects_explicit_columns   6 0 0   100%
tests / unit / formatters / test_format_issues.py (no function)   31 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_style_with_enum   2 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_style_with_string   2 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_style_string_case_insensitive   2 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_style_unknown_format_falls_back_to_grid   2 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_style_caches_instances   3 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_format_map_returns_all_formats   8 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_format_map_values_are_correct_styles   8 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_format_map_length   2 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_string_format_map_returns_string_keys   8 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_string_format_map_values_are_correct_styles   8 0 0   100%
tests / unit / formatters / test_format_registry.py test_get_string_format_map_length   2 0 0   100%
tests / unit / formatters / test_format_registry.py test_default_format_is_grid   1 0 0   100%
tests / unit / formatters / test_format_registry.py (no function)   27 0 0   100%
tests / unit / logging / conftest.py (no function)   0 0 0   100%
tests / unit / logging / test_console_logger.py test_create_logger_and_basic_methods   23 0 0   100%
tests / unit / logging / test_console_logger.py test_create_logger_and_basic_methods.Result.__init__   4 0 0   100%
tests / unit / logging / test_console_logger.py test_create_logger_and_basic_methods.FmtResult.__init__   5 0 0   100%
tests / unit / logging / test_console_logger.py test_summary_marks_fail_on_tool_failure   7 0 0   100%
tests / unit / logging / test_console_logger.py test_summary_marks_fail_on_tool_failure.Result.__init__   4 0 0   100%
tests / unit / logging / test_console_logger.py (no function)   8 0 0   100%
tests / unit / logging / test_console_logger_more.py test_get_tool_emoji_default   3 0 0   100%
tests / unit / logging / test_console_logger_more.py test_console_logger_parsing_messages   5 0 0   100%
tests / unit / logging / test_console_logger_more.py test_get_tool_emoji_pytest   3 0 0   100%
tests / unit / logging / test_console_logger_more.py test_console_logger_pytest_result_no_issues   4 0 0   100%
tests / unit / logging / test_console_logger_more.py test_console_logger_pytest_result_with_failures   4 0 0   100%
tests / unit / logging / test_console_logger_more.py test_console_logger_pytest_success_message   4 0 0   100%
tests / unit / logging / test_console_logger_more.py test_console_logger_print_tool_header_pytest   5 0 0   100%
tests / unit / logging / test_console_logger_more.py (no function)   13 0 0   100%
tests / unit / output / conftest.py (no function)   0 0 0   100%
tests / unit / output / test_output_manager_reports.py DummyIssue.__init__   4 0 0   100%
tests / unit / output / test_output_manager_reports.py DummyResult.__init__   3 0 0   100%
tests / unit / output / test_output_manager_reports.py test_output_manager_writes_reports   8 0 0   100%
tests / unit / output / test_output_manager_reports.py (no function)   10 0 0   100%
tests / unit / parsers / base_parser / __init__.py (no function)   0 0 0   100%
tests / unit / parsers / base_parser / test_continuation_lines.py test_collect_continuation_lines_with_indented_lines   4 0 0   100%
tests / unit / parsers / base_parser / test_continuation_lines.py test_collect_continuation_lines_with_colon_prefix   4 0 0   100%
tests / unit / parsers / base_parser / test_continuation_lines.py test_collect_continuation_lines_no_continuations   4 0 0   100%
tests / unit / parsers / base_parser / test_continuation_lines.py test_collect_continuation_lines_at_end   4 0 0   100%
tests / unit / parsers / base_parser / test_continuation_lines.py test_collect_continuation_lines_empty_continuation   4 0 0   100%
tests / unit / parsers / base_parser / test_continuation_lines.py (no function)   8 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_int_field_first_candidate_found   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_int_field_second_candidate_found   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_int_field_no_candidates_found   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_int_field_with_default   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_int_field_ignores_non_int_values   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_int_field_empty_candidates   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_str_field_first_candidate_found   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_str_field_second_candidate_found   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_str_field_no_candidates_found   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_str_field_with_default   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_str_field_ignores_non_str_values   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_dict_field_first_candidate_found   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_dict_field_second_candidate_found   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_dict_field_no_candidates_found   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_dict_field_with_default   4 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py test_extract_dict_field_ignores_non_dict_values   3 0 0   100%
tests / unit / parsers / base_parser / test_extract_fields.py (no function)   19 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py test_safe_parse_items_success   5 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py test_safe_parse_items_success.parse_func   3 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py test_safe_parse_items_skips_non_dict   5 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py test_safe_parse_items_skips_non_dict.parse_func   1 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py test_safe_parse_items_handles_parse_errors   5 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py test_safe_parse_items_handles_parse_errors.parse_func   3 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py test_safe_parse_items_skips_none_results   4 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py test_safe_parse_items_skips_none_results.parse_func   3 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py test_safe_parse_items_empty_list   3 0 0   100%
tests / unit / parsers / base_parser / test_safe_parse.py test_safe_parse_items_empty_list.parse_func   1 1 0   0%
tests / unit / parsers / base_parser / test_safe_parse.py (no function)   14 0 0   100%
tests / unit / parsers / base_parser / test_strip_ansi.py test_strip_ansi_codes_with_color   3 0 0   100%
tests / unit / parsers / base_parser / test_strip_ansi.py test_strip_ansi_codes_plain_text   3 0 0   100%
tests / unit / parsers / base_parser / test_strip_ansi.py test_strip_ansi_codes_multiple_codes   3 0 0   100%
tests / unit / parsers / base_parser / test_strip_ansi.py test_strip_ansi_codes_empty_string   2 0 0   100%
tests / unit / parsers / base_parser / test_strip_ansi.py test_strip_ansi_codes_complex_sequences   3 0 0   100%
tests / unit / parsers / base_parser / test_strip_ansi.py (no function)   8 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py test_validate_str_field_valid_string   2 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py test_validate_str_field_non_string_returns_default   2 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py test_validate_str_field_none_returns_default   2 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py test_validate_str_field_logs_warning   6 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py test_validate_str_field_no_warning_for_none   3 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py test_validate_int_field_valid_int   2 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py test_validate_int_field_non_int_returns_default   2 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py test_validate_int_field_bool_returns_default   2 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py test_validate_int_field_none_returns_default   2 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py test_validate_int_field_logs_warning   5 0 0   100%
tests / unit / parsers / base_parser / test_validate_fields.py (no function)   14 0 0   100%
tests / unit / parsers / conftest.py mock_tool_output   5 5 0   0%
tests / unit / parsers / conftest.py sample_ruff_json_output   1 1 0   0%
tests / unit / parsers / conftest.py sample_pytest_json_output   1 1 0   0%
tests / unit / parsers / conftest.py (no function)   9 0 0   100%
tests / unit / parsers / gitleaks_parser / __init__.py (no function)   0 0 0   100%
tests / unit / parsers / gitleaks_parser / test_edge_cases.py test_parse_gitleaks_empty_array   2 0 0   100%
tests / unit / parsers / gitleaks_parser / test_edge_cases.py test_parse_gitleaks_empty_string   2 0 0   100%
tests / unit / parsers / gitleaks_parser / test_edge_cases.py test_parse_gitleaks_none_input   2 0 0   100%
tests / unit / parsers / gitleaks_parser / test_edge_cases.py test_parse_gitleaks_whitespace_only   2 0 0   100%
tests / unit / parsers / gitleaks_parser / test_edge_cases.py test_parse_gitleaks_invalid_json   2 0 0   100%
tests / unit / parsers / gitleaks_parser / test_edge_cases.py test_parse_gitleaks_non_array_json   2 0 0   100%
tests / unit / parsers / gitleaks_parser / test_edge_cases.py test_parse_gitleaks_handles_malformed_finding_gracefully   4 0 0   100%
tests / unit / parsers / gitleaks_parser / test_edge_cases.py (no function)   11 0 0   100%
tests / unit / parsers / gitleaks_parser / test_field_parsing.py test_parse_gitleaks_git_history_fields   9 0 0   100%
tests / unit / parsers / gitleaks_parser / test_field_parsing.py test_gitleaks_entropy_parsing   4 0 0   100%
tests / unit / parsers / gitleaks_parser / test_field_parsing.py test_gitleaks_entropy_as_int   4 0 0   100%
tests / unit / parsers / gitleaks_parser / test_field_parsing.py test_gitleaks_tags_empty_list   4 0 0   100%
tests / unit / parsers / gitleaks_parser / test_field_parsing.py test_gitleaks_tags_none   4 0 0   100%
tests / unit / parsers / gitleaks_parser / test_field_parsing.py (no function)   9 0 0   100%
tests / unit / parsers / gitleaks_parser / test_issue_model.py test_gitleaks_issue_display_row   8 0 0   100%
tests / unit / parsers / gitleaks_parser / test_issue_model.py test_gitleaks_issue_message_without_secret   3 0 0   100%
tests / unit / parsers / gitleaks_parser / test_issue_model.py (no function)   5 0 0   100%
tests / unit / parsers / gitleaks_parser / test_plugin_parsing.py _get_report_path   5 2 0   60%
tests / unit / parsers / gitleaks_parser / test_plugin_parsing.py test_gitleaks_check_parses_output   12 0 0   100%
tests / unit / parsers / gitleaks_parser / test_plugin_parsing.py test_gitleaks_check_parses_output.fake_run   6 0 0   100%
tests / unit / parsers / gitleaks_parser / test_plugin_parsing.py test_gitleaks_check_handles_no_secrets   9 0 0   100%
tests / unit / parsers / gitleaks_parser / test_plugin_parsing.py test_gitleaks_check_handles_no_secrets.fake_run   6 0 0   100%
tests / unit / parsers / gitleaks_parser / test_plugin_parsing.py test_gitleaks_check_handles_unparseable_output   11 0 0   100%
tests / unit / parsers / gitleaks_parser / test_plugin_parsing.py test_gitleaks_check_handles_unparseable_output.fake_run   6 0 0   100%
tests / unit / parsers / gitleaks_parser / test_plugin_parsing.py (no function)   13 0 0   100%
tests / unit / parsers / gitleaks_parser / test_valid_output.py test_parse_gitleaks_valid_output   15 0 0   100%
tests / unit / parsers / gitleaks_parser / test_valid_output.py test_parse_gitleaks_multiple_findings   7 0 0   100%
tests / unit / parsers / gitleaks_parser / test_valid_output.py (no function)   6 0 0   100%
tests / unit / parsers / pydoclint_parser / __init__.py (no function)   0 0 0   100%
tests / unit / parsers / pydoclint_parser / conftest.py make_pydoclint_output   8 0 0   100%
tests / unit / parsers / pydoclint_parser / conftest.py make_issue   1 0 0   100%
tests / unit / parsers / pydoclint_parser / conftest.py (no function)   3 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py test_parse_unicode_path   4 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py test_parse_path_with_spaces   4 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py test_parse_message_with_special_characters   4 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py test_parse_very_long_message   5 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py test_parse_high_line_numbers   5 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py test_parse_nested_path   4 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py test_parse_multiple_colons_in_message   4 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py test_parse_empty_lines_between_issues   5 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py test_parse_multiple_files   6 0 0   100%
tests / unit / parsers / pydoclint_parser / test_edge_cases.py (no function)   12 0 0   100%
tests / unit / parsers / pydoclint_parser / test_field_extraction.py test_parse_doc_codes   5 0 0   100%
tests / unit / parsers / pydoclint_parser / test_field_extraction.py test_parse_extracts_all_fields   9 0 0   100%
tests / unit / parsers / pydoclint_parser / test_field_extraction.py test_parse_multiple_issues   9 0 0   100%
tests / unit / parsers / pydoclint_parser / test_field_extraction.py test_parse_nested_path   6 0 0   100%
tests / unit / parsers / pydoclint_parser / test_field_extraction.py (no function)   10 0 0   100%
tests / unit / parsers / pydoclint_parser / test_invalid_input.py test_parse_returns_empty_for_no_content   2 0 0   100%
tests / unit / parsers / pydoclint_parser / test_invalid_input.py test_parse_returns_empty_for_malformed_line   2 0 0   100%
tests / unit / parsers / pydoclint_parser / test_invalid_input.py test_parse_returns_empty_for_missing_code   2 0 0   100%
tests / unit / parsers / pydoclint_parser / test_invalid_input.py test_parse_skips_malformed_lines_in_mixed_output   5 0 0   100%
tests / unit / parsers / pydoclint_parser / test_invalid_input.py test_parse_handles_missing_line_number   3 0 0   100%
tests / unit / parsers / pydoclint_parser / test_invalid_input.py (no function)   10 0 0   100%
tests / unit / parsers / pydoclint_parser / test_issue_model.py test_issue_defaults   6 0 0   100%
tests / unit / parsers / pydoclint_parser / test_issue_model.py test_issue_with_values   6 0 0   100%
tests / unit / parsers / pydoclint_parser / test_issue_model.py test_to_display_row   7 0 0   100%
tests / unit / parsers / pydoclint_parser / test_issue_model.py test_to_display_row_with_zero_line   4 0 0   100%
tests / unit / parsers / pydoclint_parser / test_issue_model.py (no function)   7 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_json_output_empty   6 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_json_output_valid   17 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_text_output_empty   2 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_text_output_failures   15 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_text_output_line_format   11 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_junit_xml_empty   2 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_junit_xml_valid   17 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_output_format_dispatch   11 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_json_output_malformed   3 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_junit_xml_malformed   3 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_text_output_ansi_codes   5 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_json_output_missing_optional_fields   6 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_json_output_alternative_list_format   4 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_json_output_with_call_message   4 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_json_output_passed_test_ignored   4 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_text_output_alternative_failure_format   7 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_text_output_multiple_failures   3 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_junit_xml_missing_attributes   4 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_junit_xml_without_message_attribute   4 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_junit_xml_no_failure_or_error   3 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_text_output_file_and_line_format   4 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_output_with_empty_format   2 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py test_parse_pytest_output_dispatches_correctly   6 0 0   100%
tests / unit / parsers / pytest / test_pytest_parser.py (no function)   25 0 0   100%
tests / unit / parsers / shellcheck_parser / __init__.py (no function)   0 0 0   100%
tests / unit / parsers / shellcheck_parser / conftest.py make_shellcheck_output   1 0 0   100%
tests / unit / parsers / shellcheck_parser / conftest.py make_issue   6 0 0   100%
tests / unit / parsers / shellcheck_parser / conftest.py (no function)   5 0 0   100%
tests / unit / parsers / shellcheck_parser / test_edge_cases.py test_parse_unicode_in_message   4 0 0   100%
tests / unit / parsers / shellcheck_parser / test_edge_cases.py test_parse_file_with_path   4 0 0   100%
tests / unit / parsers / shellcheck_parser / test_edge_cases.py test_parse_very_long_message   5 0 0   100%
tests / unit / parsers / shellcheck_parser / test_edge_cases.py test_parse_very_large_line_number   4 0 0   100%
tests / unit / parsers / shellcheck_parser / test_edge_cases.py test_parse_special_chars_in_message   4 0 0   100%
tests / unit / parsers / shellcheck_parser / test_edge_cases.py test_parse_deeply_nested_path   5 0 0   100%
tests / unit / parsers / shellcheck_parser / test_edge_cases.py test_parse_missing_required_fields_uses_defaults   8 0 0   100%
tests / unit / parsers / shellcheck_parser / test_edge_cases.py (no function)   12 0 0   100%
tests / unit / parsers / shellcheck_parser / test_field_extraction.py test_parse_severity_levels   5 0 0   100%
tests / unit / parsers / shellcheck_parser / test_field_extraction.py test_parse_extracts_all_fields   12 0 0   100%
tests / unit / parsers / shellcheck_parser / test_field_extraction.py test_parse_handles_missing_optional_fields   5 0 0   100%
tests / unit / parsers / shellcheck_parser / test_field_extraction.py test_parse_code_as_string   4 0 0   100%
tests / unit / parsers / shellcheck_parser / test_field_extraction.py (no function)   10 0 0   100%
tests / unit / parsers / shellcheck_parser / test_invalid_input.py test_parse_returns_empty_for_no_content   2 0 0   100%
tests / unit / parsers / shellcheck_parser / test_invalid_input.py test_parse_returns_empty_for_invalid_json   2 0 0   100%
tests / unit / parsers / shellcheck_parser / test_invalid_input.py test_parse_returns_empty_for_non_array_json   2 0 0   100%
tests / unit / parsers / shellcheck_parser / test_invalid_input.py test_parse_empty_array   2 0 0   100%
tests / unit / parsers / shellcheck_parser / test_invalid_input.py (no function)   9 0 0   100%
tests / unit / parsers / shellcheck_parser / test_issue_model.py test_to_display_row   9 0 0   100%
tests / unit / parsers / shellcheck_parser / test_issue_model.py (no function)   5 0 0   100%
tests / unit / parsers / shellcheck_parser / test_multiple_issues.py test_parse_multiple_issues   7 0 0   100%
tests / unit / parsers / shellcheck_parser / test_multiple_issues.py test_parse_skips_non_dict_items   4 0 0   100%
tests / unit / parsers / shellcheck_parser / test_multiple_issues.py (no function)   7 0 0   100%
tests / unit / parsers / streaming / __init__.py (no function)   0 0 0   100%
tests / unit / parsers / streaming / conftest.py parse_test_item   2 0 0   100%
tests / unit / parsers / streaming / conftest.py parse_test_item._parse   4 0 0   100%
tests / unit / parsers / streaming / conftest.py parse_error_line   2 0 0   100%
tests / unit / parsers / streaming / conftest.py parse_error_line._parse   3 0 0   100%
tests / unit / parsers / streaming / conftest.py identity_line_parser   2 0 0   100%
tests / unit / parsers / streaming / conftest.py identity_line_parser._parse   1 0 0   100%
tests / unit / parsers / streaming / conftest.py (no function)   14 0 2   100%
tests / unit / parsers / streaming / test_collect.py test_collects_to_list   5 0 0   100%
tests / unit / parsers / streaming / test_collect.py test_collects_to_list.gen   2 0 0   100%
tests / unit / parsers / streaming / test_collect.py test_empty_generator_returns_empty_list   3 0 0   100%
tests / unit / parsers / streaming / test_collect.py test_empty_generator_returns_empty_list.gen   1 0 0   100%
tests / unit / parsers / streaming / test_collect.py (no function)   8 0 2   100%
tests / unit / parsers / streaming / test_json_array.py test_parses_array   5 0 0   100%
tests / unit / parsers / streaming / test_json_array.py test_parses_with_trailing_data   4 0 0   100%
tests / unit / parsers / streaming / test_json_array.py test_falls_back_to_json_lines   3 0 0   100%
tests / unit / parsers / streaming / test_json_array.py test_empty_yields_nothing   2 0 0   100%
tests / unit / parsers / streaming / test_json_array.py (no function)   10 0 3   100%
tests / unit / parsers / streaming / test_json_lines.py test_parses_string   5 0 0   100%
tests / unit / parsers / streaming / test_json_lines.py test_parses_iterable   5 0 0   100%
tests / unit / parsers / streaming / test_json_lines.py test_skips_empty_lines   3 0 0   100%
tests / unit / parsers / streaming / test_json_lines.py test_skips_non_json_lines   4 0 0   100%
tests / unit / parsers / streaming / test_json_lines.py test_handles_invalid_json   3 0 0   100%
tests / unit / parsers / streaming / test_json_lines.py test_empty_output_yields_nothing   2 0 0   100%
tests / unit / parsers / streaming / test_json_lines.py test_skips_items_where_parser_returns_none   6 0 0   100%
tests / unit / parsers / streaming / test_json_lines.py test_skips_items_where_parser_returns_none.selective_parser   3 0 0   100%
tests / unit / parsers / streaming / test_json_lines.py (no function)   13 0 3   100%
tests / unit / parsers / streaming / test_parser_class.py test_stream_json_lines_uses_parse_item   6 0 0   100%
tests / unit / parsers / streaming / test_parser_class.py test_stream_json_lines_uses_parse_item.TestParser.parse_item   2 0 0   100%
tests / unit / parsers / streaming / test_parser_class.py test_stream_text_lines_uses_parse_line   7 0 0   100%
tests / unit / parsers / streaming / test_parser_class.py test_stream_text_lines_uses_parse_line.TestParser.parse_line   3 0 0   100%
tests / unit / parsers / streaming / test_parser_class.py test_stream_json_array_uses_parse_item   6 0 0   100%
tests / unit / parsers / streaming / test_parser_class.py test_stream_json_array_uses_parse_item.TestParser.parse_item   2 0 0   100%
tests / unit / parsers / streaming / test_parser_class.py test_methods_raise_not_implemented   3 0 0   100%
tests / unit / parsers / streaming / test_parser_class.py (no function)   11 0 0   100%
tests / unit / parsers / streaming / test_text_lines.py test_parses_string   5 0 0   100%
tests / unit / parsers / streaming / test_text_lines.py test_parses_iterable   3 0 0   100%
tests / unit / parsers / streaming / test_text_lines.py test_strips_ansi_by_default   3 0 0   100%
tests / unit / parsers / streaming / test_text_lines.py test_preserves_ansi_when_disabled   3 0 0   100%
tests / unit / parsers / streaming / test_text_lines.py test_skips_empty_lines   3 0 0   100%
tests / unit / parsers / streaming / test_text_lines.py (no function)   9 0 3   100%
tests / unit / parsers / test_actionlint_parser.py test_parse_actionlint_empty   1 0 0   100%
tests / unit / parsers / test_actionlint_parser.py test_parse_actionlint_lines   10 0 0   100%
tests / unit / parsers / test_actionlint_parser.py test_parse_actionlint_ansi_codes_stripped   5 0 0   100%
tests / unit / parsers / test_actionlint_parser.py (no function)   5 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_empty   2 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_single_error   9 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_multiple_errors   7 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_tsc_style   7 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_simple_format   7 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_windows_paths   4 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_ansi_codes   4 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_skips_noise_lines   4 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_hint_severity   4 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_astro_check_issue_type   4 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_skips_timestamp_lines   2 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_skips_timestamps_keeps_real_errors   5 0 0   100%
tests / unit / parsers / test_astro_check_parser.py test_parse_astro_check_output_skips_docker_warn_lines   2 0 0   100%
tests / unit / parsers / test_astro_check_parser.py (no function)   17 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_parse_bandit_valid_output   11 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_parse_bandit_multiple_issues_and_errors_array   5 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_parse_bandit_empty_results   2 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_parse_bandit_missing_results_key   2 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_parse_bandit_handles_malformed_issue_gracefully   3 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_bandit_check_parses_mixed_output_json   14 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_bandit_check_parses_mixed_output_json.fake_run   1 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_bandit_check_handles_nonzero_rc_with_errors_array   12 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_bandit_check_handles_nonzero_rc_with_errors_array.NS.__init__   3 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_bandit_check_handles_nonzero_rc_with_errors_array.fake_run   3 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_bandit_check_handles_unparseable_output   11 0 0   100%
tests / unit / parsers / test_bandit_parser.py test_bandit_check_handles_unparseable_output.fake_run   3 0 0   100%
tests / unit / parsers / test_bandit_parser.py (no function)   18 0 0   100%
tests / unit / parsers / test_base_issue.py test_base_issue_default_values   5 0 0   100%
tests / unit / parsers / test_base_issue.py test_base_issue_accepts_values   5 0 0   100%
tests / unit / parsers / test_base_issue.py test_to_display_row_basic_fields   6 0 0   100%
tests / unit / parsers / test_base_issue.py test_to_display_row_zero_line_shows_dash   4 0 0   100%
tests / unit / parsers / test_base_issue.py test_to_display_row_missing_optional_fields   5 0 0   100%
tests / unit / parsers / test_base_issue.py test_display_field_map_class_variable   4 0 0   100%
tests / unit / parsers / test_base_issue.py test_subclass_with_custom_fields   8 0 0   100%
tests / unit / parsers / test_base_issue.py test_subclass_with_custom_field_map   9 0 0   100%
tests / unit / parsers / test_base_issue.py test_to_display_row_fixable_true   6 0 0   100%
tests / unit / parsers / test_base_issue.py test_to_display_row_fixable_false   6 0 0   100%
tests / unit / parsers / test_base_issue.py test_to_display_row_line_column_formatting   4 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_returns_default_when_no_severity_field   2 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_normalizes_string_field   5 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_uses_display_field_map   6 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_falls_back_on_empty_string   5 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_falls_back_on_unknown_value   5 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_respects_custom_default   5 0 0   100%
tests / unit / parsers / test_base_issue.py test_get_severity_passes_through_enum_instance   5 0 0   100%
tests / unit / parsers / test_base_issue.py (no function)   26 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_int_field_first_candidate   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_int_field_second_candidate   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_int_field_default   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_int_field_none_default   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_int_field_excludes_bool   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_str_field_first_candidate   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_str_field_second_candidate   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_str_field_default   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_str_field_empty_default   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_dict_field_first_candidate   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_dict_field_second_candidate   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_dict_field_default   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_dict_field_empty_default   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_strip_ansi_codes_removes_color   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_strip_ansi_codes_plain_text   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_strip_ansi_codes_multiple_codes   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_strip_ansi_codes_empty_string   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_validate_str_field_valid_string   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_validate_str_field_non_string_returns_default   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_validate_str_field_none_returns_default   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_validate_int_field_valid_int   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_validate_int_field_non_int_returns_default   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_validate_int_field_bool_returns_default   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_validate_int_field_none_returns_default   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_collect_continuation_lines_basic   4 0 0   100%
tests / unit / parsers / test_base_parser.py test_collect_continuation_lines_no_continuation   4 0 0   100%
tests / unit / parsers / test_base_parser.py test_collect_continuation_lines_end_of_list   4 0 0   100%
tests / unit / parsers / test_base_parser.py test_collect_continuation_lines_strips_prefix   3 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_valid_items   9 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_valid_items.parse_func   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_skips_non_dict   7 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_skips_non_dict.parse_func   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_handles_parse_failure   7 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_handles_parse_failure.parse_func   4 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_handles_none_return   7 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_handles_none_return.parse_func   4 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_empty_list   6 0 0   100%
tests / unit / parsers / test_base_parser.py test_safe_parse_items_empty_list.parse_func   1 1 0   0%
tests / unit / parsers / test_base_parser.py test_extract_int_field_parametrized   2 0 0   100%
tests / unit / parsers / test_base_parser.py test_extract_str_field_parametrized   2 0 0   100%
tests / unit / parsers / test_base_parser.py (no function)   43 0 0   100%
tests / unit / parsers / test_black_parser.py test_parse_black_output_would_reformat_single_file   5 0 0   100%
tests / unit / parsers / test_black_parser.py test_parse_black_output_reformatted_multiple_files   5 0 0   100%
tests / unit / parsers / test_black_parser.py test_parse_black_output_no_issues   3 0 0   100%
tests / unit / parsers / test_black_parser.py test_parse_black_output_ansi_codes_stripped   4 0 0   100%
tests / unit / parsers / test_black_parser.py (no function)   7 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py test_parse_cargo_audit_output_empty_cases   2 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py test_parse_cargo_audit_output_no_vulnerabilities   3 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py test_parse_cargo_audit_output_single_vulnerability   8 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py test_parse_cargo_audit_output_multiple_vulnerabilities   7 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py test_parse_cargo_audit_output_normalizes_severity   4 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py test_parse_cargo_audit_output_none_severity   4 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py test_parse_cargo_audit_output_invalid_json   3 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py test_parse_cargo_audit_output_missing_advisory   3 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py test_parse_cargo_audit_output_json_with_extra_text   4 0 0   100%
tests / unit / parsers / test_cargo_audit_parser.py (no function)   14 0 0   100%
tests / unit / parsers / test_cargo_deny_parser.py test_parse_cargo_deny_output_single_diagnostic   8 0 0   100%
tests / unit / parsers / test_cargo_deny_parser.py test_parse_cargo_deny_output_advisory   8 0 0   100%
tests / unit / parsers / test_cargo_deny_parser.py test_parse_cargo_deny_output_multiple_issues   6 0 0   100%
tests / unit / parsers / test_cargo_deny_parser.py test_parse_cargo_deny_output_ignores_non_issues   4 0 0   100%
tests / unit / parsers / test_cargo_deny_parser.py test_parse_cargo_deny_output_empty_cases   2 0 0   100%
tests / unit / parsers / test_cargo_deny_parser.py test_parse_cargo_deny_output_invalid_json   3 0 0   100%
tests / unit / parsers / test_cargo_deny_parser.py test_parse_cargo_deny_output_crate_with_version   5 0 0   100%
tests / unit / parsers / test_cargo_deny_parser.py (no function)   12 0 0   100%
tests / unit / parsers / test_clippy_parser.py test_parse_clippy_output_single_issue   9 0 0   100%
tests / unit / parsers / test_clippy_parser.py test_parse_clippy_output_multiple_issues   7 0 0   100%
tests / unit / parsers / test_clippy_parser.py test_parse_clippy_output_ignores_non_clippy   4 0 0   100%
tests / unit / parsers / test_clippy_parser.py test_parse_clippy_output_ignores_non_compiler_messages   4 0 0   100%
tests / unit / parsers / test_clippy_parser.py test_parse_clippy_output_empty   2 0 0   100%
tests / unit / parsers / test_clippy_parser.py test_parse_clippy_output_invalid_json   3 0 0   100%
tests / unit / parsers / test_clippy_parser.py test_parse_clippy_output_multi_line_span   5 0 0   100%
tests / unit / parsers / test_clippy_parser.py test_parse_clippy_output_ansi_codes_stripped   5 0 0   100%
tests / unit / parsers / test_clippy_parser.py (no function)   11 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_returns_empty_for_no_content   2 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_severity_levels   4 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_extracts_all_fields   8 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_multiple_issues   6 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_non_matching_lines_ignored   3 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_column_is_zero   3 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_file_with_path   3 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_blank_lines_between_issues   3 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_unicode_in_message   4 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_file_path_with_spaces   4 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_very_long_message   5 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_very_large_line_number   4 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_special_chars_in_message   5 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_colon_in_message   4 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_deeply_nested_path   5 0 0   100%
tests / unit / parsers / test_hadolint_parser.py test_parse_hadolint_output_ansi_codes_stripped   5 0 0   100%
tests / unit / parsers / test_hadolint_parser.py (no function)   22 0 0   100%
tests / unit / parsers / test_markdownlint_parser.py test_parse_markdownlint_empty   2 0 0   100%
tests / unit / parsers / test_markdownlint_parser.py test_parse_markdownlint_lines   21 0 0   100%
tests / unit / parsers / test_markdownlint_parser.py test_parse_markdownlint_without_column   9 0 0   100%
tests / unit / parsers / test_markdownlint_parser.py test_parse_markdownlint_ignores_malformed_lines   5 0 0   100%
tests / unit / parsers / test_markdownlint_parser.py test_parse_markdownlint_multiline_messages   23 0 0   100%
tests / unit / parsers / test_markdownlint_parser.py test_parse_markdownlint_multiline_with_empty_lines   14 0 0   100%
tests / unit / parsers / test_markdownlint_parser.py test_parse_markdownlint_ansi_codes_stripped   5 0 0   100%
tests / unit / parsers / test_markdownlint_parser.py (no function)   9 0 0   100%
tests / unit / parsers / test_mypy_parser.py test_parse_mypy_json_array   10 0 0   100%
tests / unit / parsers / test_mypy_parser.py test_parse_mypy_errors_object   7 0 0   100%
tests / unit / parsers / test_mypy_parser.py test_parse_mypy_invalid_output_returns_empty   3 0 0   100%
tests / unit / parsers / test_mypy_parser.py test_parse_mypy_empty_and_whitespace_output   2 0 0   100%
tests / unit / parsers / test_mypy_parser.py test_parse_mypy_json_lines_multiple_issues   5 0 0   100%
tests / unit / parsers / test_mypy_parser.py test_parse_mypy_multiple_array_entries   5 0 0   100%
tests / unit / parsers / test_mypy_parser.py test_parse_mypy_nested_code_object_variants   4 0 0   100%
tests / unit / parsers / test_mypy_parser.py test_parse_mypy_field_name_variations   6 0 0   100%
tests / unit / parsers / test_mypy_parser.py test_parse_mypy_skips_entries_without_file   4 0 0   100%
tests / unit / parsers / test_mypy_parser.py (no function)   12 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_empty_cases   2 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_empty_results   2 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_single_vulnerability   9 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_multiple_vulnerabilities   7 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_vulnerability_with_multiple_ids   4 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_vulnerability_with_fixed_version   5 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_invalid_json   2 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_non_object_json   2 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_non_list_results   2 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_missing_results_key   2 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_malformed_package_entry   3 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_issue_display_row   8 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_issue_message_format   3 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_issue_message_format_no_fix   3 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_parse_fallthrough_vuln_id_lookup   5 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py test_default_severity   4 0 0   100%
tests / unit / parsers / test_osv_scanner_parser.py (no function)   22 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_parse_well_formed_toml   9 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_parse_missing_file   2 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_parse_empty_file   4 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_parse_no_ignored_vulns   4 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_parse_skips_entry_without_id   4 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_parse_skips_entry_without_ignore_until   4 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_parse_missing_reason_defaults_empty   5 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_parse_invalid_toml   4 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_classify_expired   4 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_classify_active   4 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_classify_stale   4 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_classify_boundary_today_equals_ignore_until   3 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_classify_empty_entries   2 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_classify_multiple_entries   6 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py test_classify_parametrized   4 0 0   100%
tests / unit / parsers / test_osv_suppression_parser.py (no function)   24 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_returns_empty_for_no_content   2 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_single_file   8 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_multiple_files   6 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_empty_lines_handling   5 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_whitespace_handling   6 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_whitespace_only_lines   3 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_ansi_escape_codes_stripped   4 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_default_line_and_column   4 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_deeply_nested_path   4 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_various_extensions   5 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_file_with_spaces_in_name   4 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_filters_error_messages   5 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_filters_non_supported_extensions   5 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py test_parse_oxfmt_output_filters_warning_messages   4 0 0   100%
tests / unit / parsers / test_oxfmt_parser.py (no function)   19 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_empty   2 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_none_string   4 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_malformed_json   2 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_not_dict   2 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_no_json_braces   2 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_single_diagnostic   12 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_multiple_diagnostics   9 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_missing_filename   3 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_missing_labels   6 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_empty_labels   6 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_missing_span   6 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_with_extra_text   5 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_with_prefix_text   5 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_missing_optional_fields   9 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_diagnostics_not_list   3 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_diagnostic_not_dict   3 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_empty_filename   3 0 0   100%
tests / unit / parsers / test_oxlint_parser.py test_parse_oxlint_output_no_help_field   4 0 0   100%
tests / unit / parsers / test_oxlint_parser.py (no function)   21 0 0   100%
tests / unit / parsers / test_prettier_parser.py test_parse_prettier_output_returns_empty_for_no_issues   2 0 0   100%
tests / unit / parsers / test_prettier_parser.py test_parse_prettier_output_single_file_issue   6 0 0   100%
tests / unit / parsers / test_prettier_parser.py test_parse_prettier_output_multiple_file_issues   6 0 0   100%
tests / unit / parsers / test_prettier_parser.py test_parse_prettier_output_ansi_escape_codes_stripped   4 0 0   100%
tests / unit / parsers / test_prettier_parser.py test_parse_prettier_output_ignores_code_style_message   4 0 0   100%
tests / unit / parsers / test_prettier_parser.py test_parse_prettier_output_blank_lines_ignored   3 0 0   100%
tests / unit / parsers / test_prettier_parser.py test_parse_prettier_output_default_line_and_column   4 0 0   100%
tests / unit / parsers / test_prettier_parser.py test_parse_prettier_output_non_warn_lines_ignored   3 0 0   100%
tests / unit / parsers / test_prettier_parser.py (no function)   13 0 0   100%
tests / unit / parsers / test_pydoclint_parser.py test_parse_pydoclint_output_empty   3 0 0   100%
tests / unit / parsers / test_pydoclint_parser.py test_parse_pydoclint_output_single_file_single_issue   8 0 0   100%
tests / unit / parsers / test_pydoclint_parser.py test_parse_pydoclint_output_single_file_multiple_issues   5 0 0   100%
tests / unit / parsers / test_pydoclint_parser.py test_parse_pydoclint_output_multiple_files   5 0 0   100%
tests / unit / parsers / test_pydoclint_parser.py test_parse_pydoclint_output_ansi_codes_stripped   5 0 0   100%
tests / unit / parsers / test_pydoclint_parser.py (no function)   8 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py test_parse_ruff_output_plain_json_array   4 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py test_parse_ruff_output_empty_and_malformed_line_skipped   4 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py test_parse_ruff_output_unicode_file_path   4 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py test_parse_ruff_output_file_path_with_spaces   4 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py test_parse_ruff_output_special_chars_in_message   4 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py test_parse_ruff_output_null_values_handled   3 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py test_parse_ruff_output_very_long_file_path   5 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py test_parse_ruff_output_extremely_long_message   5 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py test_parse_ruff_output_zero_line_number   4 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py test_parse_ruff_output_negative_column   3 0 0   100%
tests / unit / parsers / test_ruff_parser_additional.py (no function)   13 0 0   100%
tests / unit / parsers / test_ruff_parser_more.py test_parse_ruff_output_json_lines_and_variants   6 0 0   100%
tests / unit / parsers / test_ruff_parser_more.py test_parse_ruff_output_trailing_non_json   4 0 0   100%
tests / unit / parsers / test_ruff_parser_more.py test_parse_ruff_format_check_output_various_lines   3 0 0   100%
tests / unit / parsers / test_ruff_parser_more.py test_parse_ruff_format_check_output_variants_more   3 0 0   100%
tests / unit / parsers / test_ruff_parser_more.py (no function)   7 0 0   100%
tests / unit / parsers / test_rustfmt_parser.py test_parse_rustfmt_output_empty_cases   2 0 0   100%
tests / unit / parsers / test_rustfmt_parser.py test_parse_rustfmt_output_diff_format   7 0 0   100%
tests / unit / parsers / test_rustfmt_parser.py test_parse_rustfmt_output_multiple_diffs   7 0 0   100%
tests / unit / parsers / test_rustfmt_parser.py test_parse_rustfmt_output_standalone_file_paths   5 0 0   100%
tests / unit / parsers / test_rustfmt_parser.py test_parse_rustfmt_output_deduplicates_files   4 0 0   100%
tests / unit / parsers / test_rustfmt_parser.py test_parse_rustfmt_output_mixed_content   4 0 0   100%
tests / unit / parsers / test_rustfmt_parser.py test_parse_rustfmt_output_no_issues   3 0 0   100%
tests / unit / parsers / test_rustfmt_parser.py (no function)   12 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_valid_output   15 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_multiple_issues   8 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_empty_results   2 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_none_output   2 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_empty_string_output   2 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_missing_results_key   2 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_handles_malformed_issue_gracefully   3 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_cwe_as_string   5 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_missing_optional_fields   10 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_invalid_json   2 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_non_object_json   2 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_parse_semgrep_non_list_results   2 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_semgrep_check_parses_mixed_output_json   14 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_semgrep_check_parses_mixed_output_json.fake_run   3 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_semgrep_check_handles_nonzero_rc_with_errors_array   10 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_semgrep_check_handles_nonzero_rc_with_errors_array.fake_run   3 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_semgrep_check_handles_unparseable_output   11 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_semgrep_check_handles_unparseable_output.fake_run   3 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_semgrep_issue_display_row   8 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_semgrep_tool_definition   11 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_semgrep_set_options_validates_severity   6 0 0   100%
tests / unit / parsers / test_semgrep_parser.py test_semgrep_set_options_validates_jobs   8 0 0   100%
tests / unit / parsers / test_semgrep_parser.py (no function)   30 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_returns_empty_for_no_content   2 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_single_file_diff   9 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_multiple_files   7 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_file_with_path   5 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_extracts_diff_content   7 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_multiple_hunks_uses_first_line   4 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_column_is_zero   3 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_fixable_is_true   3 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_no_orig_suffix   4 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_unicode_in_content   4 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_file_path_with_spaces   4 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_very_large_line_number   4 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_deeply_nested_path   5 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_special_chars_in_content   5 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_empty_hunk   5 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_bash_extension   4 0 0   100%
tests / unit / parsers / test_shfmt_parser.py test_parse_shfmt_output_ksh_extension   4 0 0   100%
tests / unit / parsers / test_shfmt_parser.py (no function)   22 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_returns_empty_for_no_content   2 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_single_violation   11 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_multiple_violations_single_file   7 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_multiple_files   5 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_file_with_no_violations   3 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_mixed_files   4 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_missing_optional_fields   6 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_invalid_json   3 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_not_a_list   3 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_unicode_in_message   4 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_file_path_with_spaces   4 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_deeply_nested_path   5 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_very_large_line_number   4 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_very_long_message   5 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_special_chars_in_message   5 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_zero_line_number   4 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_null_violations   3 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_missing_violations_key   3 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py test_parse_sqlfluff_output_alternative_field_names   8 0 0   100%
tests / unit / parsers / test_sqlfluff_parser.py (no function)   24 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_empty   2 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_with_timestamp_prefix   9 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_single_error   9 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_warning   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_multiple_lines   6 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_filename_field   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_multiline_span   5 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_same_position   5 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_windows_paths   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_code_field   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_no_code_field   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_numeric_code_field   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_ndjson_invalid_json_skipped   3 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_machine_verbose_single_error   8 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_multiple_errors   6 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_machine_format   7 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_warning_severity   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_hint_severity   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_windows_paths   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_ansi_codes   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_skips_noise_lines   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_end_line_different   5 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_same_line_same_column   5 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_same_line_different_column   5 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_warn_machine_format   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_parse_svelte_check_output_hint_machine_format   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py test_svelte_check_issue_type   4 0 0   100%
tests / unit / parsers / test_svelte_check_parser.py (no function)   32 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_returns_empty_for_no_content   2 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_extracts_all_fields   9 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_severity_levels   4 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_multiple_issues   9 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_non_matching_lines_ignored   4 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_file_with_path   3 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_blank_lines_between_issues   3 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_unicode_in_message   4 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_very_long_message   5 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_very_large_line_number   4 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_special_chars_in_message   5 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_colon_in_message   4 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_deeply_nested_path   5 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_code_with_underscores   4 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_column_position   4 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_windows_path   4 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_location_with_extra_spaces   4 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_issue_dataclass_fields   10 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_fmt_check_format   7 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_fmt_check_multiple_files   5 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_fmt_check_with_info_lines   4 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_fmt_check_rust_log_error_format   7 0 0   100%
tests / unit / parsers / test_taplo_parser.py test_parse_taplo_output_ansi_codes_stripped   5 0 0   100%
tests / unit / parsers / test_taplo_parser.py (no function)   29 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_single_error   9 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_single_warning   5 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_multiple_errors   7 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_mixed_with_non_errors   5 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_empty   2 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_windows_paths   4 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_tsx_files   4 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_mts_cts_files   5 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_deep_nested_path   4 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_skips_non_matching_lines   3 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_tsc_issue_to_display_row   8 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_tsc_issue_to_display_row_minimal   5 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_parse_tsc_output_ansi_codes_stripped   5 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_dependency_error_codes_contains_expected_codes   3 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_categorize_tsc_issues_separates_type_and_dep_errors   6 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_categorize_tsc_issues_all_type_errors   4 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_categorize_tsc_issues_all_dependency_errors   4 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_categorize_tsc_issues_empty_list   3 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_categorize_tsc_issues_no_code   4 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_extract_missing_modules_from_ts2307   4 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_extract_missing_modules_from_ts2688   3 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_extract_missing_modules_from_ts7016   3 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_extract_missing_modules_deduplicates   4 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_extract_missing_modules_sorted   3 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_extract_missing_modules_empty_list   2 0 0   100%
tests / unit / parsers / test_tsc_parser.py test_extract_missing_modules_no_match   3 0 0   100%
tests / unit / parsers / test_tsc_parser.py (no function)   30 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_parse_vue_tsc_output_empty   2 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_parse_vue_tsc_output_single_error   9 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_parse_vue_tsc_output_multiple_errors   7 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_parse_vue_tsc_output_windows_paths   4 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_parse_vue_tsc_output_ansi_codes   4 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_parse_vue_tsc_output_skips_noise_lines   4 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_vue_tsc_issue_type   4 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_categorize_vue_tsc_issues_all_type_errors   4 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_categorize_vue_tsc_issues_dependency_errors   5 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_extract_missing_modules   5 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_vue_tsc_issue_to_display_row   8 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py test_vue_tsc_issue_to_display_row_minimal   6 0 0   100%
tests / unit / parsers / test_vue_tsc_parser.py (no function)   16 0 0   100%
tests / unit / parsers / test_yamllint_parser.py test_parse_yamllint_output_returns_empty_for_no_content   2 0 0   100%
tests / unit / parsers / test_yamllint_parser.py test_parse_yamllint_output_severity_levels   3 0 0   100%
tests / unit / parsers / test_yamllint_parser.py test_parse_yamllint_output_extracts_all_fields   8 0 0   100%
tests / unit / parsers / test_yamllint_parser.py test_parse_yamllint_output_multiple_issues   6 0 0   100%
tests / unit / parsers / test_yamllint_parser.py test_parse_yamllint_output_non_matching_lines_ignored   3 0 0   100%
tests / unit / parsers / test_yamllint_parser.py test_parse_yamllint_output_issue_without_rule   4 0 0   100%
tests / unit / parsers / test_yamllint_parser.py test_parse_yamllint_output_complex_message   4 0 0   100%
tests / unit / parsers / test_yamllint_parser.py test_parse_yamllint_output_blank_lines_between_issues   3 0 0   100%
tests / unit / parsers / test_yamllint_parser.py test_parse_yamllint_output_ansi_codes_stripped   5 0 0   100%
tests / unit / parsers / test_yamllint_parser.py (no function)   15 0 0   100%
tests / unit / plugins / base / __init__.py (no function)   0 0 0   100%
tests / unit / plugins / base / conftest.py NoFixPlugin.definition   1 0 0   100%
tests / unit / plugins / base / conftest.py NoFixPlugin.check   1 1 0   0%
tests / unit / plugins / base / conftest.py (no function)   11 0 0   100%
tests / unit / plugins / base / test_execution.py test_execution_context_default_values   6 0 0   100%
tests / unit / plugins / base / test_execution.py test_execution_context_should_skip_false_when_no_early_result   2 0 0   100%
tests / unit / plugins / base / test_execution.py test_execution_context_should_skip_true_when_early_result_set   4 0 0   100%
tests / unit / plugins / base / test_execution.py test_fix_raises_not_implemented_when_can_fix_true_but_not_overridden   2 0 0   100%
tests / unit / plugins / base / test_execution.py test_fix_raises_not_implemented_when_cannot_fix   3 0 0   100%
tests / unit / plugins / base / test_execution.py test_validate_paths_valid   3 0 0   100%
tests / unit / plugins / base / test_execution.py test_validate_paths_nonexistent_raises   2 0 0   100%
tests / unit / plugins / base / test_execution.py test_validate_paths_inaccessible_raises   4 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_cwd_single_file   4 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_cwd_multiple_files_same_directory   6 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_cwd_multiple_files_different_directories   10 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_cwd_empty_paths_returns_none   2 0 0   100%
tests / unit / plugins / base / test_execution.py test_prepare_execution_version_check_fails_returns_early_result   6 0 0   100%
tests / unit / plugins / base / test_execution.py test_prepare_execution_empty_paths_returns_early_result   3 0 0   100%
tests / unit / plugins / base / test_execution.py test_prepare_execution_no_files_found_returns_early_result   3 0 0   100%
tests / unit / plugins / base / test_execution.py test_prepare_execution_successful_returns_context_with_files   7 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_executable_command_python_bundled_tools_fallback   4 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_executable_command_python_bundled_tools_path_binary_outside_venv   4 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_executable_command_python_bundled_tools_python_module_in_venv   6 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_executable_command_python_bundled_tools_python_module_in_venv.which_side_effect   3 1 0   67%
tests / unit / plugins / base / test_execution.py test_get_executable_command_nodejs_tool_with_bunx   4 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_executable_command_astro_check_with_bunx   3 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_executable_command_vue_tsc_with_bunx   3 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_executable_command_nodejs_tool_without_bunx   4 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_executable_command_cargo_tool   2 0 0   100%
tests / unit / plugins / base / test_execution.py test_get_executable_command_unknown_tool   2 0 0   100%
tests / unit / plugins / base / test_execution.py test_default_exclude_patterns_contains_expected_patterns   1 0 0   100%
tests / unit / plugins / base / test_execution.py test_default_exclude_patterns_is_not_empty   1 0 0   100%
tests / unit / plugins / base / test_execution.py (no function)   40 0 2   100%
tests / unit / plugins / base / test_options.py test_set_options_timeout_valid_values   2 0 0   100%
tests / unit / plugins / base / test_options.py test_set_options_timeout_none   2 0 0   100%
tests / unit / plugins / base / test_options.py test_set_options_timeout_invalid_raises_value_error   2 0 0   100%
tests / unit / plugins / base / test_options.py test_set_options_exclude_patterns_merges_with_existing   7 0 0   100%
tests / unit / plugins / base / test_options.py test_set_options_exclude_patterns_does_not_duplicate   4 0 0   100%
tests / unit / plugins / base / test_options.py test_set_options_exclude_patterns_preserves_lintro_ignore   13 0 0   100%
tests / unit / plugins / base / test_options.py test_set_options_exclude_patterns_invalid_raises_value_error   2 0 0   100%
tests / unit / plugins / base / test_options.py test_set_options_include_venv_valid   2 0 0   100%
tests / unit / plugins / base / test_options.py test_set_options_include_venv_invalid_raises_value_error   2 0 0   100%
tests / unit / plugins / base / test_options.py test_setup_defaults_adds_default_exclude_patterns   3 0 0   100%
tests / unit / plugins / base / test_options.py test_setup_defaults_adds_lintro_ignore_patterns   7 0 0   100%
tests / unit / plugins / base / test_options.py test_setup_defaults_handles_lintro_ignore_read_error_gracefully   4 0 0   100%
tests / unit / plugins / base / test_options.py test_setup_defaults_sets_default_timeout_from_definition   1 0 0   100%
tests / unit / plugins / base / test_options.py (no function)   21 0 2   100%
tests / unit / plugins / base / test_subprocess.py test_run_subprocess_successful_command   5 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_run_subprocess_failed_command   5 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_run_subprocess_timeout_expired_raises   4 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_run_subprocess_file_not_found_raises   4 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_get_effective_timeout_precedence   4 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_get_effective_timeout_falls_back_to_definition_default   3 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_validate_subprocess_command_valid   1 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_validate_subprocess_command_invalid_structure   2 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_validate_subprocess_command_non_string_argument   2 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_validate_subprocess_command_unsafe_characters_in_command_name   2 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_validate_subprocess_command_special_chars_allowed_in_args   2 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_verify_tool_version_passes_returns_none   4 0 0   100%
tests / unit / plugins / base / test_subprocess.py test_verify_tool_version_fails_returns_skip_result   6 0 0   100%
tests / unit / plugins / base / test_subprocess.py (no function)   22 0 2   100%
tests / unit / plugins / base / test_subprocess_streaming.py test_streaming_successful_command   9 0 0   100%
tests / unit / plugins / base / test_subprocess_streaming.py test_streaming_failed_command_nonzero_exit   8 0 0   100%
tests / unit / plugins / base / test_subprocess_streaming.py test_streaming_with_line_handler   12 0 0   100%
tests / unit / plugins / base / test_subprocess_streaming.py test_streaming_with_line_handler.handler   1 0 0   100%
tests / unit / plugins / base / test_subprocess_streaming.py test_streaming_timeout_during_read   10 0 0   100%
tests / unit / plugins / base / test_subprocess_streaming.py test_streaming_timeout_during_wait   8 0 0   100%
tests / unit / plugins / base / test_subprocess_streaming.py test_streaming_file_not_found   4 0 0   100%
tests / unit / plugins / base / test_subprocess_streaming.py test_streaming_empty_output   8 0 0   100%
tests / unit / plugins / base / test_subprocess_streaming.py test_streaming_with_cwd_and_env   12 0 0   100%
tests / unit / plugins / base / test_subprocess_streaming.py (no function)   14 0 0   100%
tests / unit / plugins / conftest.py FakeToolPlugin.definition   1 0 0   100%
tests / unit / plugins / conftest.py FakeToolPlugin.check   1 1 0   0%
tests / unit / plugins / conftest.py fake_tool_plugin   1 0 0   100%
tests / unit / plugins / conftest.py clean_registry   6 0 0   100%
tests / unit / plugins / conftest.py empty_registry   7 0 0   100%
tests / unit / plugins / conftest.py reset_discovery_state   4 4 0   0%
tests / unit / plugins / conftest.py create_fake_plugin   7 0 0   100%
tests / unit / plugins / conftest.py create_fake_plugin.DynamicFakePlugin.definition   1 0 0   100%
tests / unit / plugins / conftest.py create_fake_plugin.DynamicFakePlugin.check   1 1 0   0%
tests / unit / plugins / conftest.py (no function)   24 0 2   100%
tests / unit / plugins / test_base_plugin_config.py test_get_lintro_config_returns_config   6 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_get_lintro_config_returns_none_when_not_found   3 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_get_enforced_settings_returns_settings   6 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_get_enforced_settings_returns_empty_dict_when_no_enforcement   3 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_get_enforce_cli_args_returns_args   6 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_get_enforce_cli_args_returns_empty_list_when_no_args   3 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_get_defaults_config_args_returns_args   5 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_get_defaults_config_args_returns_empty_list_when_no_defaults   3 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_should_use_lintro_config   3 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_build_config_args_returns_args   5 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_build_config_args_returns_empty_list_when_no_config   3 0 0   100%
tests / unit / plugins / test_base_plugin_config.py test_build_config_args_combines_multiple_sources   5 0 0   100%
tests / unit / plugins / test_base_plugin_config.py (no function)   18 0 2   100%
tests / unit / plugins / test_discovery.py clean_discovery_state   1 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_builtin_tools_loads_tools   2 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_builtin_tools_skips_private_modules   6 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_builtin_tools_handles_missing_path   3 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_external_plugins_handles_no_entry_points   3 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_external_plugins_handles_entry_point_error   3 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_external_plugins_skips_non_class_entry_point   6 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_external_plugins_skips_non_plugin_class   8 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_external_plugins_handles_load_error   6 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_all_tools_discovers_tools   2 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_all_tools_skips_if_already_discovered   4 0 0   100%
tests / unit / plugins / test_discovery.py test_discover_all_tools_force_rediscovery   4 0 0   100%
tests / unit / plugins / test_discovery.py test_is_discovered_false_before_discovery   2 0 0   100%
tests / unit / plugins / test_discovery.py test_is_discovered_true_after_discovery   3 0 0   100%
tests / unit / plugins / test_discovery.py test_reset_discovery_resets_discovery_state   5 0 0   100%
tests / unit / plugins / test_discovery.py test_builtin_definitions_path_exists   1 0 0   100%
tests / unit / plugins / test_discovery.py test_builtin_definitions_path_is_directory   1 0 0   100%
tests / unit / plugins / test_discovery.py test_entry_point_group_value   1 0 0   100%
tests / unit / plugins / test_discovery.py (no function)   26 0 0   100%
tests / unit / plugins / test_file_processor.py test_file_processing_result_success   6 0 0   100%
tests / unit / plugins / test_file_processor.py test_file_processing_result_with_issues   5 0 0   100%
tests / unit / plugins / test_file_processor.py test_file_processing_result_skipped   2 0 0   100%
tests / unit / plugins / test_file_processor.py test_file_processing_result_with_error   2 0 0   100%
tests / unit / plugins / test_file_processor.py test_aggregated_result_defaults   7 0 0   100%
tests / unit / plugins / test_file_processor.py test_add_file_result_success   6 0 0   100%
tests / unit / plugins / test_file_processor.py test_add_file_result_with_issues   8 0 0   100%
tests / unit / plugins / test_file_processor.py test_add_file_result_failure   5 0 0   100%
tests / unit / plugins / test_file_processor.py test_add_file_result_skipped   6 0 0   100%
tests / unit / plugins / test_file_processor.py test_add_file_result_with_error   6 0 0   100%
tests / unit / plugins / test_file_processor.py test_add_multiple_file_results   14 0 0   100%
tests / unit / plugins / test_file_processor.py test_build_output_empty   3 0 0   100%
tests / unit / plugins / test_file_processor.py test_build_output_with_outputs   6 0 0   100%
tests / unit / plugins / test_file_processor.py test_build_output_with_skipped_files   8 0 0   100%
tests / unit / plugins / test_file_processor.py test_build_output_with_timeout   6 0 0   100%
tests / unit / plugins / test_file_processor.py test_build_output_with_execution_errors   5 0 0   100%
tests / unit / plugins / test_file_processor.py test_build_output_combines_outputs_and_errors   9 0 0   100%
tests / unit / plugins / test_file_processor.py test_empty_output_not_added   4 0 0   100%
tests / unit / plugins / test_file_processor.py test_build_output_whitespace_returns_none   4 0 0   100%
tests / unit / plugins / test_file_processor.py (no function)   25 0 0   100%
tests / unit / plugins / test_registry.py test_register_tool_adds_to_registry   3 0 0   100%
tests / unit / plugins / test_registry.py test_register_tool_stores_instance   5 0 0   100%
tests / unit / plugins / test_registry.py test_register_overwrite_replaces_tool   7 0 0   100%
tests / unit / plugins / test_registry.py test_register_returns_class_unchanged   3 0 0   100%
tests / unit / plugins / test_registry.py test_get_registered_tool_returns_instance   4 0 0   100%
tests / unit / plugins / test_registry.py test_get_unknown_tool_raises_value_error   2 0 0   100%
tests / unit / plugins / test_registry.py test_get_is_case_insensitive   3 0 0   100%
tests / unit / plugins / test_registry.py test_get_all_returns_non_empty_dict   3 0 0   100%
tests / unit / plugins / test_registry.py test_get_all_returns_instances   3 0 0   100%
tests / unit / plugins / test_registry.py test_get_all_tools_have_valid_names   3 0 0   100%
tests / unit / plugins / test_registry.py test_get_definitions_returns_non_empty_dict   2 0 0   100%
tests / unit / plugins / test_registry.py test_get_definitions_returns_tool_definitions   3 0 0   100%
tests / unit / plugins / test_registry.py test_get_definitions_have_required_fields   6 0 0   100%
tests / unit / plugins / test_registry.py test_get_names_returns_sorted_list   2 0 0   100%
tests / unit / plugins / test_registry.py test_get_names_includes_builtin_tools   2 0 0   100%
tests / unit / plugins / test_registry.py test_get_names_returns_list_type   2 0 0   100%
tests / unit / plugins / test_registry.py test_is_registered_returns_correct_boolean   2 0 0   100%
tests / unit / plugins / test_registry.py test_clear_removes_all_tools   6 0 0   100%
tests / unit / plugins / test_registry.py test_clear_results_in_empty_registry   2 0 0   100%
tests / unit / plugins / test_registry.py test_get_check_tools_returns_all_tools   3 0 0   100%
tests / unit / plugins / test_registry.py test_get_check_tools_returns_instances   3 0 0   100%
tests / unit / plugins / test_registry.py test_get_fix_tools_returns_only_fix_capable   3 0 0   100%
tests / unit / plugins / test_registry.py test_get_fix_tools_excludes_non_fix_tools   5 0 0   100%
tests / unit / plugins / test_registry.py test_get_fix_tools_is_subset_of_all_tools   5 0 0   100%
tests / unit / plugins / test_registry.py test_register_tool_decorator_registers_tool   3 0 0   100%
tests / unit / plugins / test_registry.py test_register_tool_decorator_returns_class   3 0 0   100%
tests / unit / plugins / test_registry.py test_register_tool_decorator_can_be_used_as_decorator   9 0 0   100%
tests / unit / plugins / test_registry.py test_register_tool_decorator_can_be_used_as_decorator.DecoratorSyntaxPlugin.definition   1 0 0   100%
tests / unit / plugins / test_registry.py test_register_tool_decorator_can_be_used_as_decorator.DecoratorSyntaxPlugin.check   1 1 0   0%
tests / unit / plugins / test_registry.py test_registry_handles_multiple_registrations   9 0 0   100%
tests / unit / plugins / test_registry.py test_get_returns_same_instance_on_multiple_calls   3 0 0   100%
tests / unit / plugins / test_registry.py (no function)   42 0 0   100%
tests / unit / plugins / test_reset_options.py test_reset_options_restores_defaults   12 0 0   100%
tests / unit / plugins / test_reset_options.py test_reset_options_clears_exclude_patterns   4 0 0   100%
tests / unit / plugins / test_reset_options.py test_reset_options_allows_clean_reconfiguration   5 0 0   100%
tests / unit / plugins / test_reset_options.py test_bandit_reset_options_preserves_native_config   16 0 0   100%
tests / unit / plugins / test_reset_options.py (no function)   8 0 2   100%
tests / unit / pytest / conftest.py (no function)   0 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_collect_only   6 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_fixtures   6 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_fixture_info   6 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_markers   6 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_parametrize_help   6 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_coverage_options   7 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_multiple_new_flags   9 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_tool_options_without_prefix   8 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_tool_options_with_prefix   7 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_tool_options_mixed   8 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_exit_code_success   5 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_exit_code_failure   5 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py test_test_command_combined_options   12 0 0   100%
tests / unit / pytest / test_pytest_cli_commands.py (no function)   18 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_help   4 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_default_paths   8 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_explicit_paths   9 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_exclude_patterns   6 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_include_venv   6 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_output_format   6 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_group_by   6 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_verbose   6 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_raw_output   6 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_list_plugins   6 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py test_test_command_check_plugins   7 0 0   100%
tests / unit / pytest / test_pytest_cli_options.py (no function)   17 0 0   100%
tests / unit / pytest / test_pytest_handlers.py FakePytestPlugin.__init__   4 0 0   100%
tests / unit / pytest / test_pytest_handlers.py FakePytestPlugin.definition   1 0 0   100%
tests / unit / pytest / test_pytest_handlers.py FakePytestPlugin._get_executable_command   1 0 0   100%
tests / unit / pytest / test_pytest_handlers.py FakePytestPlugin._run_subprocess   1 0 0   100%
tests / unit / pytest / test_pytest_handlers.py fake_pytest_plugin   1 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_list_plugins_with_results   10 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_list_plugins_no_plugins   6 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_check_all_plugins_installed   8 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_check_missing_plugins   9 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_check_all_plugins_missing   6 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_check_plugins_invalid_input   2 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_check_plugins_with_whitespace   5 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_collect_with_function_style_output   7 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_collect_with_double_colon_style   7 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_collect_subprocess_failure   6 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_collect_no_tests   5 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_list_fixtures_success   6 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_list_fixtures_subprocess_failure   4 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_fixture_info_found   6 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_fixture_info_not_found   5 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_fixture_info_subprocess_failure   4 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_fixture_info_with_suffix_char   5 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_list_markers_success   6 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_list_markers_subprocess_failure   4 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_parametrize_help_output   8 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_parametrize_help_contains_doc_link   3 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_handler_exception_handling   6 0 0   100%
tests / unit / pytest / test_pytest_handlers.py test_handler_exception_handling.raise_error   1 0 0   100%
tests / unit / pytest / test_pytest_handlers.py (no function)   50 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_with_default_options   6 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_with_paths   7 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_with_exclude   8 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_with_include_venv   7 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_with_output   8 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_with_output_format   8 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_with_group_by   8 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_with_verbose   7 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_with_raw_output   7 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_with_tool_options   8 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_exit_code_success   6 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py test_test_function_exit_code_failure   7 0 0   100%
tests / unit / pytest / test_pytest_programmatic_api.py (no function)   16 0 0   100%
tests / unit / security / __init__.py (no function)   0 0 0   100%
tests / unit / security / conftest.py temp_project_dir   2 2 0   0%
tests / unit / security / conftest.py (no function)   7 0 2   100%
tests / unit / security / test_json_edge_cases.py simple_parse_item   5 1 0   80%
tests / unit / security / test_json_edge_cases.py test_json_lines_empty_input   2 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_whitespace_only_input   2 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_invalid_json_lines_skipped   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_truncated_json_skipped   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_non_dict_json_skipped   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_special_characters   4 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_unicode   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_emoji   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_deeply_nested   8 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_large_json_object   5 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_many_lines   4 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_mixed_valid_invalid   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_parser_exception_handling   4 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_parser_exception_handling.failing_parser   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_lines_not_starting_with_brace_skipped   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_array_empty_array   2 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_array_empty_object   2 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_array_empty_string   2 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_array_valid_array   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_array_with_trailing_data   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_array_fallback_to_json_lines   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_array_non_dict_items_skipped   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_array_large_array   4 0 0   100%
tests / unit / security / test_json_edge_cases.py test_collect_streaming_results_collects_all   5 0 0   100%
tests / unit / security / test_json_edge_cases.py test_collect_streaming_results_empty_generator   3 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_bomb_protection   4 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_null_bytes   4 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_control_characters   4 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_very_long_string_keys   4 0 0   100%
tests / unit / security / test_json_edge_cases.py test_json_many_keys_in_object   4 0 0   100%
tests / unit / security / test_json_edge_cases.py (no function)   40 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_relative_path_within_project   5 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_dot_relative_path_is_safe   8 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_traversal_single_level_blocked   2 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_traversal_multiple_levels_blocked   2 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_traversal_encoded_blocked   2 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_absolute_path_outside_project_blocked   2 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_absolute_path_inside_project_allowed   4 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_symlink_escape_blocked   7 2 0   71%
tests / unit / security / test_path_traversal.py test_validate_safe_path_uses_cwd_when_no_base_dir   10 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_empty_path_behavior   6 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_current_dir_is_safe   6 0 0   100%
tests / unit / security / test_path_traversal.py test_validate_safe_path_deeply_nested_path_is_safe   5 0 0   100%
tests / unit / security / test_path_traversal.py test_normalize_file_path_for_display_relative_path_gets_dot_prefix   8 0 0   100%
tests / unit / security / test_path_traversal.py test_normalize_file_path_for_display_already_prefixed_path_unchanged   8 0 0   100%
tests / unit / security / test_path_traversal.py test_normalize_file_path_for_display_empty_path_returned_as_is   2 0 0   100%
tests / unit / security / test_path_traversal.py test_normalize_file_path_for_display_whitespace_path_returned_as_is   2 0 0   100%
tests / unit / security / test_path_traversal.py test_normalize_file_path_for_display_absolute_path_inside_project   11 0 0   100%
tests / unit / security / test_path_traversal.py test_normalize_file_path_for_display_path_outside_project_returns_relative_with_dotdot   10 0 0   100%
tests / unit / security / test_path_traversal.py test_normalize_file_path_for_display_nested_path_normalized   9 0 0   100%
tests / unit / security / test_path_traversal.py (no function)   25 0 0   100%
tests / unit / security / test_subprocess_injection.py test_unsafe_chars_is_frozenset   1 0 0   100%
tests / unit / security / test_subprocess_injection.py test_unsafe_chars_contains_command_chaining_chars   3 0 0   100%
tests / unit / security / test_subprocess_injection.py test_unsafe_chars_contains_redirection_chars   3 0 0   100%
tests / unit / security / test_subprocess_injection.py test_unsafe_chars_contains_command_substitution_chars   3 0 0   100%
tests / unit / security / test_subprocess_injection.py test_unsafe_chars_contains_escape_chars   3 0 0   100%
tests / unit / security / test_subprocess_injection.py test_unsafe_chars_contains_glob_chars   3 0 0   100%
tests / unit / security / test_subprocess_injection.py test_unsafe_chars_contains_brace_expansion_chars   3 0 0   100%
tests / unit / security / test_subprocess_injection.py test_unsafe_chars_contains_other_shell_chars   3 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_valid_simple_command   1 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_valid_command_with_flags   1 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_valid_command_with_path   1 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_empty_command_raises   2 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_none_command_raises   2 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_string_command_raises   2 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_non_string_argument_raises   2 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_unsafe_char_in_command_name_raises   2 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_injection_in_command_name   2 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_special_char_in_argument_allowed   1 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_glob_pattern_in_argument_allowed   2 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_template_path_allowed   1 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_variable_syntax_allowed   1 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_dollar_in_filename_allowed   1 0 0   100%
tests / unit / security / test_subprocess_injection.py test_validate_subprocess_command_shell_injection_args_safe_with_shell_false   5 0 0   100%
tests / unit / security / test_subprocess_injection.py (no function)   29 0 0   100%
tests / unit / test_package_imports.py _discover_packages_from_source   7 0 0   100%
tests / unit / test_package_imports.py _get_packages_from_pyproject   6 0 0   100%
tests / unit / test_package_imports.py _get_configured_packages   1 0 0   100%
tests / unit / test_package_imports.py test_package_importable   4 2 0   50%
tests / unit / test_package_imports.py test_all_source_packages_are_configured   6 2 0   67%
tests / unit / test_package_imports.py test_doctor_command_imports   2 0 0   100%
tests / unit / test_package_imports.py (no function)   11 0 0   100%
tests / unit / tools / assertions / __init__.py (no function)   1 0 0   100%
tests / unit / tools / assertions / conftest.py assert_definition_has_name   2 2 0   0%
tests / unit / tools / assertions / conftest.py assert_definition_has_name._assert   1 1 0   0%
tests / unit / tools / assertions / conftest.py assert_definition_has_description   2 2 0   0%
tests / unit / tools / assertions / conftest.py assert_definition_has_description._assert   1 1 0   0%
tests / unit / tools / assertions / conftest.py assert_definition_file_patterns   2 2 0   0%
tests / unit / tools / assertions / conftest.py assert_definition_file_patterns._assert   2 2 0   0%
tests / unit / tools / assertions / conftest.py assert_definition_can_fix   2 2 0   0%
tests / unit / tools / assertions / conftest.py assert_definition_can_fix._assert   1 1 0   0%
tests / unit / tools / assertions / conftest.py assert_definition_timeout   2 2 0   0%
tests / unit / tools / assertions / conftest.py assert_definition_timeout._assert   1 1 0   0%
tests / unit / tools / assertions / conftest.py (no function)   15 0 0   100%
tests / unit / tools / astro_check / __init__.py (no function)   0 0 0   100%
tests / unit / tools / astro_check / conftest.py astro_check_plugin   2 0 0   100%
tests / unit / tools / astro_check / conftest.py (no function)   7 0 0   100%
tests / unit / tools / astro_check / test_execution.py _mock_subprocess_success   1 0 0   100%
tests / unit / tools / astro_check / test_execution.py _mock_subprocess_with_issues   2 0 0   100%
tests / unit / tools / astro_check / test_execution.py test_check_no_astro_files   6 0 0   100%
tests / unit / tools / astro_check / test_execution.py test_check_no_astro_config_proceeds_with_defaults   10 0 0   100%
tests / unit / tools / astro_check / test_execution.py test_check_with_mocked_subprocess_success   8 0 0   100%
tests / unit / tools / astro_check / test_execution.py test_check_with_mocked_subprocess_issues_found   17 0 0   100%
tests / unit / tools / astro_check / test_execution.py test_fix_raises_not_implemented   2 0 0   100%
tests / unit / tools / astro_check / test_execution.py test_check_with_root_option   13 0 0   100%
tests / unit / tools / astro_check / test_execution.py test_check_with_root_option.capture_cmd   2 0 0   100%
tests / unit / tools / astro_check / test_execution.py (no function)   16 0 0   100%
tests / unit / tools / astro_check / test_options.py test_definition_name   1 0 0   100%
tests / unit / tools / astro_check / test_options.py test_definition_description   1 0 0   100%
tests / unit / tools / astro_check / test_options.py test_definition_can_fix_is_false   1 0 0   100%
tests / unit / tools / astro_check / test_options.py test_definition_tool_type   2 0 0   100%
tests / unit / tools / astro_check / test_options.py test_definition_file_patterns   2 0 0   100%
tests / unit / tools / astro_check / test_options.py test_definition_priority   1 0 0   100%
tests / unit / tools / astro_check / test_options.py test_definition_native_configs   5 0 0   100%
tests / unit / tools / astro_check / test_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / astro_check / test_options.py test_set_options_root_valid   2 0 0   100%
tests / unit / tools / astro_check / test_options.py test_set_options_root_none   2 0 0   100%
tests / unit / tools / astro_check / test_options.py test_set_options_root_invalid_type   2 0 0   100%
tests / unit / tools / astro_check / test_options.py test_set_options_root_invalid_bool   2 0 0   100%
tests / unit / tools / astro_check / test_options.py test_build_command_basic   3 0 0   100%
tests / unit / tools / astro_check / test_options.py test_build_command_with_root   5 0 0   100%
tests / unit / tools / astro_check / test_options.py (no function)   20 0 0   100%
tests / unit / tools / base / conftest.py (no function)   0 0 0   100%
tests / unit / tools / cargo_audit / __init__.py (no function)   0 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py cargo_audit_plugin   1 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_definition_name   1 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_definition_can_fix   1 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_definition_tool_type   1 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_definition_file_patterns   2 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_definition_priority   1 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_definition_timeout   1 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_definition_native_configs   2 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_set_options_timeout   2 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_set_options_invalid_timeout   2 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_set_options_negative_float_timeout   2 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_set_options_non_numeric_timeout   2 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_fix_raises_not_implemented   3 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_check_no_cargo_lock   4 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_check_no_vulnerabilities   8 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_check_with_vulnerabilities   8 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py test_check_timeout   7 0 0   100%
tests / unit / tools / cargo_audit / test_cargo_audit_plugin.py (no function)   26 0 0   100%
tests / unit / tools / cargo_deny / __init__.py (no function)   0 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py cargo_deny_plugin   1 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py test_definition_name   1 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py test_definition_can_fix   1 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py test_definition_tool_type   2 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py test_definition_file_patterns   3 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py test_definition_priority   1 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py test_definition_timeout   1 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py test_definition_native_configs   1 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py test_fix_raises_not_implemented   3 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py test_set_options_timeout   2 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py test_set_options_invalid_timeout   2 0 0   100%
tests / unit / tools / cargo_deny / test_cargo_deny_plugin.py (no function)   17 0 0   100%
tests / unit / tools / conftest.py mock_subprocess_run   7 7 0   0%
tests / unit / tools / conftest.py mock_tool_config   1 1 0   0%
tests / unit / tools / conftest.py mock_tool_result   7 7 0   0%
tests / unit / tools / conftest.py mypy_plugin   2 0 0   100%
tests / unit / tools / conftest.py clippy_plugin   2 2 0   0%
tests / unit / tools / conftest.py tsc_plugin   2 0 0   100%
tests / unit / tools / conftest.py patch_subprocess_success   4 4 0   0%
tests / unit / tools / conftest.py patch_subprocess_success._patch   6 6 0   0%
tests / unit / tools / conftest.py patch_tool_available   4 4 0   0%
tests / unit / tools / conftest.py patch_tool_available._patch   2 2 0   0%
tests / unit / tools / conftest.py mock_tool_factory   2 2 0   0%
tests / unit / tools / conftest.py mock_tool_factory._create   15 15 0   0%
tests / unit / tools / conftest.py mock_execution_context_factory   2 0 0   100%
tests / unit / tools / conftest.py mock_execution_context_factory._create   8 0 0   100%
tests / unit / tools / conftest.py mock_execution_context_for_tool   1 0 0   100%
tests / unit / tools / conftest.py (no function)   30 0 4   100%
tests / unit / tools / core / __init__.py (no function)   0 0 0   100%
tests / unit / tools / core / conftest.py temp_python_file   4 4 0   0%
tests / unit / tools / core / conftest.py (no function)   5 0 0   100%
tests / unit / tools / core / test_command_builders.py _mock_which_for_venv   3 0 0   100%
tests / unit / tools / core / test_command_builders.py _mock_which_for_venv.which_side_effect   9 3 0   67%
tests / unit / tools / core / test_command_builders.py reset_registry   3 0 0   100%
tests / unit / tools / core / test_command_builders.py test_python_bundled_builder_handles_ruff   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_python_bundled_builder_handles_black   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_python_bundled_builder_handles_mypy   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_python_bundled_builder_does_not_handle_markdownlint   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_python_bundled_builder_prefers_path_binary_outside_venv   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_python_bundled_builder_prefers_python_module_in_venv   7 0 0   100%
tests / unit / tools / core / test_command_builders.py test_python_bundled_builder_prefers_path_when_tool_not_in_venv   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_python_bundled_builder_last_resort_python_m_in_venv   7 0 0   100%
tests / unit / tools / core / test_command_builders.py test_python_bundled_builder_falls_back_to_python_module   7 0 0   100%
tests / unit / tools / core / test_command_builders.py test_python_bundled_builder_skips_python_module_when_compiled   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_pytest_builder_handles_pytest   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_pytest_builder_does_not_handle_ruff   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_pytest_builder_prefers_path_binary_outside_venv   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_pytest_builder_prefers_python_module_in_venv   7 0 0   100%
tests / unit / tools / core / test_command_builders.py test_pytest_builder_prefers_path_when_tool_not_in_venv   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_pytest_builder_last_resort_python_m_in_venv   7 0 0   100%
tests / unit / tools / core / test_command_builders.py test_pytest_builder_falls_back_to_python_module   7 0 0   100%
tests / unit / tools / core / test_command_builders.py test_pytest_builder_skips_python_module_when_compiled   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_nodejs_builder_handles_markdownlint   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_nodejs_builder_handles_astro_check   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_nodejs_builder_does_not_handle_ruff   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_nodejs_builder_uses_bunx_when_available   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_nodejs_builder_falls_back_to_package_name   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_nodejs_builder_astro_check_uses_astro_binary   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_nodejs_builder_handles_vue_tsc   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_nodejs_builder_vue_tsc_uses_vue_tsc_binary   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_cargo_builder_handles_clippy   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_cargo_builder_does_not_handle_ruff   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_cargo_builder_returns_cargo_clippy   3 0 0   100%
tests / unit / tools / core / test_command_builders.py test_cargo_builder_handles_cargo_audit   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_cargo_builder_returns_cargo_audit   3 0 0   100%
tests / unit / tools / core / test_command_builders.py test_standalone_builder_handles_hadolint   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_standalone_builder_handles_actionlint   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_standalone_builder_does_not_handle_ruff   2 0 0   100%
tests / unit / tools / core / test_command_builders.py test_standalone_builder_returns_tool_name   3 0 0   100%
tests / unit / tools / core / test_command_builders.py test_registry_uses_first_matching_builder   8 0 0   100%
tests / unit / tools / core / test_command_builders.py test_registry_uses_first_matching_builder.CustomRuffBuilder.can_handle   1 0 0   100%
tests / unit / tools / core / test_command_builders.py test_registry_uses_first_matching_builder.CustomRuffBuilder.get_command   1 0 0   100%
tests / unit / tools / core / test_command_builders.py test_registry_fallback_to_tool_name   3 0 0   100%
tests / unit / tools / core / test_command_builders.py test_registry_is_registered   4 0 0   100%
tests / unit / tools / core / test_command_builders.py test_registry_clear   5 0 0   100%
tests / unit / tools / core / test_command_builders.py (no function)   50 0 0   100%
tests / unit / tools / core / test_install_context.py _make_ctx   1 0 0   100%
tests / unit / tools / core / test_install_context.py test_runtime_context_has_environment   3 0 0   100%
tests / unit / tools / core / test_install_context.py test_runtime_context_environment_reflects_managers   3 0 0   100%
tests / unit / tools / core / test_install_context.py test_detect_docker_via_dockerenv   3 0 0   100%
tests / unit / tools / core / test_install_context.py test_detect_docker_via_env_var   4 0 0   100%
tests / unit / tools / core / test_install_context.py test_detect_docker_via_container_env_var   5 0 0   100%
tests / unit / tools / core / test_install_context.py test_detect_pip_default   5 0 0   100%
tests / unit / tools / core / test_install_context.py test_is_ci_with_ci_env_var   4 0 0   100%
tests / unit / tools / core / test_install_context.py test_is_ci_false   4 0 0   100%
tests / unit / tools / core / test_install_context.py test_detect_ci_system   4 0 0   100%
tests / unit / tools / core / test_install_context.py test_detect_ci_system_none   3 0 0   100%
tests / unit / tools / core / test_install_context.py test_ci_system_is_str_enum   2 0 0   100%
tests / unit / tools / core / test_install_context.py (no function)   20 0 0   100%
tests / unit / tools / core / test_install_strategies.py _make_env   1 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_install_environment_has_true   2 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_install_environment_has_false   2 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_registry_contains_all_five   2 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_get_strategy_pip   4 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_get_strategy_unknown_returns_none   2 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_pip_install_hint_with_uv   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_pip_install_hint_without_uv   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_pip_install_hint_homebrew_context   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_pip_upgrade_hint   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_pip_upgrade_hint_homebrew   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_pip_check_prerequisites_met   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_pip_check_prerequisites_not_met   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_pip_brew_only_non_homebrew_context   8 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_pip_is_available_true   5 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_pip_is_available_false   5 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_npm_install_hint_with_bun   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_npm_install_hint_without_bun   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_npm_upgrade_hint_with_bun   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_npm_check_prerequisites_met   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_npm_check_prerequisites_not_met   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_npm_brew_only_mapped_tool   7 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_npm_brew_only_unmapped_tool   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_binary_install_hint_with_brew   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_binary_install_hint_without_brew   7 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_binary_upgrade_hint_with_brew   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_binary_check_prerequisites_always_none   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_cargo_install_hint   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_cargo_upgrade_hint   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_cargo_check_prerequisites_met   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_cargo_check_prerequisites_not_met   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_rustup_install_hint_with_component   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_rustup_install_hint_without_component   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_rustup_upgrade_hint   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_rustup_check_prerequisites_met   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_rustup_check_prerequisites_not_met   6 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_brew_formula_names_markdownlint   2 0 0   100%
tests / unit / tools / core / test_install_strategies.py test_brew_formula_names_osv_scanner   2 0 0   100%
tests / unit / tools / core / test_install_strategies.py (no function)   44 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_line_length_violation_default_code_is_e501   2 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_line_length_violation_all_fields_set   6 0 0   100%
tests / unit / tools / core / test_line_length_checker.py mock_ruff_available   2 0 0   100%
tests / unit / tools / core / test_line_length_checker.py mock_subprocess   3 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_check_line_length_empty_files_returns_empty_list   2 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_check_line_length_ruff_not_available_returns_empty   4 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_check_line_length_successful_detection   9 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_check_line_length_custom_line_length   5 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_check_line_length_exception_returns_empty   3 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_check_line_length_invalid_output_returns_empty   4 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_check_line_length_relative_paths_converted_to_absolute   5 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_check_line_length_old_ruff_json_format   6 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_check_line_length_multiple_violations   5 0 0   100%
tests / unit / tools / core / test_line_length_checker.py test_check_line_length_command_includes_required_flags   9 0 0   100%
tests / unit / tools / core / test_line_length_checker.py (no function)   26 0 2   100%
tests / unit / tools / core / test_option_spec.py test_bool_option_validates_true   2 0 0   100%
tests / unit / tools / core / test_option_spec.py test_bool_option_validates_false   2 0 0   100%
tests / unit / tools / core / test_option_spec.py test_bool_option_rejects_non_bool   3 0 0   100%
tests / unit / tools / core / test_option_spec.py test_bool_option_to_cli_args_true   2 0 0   100%
tests / unit / tools / core / test_option_spec.py test_bool_option_to_cli_args_false   2 0 0   100%
tests / unit / tools / core / test_option_spec.py test_int_option_validates_valid_int   2 0 0   100%
tests / unit / tools / core / test_option_spec.py test_int_option_rejects_below_min   3 0 0   100%
tests / unit / tools / core / test_option_spec.py test_int_option_rejects_above_max   3 0 0   100%
tests / unit / tools / core / test_option_spec.py test_positive_int_option_rejects_zero   3 0 0   100%
tests / unit / tools / core / test_option_spec.py test_str_option_with_choices_rejects_invalid   3 0 0   100%
tests / unit / tools / core / test_option_spec.py test_list_option_rejects_non_list   3 0 0   100%
tests / unit / tools / core / test_option_spec.py test_list_option_to_cli_args   3 0 0   100%
tests / unit / tools / core / test_option_spec.py test_enum_option_rejects_invalid_choice   3 0 0   100%
tests / unit / tools / core / test_option_spec.py test_required_option_validates_none   3 0 0   100%
tests / unit / tools / core / test_option_spec.py test_optional_option_accepts_none   2 0 0   100%
tests / unit / tools / core / test_option_spec.py (no function)   19 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_bool_accepts_valid_values   1 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_bool_rejects_invalid_values   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_str_accepts_valid_values   1 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_str_rejects_invalid_values   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_int_accepts_valid_values   1 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_int_rejects_invalid_values   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_int_with_min_value   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_int_rejects_below_min_value   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_int_with_max_value   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_int_rejects_above_max_value   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_int_with_range   3 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_int_none_with_range   1 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_positive_int_accepts_valid_values   1 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_positive_int_rejects_invalid_values   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_list_accepts_valid_values   1 0 0   100%
tests / unit / tools / core / test_option_validators.py test_validate_list_rejects_invalid_values   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_normalize_str_or_list_valid_values   4 0 0   100%
tests / unit / tools / core / test_option_validators.py test_normalize_str_or_list_rejects_invalid_values   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_filter_none_options_filters_none_values   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_filter_none_options_empty_input   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_filter_none_options_all_none   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_filter_none_options_no_none   2 0 0   100%
tests / unit / tools / core / test_option_validators.py test_filter_none_options_preserves_falsy_values   2 0 0   100%
tests / unit / tools / core / test_option_validators.py (no function)   40 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py _clear_cache_before_each_test   1 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_extract_version_semantic   1 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_extract_version_with_prefix   1 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_extract_version_keyword   1 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_extract_version_multiline   2 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_extract_version_returns_none_for_no_version   1 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_discover_tool_available   7 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_discover_tool_unavailable   5 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_discover_tool_handles_timeout   5 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_discover_tool_uses_cache   5 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_discover_all_tools   5 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_is_tool_available_returns_true   3 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_is_tool_available_returns_false   2 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_get_tool_path_returns_path   3 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_get_tool_path_returns_none   2 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_get_unavailable_tools   6 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_get_unavailable_tools.mock_which   1 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_get_available_tools   5 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_get_available_tools.mock_which   1 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_format_tool_status_table   4 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_clear_discovery_cache   7 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py test_discovered_tool_default_values   5 0 0   100%
tests / unit / tools / core / test_runtime_discovery.py (no function)   26 0 0   100%
tests / unit / tools / core / test_tool_installer.py make_tool   2 0 0   100%
tests / unit / tools / core / test_tool_installer.py make_tool._factory   3 0 0   100%
tests / unit / tools / core / test_tool_installer.py context   2 0 0   100%
tests / unit / tools / core / test_tool_installer.py registry   1 0 0   100%
tests / unit / tools / core / test_tool_installer.py installer   1 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_is_manual_hint   1 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_version_meets_minimum   1 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_tool_already_ok   9 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_tool_outdated_no_upgrade   8 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_tool_outdated_with_upgrade   8 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_tool_missing_installable   7 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_tool_missing_manual_hint   7 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_tool_missing_with_install_script   8 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_tool_upgrade_manual_hint   7 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_tool_skipped_no_cargo   9 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_tool_skipped_no_npm   9 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_with_tools_list   7 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_deduplicates_tools   6 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_with_profile   6 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_plan_with_upgrade_flag   7 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_check_prerequisites_cargo_missing   7 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_check_prerequisites_npm_missing   7 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_check_prerequisites_pip_missing   7 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_check_prerequisites_all_met   3 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_get_install_command_delegates_to_context   4 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_get_install_command_upgrade_pip   4 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_get_install_command_upgrade_cargo   4 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_execute_runs_installs_and_upgrades   8 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_execute_empty_plan   3 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_run_install_success   7 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_run_install_failure   6 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_run_install_timeout   6 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_run_install_os_error   6 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_run_install_manual_hint_rejected   5 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_is_brew_managed_true   4 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_is_brew_managed_false   4 0 0   100%
tests / unit / tools / core / test_tool_installer.py test_is_brew_managed_no_brew   3 0 0   100%
tests / unit / tools / core / test_tool_installer.py (no function)   52 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py test_add_returns_self_for_chaining   3 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py test_add_multiple_options_via_chaining   2 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py test_validate_all_valid_values   2 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py test_validate_all_rejects_invalid_value   3 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py test_validate_all_checks_required   3 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py test_to_cli_args   3 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py test_to_cli_args_skips_false_bools   3 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py test_get_defaults   3 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py test_get_defaults_empty_when_no_defaults   2 0 0   100%
tests / unit / tools / core / test_tool_options_spec.py (no function)   13 0 0   100%
tests / unit / tools / core / test_tool_registry.py v2_manifest_path   4 0 0   100%
tests / unit / tools / core / test_tool_registry.py registry   1 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_load_v2_manifest   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_load_v1_compat   7 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_load_missing_name_skips_tool   6 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_load_missing_version_skips_tool   6 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_load_invalid_manifest_version   4 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_parse_tool_entry_invalid_version_command   6 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_all_tools_excludes_dev_by_default   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_all_tools_includes_dev   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_all_tools_sorted_by_name   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_tools_for_languages_single   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_tools_for_languages_multiple   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_tools_for_languages_always_includes_security   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_tools_for_languages_unknown_lang   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_tools_for_profile_explicit   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_tools_for_profile_auto_detect_with_langs   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_tools_for_profile_auto_detect_no_langs_falls_back_to_minimal   3 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_tools_for_profile_all   4 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_tools_for_profile_filter_excludes_formatters   4 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_tools_for_profile_unknown_raises   1 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_get_existing_tool   4 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_get_missing_tool_raises_key_error   1 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_get_or_none_existing   4 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_get_or_none_missing   2 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_contains_true   1 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_contains_false   1 0 0   100%
tests / unit / tools / core / test_tool_registry.py test_len   1 0 0   100%
tests / unit / tools / core / test_tool_registry.py (no function)   38 0 0   100%
tests / unit / tools / core / test_version_checking.py test_get_version_timeout_default   3 0 0   100%
tests / unit / tools / core / test_version_checking.py test_get_version_timeout_valid   3 0 0   100%
tests / unit / tools / core / test_version_checking.py test_get_version_timeout_invalid   3 0 0   100%
tests / unit / tools / core / test_version_checking.py test_get_minimum_versions_returns_dict   3 0 0   100%
tests / unit / tools / core / test_version_checking.py test_get_minimum_versions_contains_expected_tools   4 0 0   100%
tests / unit / tools / core / test_version_checking.py test_get_minimum_versions_returns_copy   5 0 0   100%
tests / unit / tools / core / test_version_checking.py test_get_install_hints_returns_dict   3 0 0   100%
tests / unit / tools / core / test_version_checking.py test_get_install_hints_pip_for_python_tools   3 0 0   100%
tests / unit / tools / core / test_version_checking.py test_get_install_hints_bun_for_node_tools   2 0 0   100%
tests / unit / tools / core / test_version_checking.py test_get_install_hints_external_tools   3 0 0   100%
tests / unit / tools / core / test_version_checking.py (no function)   15 0 0   100%
tests / unit / tools / executor / conftest.py (no function)   0 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py _FakeToolDefinition.__init__   6 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py _FakeTool.__init__   1 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py _FakeTool.definition   1 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py _FakeTool.set_options   1 1 0   0%
tests / unit / tools / executor / test_tool_configuration_enabled.py _reset_config_cache   1 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_disabled_tool_skipped_in_all_tools_check   10 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_disabled_tool_skipped_in_all_tools_fix   9 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_disabled_tool_skipped_when_explicitly_requested   10 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_all_tools_disabled_returns_empty_list   7 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_enabled_tool_runs_normally   6 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_tool_not_in_config_defaults_to_enabled   7 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_empty_config_all_tools_enabled   7 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_execution_enabled_tools_filter   10 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_execution_enabled_tools_combined_with_tool_disabled   6 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_disabled_tool_skipped_in_fix_action   14 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_disabled_tool_skipped_in_fix_action.mock_get_tool   5 3 0   40%
tests / unit / tools / executor / test_tool_configuration_enabled.py test_disabled_tool_case_insensitive   8 0 0   100%
tests / unit / tools / executor / test_tool_configuration_enabled.py (no function)   29 0 0   100%
tests / unit / tools / executor / test_tool_executor.py FakeTool.__init__   4 0 0   100%
tests / unit / tools / executor / test_tool_executor.py FakeTool.definition   1 0 0   100%
tests / unit / tools / executor / test_tool_executor.py FakeTool.can_fix   1 1 0   0%
tests / unit / tools / executor / test_tool_executor.py FakeTool.reset_options   1 0 0   100%
tests / unit / tools / executor / test_tool_executor.py FakeTool.set_options   1 0 0   100%
tests / unit / tools / executor / test_tool_executor.py FakeTool.check   1 0 0   100%
tests / unit / tools / executor / test_tool_executor.py FakeTool.fix   1 0 0   100%
tests / unit / tools / executor / test_tool_executor.py _setup_tool_manager   7 0 0   100%
tests / unit / tools / executor / test_tool_executor.py _setup_tool_manager.fake_get_tools   1 0 0   100%
tests / unit / tools / executor / test_tool_executor.py _setup_tool_manager.fake_get_tool   1 0 0   100%
tests / unit / tools / executor / test_tool_executor.py _setup_tool_manager.noop_write_reports_from_results   1 0 0   100%
tests / unit / tools / executor / test_tool_executor.py _stub_logger   2 0 0   100%
tests / unit / tools / executor / test_tool_executor.py test_executor_check_success   5 0 0   100%
tests / unit / tools / executor / test_tool_executor.py test_executor_check_failure   5 0 0   100%
tests / unit / tools / executor / test_tool_executor.py test_executor_fmt_success_with_counts   5 0 0   100%
tests / unit / tools / executor / test_tool_executor.py test_executor_json_output   10 0 0   100%
tests / unit / tools / executor / test_tool_executor.py test_executor_handles_tool_failure_with_output   5 0 0   100%
tests / unit / tools / executor / test_tool_executor.py test_parse_tool_options_typed_values   10 0 0   100%
tests / unit / tools / executor / test_tool_executor.py test_executor_unknown_tool   5 0 0   100%
tests / unit / tools / executor / test_tool_executor.py test_executor_unknown_tool.raise_value_error   1 0 0   100%
tests / unit / tools / executor / test_tool_executor.py (no function)   39 0 0   100%
tests / unit / tools / executor / test_tool_executor_fmt_exclusion.py test_fmt_excludes_bandit_by_default   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_fmt_exclusion.py test_fmt_explicit_bandit_raises_error   3 0 0   100%
tests / unit / tools / executor / test_tool_executor_fmt_exclusion.py (no function)   5 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py _stub_logger   4 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py _stub_logger.SilentLogger.__getattr__   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py _stub_logger.SilentLogger.__getattr__._   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_get_tools_to_run_unknown_tool_raises   8 1 0   88%
tests / unit / tools / executor / test_tool_executor_more.py test_get_tools_to_run_fmt_with_cannot_fix_raises   15 1 0   93%
tests / unit / tools / executor / test_tool_executor_more.py test_get_tools_to_run_fmt_with_cannot_fix_raises.NoFixTool.__init__   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_get_tools_to_run_fmt_with_cannot_fix_raises.NoFixTool.definition   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_get_tools_to_run_fmt_with_cannot_fix_raises.NoFixTool.can_fix   1 1 0   0%
tests / unit / tools / executor / test_tool_executor_more.py test_get_tools_to_run_fmt_with_cannot_fix_raises.NoFixTool.set_options   1 1 0   0%
tests / unit / tools / executor / test_tool_executor_more.py test_main_loop_get_tool_raises_appends_failure   13 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_main_loop_get_tool_raises_appends_failure.fake_get_tools   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_main_loop_get_tool_raises_appends_failure.fake_get_tool   3 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_write_reports_errors_are_swallowed   10 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_write_reports_errors_are_swallowed.fake_get_tools   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_write_reports_errors_are_swallowed.boom   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_unknown_post_check_tool_is_skipped   9 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_post_checks_early_filter_removes_black_from_main   26 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_post_checks_early_filter_removes_black_from_main.LoggerCapture.__init__   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_post_checks_early_filter_removes_black_from_main.LoggerCapture.__getattr__   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_post_checks_early_filter_removes_black_from_main.LoggerCapture.__getattr__._   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_post_checks_early_filter_removes_black_from_main.LoggerCapture.print_lintro_header   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_post_checks_early_filter_removes_black_from_main.LoggerCapture.print_tool_header   4 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_post_checks_early_filter_removes_black_from_main.post_check_config   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_post_checks_early_filter_removes_black_from_main.mock_execute_post_checks   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py test_all_filtered_results_in_no_tools_warning   8 0 0   100%
tests / unit / tools / executor / test_tool_executor_more.py (no function)   28 0 2   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py FakeTool.__init__   4 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py FakeTool.definition   1 1 0   0%
tests / unit / tools / executor / test_tool_executor_post_checks.py FakeTool.can_fix   1 1 0   0%
tests / unit / tools / executor / test_tool_executor_post_checks.py FakeTool.reset_options   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py FakeTool.set_options   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py FakeTool.check   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py FakeTool.fix   1 1 0   0%
tests / unit / tools / executor / test_tool_executor_post_checks.py _stub_logger   4 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py _stub_logger.SilentLogger.__getattr__   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py _stub_logger.SilentLogger.__getattr__._   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py _setup_main_tool   9 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py _setup_main_tool.fake_get_tools   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py _setup_main_tool.noop_write_reports_from_results   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py test_post_checks_missing_tool_is_skipped_gracefully   19 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py test_post_checks_missing_tool_is_skipped_gracefully.post_check_config   1 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py test_post_checks_missing_tool_is_skipped_gracefully.fail_get_tool   3 0 0   100%
tests / unit / tools / executor / test_tool_executor_post_checks.py (no function)   32 0 2   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_get_tools_to_run_test_action_with_pytest   3 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_get_tools_to_run_test_action_with_pytest_full_name   3 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_get_tools_to_run_test_action_with_none_tools   3 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_get_tools_to_run_test_action_with_invalid_tool   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_get_tools_to_run_test_action_with_multiple_tools   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_get_tools_to_run_check_action_rejects_pytest   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_get_tools_to_run_format_action_rejects_pytest   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_get_tools_to_run_test_action_unavailable   3 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_get_tools_to_run_check_action_filters_out_pytest   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_get_tools_to_run_format_action_filters_out_pytest   2 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_run_lint_tools_simple_test_action_basic   12 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_run_lint_tools_simple_test_action_with_failures   12 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_run_lint_tools_simple_test_action_invalid_tool   8 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_run_lint_tools_simple_test_action_with_tool_options   12 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_run_lint_tools_simple_test_action_exclude_patterns   12 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py test_run_lint_tools_simple_test_action_verbose   12 0 0   100%
tests / unit / tools / executor / test_tool_executor_pytest.py (no function)   24 0 0   100%
tests / unit / tools / gitleaks / __init__.py (no function)   0 0 0   100%
tests / unit / tools / gitleaks / conftest.py gitleaks_plugin   2 0 0   100%
tests / unit / tools / gitleaks / conftest.py (no function)   7 0 0   100%
tests / unit / tools / gitleaks / test_error_handling.py test_check_with_timeout   6 0 0   100%
tests / unit / tools / gitleaks / test_error_handling.py test_check_with_execution_failure   6 0 0   100%
tests / unit / tools / gitleaks / test_error_handling.py test_fix_raises_not_implemented_error   4 0 0   100%
tests / unit / tools / gitleaks / test_error_handling.py (no function)   10 0 0   100%
tests / unit / tools / gitleaks / test_execution.py _get_report_path   5 2 0   60%
tests / unit / tools / gitleaks / test_execution.py _mock_subprocess_factory   2 0 0   100%
tests / unit / tools / gitleaks / test_execution.py _mock_subprocess_factory.mock_run   4 0 0   100%
tests / unit / tools / gitleaks / test_execution.py test_check_with_mocked_subprocess_success   6 0 0   100%
tests / unit / tools / gitleaks / test_execution.py test_check_with_mocked_subprocess_secrets_found   9 0 0   100%
tests / unit / tools / gitleaks / test_execution.py (no function)   10 0 0   100%
tests / unit / tools / gitleaks / test_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / gitleaks / test_options.py test_set_options_valid   2 0 0   100%
tests / unit / tools / gitleaks / test_options.py test_set_options_invalid_type   2 0 0   100%
tests / unit / tools / gitleaks / test_options.py test_build_check_command_basic   11 0 0   100%
tests / unit / tools / gitleaks / test_options.py test_build_check_command_with_no_git_false   3 0 0   100%
tests / unit / tools / gitleaks / test_options.py test_build_check_command_with_config   5 0 0   100%
tests / unit / tools / gitleaks / test_options.py test_build_check_command_with_baseline_path   5 0 0   100%
tests / unit / tools / gitleaks / test_options.py test_build_check_command_with_max_target_megabytes   5 0 0   100%
tests / unit / tools / gitleaks / test_options.py test_build_check_command_with_redact_false   3 0 0   100%
tests / unit / tools / gitleaks / test_options.py test_build_check_command_with_all_options   12 0 0   100%
tests / unit / tools / gitleaks / test_options.py (no function)   17 0 0   100%
tests / unit / tools / hadolint / __init__.py (no function)   0 0 0   100%
tests / unit / tools / hadolint / conftest.py hadolint_plugin   1 0 0   100%
tests / unit / tools / hadolint / conftest.py (no function)   5 0 0   100%
tests / unit / tools / hadolint / test_execution.py test_check_with_issues   20 0 0   100%
tests / unit / tools / hadolint / test_execution.py test_check_multiple_files   16 0 0   100%
tests / unit / tools / hadolint / test_execution.py test_parse_single_issue   22 0 0   100%
tests / unit / tools / hadolint / test_execution.py test_parse_multiple_issues   20 0 0   100%
tests / unit / tools / hadolint / test_execution.py (no function)   12 0 0   100%
tests / unit / tools / hadolint / test_options.py test_default_options_values   2 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_format   2 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_failure_threshold   2 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_ignore   3 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_trusted_registries   3 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_require_labels   3 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_strict_labels   2 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_no_fail   2 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_no_color   2 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_no_options   1 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_invalid_ignore_type   2 0 0   100%
tests / unit / tools / hadolint / test_options.py test_set_options_invalid_strict_labels_type   2 0 0   100%
tests / unit / tools / hadolint / test_options.py test_build_command_default   5 0 0   100%
tests / unit / tools / hadolint / test_options.py test_build_command_with_format   5 0 0   100%
tests / unit / tools / hadolint / test_options.py test_build_command_with_failure_threshold   5 0 0   100%
tests / unit / tools / hadolint / test_options.py test_build_command_with_ignore   5 0 0   100%
tests / unit / tools / hadolint / test_options.py test_build_command_with_trusted_registries   5 0 0   100%
tests / unit / tools / hadolint / test_options.py test_build_command_with_require_labels   4 0 0   100%
tests / unit / tools / hadolint / test_options.py test_build_command_with_strict_labels   3 0 0   100%
tests / unit / tools / hadolint / test_options.py test_build_command_with_no_fail   3 0 0   100%
tests / unit / tools / hadolint / test_options.py test_build_command_without_no_color   3 0 0   100%
tests / unit / tools / hadolint / test_options.py (no function)   26 0 0   100%
tests / unit / tools / manager / conftest.py (no function)   0 0 0   100%
tests / unit / tools / manager / test_tool_manager.py test_tool_manager_get_all_tools   6 0 0   100%
tests / unit / tools / manager / test_tool_manager.py test_tool_manager_get_tool_by_name   5 0 0   100%
tests / unit / tools / manager / test_tool_manager.py test_tool_manager_get_tool_case_insensitive   7 0 0   100%
tests / unit / tools / manager / test_tool_manager.py test_tool_manager_get_tool_missing   3 0 0   100%
tests / unit / tools / manager / test_tool_manager.py test_tool_manager_get_check_and_fix_tools   9 0 0   100%
tests / unit / tools / manager / test_tool_manager.py test_tool_manager_get_tool_execution_order   5 0 0   100%
tests / unit / tools / manager / test_tool_manager.py test_tool_manager_get_tool_execution_order_with_conflicts   9 0 0   100%
tests / unit / tools / manager / test_tool_manager.py test_tool_manager_get_tool_names   6 0 0   100%
tests / unit / tools / manager / test_tool_manager.py test_tool_manager_is_tool_registered   4 0 0   100%
tests / unit / tools / manager / test_tool_manager.py test_tool_manager_set_tool_options   4 0 0   100%
tests / unit / tools / manager / test_tool_manager.py (no function)   16 0 0   100%
tests / unit / tools / mypy / test_mypy_plugin.py test_split_config_values   2 0 0   100%
tests / unit / tools / mypy / test_mypy_plugin.py test_regex_to_glob   2 0 0   100%
tests / unit / tools / mypy / test_mypy_plugin.py test_set_options_valid   2 0 0   100%
tests / unit / tools / mypy / test_mypy_plugin.py test_set_options_invalid_type   2 0 0   100%
tests / unit / tools / mypy / test_mypy_plugin.py test_build_effective_excludes_includes_defaults   3 0 0   100%
tests / unit / tools / mypy / test_mypy_plugin.py test_build_effective_excludes_adds_configured   2 0 0   100%
tests / unit / tools / mypy / test_mypy_plugin.py test_build_effective_excludes_handles_list   3 0 0   100%
tests / unit / tools / mypy / test_mypy_plugin.py test_build_effective_excludes_converts_regex   2 0 0   100%
tests / unit / tools / mypy / test_mypy_plugin.py (no function)   17 0 2   100%
tests / unit / tools / osv_scanner / __init__.py (no function)   0 0 0   100%
tests / unit / tools / osv_scanner / conftest.py osv_scanner_plugin   2 0 0   100%
tests / unit / tools / osv_scanner / conftest.py (no function)   7 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_definition_name   1 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_definition_type   1 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_definition_cannot_fix   1 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_default_timeout   1 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_set_options_validates_timeout_type   2 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_set_options_validates_timeout_negative   2 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_set_options_validates_timeout_zero   2 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_set_options_validates_timeout_bool   2 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_check_no_vulnerabilities   6 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_check_with_vulnerabilities   13 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_check_timeout   6 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_check_empty_paths   3 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_fix_raises_not_implemented   2 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_issue_default_severity_is_error   2 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_check_with_suppressions_detects_stale   13 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_check_without_config_no_metadata   6 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_check_suppressions_disabled   8 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_check_suppressions_probe_timeout   8 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_build_probe_command_internal   5 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_find_config_file_in_scan_root   4 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_find_config_file_in_parent   6 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_find_config_file_not_found   2 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py test_set_options_validates_check_suppressions   2 0 0   100%
tests / unit / tools / osv_scanner / test_osv_scanner_plugin.py (no function)   36 0 0   100%
tests / unit / tools / oxfmt / __init__.py (no function)   0 0 0   100%
tests / unit / tools / oxfmt / conftest.py oxfmt_plugin   2 0 0   100%
tests / unit / tools / oxfmt / conftest.py (no function)   7 0 0   100%
tests / unit / tools / oxfmt / test_check_method.py test_check_returns_success_when_no_issues   8 0 0   100%
tests / unit / tools / oxfmt / test_check_method.py test_check_returns_issues_when_unformatted_files   13 0 0   100%
tests / unit / tools / oxfmt / test_check_method.py test_check_timeout_handling   9 0 0   100%
tests / unit / tools / oxfmt / test_check_method.py test_check_early_return_when_should_skip   6 0 0   100%
tests / unit / tools / oxfmt / test_check_method.py test_check_suppresses_output_on_success   7 0 0   100%
tests / unit / tools / oxfmt / test_check_method.py (no function)   12 0 2   100%
tests / unit / tools / oxfmt / test_default_options.py test_definition_attributes   1 0 0   100%
tests / unit / tools / oxfmt / test_default_options.py test_definition_file_patterns   6 0 0   100%
tests / unit / tools / oxfmt / test_default_options.py test_definition_native_configs   3 0 0   100%
tests / unit / tools / oxfmt / test_default_options.py test_definition_version_command   3 0 0   100%
tests / unit / tools / oxfmt / test_default_options.py test_definition_conflicts_with   2 0 0   100%
tests / unit / tools / oxfmt / test_default_options.py test_default_options_timeout   1 0 0   100%
tests / unit / tools / oxfmt / test_default_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / oxfmt / test_default_options.py (no function)   15 0 2   100%
tests / unit / tools / oxfmt / test_fix_method.py test_fix_success_no_issues   8 0 0   100%
tests / unit / tools / oxfmt / test_fix_method.py test_fix_success_with_fixes_applied   9 0 0   100%
tests / unit / tools / oxfmt / test_fix_method.py test_fix_timeout_during_initial_check   9 0 0   100%
tests / unit / tools / oxfmt / test_fix_method.py test_fix_timeout_during_fix_command   9 0 0   100%
tests / unit / tools / oxfmt / test_fix_method.py test_fix_early_return_when_should_skip   6 0 0   100%
tests / unit / tools / oxfmt / test_fix_method.py test_fix_multiple_files_with_issues   10 0 0   100%
tests / unit / tools / oxfmt / test_fix_method.py test_fix_output_includes_fix_count   7 0 0   100%
tests / unit / tools / oxfmt / test_fix_method.py (no function)   14 0 2   100%
tests / unit / tools / oxfmt / test_set_options.py test_config_accepts_string   2 0 0   100%
tests / unit / tools / oxfmt / test_set_options.py test_config_rejects_non_string   2 0 0   100%
tests / unit / tools / oxfmt / test_set_options.py test_ignore_path_accepts_string   2 0 0   100%
tests / unit / tools / oxfmt / test_set_options.py test_ignore_path_rejects_non_string   2 0 0   100%
tests / unit / tools / oxfmt / test_set_options.py test_set_multiple_options   3 0 0   100%
tests / unit / tools / oxfmt / test_set_options.py test_build_args_empty_options   2 0 0   100%
tests / unit / tools / oxfmt / test_set_options.py test_build_args_config_adds_flag   3 0 0   100%
tests / unit / tools / oxfmt / test_set_options.py test_build_args_ignore_path_adds_flag   3 0 0   100%
tests / unit / tools / oxfmt / test_set_options.py test_build_args_multiple_options_combine   4 0 0   100%
tests / unit / tools / oxfmt / test_set_options.py (no function)   13 0 2   100%
tests / unit / tools / oxlint / __init__.py (no function)   0 0 0   100%
tests / unit / tools / oxlint / conftest.py oxlint_plugin   1 0 0   100%
tests / unit / tools / oxlint / conftest.py (no function)   5 0 0   100%
tests / unit / tools / oxlint / test_check_method.py test_check_with_issues   20 0 0   100%
tests / unit / tools / oxlint / test_check_method.py test_check_without_issues   18 0 0   100%
tests / unit / tools / oxlint / test_check_method.py test_check_timeout_handling   18 0 0   100%
tests / unit / tools / oxlint / test_check_method.py test_check_early_skip   9 0 0   100%
tests / unit / tools / oxlint / test_check_method.py (no function)   12 0 2   100%
tests / unit / tools / oxlint / test_default_options.py test_default_options_values   2 0 0   100%
tests / unit / tools / oxlint / test_default_options.py test_default_timeout_constant   1 0 0   100%
tests / unit / tools / oxlint / test_default_options.py test_plugin_options_initialized   2 0 0   100%
tests / unit / tools / oxlint / test_default_options.py (no function)   9 0 2   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_success_all_fixed   21 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_success_all_fixed.mock_run_subprocess   6 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_partial_fix   20 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_partial_fix.mock_run_subprocess   6 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_timeout_on_initial_check   14 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_timeout_on_fix_command   19 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_timeout_on_fix_command.mock_run_subprocess   4 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_timeout_on_final_check   19 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_timeout_on_final_check.mock_run_subprocess   6 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_early_skip   9 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_unfixable_issues   21 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_unfixable_issues.mock_run_subprocess   6 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_no_issues   19 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py test_fix_no_issues.mock_run_subprocess   2 0 0   100%
tests / unit / tools / oxlint / test_fix_method.py (no function)   16 0 2   100%
tests / unit / tools / oxlint / test_set_options.py test_config_accepts_string   2 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_config_rejects_non_string   2 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_tsconfig_accepts_string   2 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_tsconfig_rejects_non_string   2 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_rule_option_accepts_valid_input   2 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_rule_list_rejects_invalid_type   2 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_set_multiple_options   6 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_none_values_do_not_override   4 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_build_args_empty_options   2 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_build_args_config_adds_flag   3 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_build_args_tsconfig_adds_flag   3 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_build_args_rule_options_add_flags   4 0 0   100%
tests / unit / tools / oxlint / test_set_options.py test_build_args_multiple_options_combine   5 0 0   100%
tests / unit / tools / oxlint / test_set_options.py (no function)   19 0 2   100%
tests / unit / tools / prettier / __init__.py (no function)   0 0 0   100%
tests / unit / tools / prettier / conftest.py prettier_plugin   1 0 0   100%
tests / unit / tools / prettier / conftest.py (no function)   5 0 0   100%
tests / unit / tools / prettier / test_check_method.py (no function)   1 0 0   100%
tests / unit / tools / prettier / test_config_discovery.py test_find_prettier_config_not_found   3 0 0   100%
tests / unit / tools / prettier / test_config_discovery.py test_find_prettier_config_found_prettierrc   7 0 0   100%
tests / unit / tools / prettier / test_config_discovery.py test_find_prettier_config_found_prettierrc.mock_exists   1 0 0   100%
tests / unit / tools / prettier / test_config_discovery.py test_find_prettierignore_not_found   3 0 0   100%
tests / unit / tools / prettier / test_config_discovery.py test_find_prettierignore_found   7 0 0   100%
tests / unit / tools / prettier / test_config_discovery.py test_find_prettierignore_found.mock_exists   1 0 0   100%
tests / unit / tools / prettier / test_config_discovery.py test_build_config_args_returns_args_when_builtin_defaults_exist   15 0 0   100%
tests / unit / tools / prettier / test_config_discovery.py (no function)   9 0 2   100%
tests / unit / tools / prettier / test_default_options.py test_default_options_timeout   1 0 0   100%
tests / unit / tools / prettier / test_default_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / prettier / test_default_options.py (no function)   8 0 2   100%
tests / unit / tools / prettier / test_fix_method.py test_fix_success_no_issues   8 0 0   100%
tests / unit / tools / prettier / test_fix_method.py test_fix_success_with_fixes_applied   8 0 0   100%
tests / unit / tools / prettier / test_fix_method.py test_fix_timeout_during_check   11 0 0   100%
tests / unit / tools / prettier / test_fix_method.py test_fix_early_return_when_should_skip   6 0 0   100%
tests / unit / tools / prettier / test_fix_method.py (no function)   9 0 2   100%
tests / unit / tools / prettier / test_output_parsing.py test_check_parses_prettier_output_correctly   11 0 0   100%
tests / unit / tools / prettier / test_output_parsing.py (no function)   5 0 2   100%
tests / unit / tools / prettier / test_set_options.py test_set_options_valid   2 0 0   100%
tests / unit / tools / prettier / test_set_options.py test_set_options_invalid_type   2 0 0   100%
tests / unit / tools / prettier / test_set_options.py (no function)   8 0 2   100%
tests / unit / tools / prettier / test_timeout_handling.py test_create_timeout_result_basic   5 0 0   100%
tests / unit / tools / prettier / test_timeout_handling.py test_create_timeout_result_with_initial_issues   6 0 0   100%
tests / unit / tools / prettier / test_timeout_handling.py (no function)   7 0 2   100%
tests / unit / tools / pydoclint / __init__.py (no function)   0 0 0   100%
tests / unit / tools / pydoclint / conftest.py pydoclint_plugin   1 0 0   100%
tests / unit / tools / pydoclint / conftest.py (no function)   5 0 0   100%
tests / unit / tools / pydoclint / test_build_command.py test_build_command_basic   3 0 0   100%
tests / unit / tools / pydoclint / test_build_command.py test_build_command_quiet_enabled_by_default   2 0 0   100%
tests / unit / tools / pydoclint / test_build_command.py test_build_command_with_quiet_false   3 0 0   100%
tests / unit / tools / pydoclint / test_build_command.py (no function)   6 0 0   100%
tests / unit / tools / pydoclint / test_check_method.py test_check_with_mocked_subprocess_success   7 0 0   100%
tests / unit / tools / pydoclint / test_check_method.py test_check_with_mocked_subprocess_issues   8 0 0   100%
tests / unit / tools / pydoclint / test_check_method.py test_check_with_timeout   6 0 0   100%
tests / unit / tools / pydoclint / test_check_method.py test_check_with_no_python_files   6 0 0   100%
tests / unit / tools / pydoclint / test_check_method.py (no function)   10 0 0   100%
tests / unit / tools / pydoclint / test_config_initialization.py test_plugin_definition_has_empty_conflicts_with   2 0 0   100%
tests / unit / tools / pydoclint / test_config_initialization.py test_plugin_definition_native_configs   3 0 0   100%
tests / unit / tools / pydoclint / test_config_initialization.py test_plugin_default_timeout   2 0 0   100%
tests / unit / tools / pydoclint / test_config_initialization.py (no function)   6 0 0   100%
tests / unit / tools / pydoclint / test_default_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / pydoclint / test_default_options.py (no function)   6 0 0   100%
tests / unit / tools / pydoclint / test_fix_method.py test_fix_raises_not_implemented   4 0 0   100%
tests / unit / tools / pydoclint / test_fix_method.py (no function)   5 0 0   100%
tests / unit / tools / pydoclint / test_set_options.py test_set_options_quiet   2 0 0   100%
tests / unit / tools / pydoclint / test_set_options.py test_set_options_timeout   2 0 0   100%
tests / unit / tools / pydoclint / test_set_options.py (no function)   5 0 0   100%
tests / unit / tools / pytest_tool / __init__.py (no function)   0 0 0   100%
tests / unit / tools / pytest_tool / conftest.py mock_test_tool   9 9 0   0%
tests / unit / tools / pytest_tool / conftest.py patch_pytest_tool_for_check   2 2 0   0%
tests / unit / tools / pytest_tool / conftest.py sample_pytest_plugin   3 0 0   100%
tests / unit / tools / pytest_tool / conftest.py sample_pytest_config   1 0 0   100%
tests / unit / tools / pytest_tool / conftest.py result_processor   1 0 0   100%
tests / unit / tools / pytest_tool / conftest.py mock_test_success_output   1 0 0   100%
tests / unit / tools / pytest_tool / conftest.py mock_test_failure_output   1 0 0   100%
tests / unit / tools / pytest_tool / conftest.py mock_test_mixed_output   1 0 0   100%
tests / unit / tools / pytest_tool / conftest.py mock_test_json_success   2 0 0   100%
tests / unit / tools / pytest_tool / conftest.py mock_test_json_failure   2 0 0   100%
tests / unit / tools / pytest_tool / conftest.py mock_test_json_mixed   2 0 0   100%
tests / unit / tools / pytest_tool / conftest.py mock_test_junit_xml_success   1 0 0   100%
tests / unit / tools / pytest_tool / conftest.py mock_test_junit_xml_failure   1 0 0   100%
tests / unit / tools / pytest_tool / conftest.py mock_test_junit_xml_mixed   1 0 0   100%
tests / unit / tools / pytest_tool / conftest.py sample_pytest_issues   1 0 0   100%
tests / unit / tools / pytest_tool / conftest.py sample_passed_issues   1 1 0   0%
tests / unit / tools / pytest_tool / conftest.py mock_subprocess_success   5 5 0   0%
tests / unit / tools / pytest_tool / conftest.py mock_subprocess_failure   5 5 0   0%
tests / unit / tools / pytest_tool / conftest.py (no function)   46 0 2   100%
tests / unit / tools / pytest_tool / test_check_method.py test_check_success_with_mocked_subprocess   5 0 0   100%
tests / unit / tools / pytest_tool / test_check_method.py test_check_failure_with_mocked_subprocess   6 0 0   100%
tests / unit / tools / pytest_tool / test_check_method.py test_check_handles_executor_not_initialized   5 0 0   100%
tests / unit / tools / pytest_tool / test_check_method.py test_check_handles_result_processor_not_initialized   5 0 0   100%
tests / unit / tools / pytest_tool / test_check_method.py test_collect_only_mode_enabled   3 0 0   100%
tests / unit / tools / pytest_tool / test_check_method.py test_collect_only_returns_special_mode   3 0 0   100%
tests / unit / tools / pytest_tool / test_check_method.py (no function)   12 0 2   100%
tests / unit / tools / pytest_tool / test_configuration.py test_default_values   3 0 0   100%
tests / unit / tools / pytest_tool / test_configuration.py test_set_options   4 0 0   100%
tests / unit / tools / pytest_tool / test_configuration.py test_get_options_dict   6 0 0   100%
tests / unit / tools / pytest_tool / test_configuration.py test_is_special_mode_false_by_default   1 0 0   100%
tests / unit / tools / pytest_tool / test_configuration.py test_is_special_mode_true_when_set   2 0 0   100%
tests / unit / tools / pytest_tool / test_configuration.py test_get_special_mode_none_by_default   1 0 0   100%
tests / unit / tools / pytest_tool / test_configuration.py test_get_special_mode_returns_correct_mode   2 0 0   100%
tests / unit / tools / pytest_tool / test_configuration.py (no function)   11 0 0   100%
tests / unit / tools / pytest_tool / test_json_parsing.py test_parse_json_success_returns_empty   2 0 0   100%
tests / unit / tools / pytest_tool / test_json_parsing.py test_parse_json_failure_returns_issues   4 0 0   100%
tests / unit / tools / pytest_tool / test_json_parsing.py test_parse_json_mixed_returns_all_issues   4 0 0   100%
tests / unit / tools / pytest_tool / test_json_parsing.py test_parse_json_empty_returns_empty   2 0 0   100%
tests / unit / tools / pytest_tool / test_json_parsing.py test_parse_json_invalid_returns_empty   2 0 0   100%
tests / unit / tools / pytest_tool / test_json_parsing.py (no function)   8 0 0   100%
tests / unit / tools / pytest_tool / test_junit_parsing.py test_parse_junit_success_returns_empty   2 0 0   100%
tests / unit / tools / pytest_tool / test_junit_parsing.py test_parse_junit_failure_returns_issues   4 0 0   100%
tests / unit / tools / pytest_tool / test_junit_parsing.py test_parse_junit_mixed_returns_all_issues   4 0 0   100%
tests / unit / tools / pytest_tool / test_junit_parsing.py test_parse_junit_empty_returns_empty   2 0 0   100%
tests / unit / tools / pytest_tool / test_junit_parsing.py (no function)   7 0 0   100%
tests / unit / tools / pytest_tool / test_output_parsing.py test_extract_summary_all_passed   5 0 0   100%
tests / unit / tools / pytest_tool / test_output_parsing.py test_extract_summary_with_failures   4 0 0   100%
tests / unit / tools / pytest_tool / test_output_parsing.py test_extract_summary_mixed_results   6 0 0   100%
tests / unit / tools / pytest_tool / test_output_parsing.py test_extract_summary_empty_output   5 0 0   100%
tests / unit / tools / pytest_tool / test_output_parsing.py test_dispatch_json_format   2 0 0   100%
tests / unit / tools / pytest_tool / test_output_parsing.py test_dispatch_junit_format   2 0 0   100%
tests / unit / tools / pytest_tool / test_output_parsing.py test_dispatch_text_format   3 0 0   100%
tests / unit / tools / pytest_tool / test_output_parsing.py test_default_format_is_text   3 0 0   100%
tests / unit / tools / pytest_tool / test_output_parsing.py (no function)   11 0 0   100%
tests / unit / tools / pytest_tool / test_output_processing.py test_process_test_summary_all_passed   3 0 0   100%
tests / unit / tools / pytest_tool / test_output_processing.py test_process_test_summary_with_failures   3 0 0   100%
tests / unit / tools / pytest_tool / test_output_processing.py test_detect_slow_tests_finds_slow   5 0 0   100%
tests / unit / tools / pytest_tool / test_output_processing.py test_detect_slow_tests_none_slow   3 0 0   100%
tests / unit / tools / pytest_tool / test_output_processing.py test_build_output_with_failures_includes_summary   3 0 0   100%
tests / unit / tools / pytest_tool / test_output_processing.py test_fallback_returns_empty_for_empty_output   2 0 0   100%
tests / unit / tools / pytest_tool / test_output_processing.py test_fallback_uses_json_when_option_set   2 0 0   100%
tests / unit / tools / pytest_tool / test_output_processing.py test_fallback_to_text_when_format_fails   3 0 0   100%
tests / unit / tools / pytest_tool / test_output_processing.py (no function)   12 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py _make_mock_tool   4 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_list_plugins_with_plugins   9 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_list_plugins_no_plugins   6 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_check_plugins_all_installed   6 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_check_plugins_some_missing   7 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_check_plugins_no_plugins_specified   4 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_collect_only_success   6 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_collect_only_failure   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_collect_only_exception   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_list_fixtures_success   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_list_fixtures_failure   4 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_list_fixtures_exception   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_fixture_info_found   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_fixture_info_not_found   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_fixture_info_exception   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_list_markers_success   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_list_markers_failure   4 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_list_markers_exception   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py test_handle_parametrize_help_returns_help_text   6 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_handlers.py (no function)   30 0 2   100%
tests / unit / tools / pytest_tool / test_pytest_issue.py test_pytest_issue_creation   7 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_issue.py test_pytest_issue_default_values   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_issue.py (no function)   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_output_processor.py test_pytest_output_processor_exports_constants   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_output_processor.py test_pytest_output_processor_exports_parse_function   3 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_output_processor.py test_pytest_output_processor_exports_analytics_functions   4 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_output_processor.py test_pytest_output_processor_exports_coverage_functions   3 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_output_processor.py test_pytest_output_processor_exports_formatter_functions   5 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_output_processor.py test_pytest_output_processor_all_attribute   3 0 0   100%
tests / unit / tools / pytest_tool / test_pytest_output_processor.py (no function)   8 0 0   100%
tests / unit / tools / pytest_tool / test_result_processor.py test_build_result_success   5 0 0   100%
tests / unit / tools / pytest_tool / test_result_processor.py test_build_result_failure   4 0 0   100%
tests / unit / tools / pytest_tool / test_result_processor.py test_build_result_filters_skipped   5 0 0   100%
tests / unit / tools / pytest_tool / test_result_processor.py test_build_result_has_pytest_summary   4 0 0   100%
tests / unit / tools / pytest_tool / test_result_processor.py (no function)   9 0 0   100%
tests / unit / tools / pytest_tool / test_set_options.py test_set_options_valid   2 0 0   100%
tests / unit / tools / pytest_tool / test_set_options.py test_set_options_workers_int_coerces_to_string   2 0 0   100%
tests / unit / tools / pytest_tool / test_set_options.py test_set_options_invalid_type   2 0 0   100%
tests / unit / tools / pytest_tool / test_set_options.py (no function)   9 0 2   100%
tests / unit / tools / pytest_tool / test_text_parsing.py test_parse_text_failed_line   5 0 0   100%
tests / unit / tools / pytest_tool / test_text_parsing.py test_parse_text_error_line   4 0 0   100%
tests / unit / tools / pytest_tool / test_text_parsing.py test_parse_text_skipped_line   4 0 0   100%
tests / unit / tools / pytest_tool / test_text_parsing.py test_parse_text_empty_returns_empty   2 0 0   100%
tests / unit / tools / pytest_tool / test_text_parsing.py (no function)   7 0 0   100%
tests / unit / tools / pytest_tool / test_validators.py test_validate_valid_options_passes   1 0 0   100%
tests / unit / tools / pytest_tool / test_validators.py test_validate_invalid_tb_raises   2 0 0   100%
tests / unit / tools / pytest_tool / test_validators.py test_validate_invalid_maxfail_raises   2 0 0   100%
tests / unit / tools / pytest_tool / test_validators.py test_validate_invalid_coverage_threshold_raises   2 0 0   100%
tests / unit / tools / pytest_tool / test_validators.py test_validate_flaky_failure_rate_bounds   2 0 0   100%
tests / unit / tools / pytest_tool / test_validators.py (no function)   8 0 0   100%
tests / unit / tools / ruff / __init__.py (no function)   0 0 0   100%
tests / unit / tools / ruff / check / __init__.py (no function)   0 0 0   100%
tests / unit / tools / ruff / check / conftest.py (no function)   0 0 0   100%
tests / unit / tools / ruff / check / test_config_detection.py test_execute_ruff_check_uses_cwd_for_config_discovery   6 0 0   100%
tests / unit / tools / ruff / check / test_config_detection.py test_execute_ruff_check_with_config_args   5 0 0   100%
tests / unit / tools / ruff / check / test_config_detection.py (no function)   6 0 0   100%
tests / unit / tools / ruff / check / test_error_handling.py test_execute_ruff_check_handles_timeout   5 0 0   100%
tests / unit / tools / ruff / check / test_error_handling.py test_execute_ruff_check_handles_format_timeout   8 0 0   100%
tests / unit / tools / ruff / check / test_error_handling.py test_execute_ruff_check_subprocess_failure_respected   4 0 0   100%
tests / unit / tools / ruff / check / test_error_handling.py test_execute_ruff_check_version_check_failure   5 0 0   100%
tests / unit / tools / ruff / check / test_error_handling.py (no function)   11 0 0   100%
tests / unit / tools / ruff / check / test_format_normalization.py test_execute_ruff_check_normalizes_format_paths_to_absolute   9 0 0   100%
tests / unit / tools / ruff / check / test_format_normalization.py (no function)   7 0 0   100%
tests / unit / tools / ruff / check / test_json_parsing.py test_execute_ruff_check_parses_json_output_correctly   14 0 0   100%
tests / unit / tools / ruff / check / test_json_parsing.py test_execute_ruff_check_empty_json_output   4 0 0   100%
tests / unit / tools / ruff / check / test_json_parsing.py test_execute_ruff_check_parses_format_check_output   8 0 0   100%
tests / unit / tools / ruff / check / test_json_parsing.py (no function)   9 0 0   100%
tests / unit / tools / ruff / check / test_no_issues.py test_execute_ruff_check_no_issues_returns_success   5 0 0   100%
tests / unit / tools / ruff / check / test_no_issues.py test_execute_ruff_check_no_issues_with_format_check   5 0 0   100%
tests / unit / tools / ruff / check / test_no_issues.py test_execute_ruff_check_empty_paths_returns_no_files_message   5 0 0   100%
tests / unit / tools / ruff / check / test_no_issues.py test_execute_ruff_check_no_python_files_found   5 0 0   100%
tests / unit / tools / ruff / check / test_no_issues.py (no function)   8 0 0   100%
tests / unit / tools / ruff / check / test_output_format.py test_execute_ruff_check_output_is_none_on_success   3 0 0   100%
tests / unit / tools / ruff / check / test_output_format.py test_execute_ruff_check_output_is_none_with_issues   5 0 0   100%
tests / unit / tools / ruff / check / test_output_format.py (no function)   7 0 0   100%
tests / unit / tools / ruff / check / test_output_truncation.py test_check_failure_logs_output_to_debug_only   9 0 0   100%
tests / unit / tools / ruff / check / test_output_truncation.py test_format_check_failure_logs_output_to_debug_only   11 0 0   100%
tests / unit / tools / ruff / check / test_output_truncation.py test_check_success_does_not_log_output   5 0 0   100%
tests / unit / tools / ruff / check / test_output_truncation.py (no function)   7 0 0   100%
tests / unit / tools / ruff / check / test_path_filtering.py test_execute_ruff_check_filters_python_files   5 0 0   100%
tests / unit / tools / ruff / check / test_path_filtering.py test_execute_ruff_check_uses_exclude_patterns   5 0 0   100%
tests / unit / tools / ruff / check / test_path_filtering.py test_execute_ruff_check_respects_include_venv   5 0 0   100%
tests / unit / tools / ruff / check / test_path_filtering.py test_execute_ruff_check_converts_paths_to_relative   8 0 0   100%
tests / unit / tools / ruff / check / test_path_filtering.py test_execute_ruff_check_handles_multiple_directories   4 0 0   100%
tests / unit / tools / ruff / check / test_path_filtering.py test_execute_ruff_check_uses_absolute_paths_when_no_cwd   7 0 0   100%
tests / unit / tools / ruff / check / test_path_filtering.py (no function)   10 0 0   100%
tests / unit / tools / ruff / check / test_real_plugin.py test_execute_ruff_check_with_real_plugin_no_files   4 0 0   100%
tests / unit / tools / ruff / check / test_real_plugin.py test_execute_ruff_check_with_real_plugin   4 0 0   100%
tests / unit / tools / ruff / check / test_real_plugin.py (no function)   8 0 2   100%
tests / unit / tools / ruff / check / test_timeout.py test_execute_ruff_check_uses_default_timeout   1 0 0   100%
tests / unit / tools / ruff / check / test_timeout.py test_execute_ruff_check_uses_tool_timeout   5 0 0   100%
tests / unit / tools / ruff / check / test_timeout.py (no function)   6 0 0   100%
tests / unit / tools / ruff / check / test_with_issues.py test_execute_ruff_check_with_lint_issues_returns_failure   9 0 0   100%
tests / unit / tools / ruff / check / test_with_issues.py test_execute_ruff_check_with_multiple_lint_issues   6 0 0   100%
tests / unit / tools / ruff / check / test_with_issues.py test_execute_ruff_check_with_format_issues_returns_failure   7 0 0   100%
tests / unit / tools / ruff / check / test_with_issues.py test_execute_ruff_check_combines_lint_and_format_issues   7 0 0   100%
tests / unit / tools / ruff / check / test_with_issues.py (no function)   11 0 0   100%
tests / unit / tools / ruff / conftest.py mock_ruff_tool   15 0 0   100%
tests / unit / tools / ruff / conftest.py ruff_plugin   3 0 0   100%
tests / unit / tools / ruff / conftest.py sample_ruff_json_output   1 0 0   100%
tests / unit / tools / ruff / conftest.py sample_ruff_json_empty_output   1 0 0   100%
tests / unit / tools / ruff / conftest.py sample_ruff_format_check_output   1 0 0   100%
tests / unit / tools / ruff / conftest.py sample_ruff_format_check_empty_output   1 1 0   0%
tests / unit / tools / ruff / conftest.py temp_python_file   3 0 0   100%
tests / unit / tools / ruff / conftest.py temp_python_files   6 0 0   100%
tests / unit / tools / ruff / conftest.py (no function)   23 0 2   100%
tests / unit / tools / ruff / fix / __init__.py (no function)   0 0 0   100%
tests / unit / tools / ruff / fix / conftest.py (no function)   0 0 0   100%
tests / unit / tools / ruff / fix / test_combined_issues.py test_execute_ruff_fix_combined_lint_and_format_issues   8 0 0   100%
tests / unit / tools / ruff / fix / test_combined_issues.py test_execute_ruff_fix_partial_fix_with_format   10 0 0   100%
tests / unit / tools / ruff / fix / test_combined_issues.py (no function)   6 0 0   100%
tests / unit / tools / ruff / fix / test_config.py test_execute_ruff_fix_uses_config_args   6 0 0   100%
tests / unit / tools / ruff / fix / test_config.py (no function)   4 0 0   100%
tests / unit / tools / ruff / fix / test_edge_cases.py test_execute_ruff_fix_handles_malformed_json   6 0 0   100%
tests / unit / tools / ruff / fix / test_edge_cases.py test_execute_ruff_fix_handles_empty_output   6 0 0   100%
tests / unit / tools / ruff / fix / test_edge_cases.py test_execute_ruff_fix_format_exit_code_handling   6 0 0   100%
tests / unit / tools / ruff / fix / test_edge_cases.py test_execute_ruff_fix_multiple_files   5 0 0   100%
tests / unit / tools / ruff / fix / test_edge_cases.py (no function)   8 0 0   100%
tests / unit / tools / ruff / fix / test_format_option.py test_execute_ruff_fix_with_format_enabled   7 0 0   100%
tests / unit / tools / ruff / fix / test_format_option.py test_execute_ruff_fix_format_disabled   6 0 0   100%
tests / unit / tools / ruff / fix / test_format_option.py test_execute_ruff_fix_lint_fix_disabled   7 0 0   100%
tests / unit / tools / ruff / fix / test_format_option.py (no function)   7 0 0   100%
tests / unit / tools / ruff / fix / test_no_files.py test_execute_ruff_fix_no_paths   4 0 0   100%
tests / unit / tools / ruff / fix / test_no_files.py test_execute_ruff_fix_no_python_files_found   8 0 0   100%
tests / unit / tools / ruff / fix / test_no_files.py (no function)   7 0 0   100%
tests / unit / tools / ruff / fix / test_real_plugin.py test_execute_ruff_fix_with_real_plugin_no_files   3 0 0   100%
tests / unit / tools / ruff / fix / test_real_plugin.py test_execute_ruff_fix_with_real_plugin_nonexistent_path   2 0 0   100%
tests / unit / tools / ruff / fix / test_real_plugin.py test_execute_ruff_fix_integration_with_temp_file   5 0 0   100%
tests / unit / tools / ruff / fix / test_real_plugin.py (no function)   9 0 2   100%
tests / unit / tools / ruff / fix / test_successful_fix.py test_execute_ruff_fix_with_fixable_issues   9 0 0   100%
tests / unit / tools / ruff / fix / test_successful_fix.py test_execute_ruff_fix_with_no_issues   7 0 0   100%
tests / unit / tools / ruff / fix / test_successful_fix.py test_execute_ruff_fix_with_unfixable_issues   8 0 0   100%
tests / unit / tools / ruff / fix / test_successful_fix.py (no function)   7 0 0   100%
tests / unit / tools / ruff / fix / test_temporary_option.py test_temporary_option_sets_and_restores_value   4 0 0   100%
tests / unit / tools / ruff / fix / test_temporary_option.py test_temporary_option_restores_original_value   4 0 0   100%
tests / unit / tools / ruff / fix / test_temporary_option.py test_temporary_option_restores_on_exception   6 0 0   100%
tests / unit / tools / ruff / fix / test_temporary_option.py test_temporary_option_removes_new_key_on_exit   4 0 0   100%
tests / unit / tools / ruff / fix / test_temporary_option.py (no function)   9 0 0   100%
tests / unit / tools / ruff / fix / test_timeout.py test_execute_ruff_fix_timeout_on_initial_check   7 0 0   100%
tests / unit / tools / ruff / fix / test_timeout.py test_execute_ruff_fix_timeout_on_fix_command   7 0 0   100%
tests / unit / tools / ruff / fix / test_timeout.py test_execute_ruff_fix_timeout_on_format_check   8 0 0   100%
tests / unit / tools / ruff / fix / test_timeout.py test_execute_ruff_fix_timeout_on_format_command   8 0 0   100%
tests / unit / tools / ruff / fix / test_timeout.py test_execute_ruff_fix_timeout_on_unsafe_check_continues   7 0 0   100%
tests / unit / tools / ruff / fix / test_timeout.py (no function)   10 0 0   100%
tests / unit / tools / ruff / fix / test_unsafe_fixes.py test_execute_ruff_fix_unsafe_fixes_enabled   6 0 0   100%
tests / unit / tools / ruff / fix / test_unsafe_fixes.py test_execute_ruff_fix_warns_about_unsafe_fixes   8 0 0   100%
tests / unit / tools / ruff / fix / test_unsafe_fixes.py (no function)   6 0 0   100%
tests / unit / tools / ruff / fix / test_version_check.py test_execute_ruff_fix_version_check_fails   4 0 0   100%
tests / unit / tools / ruff / fix / test_version_check.py (no function)   6 0 0   100%
tests / unit / tools / rustfmt / __init__.py (no function)   0 0 0   100%
tests / unit / tools / rustfmt / conftest.py rustfmt_plugin   2 0 0   100%
tests / unit / tools / rustfmt / conftest.py (no function)   6 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py test_check_with_timeout   11 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py test_fix_with_timeout_on_initial_check   11 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py test_fix_with_timeout_on_fix_command   14 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py test_fix_with_timeout_on_fix_command.mock_run   4 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py test_fix_with_timeout_on_verification   14 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py test_fix_with_timeout_on_verification.mock_run   6 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py test_parse_rustfmt_output_with_diff   4 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py test_parse_rustfmt_output_multiple_files   3 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py test_parse_rustfmt_output_empty   2 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py test_parse_rustfmt_output_none   2 0 0   100%
tests / unit / tools / rustfmt / test_error_handling.py (no function)   15 0 0   100%
tests / unit / tools / rustfmt / test_execution.py test_check_no_cargo_toml   6 0 0   100%
tests / unit / tools / rustfmt / test_execution.py test_check_with_mocked_subprocess_success   10 0 0   100%
tests / unit / tools / rustfmt / test_execution.py test_check_with_mocked_subprocess_issues   11 0 0   100%
tests / unit / tools / rustfmt / test_execution.py test_check_with_no_rust_files   6 0 0   100%
tests / unit / tools / rustfmt / test_execution.py test_fix_no_cargo_toml   7 0 0   100%
tests / unit / tools / rustfmt / test_execution.py test_fix_with_mocked_subprocess_success   13 0 0   100%
tests / unit / tools / rustfmt / test_execution.py test_fix_with_mocked_subprocess_success.mock_run   6 0 0   100%
tests / unit / tools / rustfmt / test_execution.py test_fix_with_nothing_to_fix   11 0 0   100%
tests / unit / tools / rustfmt / test_execution.py (no function)   12 0 0   100%
tests / unit / tools / rustfmt / test_options.py test_definition_attributes   1 0 0   100%
tests / unit / tools / rustfmt / test_options.py test_definition_file_patterns   2 0 0   100%
tests / unit / tools / rustfmt / test_options.py test_definition_native_configs   3 0 0   100%
tests / unit / tools / rustfmt / test_options.py test_definition_version_command   3 0 0   100%
tests / unit / tools / rustfmt / test_options.py test_default_options_timeout   1 0 0   100%
tests / unit / tools / rustfmt / test_options.py test_set_options_valid_timeout   2 0 0   100%
tests / unit / tools / rustfmt / test_options.py test_set_options_invalid_timeout   2 0 0   100%
tests / unit / tools / rustfmt / test_options.py (no function)   16 0 2   100%
tests / unit / tools / semgrep / __init__.py (no function)   0 0 0   100%
tests / unit / tools / semgrep / conftest.py semgrep_plugin   2 0 0   100%
tests / unit / tools / semgrep / conftest.py (no function)   7 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py test_check_with_timeout   7 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py test_check_with_json_parse_error   8 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py test_check_with_semgrep_errors   7 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py test_parse_semgrep_output_single_issue   7 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py test_parse_semgrep_output_multiple_issues   5 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py test_parse_semgrep_output_empty   2 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py test_parse_semgrep_output_empty_results   3 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py test_parse_semgrep_output_with_cwe   4 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py test_parse_semgrep_output_none_input   2 0 0   100%
tests / unit / tools / semgrep / test_error_handling.py (no function)   18 0 2   100%
tests / unit / tools / semgrep / test_execution.py test_check_with_mocked_subprocess_success   7 0 0   100%
tests / unit / tools / semgrep / test_execution.py test_check_with_mocked_subprocess_findings   13 0 0   100%
tests / unit / tools / semgrep / test_execution.py test_check_with_multiple_findings   7 0 0   100%
tests / unit / tools / semgrep / test_execution.py test_fix_raises_not_implemented   2 0 0   100%
tests / unit / tools / semgrep / test_execution.py (no function)   13 0 0   100%
tests / unit / tools / semgrep / test_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / semgrep / test_options.py test_set_options_valid   5 0 0   100%
tests / unit / tools / semgrep / test_options.py test_set_options_severity_lowercase   2 0 0   100%
tests / unit / tools / semgrep / test_options.py test_set_options_invalid_type   2 0 0   100%
tests / unit / tools / semgrep / test_options.py test_build_check_command_basic   8 0 0   100%
tests / unit / tools / semgrep / test_options.py test_build_check_command_with_config   5 0 0   100%
tests / unit / tools / semgrep / test_options.py test_build_check_command_with_exclude   6 0 0   100%
tests / unit / tools / semgrep / test_options.py test_build_check_command_with_include   6 0 0   100%
tests / unit / tools / semgrep / test_options.py test_build_check_command_with_severity   5 0 0   100%
tests / unit / tools / semgrep / test_options.py test_build_check_command_with_jobs   5 0 0   100%
tests / unit / tools / semgrep / test_options.py test_build_check_command_with_timeout_threshold   5 0 0   100%
tests / unit / tools / semgrep / test_options.py test_build_check_command_with_verbose   3 0 0   100%
tests / unit / tools / semgrep / test_options.py test_build_check_command_with_quiet   3 0 0   100%
tests / unit / tools / semgrep / test_options.py test_build_check_command_with_all_options   11 0 0   100%
tests / unit / tools / semgrep / test_options.py (no function)   21 0 0   100%
tests / unit / tools / shellcheck / __init__.py (no function)   0 0 0   100%
tests / unit / tools / shellcheck / conftest.py shellcheck_plugin   2 0 0   100%
tests / unit / tools / shellcheck / conftest.py (no function)   7 0 0   100%
tests / unit / tools / shellcheck / test_error_handling.py test_check_with_timeout   6 0 0   100%
tests / unit / tools / shellcheck / test_error_handling.py (no function)   7 0 0   100%
tests / unit / tools / shellcheck / test_execution.py test_check_with_mocked_subprocess_success   6 0 0   100%
tests / unit / tools / shellcheck / test_execution.py test_check_with_mocked_subprocess_issues   7 0 0   100%
tests / unit / tools / shellcheck / test_execution.py test_check_with_no_shell_files   5 0 0   100%
tests / unit / tools / shellcheck / test_execution.py test_fix_raises_not_implemented   2 0 0   100%
tests / unit / tools / shellcheck / test_execution.py test_parse_shellcheck_output_single_issue   7 0 0   100%
tests / unit / tools / shellcheck / test_execution.py test_parse_shellcheck_output_multiple_issues   5 0 0   100%
tests / unit / tools / shellcheck / test_execution.py test_parse_shellcheck_output_empty   2 0 0   100%
tests / unit / tools / shellcheck / test_execution.py test_parse_shellcheck_output_none   2 0 0   100%
tests / unit / tools / shellcheck / test_execution.py test_parse_shellcheck_output_invalid_json   2 0 0   100%
tests / unit / tools / shellcheck / test_execution.py (no function)   16 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_set_options_valid   2 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_set_options_severity_case_insensitive   2 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_set_options_shell_case_insensitive   2 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_set_options_invalid_type   2 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_build_command_basic   6 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_build_command_with_severity   5 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_build_command_with_exclude_codes   7 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_build_command_with_shell_dialect   5 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_build_command_with_all_options   10 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_severity_levels_constant   5 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_shell_dialects_constant   5 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_default_timeout_constant   1 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_default_format_constant   1 0 0   100%
tests / unit / tools / shellcheck / test_options.py test_default_severity_constant   1 0 0   100%
tests / unit / tools / shellcheck / test_options.py (no function)   22 0 0   100%
tests / unit / tools / shfmt / __init__.py (no function)   0 0 0   100%
tests / unit / tools / shfmt / conftest.py shfmt_plugin   2 0 0   100%
tests / unit / tools / shfmt / conftest.py (no function)   6 0 0   100%
tests / unit / tools / shfmt / test_error_handling.py test_check_with_timeout   6 0 0   100%
tests / unit / tools / shfmt / test_error_handling.py test_fix_with_timeout   6 0 0   100%
tests / unit / tools / shfmt / test_error_handling.py test_parse_shfmt_output_single_file   7 0 0   100%
tests / unit / tools / shfmt / test_error_handling.py test_parse_shfmt_output_multiple_files   5 0 0   100%
tests / unit / tools / shfmt / test_error_handling.py test_parse_shfmt_output_empty   2 0 0   100%
tests / unit / tools / shfmt / test_error_handling.py test_parse_shfmt_output_none   2 0 0   100%
tests / unit / tools / shfmt / test_error_handling.py test_parse_shfmt_output_with_orig_suffix   4 0 0   100%
tests / unit / tools / shfmt / test_error_handling.py (no function)   15 0 2   100%
tests / unit / tools / shfmt / test_execution.py test_check_with_mocked_subprocess_success   7 0 0   100%
tests / unit / tools / shfmt / test_execution.py test_check_with_mocked_subprocess_issues   8 0 0   100%
tests / unit / tools / shfmt / test_execution.py test_check_with_no_shell_files   6 0 0   100%
tests / unit / tools / shfmt / test_execution.py test_fix_with_mocked_subprocess_success   11 0 0   100%
tests / unit / tools / shfmt / test_execution.py test_fix_with_mocked_subprocess_success.mock_run_subprocess   4 0 0   100%
tests / unit / tools / shfmt / test_execution.py test_fix_with_nothing_to_fix   7 0 0   100%
tests / unit / tools / shfmt / test_execution.py (no function)   11 0 2   100%
tests / unit / tools / shfmt / test_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / shfmt / test_options.py test_set_options_valid   2 0 0   100%
tests / unit / tools / shfmt / test_options.py test_set_options_language_dialect_case_insensitive   2 0 0   100%
tests / unit / tools / shfmt / test_options.py test_set_options_invalid_type   2 0 0   100%
tests / unit / tools / shfmt / test_options.py test_build_common_args_no_options   2 0 0   100%
tests / unit / tools / shfmt / test_options.py test_build_common_args_with_indent   5 0 0   100%
tests / unit / tools / shfmt / test_options.py test_build_common_args_with_indent_zero   5 0 0   100%
tests / unit / tools / shfmt / test_options.py test_build_common_args_with_binary_next_line   3 0 0   100%
tests / unit / tools / shfmt / test_options.py test_build_common_args_with_switch_case_indent   3 0 0   100%
tests / unit / tools / shfmt / test_options.py test_build_common_args_with_space_redirects   3 0 0   100%
tests / unit / tools / shfmt / test_options.py test_build_common_args_with_language_dialect   5 0 0   100%
tests / unit / tools / shfmt / test_options.py test_build_common_args_with_simplify   3 0 0   100%
tests / unit / tools / shfmt / test_options.py test_build_common_args_with_all_options   12 0 0   100%
tests / unit / tools / shfmt / test_options.py (no function)   21 0 2   100%
tests / unit / tools / sqlfluff / __init__.py (no function)   0 0 0   100%
tests / unit / tools / sqlfluff / conftest.py sqlfluff_plugin   2 0 0   100%
tests / unit / tools / sqlfluff / conftest.py (no function)   7 0 0   100%
tests / unit / tools / sqlfluff / test_error_handling.py test_check_with_timeout   5 0 0   100%
tests / unit / tools / sqlfluff / test_error_handling.py test_check_with_empty_output   6 0 0   100%
tests / unit / tools / sqlfluff / test_error_handling.py test_fix_with_timeout   5 0 0   100%
tests / unit / tools / sqlfluff / test_error_handling.py (no function)   9 0 0   100%
tests / unit / tools / sqlfluff / test_execution.py test_check_with_mocked_subprocess_success   6 0 0   100%
tests / unit / tools / sqlfluff / test_execution.py test_check_with_mocked_subprocess_issues   7 0 0   100%
tests / unit / tools / sqlfluff / test_execution.py test_check_with_no_sql_files   5 0 0   100%
tests / unit / tools / sqlfluff / test_execution.py test_fix_with_mocked_subprocess_success   6 0 0   100%
tests / unit / tools / sqlfluff / test_execution.py test_fix_with_mocked_subprocess_no_changes   5 0 0   100%
tests / unit / tools / sqlfluff / test_execution.py test_fix_with_no_sql_files   5 0 0   100%
tests / unit / tools / sqlfluff / test_execution.py (no function)   11 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_set_options_valid   2 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_set_options_invalid_type   2 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_lint_command_basic   7 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_lint_command_with_dialect   5 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_lint_command_with_exclude_rules   5 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_lint_command_with_rules   5 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_lint_command_with_templater   5 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_lint_command_with_all_options   7 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_lint_command_multiple_files   3 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_fix_command_basic   5 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_fix_command_with_dialect   5 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_fix_command_with_exclude_rules   3 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_fix_command_with_rules   3 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_fix_command_with_templater   5 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_build_fix_command_with_all_options   8 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_plugin_definition_name   1 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_plugin_definition_can_fix   1 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_plugin_definition_file_patterns   1 0 0   100%
tests / unit / tools / sqlfluff / test_options.py test_plugin_definition_native_configs   2 0 0   100%
tests / unit / tools / sqlfluff / test_options.py (no function)   27 0 0   100%
tests / unit / tools / sqlfluff / test_output_parsing.py test_parse_sqlfluff_output_single_issue   7 0 0   100%
tests / unit / tools / sqlfluff / test_output_parsing.py test_parse_sqlfluff_output_multiple_issues   5 0 0   100%
tests / unit / tools / sqlfluff / test_output_parsing.py test_parse_sqlfluff_output_multiple_files   5 0 0   100%
tests / unit / tools / sqlfluff / test_output_parsing.py test_parse_sqlfluff_output_empty   2 0 0   100%
tests / unit / tools / sqlfluff / test_output_parsing.py test_parse_sqlfluff_output_empty_array   2 0 0   100%
tests / unit / tools / sqlfluff / test_output_parsing.py test_parse_sqlfluff_output_no_violations   3 0 0   100%
tests / unit / tools / sqlfluff / test_output_parsing.py test_parse_sqlfluff_output_invalid_json   2 0 0   100%
tests / unit / tools / sqlfluff / test_output_parsing.py test_parse_sqlfluff_output_none   2 0 0   100%
tests / unit / tools / sqlfluff / test_output_parsing.py (no function)   11 0 0   100%
tests / unit / tools / svelte_check / __init__.py (no function)   0 0 0   100%
tests / unit / tools / svelte_check / conftest.py svelte_check_plugin   2 0 0   100%
tests / unit / tools / svelte_check / conftest.py (no function)   7 0 0   100%
tests / unit / tools / svelte_check / test_execution.py _mock_subprocess_success   1 0 0   100%
tests / unit / tools / svelte_check / test_execution.py _mock_subprocess_with_issues   2 0 0   100%
tests / unit / tools / svelte_check / test_execution.py test_check_no_svelte_files   6 0 0   100%
tests / unit / tools / svelte_check / test_execution.py test_check_no_svelte_config_proceeds_with_defaults   6 0 0   100%
tests / unit / tools / svelte_check / test_execution.py test_check_with_mocked_subprocess_success   8 0 0   100%
tests / unit / tools / svelte_check / test_execution.py test_check_with_mocked_subprocess_issues_found   17 0 0   100%
tests / unit / tools / svelte_check / test_execution.py test_fix_raises_not_implemented   2 0 0   100%
tests / unit / tools / svelte_check / test_execution.py test_check_with_threshold_option   11 0 0   100%
tests / unit / tools / svelte_check / test_execution.py test_check_with_threshold_option.capture_cmd   2 0 0   100%
tests / unit / tools / svelte_check / test_execution.py (no function)   16 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_definition_name   1 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_definition_description   1 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_definition_can_fix_is_false   1 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_definition_tool_type   2 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_definition_file_patterns   2 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_definition_priority   1 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_definition_native_configs   5 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_set_options_threshold_valid   2 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_set_options_tsconfig_valid   2 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_set_options_threshold_none   2 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_set_options_threshold_invalid_type   2 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_set_options_threshold_invalid_value   2 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_set_options_tsconfig_invalid_type   2 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_build_command_basic   5 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_build_command_with_threshold   5 0 0   100%
tests / unit / tools / svelte_check / test_options.py test_build_command_with_tsconfig   5 0 0   100%
tests / unit / tools / svelte_check / test_options.py (no function)   23 0 0   100%
tests / unit / tools / taplo / __init__.py (no function)   0 0 0   100%
tests / unit / tools / taplo / conftest.py taplo_plugin   2 0 0   100%
tests / unit / tools / taplo / conftest.py (no function)   7 0 0   100%
tests / unit / tools / taplo / test_error_handling.py test_check_with_timeout   7 0 0   100%
tests / unit / tools / taplo / test_error_handling.py test_check_with_timeout_on_format_check   6 0 0   100%
tests / unit / tools / taplo / test_error_handling.py test_fix_with_timeout   6 0 0   100%
tests / unit / tools / taplo / test_error_handling.py test_fix_with_timeout_during_fix_command   8 0 0   100%
tests / unit / tools / taplo / test_error_handling.py (no function)   10 0 0   100%
tests / unit / tools / taplo / test_execution.py test_check_with_mocked_subprocess_success   7 0 0   100%
tests / unit / tools / taplo / test_execution.py test_check_with_mocked_subprocess_lint_errors   8 0 0   100%
tests / unit / tools / taplo / test_execution.py test_check_with_mocked_subprocess_format_issues   8 0 0   100%
tests / unit / tools / taplo / test_execution.py test_check_with_no_toml_files   6 0 0   100%
tests / unit / tools / taplo / test_execution.py test_fix_with_mocked_subprocess_success   9 0 0   100%
tests / unit / tools / taplo / test_execution.py test_fix_with_mocked_subprocess_partial_fix   11 0 0   100%
tests / unit / tools / taplo / test_execution.py test_fix_with_no_changes_needed   9 0 0   100%
tests / unit / tools / taplo / test_execution.py test_fix_with_no_toml_files   6 0 0   100%
tests / unit / tools / taplo / test_execution.py (no function)   13 0 0   100%
tests / unit / tools / taplo / test_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / taplo / test_options.py test_set_options_valid   2 0 0   100%
tests / unit / tools / taplo / test_options.py test_set_options_invalid_type   2 0 0   100%
tests / unit / tools / taplo / test_options.py test_build_format_args_no_options   2 0 0   100%
tests / unit / tools / taplo / test_options.py test_build_format_args_with_aligned_arrays   3 0 0   100%
tests / unit / tools / taplo / test_options.py test_build_format_args_with_aligned_entries   3 0 0   100%
tests / unit / tools / taplo / test_options.py test_build_format_args_with_array_trailing_comma   3 0 0   100%
tests / unit / tools / taplo / test_options.py test_build_format_args_with_indent_string   3 0 0   100%
tests / unit / tools / taplo / test_options.py test_build_format_args_with_reorder_keys   3 0 0   100%
tests / unit / tools / taplo / test_options.py test_build_format_args_with_all_options   8 0 0   100%
tests / unit / tools / taplo / test_options.py test_build_lint_args_no_options   2 0 0   100%
tests / unit / tools / taplo / test_options.py test_build_lint_args_with_schema   5 0 0   100%
tests / unit / tools / taplo / test_options.py test_build_lint_args_with_url_schema   6 0 0   100%
tests / unit / tools / taplo / test_options.py (no function)   20 0 0   100%
tests / unit / tools / test_common_behaviors.py _get_plugin_instance   5 0 0   100%
tests / unit / tools / test_common_behaviors.py mock_execution_context   2 0 0   100%
tests / unit / tools / test_common_behaviors.py mock_execution_context._create   8 0 0   100%
tests / unit / tools / test_common_behaviors.py test_check_success_no_issues   13 2 0   85%
tests / unit / tools / test_common_behaviors.py test_check_failure_with_issues   15 5 0   67%
tests / unit / tools / test_common_behaviors.py _create_mock_timeout_result   5 0 0   100%
tests / unit / tools / test_common_behaviors.py test_check_timeout_handling   19 1 0   95%
tests / unit / tools / test_common_behaviors.py test_fix_raises_not_implemented   3 0 0   100%
tests / unit / tools / test_common_behaviors.py test_check_early_return_when_should_skip   8 0 0   100%
tests / unit / tools / test_common_behaviors.py (no function)   27 0 2   100%
tests / unit / tools / test_doc_url.py test_simple_doc_url   2 0 0   100%
tests / unit / tools / test_doc_url.py test_hadolint_dl_code_returns_hadolint_wiki   2 0 0   100%
tests / unit / tools / test_doc_url.py test_hadolint_sc_code_returns_shellcheck_wiki   2 0 0   100%
tests / unit / tools / test_doc_url.py test_hadolint_lowercase_dl_code_uppercased   2 0 0   100%
tests / unit / tools / test_doc_url.py test_hadolint_unknown_prefix_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_hadolint_empty_code_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_oxlint_category_rule_format   2 0 0   100%
tests / unit / tools / test_doc_url.py test_oxlint_no_slash_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_oxlint_empty_code_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_tsc_ts_prefixed_code   2 0 0   100%
tests / unit / tools / test_doc_url.py test_tsc_numeric_only_code   2 0 0   100%
tests / unit / tools / test_doc_url.py test_tsc_non_numeric_code_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_tsc_empty_code_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_vue_tsc_ts_prefixed_code   2 0 0   100%
tests / unit / tools / test_doc_url.py test_vue_tsc_numeric_only_code   2 0 0   100%
tests / unit / tools / test_doc_url.py test_vue_tsc_non_numeric_code_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_vue_tsc_empty_code_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_semgrep_registry_rule_id   2 0 0   100%
tests / unit / tools / test_doc_url.py test_semgrep_local_rule_with_slash_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_semgrep_simple_name_without_dot_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_semgrep_empty_code_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py test_ruff_resolves_rule_name_to_url   4 0 0   100%
tests / unit / tools / test_doc_url.py test_ruff_caches_resolved_name   5 0 0   100%
tests / unit / tools / test_doc_url.py test_ruff_timeout_returns_none_and_caches   7 0 0   100%
tests / unit / tools / test_doc_url.py test_ruff_json_error_returns_none   4 0 0   100%
tests / unit / tools / test_doc_url.py test_ruff_nonzero_exit_returns_none   4 0 0   100%
tests / unit / tools / test_doc_url.py test_ruff_empty_code_returns_none   2 0 0   100%
tests / unit / tools / test_doc_url.py (no function)   59 0 0   100%
tests / unit / tools / test_edge_cases.py test_regular_symlink_is_followed   7 0 0   100%
tests / unit / tools / test_edge_cases.py test_broken_symlink_handled_gracefully   11 1 0   91%
tests / unit / tools / test_edge_cases.py test_symlink_directory_traversal   8 0 0   100%
tests / unit / tools / test_edge_cases.py test_long_file_paths_handled   19 4 0   79%
tests / unit / tools / test_edge_cases.py test_path_with_spaces_and_special_chars   6 0 0   100%
tests / unit / tools / test_edge_cases.py test_unicode_in_tool_output   3 0 0   100%
tests / unit / tools / test_edge_cases.py test_unicode_in_file_paths   10 2 0   80%
tests / unit / tools / test_edge_cases.py test_concurrent_tool_result_creation   9 0 0   100%
tests / unit / tools / test_edge_cases.py test_concurrent_tool_result_creation.create_result   1 0 0   100%
tests / unit / tools / test_edge_cases.py test_concurrent_plugin_instantiation   8 0 0   100%
tests / unit / tools / test_edge_cases.py test_concurrent_plugin_instantiation.create_plugin   1 0 0   100%
tests / unit / tools / test_edge_cases.py test_empty_file_list_handling   9 0 0   100%
tests / unit / tools / test_edge_cases.py test_single_file_handling   14 0 0   100%
tests / unit / tools / test_edge_cases.py (no function)   25 0 2   100%
tests / unit / tools / test_helpers.py assert_tool_result_success   4 4 0   0%
tests / unit / tools / test_helpers.py assert_tool_result_failure   4 4 0   0%
tests / unit / tools / test_helpers.py assert_tool_result_timeout   5 5 0   0%
tests / unit / tools / test_helpers.py assert_tool_result_skipped   4 4 0   0%
tests / unit / tools / test_helpers.py create_mock_subprocess_result   5 5 0   0%
tests / unit / tools / test_helpers.py create_mock_tool_result   7 7 0   0%
tests / unit / tools / test_helpers.py patch_plugin_for_check_test   10 10 0   0%
tests / unit / tools / test_helpers.py patch_plugin_for_fix_test   10 10 0   0%
tests / unit / tools / test_helpers.py (no function)   32 0 3   100%
tests / unit / tools / test_plugin_definitions.py _get_plugin_instance   5 0 0   100%
tests / unit / tools / test_plugin_definitions.py test_definition_name   2 0 0   100%
tests / unit / tools / test_plugin_definitions.py test_definition_description_not_empty   2 0 0   100%
tests / unit / tools / test_plugin_definitions.py test_definition_description_contains_keywords   3 0 0   100%
tests / unit / tools / test_plugin_definitions.py test_definition_can_fix   2 0 0   100%
tests / unit / tools / test_plugin_definitions.py test_definition_tool_type   2 0 0   100%
tests / unit / tools / test_plugin_definitions.py test_definition_has_file_patterns   2 0 0   100%
tests / unit / tools / test_plugin_definitions.py test_definition_has_priority   2 0 0   100%
tests / unit / tools / test_plugin_definitions.py test_definition_has_default_timeout   2 0 0   100%
tests / unit / tools / test_plugin_definitions.py test_definition_native_configs_subset   3 0 0   100%
tests / unit / tools / test_plugin_definitions.py (no function)   27 0 0   100%
tests / unit / tools / test_tool_definitions.py _create_plugin_instance   4 0 0   100%
tests / unit / tools / test_tool_definitions.py test_tool_definition_name   2 0 0   100%
tests / unit / tools / test_tool_definitions.py test_tool_definition_has_description   2 0 0   100%
tests / unit / tools / test_tool_definitions.py test_tool_definition_timeout   2 0 0   100%
tests / unit / tools / test_tool_definitions.py test_tool_definition_priority   2 0 0   100%
tests / unit / tools / test_tool_definitions.py test_tool_definition_can_fix   2 0 0   100%
tests / unit / tools / test_tool_definitions.py test_tool_has_file_patterns   2 0 0   100%
tests / unit / tools / test_tool_definitions.py test_tool_has_default_options   3 0 0   100%
tests / unit / tools / test_tool_definitions.py (no function)   21 0 0   100%
tests / unit / tools / tsc / __init__.py (no function)   0 0 0   100%
tests / unit / tools / tsc / conftest.py (no function)   1 0 0   100%
tests / unit / tools / tsc / test_execution.py test_check_with_mocked_subprocess_success   7 0 0   100%
tests / unit / tools / tsc / test_execution.py test_check_with_mocked_subprocess_issues   8 0 0   100%
tests / unit / tools / tsc / test_execution.py test_check_with_timeout   7 0 0   100%
tests / unit / tools / tsc / test_execution.py test_check_with_no_typescript_files   6 0 0   100%
tests / unit / tools / tsc / test_execution.py test_check_parses_multiple_issues   8 0 0   100%
tests / unit / tools / tsc / test_execution.py test_fix_raises_not_implemented   2 0 0   100%
tests / unit / tools / tsc / test_execution.py (no function)   13 0 0   100%
tests / unit / tools / tsc / test_options.py test_definition_name   1 0 0   100%
tests / unit / tools / tsc / test_options.py test_definition_description   1 0 0   100%
tests / unit / tools / tsc / test_options.py test_definition_can_fix   1 0 0   100%
tests / unit / tools / tsc / test_options.py test_definition_tool_type   3 0 0   100%
tests / unit / tools / tsc / test_options.py test_definition_file_patterns   3 0 0   100%
tests / unit / tools / tsc / test_options.py test_definition_native_configs   1 0 0   100%
tests / unit / tools / tsc / test_options.py test_default_options_values   2 0 0   100%
tests / unit / tools / tsc / test_options.py test_definition_priority   1 0 0   100%
tests / unit / tools / tsc / test_options.py test_set_options_valid   2 0 0   100%
tests / unit / tools / tsc / test_options.py test_set_options_invalid_type   2 0 0   100%
tests / unit / tools / tsc / test_options.py test_get_tsc_command_with_tsc_available   3 0 0   100%
tests / unit / tools / tsc / test_options.py test_get_tsc_command_with_bunx_fallback   4 0 0   100%
tests / unit / tools / tsc / test_options.py test_get_tsc_command_with_bunx_fallback.which_side_effect   5 1 0   80%
tests / unit / tools / tsc / test_options.py test_get_tsc_command_with_npx_fallback   4 0 0   100%
tests / unit / tools / tsc / test_options.py test_get_tsc_command_with_npx_fallback.which_side_effect   3 0 0   100%
tests / unit / tools / tsc / test_options.py test_get_tsc_command_fallback_to_tsc   3 0 0   100%
tests / unit / tools / tsc / test_options.py test_build_command_default   7 0 0   100%
tests / unit / tools / tsc / test_options.py test_build_command_with_project   4 0 0   100%
tests / unit / tools / tsc / test_options.py test_build_command_with_strict   4 0 0   100%
tests / unit / tools / tsc / test_options.py test_build_command_without_strict   4 0 0   100%
tests / unit / tools / tsc / test_options.py test_build_command_without_skip_lib_check   4 0 0   100%
tests / unit / tools / tsc / test_options.py (no function)   28 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_find_tsconfig_finds_tsconfig_in_cwd   4 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_find_tsconfig_returns_none_when_no_tsconfig   2 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_find_tsconfig_uses_explicit_project_option   7 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_creates_file_with_extends   8 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_includes_specified_files   10 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_sets_no_emit   7 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_file_created_next_to_base   8 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_falls_back_to_system_temp_with_typeroots   17 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_falls_back_to_system_temp_with_typeroots.mock_mkstemp   4 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_fallback_preserves_custom_typeroots   17 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_fallback_preserves_custom_typeroots.mock_mkstemp   4 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_fallback_honours_empty_typeroots   15 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_fallback_honours_empty_typeroots.mock_mkstemp   4 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_set_options_validates_use_project_files_type   2 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_set_options_accepts_valid_use_project_files   4 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_default_options_use_project_files_defaults_to_false   2 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_detect_framework_project   7 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_detect_framework_project_returns_none_for_plain_ts   3 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_preserves_type_roots_from_jsonc_base   10 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_no_type_roots_when_base_has_none   7 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_ignores_non_list_type_roots   7 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_filters_non_string_type_roots   9 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py test_create_temp_tsconfig_ignores_non_dict_compiler_options   7 0 0   100%
tests / unit / tools / tsc / test_tsc_plugin.py (no function)   27 0 0   100%
tests / unit / tools / vue_tsc / __init__.py (no function)   0 0 0   100%
tests / unit / tools / vue_tsc / conftest.py vue_tsc_plugin   2 0 0   100%
tests / unit / tools / vue_tsc / conftest.py (no function)   7 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py _mock_subprocess_success   1 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py _mock_subprocess_with_issues   2 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py test_check_no_vue_files   5 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py test_check_with_mocked_subprocess_success   8 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py test_check_with_mocked_subprocess_issues_found   17 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py test_fix_raises_not_implemented   2 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py test_check_with_project_option   11 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py test_check_with_project_option.capture_cmd   2 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py test_check_no_tsconfig_passes_files_directly   9 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py test_check_no_tsconfig_passes_files_directly.capture_cmd   2 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py test_check_timeout_handling   9 0 0   100%
tests / unit / tools / vue_tsc / test_execution.py (no function)   17 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_definition_name   1 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_definition_description   1 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_definition_can_fix_is_false   1 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_definition_tool_type   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_definition_file_patterns   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_definition_priority   1 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_definition_native_configs   4 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_default_options_values   1 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_set_options_project_valid   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_set_options_project_none   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_set_options_strict_true   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_set_options_skip_lib_check_false   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_set_options_project_invalid_type   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_set_options_strict_invalid_type   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_set_options_skip_lib_check_invalid_type   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_set_options_use_project_files_invalid_type   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_build_command_basic   5 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_build_command_with_project   4 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_build_command_with_strict   3 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_build_command_with_skip_lib_check   2 0 0   100%
tests / unit / tools / vue_tsc / test_options.py test_build_command_without_skip_lib_check   3 0 0   100%
tests / unit / tools / vue_tsc / test_options.py (no function)   27 0 0   100%
tests / unit / tools / vue_tsc / test_vue_tsc_plugin.py test_create_temp_tsconfig_preserves_type_roots_from_jsonc_base   10 0 0   100%
tests / unit / tools / vue_tsc / test_vue_tsc_plugin.py test_create_temp_tsconfig_no_type_roots_when_base_has_none   7 0 0   100%
tests / unit / tools / vue_tsc / test_vue_tsc_plugin.py test_create_temp_tsconfig_ignores_non_list_type_roots   7 0 0   100%
tests / unit / tools / vue_tsc / test_vue_tsc_plugin.py test_create_temp_tsconfig_filters_non_string_type_roots   9 0 0   100%
tests / unit / tools / vue_tsc / test_vue_tsc_plugin.py test_create_temp_tsconfig_fallback_honours_empty_typeroots   15 0 0   100%
tests / unit / tools / vue_tsc / test_vue_tsc_plugin.py test_create_temp_tsconfig_fallback_honours_empty_typeroots.mock_mkstemp   4 0 0   100%
tests / unit / tools / vue_tsc / test_vue_tsc_plugin.py test_create_temp_tsconfig_ignores_non_dict_compiler_options   7 0 0   100%
tests / unit / tools / vue_tsc / test_vue_tsc_plugin.py (no function)   11 0 0   100%
tests / unit / utils / __init__.py (no function)   0 0 0   100%
tests / unit / utils / async_tool_executor / __init__.py (no function)   0 0 0   100%
tests / unit / utils / async_tool_executor / conftest.py MockToolPlugin.__post_init__   4 0 0   100%
tests / unit / utils / async_tool_executor / conftest.py MockToolPlugin.check   6 2 0   67%
tests / unit / utils / async_tool_executor / conftest.py MockToolPlugin.fix   6 2 0   67%
tests / unit / utils / async_tool_executor / conftest.py executor   3 0 0   100%
tests / unit / utils / async_tool_executor / conftest.py (no function)   24 0 0   100%
tests / unit / utils / async_tool_executor / test_callbacks.py test_on_result_callback_invoked   8 0 0   100%
tests / unit / utils / async_tool_executor / test_callbacks.py test_on_result_callback_invoked.on_result   1 0 0   100%
tests / unit / utils / async_tool_executor / test_callbacks.py test_on_result_callback_invoked.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_callbacks.py test_on_result_receives_correct_args   9 0 0   100%
tests / unit / utils / async_tool_executor / test_callbacks.py test_on_result_receives_correct_args.on_result   1 0 0   100%
tests / unit / utils / async_tool_executor / test_callbacks.py test_on_result_receives_correct_args.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_callbacks.py (no function)   11 0 0   100%
tests / unit / utils / async_tool_executor / test_exceptions.py test_exception_in_tool_creates_failed_result   10 0 0   100%
tests / unit / utils / async_tool_executor / test_exceptions.py test_exception_in_tool_creates_failed_result.raising_check   1 0 0   100%
tests / unit / utils / async_tool_executor / test_exceptions.py test_exception_in_tool_creates_failed_result.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_exceptions.py (no function)   10 0 0   100%
tests / unit / utils / async_tool_executor / test_init.py test_executor_initializes_with_default_workers   6 0 0   100%
tests / unit / utils / async_tool_executor / test_init.py test_executor_initializes_with_custom_workers   5 0 0   100%
tests / unit / utils / async_tool_executor / test_init.py (no function)   6 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_empty_tools_list   3 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_single_tool   7 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_no_conflicts   6 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_no_conflicts.get_tool   3 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_conflicting_tools   13 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_conflicting_tools.get_tool   7 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_multiple_conflicts   9 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_multiple_conflicts.get_tool   4 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_ordering_preserved   6 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_ordering_preserved.get_tool   3 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_handles_missing_tool   6 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_handles_missing_tool.get_tool   5 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_handles_tool_without_conflicts_attribute   5 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py test_get_parallel_batches_handles_tool_without_conflicts_attribute.get_tool   5 0 0   100%
tests / unit / utils / async_tool_executor / test_parallel_batches.py (no function)   12 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py test_run_tool_async_check_success   7 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py test_run_tool_async_check_success.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py test_run_tool_async_fix_success   6 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py test_run_tool_async_fix_success.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py test_run_tool_async_with_options   8 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py test_run_tool_async_with_options.check_with_capture   2 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py test_run_tool_async_with_options.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py test_run_tool_async_with_failure   6 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py test_run_tool_async_with_failure.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tool_async.py (no function)   13 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_success   6 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_success.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_with_failures   7 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_with_failures.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_empty_list   3 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_empty_list.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_single_tool   5 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_single_tool.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_with_options_per_tool   13 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_with_options_per_tool.check1   2 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_with_options_per_tool.check2   2 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py test_run_tools_parallel_with_options_per_tool.run_test   1 0 0   100%
tests / unit / utils / async_tool_executor / test_run_tools_parallel.py (no function)   14 0 0   100%
tests / unit / utils / async_tool_executor / test_shutdown.py test_shutdown_closes_thread_pool   4 0 0   100%
tests / unit / utils / async_tool_executor / test_shutdown.py test_shutdown_can_be_called_multiple_times   4 0 0   100%
tests / unit / utils / async_tool_executor / test_shutdown.py (no function)   5 0 0   100%
tests / unit / utils / config / __init__.py (no function)   0 0 0   100%
tests / unit / utils / config / conftest.py mock_manager_dependencies   2 0 0   100%
tests / unit / utils / config / conftest.py manager   1 0 0   100%
tests / unit / utils / config / conftest.py mock_tool   3 0 0   100%
tests / unit / utils / config / conftest.py (no function)   11 0 2   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_apply_config_does_nothing_for_tool_without_name   4 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_apply_config_calls_set_options_with_effective_config   3 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_apply_config_includes_line_length_for_injectable_tools   5 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_apply_config_cli_overrides_take_precedence   4 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_apply_config_raises_value_error_from_tool   4 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_apply_config_raises_type_error_from_tool   4 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_apply_config_handles_other_errors_gracefully   3 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_apply_config_skips_non_injectable_line_length   5 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_get_report_returns_string   3 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_get_report_delegates_to_config_reporting   3 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_print_report_calls_config_reporting   3 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_print_report_does_not_return_value   2 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_is_dataclass_instance   3 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_fields_are_accessible   3 0 0   100%
tests / unit / utils / config / test_manager_configuration.py test_manager_can_be_created_with_default_factory_values   5 0 0   100%
tests / unit / utils / config / test_manager_configuration.py (no function)   20 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_initialization_loads_global_config   3 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_initialization_loads_tool_configs   4 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_initialization_loads_warnings   5 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_refresh_reloads_all_config   5 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_refresh_does_not_raise   2 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_get_effective_line_length_delegates_to_module_function   3 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_get_effective_line_length_returns_none_when_not_configured   3 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_get_tool_config_returns_existing_config   5 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_get_tool_config_creates_config_for_missing_tool   5 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_get_tool_config_caches_created_config   3 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_get_ordered_tools_delegates_to_module_function   3 0 0   100%
tests / unit / utils / config / test_manager_core.py test_manager_get_ordered_tools_maintains_order   4 0 0   100%
tests / unit / utils / config / test_manager_core.py (no function)   16 0 0   100%
tests / unit / utils / conftest.py fake_tool_result   1 1 0   0%
tests / unit / utils / conftest.py fake_tool_result_factory   2 0 0   100%
tests / unit / utils / conftest.py fake_tool_result_factory._create   1 0 0   100%
tests / unit / utils / conftest.py fake_issue   1 1 0   0%
tests / unit / utils / conftest.py fake_issue_factory   2 0 0   100%
tests / unit / utils / conftest.py fake_issue_factory._create   1 0 0   100%
tests / unit / utils / conftest.py console_capture   3 0 0   100%
tests / unit / utils / conftest.py console_capture.capture   1 0 0   100%
tests / unit / utils / conftest.py console_capture_with_kwargs   3 0 0   100%
tests / unit / utils / conftest.py console_capture_with_kwargs.capture   1 0 0   100%
tests / unit / utils / conftest.py (no function)   35 0 2   100%
tests / unit / utils / console / conftest.py logger   1 0 0   100%
tests / unit / utils / console / conftest.py logger_with_run_dir   1 1 0   0%
tests / unit / utils / console / conftest.py (no function)   9 0 2   100%
tests / unit / utils / console / summary / __init__.py (no function)   0 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_summary_table_delegates_to_module_function   5 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_summary_table_converts_string_action   7 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_summary_table_action_normalization   6 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_totals_table_delegates_to_module_function   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_totals_table_delegates_fix_mode   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_totals_table_various_inputs   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_final_status_delegates_to_module_function   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_final_status_converts_string_action   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_final_status_various_inputs   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_final_status_format_delegates_correctly   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_final_status_format_various_counts   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_ascii_art_delegates_correctly   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_print_ascii_art_various_counts   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_execution_summary_outputs_header_and_border   5 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_execution_summary_calls_all_components   6 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_execution_summary_empty_results_handled   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py test_execution_summary_all_action_types   4 0 0   100%
tests / unit / utils / console / summary / test_delegation.py (no function)   30 0 3   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_check_no_issues   5 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_check_with_issues   8 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_check_failed_tool_shows_minimum_issues   5 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_check_issue_aggregation   5 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_fix_with_standardized_counts   5 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_fix_fallback_to_issues_count   4 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_fix_failed_tool_handled   4 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_fix_parses_remaining_from_output   5 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_fix_parses_cannot_autofix_from_output   5 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_fix_handles_string_sentinel_remaining   6 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py test_execution_summary_fix_various_counts   5 0 0   100%
tests / unit / utils / console / summary / test_execution_summary.py (no function)   20 0 3   100%
tests / unit / utils / console / test_logger_headers.py test_print_lintro_header_with_run_dir   6 0 0   100%
tests / unit / utils / console / test_logger_headers.py test_print_lintro_header_without_run_dir_is_noop   3 0 0   100%
tests / unit / utils / console / test_logger_headers.py test_print_tool_header_outputs_formatted_header   3 0 0   100%
tests / unit / utils / console / test_logger_headers.py test_print_tool_header_various_tools   5 0 0   100%
tests / unit / utils / console / test_logger_headers.py test_print_post_checks_header_outputs_styled_header   3 0 0   100%
tests / unit / utils / console / test_logger_headers.py (no function)   12 0 0   100%
tests / unit / utils / console / test_logger_initialization.py test_init_with_run_dir   2 0 0   100%
tests / unit / utils / console / test_logger_initialization.py test_init_without_run_dir   2 0 0   100%
tests / unit / utils / console / test_logger_initialization.py (no function)   6 0 0   100%
tests / unit / utils / console / test_logger_levels.py test_info_delegates_to_console_output   3 0 0   100%
tests / unit / utils / console / test_logger_levels.py test_debug_uses_loguru_logger   3 0 0   100%
tests / unit / utils / console / test_logger_levels.py test_warning_outputs_yellow_text   3 0 0   100%
tests / unit / utils / console / test_logger_levels.py test_error_outputs_red_text   6 0 0   100%
tests / unit / utils / console / test_logger_levels.py test_success_outputs_green_text_with_checkmark   3 0 0   100%
tests / unit / utils / console / test_logger_levels.py test_logging_methods_use_correct_colors   4 0 0   100%
tests / unit / utils / console / test_logger_levels.py (no function)   12 0 0   100%
tests / unit / utils / console / test_logger_metadata.py test_print_metadata_messages_patterns   5 0 0   100%
tests / unit / utils / console / test_logger_metadata.py test_print_pytest_results_success_message   4 0 0   100%
tests / unit / utils / console / test_logger_metadata.py test_print_pytest_results_failure_message   4 0 0   100%
tests / unit / utils / console / test_logger_metadata.py test_print_pytest_results_handles_empty_output   3 0 0   100%
tests / unit / utils / console / test_logger_metadata.py test_print_pytest_results_both_outcomes   3 0 0   100%
tests / unit / utils / console / test_logger_metadata.py (no function)   12 0 0   100%
tests / unit / utils / console / test_logger_output_methods.py test_console_output_no_color   3 0 0   100%
tests / unit / utils / console / test_logger_output_methods.py test_console_output_with_color   4 0 0   100%
tests / unit / utils / console / test_logger_output_methods.py test_console_output_various_colors   3 0 0   100%
tests / unit / utils / console / test_logger_output_methods.py test_save_console_log_creates_file   4 0 0   100%
tests / unit / utils / console / test_logger_output_methods.py test_save_console_log_no_run_dir_is_noop   1 0 0   100%
tests / unit / utils / console / test_logger_output_methods.py test_save_console_log_handles_os_error   7 0 0   100%
tests / unit / utils / console / test_logger_output_methods.py test_save_console_log_handles_permission_error   6 0 0   100%
tests / unit / utils / console / test_logger_output_methods.py (no function)   14 0 0   100%
tests / unit / utils / console / test_logger_results.py test_print_tool_result_outputs_content   3 0 0   100%
tests / unit / utils / console / test_logger_results.py test_print_tool_result_skips_empty_output   3 0 0   100%
tests / unit / utils / console / test_logger_results.py test_print_tool_result_includes_metadata_for_check_action   3 0 0   100%
tests / unit / utils / console / test_logger_results.py test_print_tool_result_skips_metadata_for_fix_action   3 0 0   100%
tests / unit / utils / console / test_logger_results.py test_print_tool_result_handles_pytest_for_test_action   4 0 0   100%
tests / unit / utils / console / test_logger_results.py (no function)   10 0 0   100%
tests / unit / utils / console / test_pre_execution_summary.py _render_summary   4 0 0   100%
tests / unit / utils / console / test_pre_execution_summary.py test_pre_execution_summary_shows_ai_when_disabled   5 0 0   100%
tests / unit / utils / console / test_pre_execution_summary.py test_pre_execution_summary_shows_ai_when_enabled   9 0 0   100%
tests / unit / utils / console / test_pre_execution_summary.py test_pre_execution_summary_shows_ai_when_config_missing   3 0 0   100%
tests / unit / utils / console / test_pre_execution_summary.py (no function)   11 0 0   100%
tests / unit / utils / native_parsers / __init__.py (no function)   0 0 0   100%
tests / unit / utils / native_parsers / conftest.py mock_empty_pyproject   3 0 0   100%
tests / unit / utils / native_parsers / conftest.py temp_cwd   2 0 0   100%
tests / unit / utils / native_parsers / conftest.py (no function)   9 0 0   100%
tests / unit / utils / native_parsers / test_config_constants.py test_config_file_lists_contain_expected_files   2 0 0   100%
tests / unit / utils / native_parsers / test_config_constants.py (no function)   6 0 0   100%
tests / unit / utils / native_parsers / test_json_config.py test_load_json_config_valid_json_file   4 0 0   100%
tests / unit / utils / native_parsers / test_json_config.py test_load_json_config_returns_empty_dict   4 0 0   100%
tests / unit / utils / native_parsers / test_json_config.py test_load_json_config_non_existent_file   3 0 0   100%
tests / unit / utils / native_parsers / test_json_config.py test_load_json_config_unicode_file_path   6 0 0   100%
tests / unit / utils / native_parsers / test_json_config.py test_load_json_config_empty_file   4 0 0   100%
tests / unit / utils / native_parsers / test_json_config.py test_load_json_config_null_json   4 0 0   100%
tests / unit / utils / native_parsers / test_json_config.py test_load_json_config_nested_empty_object   4 0 0   100%
tests / unit / utils / native_parsers / test_json_config.py (no function)   13 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_no_comments   3 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_line_comment   3 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_line_comment_on_own_line   4 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_block_comment   4 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_multiline_block_comment   4 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_preserve_comment_like_strings   3 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_escape_sequence_in_string   4 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_backslash_in_string   4 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_unclosed_block_comment_warning   4 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_empty_content   2 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_complex_jsonc   5 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_unicode_content   5 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_very_long_content   5 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_nested_comments   3 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_consecutive_comments   4 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_mixed_quotes   4 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_only_whitespace   2 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py test_strip_jsonc_comments_deeply_nested_json   4 0 0   100%
tests / unit / utils / native_parsers / test_jsonc_comments.py (no function)   25 0 0   100%
tests / unit / utils / native_parsers / test_markdownlint_config.py test_load_markdownlint_config_from_json   4 0 0   100%
tests / unit / utils / native_parsers / test_markdownlint_config.py test_load_markdownlint_config_from_jsonc   4 0 0   100%
tests / unit / utils / native_parsers / test_markdownlint_config.py test_load_markdownlint_config_from_yaml   4 0 0   100%
tests / unit / utils / native_parsers / test_markdownlint_config.py test_load_markdownlint_config_yaml_not_installed   5 0 0   100%
tests / unit / utils / native_parsers / test_markdownlint_config.py test_load_markdownlint_config_yaml_multi_document   6 0 0   100%
tests / unit / utils / native_parsers / test_markdownlint_config.py test_load_markdownlint_config_edge_cases   4 0 0   100%
tests / unit / utils / native_parsers / test_markdownlint_config.py (no function)   13 0 0   100%
tests / unit / utils / native_parsers / test_oxfmt_config.py test_load_oxfmt_config_from_oxfmtrc_json   4 0 0   100%
tests / unit / utils / native_parsers / test_oxfmt_config.py test_load_oxfmt_config_from_oxfmtrc_jsonc   5 0 0   100%
tests / unit / utils / native_parsers / test_oxfmt_config.py test_load_oxfmt_config_prefers_json_over_jsonc   4 0 0   100%
tests / unit / utils / native_parsers / test_oxfmt_config.py test_load_oxfmt_config_no_config_file   2 0 0   100%
tests / unit / utils / native_parsers / test_oxfmt_config.py test_load_oxfmt_config_invalid_json   3 0 0   100%
tests / unit / utils / native_parsers / test_oxfmt_config.py test_load_oxfmt_config_non_dict_returns_empty   3 0 0   100%
tests / unit / utils / native_parsers / test_oxfmt_config.py test_load_oxfmt_config_jsonc_with_block_comments   5 0 0   100%
tests / unit / utils / native_parsers / test_oxfmt_config.py test_load_oxfmt_config_jsonc_with_trailing_comma   4 0 0   100%
tests / unit / utils / native_parsers / test_oxfmt_config.py (no function)   13 0 0   100%
tests / unit / utils / native_parsers / test_oxlint_config.py test_load_oxlint_config_from_oxlintrc_json   4 0 0   100%
tests / unit / utils / native_parsers / test_oxlint_config.py test_load_oxlint_config_from_oxlint_json   4 0 0   100%
tests / unit / utils / native_parsers / test_oxlint_config.py test_load_oxlint_config_prefers_oxlintrc_json   4 0 0   100%
tests / unit / utils / native_parsers / test_oxlint_config.py test_load_oxlint_config_no_config_file   2 0 0   100%
tests / unit / utils / native_parsers / test_oxlint_config.py test_load_oxlint_config_invalid_json   3 0 0   100%
tests / unit / utils / native_parsers / test_oxlint_config.py test_load_oxlint_config_non_dict_returns_empty   3 0 0   100%
tests / unit / utils / native_parsers / test_oxlint_config.py (no function)   11 0 0   100%
tests / unit / utils / native_parsers / test_pyproject_tools.py test_load_native_tool_config_unknown_tool   2 0 0   100%
tests / unit / utils / native_parsers / test_pyproject_tools.py test_load_native_tool_config_from_pyproject   4 0 0   100%
tests / unit / utils / native_parsers / test_pyproject_tools.py test_load_native_tool_config_invalid_pyproject_structure   4 0 0   100%
tests / unit / utils / native_parsers / test_pyproject_tools.py (no function)   11 0 0   100%
tests / unit / utils / native_parsers / test_yamllint_config.py test_load_yamllint_config_from_file   4 0 0   100%
tests / unit / utils / native_parsers / test_yamllint_config.py test_load_yamllint_config_yaml_not_installed   5 0 0   100%
tests / unit / utils / native_parsers / test_yamllint_config.py test_load_yamllint_config_no_config_file   2 0 0   100%
tests / unit / utils / native_parsers / test_yamllint_config.py test_load_yamllint_config_invalid_yaml   4 0 0   100%
tests / unit / utils / native_parsers / test_yamllint_config.py test_load_yamllint_config_unicode_content   4 0 0   100%
tests / unit / utils / native_parsers / test_yamllint_config.py (no function)   10 0 0   100%
tests / unit / utils / output / __init__.py (no function)   1 0 0   100%
tests / unit / utils / output / conftest.py mock_tool_result_factory   2 0 0   100%
tests / unit / utils / output / conftest.py mock_tool_result_factory._create   1 0 0   100%
tests / unit / utils / output / conftest.py mock_issue_factory   2 0 0   100%
tests / unit / utils / output / conftest.py mock_issue_factory._create   1 0 0   100%
tests / unit / utils / output / conftest.py sample_results_with_issues   1 0 0   100%
tests / unit / utils / output / conftest.py sample_results_empty   1 0 0   100%
tests / unit / utils / output / conftest.py (no function)   25 0 2   100%
tests / unit / utils / output / test_file_writer_common.py test_write_output_file_creates_parent_directories   6 0 0   100%
tests / unit / utils / output / test_file_writer_common.py (no function)   8 0 3   100%
tests / unit / utils / output / test_file_writer_csv.py test_write_csv_file_creates_valid_file_with_headers   13 0 0   100%
tests / unit / utils / output / test_file_writer_csv.py test_write_csv_file_includes_issue_data   8 0 0   100%
tests / unit / utils / output / test_file_writer_csv.py (no function)   9 0 2   100%
tests / unit / utils / output / test_file_writer_format.py test_format_tool_output_returns_no_issues_for_empty_input   2 0 0   100%
tests / unit / utils / output / test_file_writer_format.py test_format_tool_output_formats_provided_issues   7 0 0   100%
tests / unit / utils / output / test_file_writer_format.py test_format_tool_output_falls_back_to_raw_for_unknown_tool   3 0 0   100%
tests / unit / utils / output / test_file_writer_format.py test_format_tool_output_parses_tool_specific_formats   4 0 0   100%
tests / unit / utils / output / test_file_writer_format.py test_format_tool_output_parses_bandit_json   6 0 0   100%
tests / unit / utils / output / test_file_writer_format.py test_format_tool_output_handles_invalid_bandit_json   6 0 0   100%
tests / unit / utils / output / test_file_writer_format.py test_format_tool_output_normalizes_format_string   2 0 0   100%
tests / unit / utils / output / test_file_writer_format.py test_tabulate_available_flag_is_true_in_test_environment   2 0 0   100%
tests / unit / utils / output / test_file_writer_format.py (no function)   16 0 0   100%
tests / unit / utils / output / test_file_writer_html.py test_write_html_file_creates_valid_structure   9 0 0   100%
tests / unit / utils / output / test_file_writer_html.py test_write_html_file_includes_issue_table   7 0 0   100%
tests / unit / utils / output / test_file_writer_html.py test_write_html_file_escapes_xss_characters   7 0 0   100%
tests / unit / utils / output / test_file_writer_html.py (no function)   10 0 3   100%
tests / unit / utils / output / test_file_writer_json.py test_write_json_file_creates_valid_file   12 0 0   100%
tests / unit / utils / output / test_file_writer_json.py test_write_json_file_includes_parsed_issues   9 0 0   100%
tests / unit / utils / output / test_file_writer_json.py (no function)   10 0 3   100%
tests / unit / utils / output / test_file_writer_markdown.py test_write_markdown_file_creates_valid_structure   8 0 0   100%
tests / unit / utils / output / test_file_writer_markdown.py test_write_markdown_file_includes_issue_table   8 0 0   100%
tests / unit / utils / output / test_file_writer_markdown.py test_write_markdown_file_escapes_pipe_characters   6 0 0   100%
tests / unit / utils / output / test_file_writer_markdown.py (no function)   10 0 3   100%
tests / unit / utils / output / test_file_writer_plain.py test_write_plain_file_creates_valid_structure   9 0 0   100%
tests / unit / utils / output / test_file_writer_plain.py test_write_plain_file_shows_fixed_count_for_fix_action   5 0 0   100%
tests / unit / utils / output / test_file_writer_plain.py (no function)   9 0 3   100%
tests / unit / utils / output / test_helpers.py test_markdown_escape_escapes_pipe   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_markdown_escape_replaces_newline_with_space   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_markdown_escape_handles_multiple_pipes   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_markdown_escape_handles_multiple_newlines   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_markdown_escape_handles_empty_string   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_markdown_escape_no_change_for_normal_text   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_html_escape_escapes_less_than   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_html_escape_escapes_greater_than   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_html_escape_escapes_ampersand   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_html_escape_escapes_quotes   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_html_escape_handles_empty_string   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_html_escape_no_change_for_normal_text   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_sanitize_csv_value_prefixes_formula_chars   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_sanitize_csv_value_no_change_for_normal_text   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_sanitize_csv_value_handles_empty_string   2 0 0   100%
tests / unit / utils / output / test_helpers.py test_sanitize_csv_value_does_not_prefix_middle_chars   2 0 0   100%
tests / unit / utils / output / test_helpers.py (no function)   21 0 0   100%
tests / unit / utils / result_formatters / __init__.py (no function)   0 0 0   100%
tests / unit / utils / result_formatters / conftest.py success_capture   3 0 0   100%
tests / unit / utils / result_formatters / conftest.py success_capture.capture   1 0 0   100%
tests / unit / utils / result_formatters / conftest.py (no function)   5 0 2   100%
tests / unit / utils / result_formatters / test_action_normalization.py test_action_normalization_check   4 0 0   100%
tests / unit / utils / result_formatters / test_action_normalization.py test_action_fmt_treated_as_fix   6 0 0   100%
tests / unit / utils / result_formatters / test_action_normalization.py (no function)   9 0 2   100%
tests / unit / utils / result_formatters / test_fix_action.py test_format_action_shows_fixed_and_remaining_counts   7 0 0   100%
tests / unit / utils / result_formatters / test_fix_action.py test_format_action_shows_only_fixed_when_no_remaining   6 0 0   100%
tests / unit / utils / result_formatters / test_fix_action.py test_format_action_shows_remaining_count_in_red   6 0 0   100%
tests / unit / utils / result_formatters / test_fix_action.py test_format_action_shows_only_remaining_when_nothing_fixed   6 0 0   100%
tests / unit / utils / result_formatters / test_fix_action.py test_fix_action_shows_cannot_autofix_message   5 0 0   100%
tests / unit / utils / result_formatters / test_fix_action.py (no function)   10 0 2   100%
tests / unit / utils / result_formatters / test_fixable_hints.py test_fixable_hint_shown_in_check_mode   7 0 0   100%
tests / unit / utils / result_formatters / test_fixable_hints.py test_fixable_hint_sums_multiple_matches   6 0 0   100%
tests / unit / utils / result_formatters / test_fixable_hints.py test_fixable_hint_uses_raw_output_for_meta   5 0 0   100%
tests / unit / utils / result_formatters / test_fixable_hints.py test_no_fixable_hint_in_fix_action   6 0 0   100%
tests / unit / utils / result_formatters / test_fixable_hints.py (no function)   9 0 2   100%
tests / unit / utils / result_formatters / test_generic_output.py test_no_issues_shows_success_message   4 0 0   100%
tests / unit / utils / result_formatters / test_generic_output.py test_issues_found_shows_error_message_with_count   5 0 0   100%
tests / unit / utils / result_formatters / test_generic_output.py test_success_false_shows_failure_even_with_zero_issues   5 0 0   100%
tests / unit / utils / result_formatters / test_generic_output.py test_no_files_processed_warning   5 0 0   100%
tests / unit / utils / result_formatters / test_generic_output.py (no function)   10 0 2   100%
tests / unit / utils / result_formatters / test_output_display.py test_non_empty_output_is_displayed   5 0 0   100%
tests / unit / utils / result_formatters / test_output_display.py test_whitespace_only_output_not_displayed   4 0 0   100%
tests / unit / utils / result_formatters / test_output_display.py test_blank_line_appended_after_output   6 0 0   100%
tests / unit / utils / result_formatters / test_output_display.py (no function)   7 0 2   100%
tests / unit / utils / result_formatters / test_pytest_output.py test_pytest_with_output_displays_header   6 0 0   100%
tests / unit / utils / result_formatters / test_pytest_output.py test_pytest_no_issues_no_output_shows_success   4 0 0   100%
tests / unit / utils / result_formatters / test_pytest_output.py test_pytest_filters_json_output_at_line_start   7 0 0   100%
tests / unit / utils / result_formatters / test_pytest_output.py test_pytest_preserves_progress_markers   7 0 0   100%
tests / unit / utils / result_formatters / test_pytest_output.py test_pytest_tool_name_case_insensitive   5 0 0   100%
tests / unit / utils / result_formatters / test_pytest_output.py (no function)   11 0 2   100%
tests / unit / utils / result_formatters / test_ruff_formatting.py test_ruff_detects_would_reformat_files   7 0 0   100%
tests / unit / utils / result_formatters / test_ruff_formatting.py test_ruff_detects_files_would_be_reformatted_summary   7 0 0   100%
tests / unit / utils / result_formatters / test_ruff_formatting.py test_ruff_tool_name_case_insensitive_for_formatting_detection   7 0 0   100%
tests / unit / utils / result_formatters / test_ruff_formatting.py (no function)   7 0 2   100%
tests / unit / utils / summary / __init__.py (no function)   0 0 0   100%
tests / unit / utils / summary / test_display.py test_check_success_no_issues   6 0 0   100%
tests / unit / utils / summary / test_display.py test_check_with_issues   7 0 0   100%
tests / unit / utils / summary / test_display.py test_check_execution_failure   5 0 0   100%
tests / unit / utils / summary / test_display.py test_check_skipped_tool   5 0 0   100%
tests / unit / utils / summary / test_display.py test_fix_with_fixed_count   10 0 0   100%
tests / unit / utils / summary / test_display.py test_fix_with_remaining_issues   5 0 0   100%
tests / unit / utils / summary / test_display.py test_fix_no_files_shows_zero   6 0 0   100%
tests / unit / utils / summary / test_display.py test_fix_parsing_remaining_from_output   5 0 0   100%
tests / unit / utils / summary / test_display.py test_fix_shows_ai_fixed_count_from_metadata   10 0 0   100%
tests / unit / utils / summary / test_display.py test_pytest_with_summary   9 0 0   100%
tests / unit / utils / summary / test_display.py test_non_pytest_test_tool   7 0 0   100%
tests / unit / utils / summary / test_display.py test_multiple_tools_displayed   7 0 0   100%
tests / unit / utils / summary / test_display.py test_tools_sorted_alphabetically   9 0 0   100%
tests / unit / utils / summary / test_display.py test_empty_results_list   3 0 0   100%
tests / unit / utils / summary / test_display.py test_unknown_tool_name   6 0 0   100%
tests / unit / utils / summary / test_display.py test_default_remaining_count_is_question_mark   2 0 0   100%
tests / unit / utils / summary / test_display.py test_default_remaining_count_used_in_fix_output   5 0 0   100%
tests / unit / utils / summary / test_display.py (no function)   22 0 3   100%
tests / unit / utils / summary / test_safe_cast.py test_safe_cast_successful_int_cast   4 0 0   100%
tests / unit / utils / summary / test_safe_cast.py test_safe_cast_successful_float_cast   4 0 0   100%
tests / unit / utils / summary / test_safe_cast.py test_safe_cast_returns_default_on_value_error   4 0 0   100%
tests / unit / utils / summary / test_safe_cast.py test_safe_cast_returns_default_on_type_error   4 0 0   100%
tests / unit / utils / summary / test_safe_cast.py (no function)   14 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_count_affected_files_empty_results   1 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_count_affected_files_no_issues   2 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_count_affected_files_single_file   2 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_count_affected_files_deduplication_within_tool   2 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_count_affected_files_deduplication_across_tools   2 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_count_affected_files_empty_file_paths_excluded   2 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_count_affected_files_path_objects_deduplicated   3 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_count_affected_files_no_issues_attribute   3 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_check_mode_contains_total_issues   5 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_check_mode_contains_affected_files   5 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_check_mode_does_not_contain_fix_rows   5 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_test_mode_uses_check_layout   5 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_fix_mode_contains_fixed_issues   5 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_fix_mode_contains_remaining_issues   5 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_fix_mode_contains_affected_files   5 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_fix_mode_does_not_contain_total_issues   4 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_uses_grid_format   5 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_contains_header   4 0 0   100%
tests / unit / utils / summary / test_totals_table.py test_totals_table_contains_metric_count_headers   5 0 0   100%
tests / unit / utils / summary / test_totals_table.py (no function)   24 0 3   100%
tests / unit / utils / test_ascii_normalize.py test_normalize_ascii_block_center_and_alignments   9 0 0   100%
tests / unit / utils / test_ascii_normalize.py test_normalize_ascii_file_sections   7 0 0   100%
tests / unit / utils / test_ascii_normalize.py (no function)   6 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py test_ascii_art_dir_returns_path   2 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py test_ascii_art_dir_points_to_ascii_art   2 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py test_write_sections_single   5 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py test_write_sections_multiple_with_blank_separator   5 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py test_write_sections_empty   5 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py test_main_returns_error_when_dir_not_found   8 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py test_main_processes_specific_files   11 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py test_main_processes_all_txt_files   10 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py test_main_skips_files_with_no_sections   10 0 0   100%
tests / unit / utils / test_ascii_normalize_cli.py (no function)   14 0 0   100%
tests / unit / utils / test_config_reporting.py mock_tool_config_summary   6 0 0   100%
tests / unit / utils / test_config_reporting.py standard_patches   1 0 0   100%
tests / unit / utils / test_config_reporting.py test_report_contains_header   4 0 0   100%
tests / unit / utils / test_config_reporting.py test_report_contains_global_settings   5 0 0   100%
tests / unit / utils / test_config_reporting.py test_report_contains_tool_execution_order   4 0 0   100%
tests / unit / utils / test_config_reporting.py test_report_contains_per_tool_config   6 0 0   100%
tests / unit / utils / test_config_reporting.py test_report_shows_native_only_for_non_injectable   8 0 0   100%
tests / unit / utils / test_config_reporting.py test_report_shows_warnings   6 0 0   100%
tests / unit / utils / test_config_reporting.py test_report_shows_no_warnings_message   3 0 0   100%
tests / unit / utils / test_config_reporting.py test_report_with_custom_order   3 0 0   100%
tests / unit / utils / test_config_reporting.py test_report_line_length_not_configured   3 0 0   100%
tests / unit / utils / test_config_reporting.py test_print_logs_report_lines   4 0 0   100%
tests / unit / utils / test_config_reporting.py test_print_warnings_logged_at_warning_level   5 0 0   100%
tests / unit / utils / test_config_reporting.py test_print_non_warning_lines_logged_at_info   4 0 0   100%
tests / unit / utils / test_config_reporting.py (no function)   22 0 0   100%
tests / unit / utils / test_console_output_writer.py logger   1 0 0   100%
tests / unit / utils / test_console_output_writer.py test_initialization   1 0 0   100%
tests / unit / utils / test_console_output_writer.py test_console_output_no_color   4 0 0   100%
tests / unit / utils / test_console_output_writer.py test_console_output_with_color   6 0 0   100%
tests / unit / utils / test_console_output_writer.py test_info   5 0 0   100%
tests / unit / utils / test_console_output_writer.py test_info_blue   7 0 0   100%
tests / unit / utils / test_console_output_writer.py test_success   6 0 0   100%
tests / unit / utils / test_console_output_writer.py test_warning   6 0 0   100%
tests / unit / utils / test_console_output_writer.py test_error   6 0 0   100%
tests / unit / utils / test_console_output_writer.py test_save_console_log   9 0 0   100%
tests / unit / utils / test_console_output_writer.py test_save_console_log_handles_error   4 0 0   100%
tests / unit / utils / test_console_output_writer.py test_multiple_messages_tracked   10 0 0   100%
tests / unit / utils / test_console_output_writer.py test_thread_safe_message_tracking   12 0 0   100%
tests / unit / utils / test_console_output_writer.py test_thread_safe_message_tracking.add_message   1 0 0   100%
tests / unit / utils / test_console_output_writer.py (no function)   20 0 0   100%
tests / unit / utils / test_display_helpers.py console_capture   3 0 0   100%
tests / unit / utils / test_display_helpers.py console_capture.mock_console   1 0 0   100%
tests / unit / utils / test_display_helpers.py test_print_ascii_art_selects_correct_file   6 0 0   100%
tests / unit / utils / test_display_helpers.py test_print_ascii_art_no_output_when_empty   4 0 0   100%
tests / unit / utils / test_display_helpers.py test_print_ascii_art_handles_exception_gracefully   4 0 0   100%
tests / unit / utils / test_display_helpers.py test_print_final_status_message_content   4 0 0   100%
tests / unit / utils / test_display_helpers.py test_print_final_status_outputs_blank_line_at_end   4 0 0   100%
tests / unit / utils / test_display_helpers.py test_print_final_status_produces_output   3 0 0   100%
tests / unit / utils / test_display_helpers.py test_print_final_status_format_message_content   5 0 0   100%
tests / unit / utils / test_display_helpers.py test_print_final_status_format_outputs_blank_line_at_end   4 0 0   100%
tests / unit / utils / test_display_helpers.py test_border_length_is_positive_integer   3 0 0   100%
tests / unit / utils / test_display_helpers.py test_info_border_length_is_positive_integer   3 0 0   100%
tests / unit / utils / test_display_helpers.py test_border_length_can_create_border_string   3 0 0   100%
tests / unit / utils / test_display_helpers.py test_info_border_length_can_create_border_string   3 0 0   100%
tests / unit / utils / test_display_helpers.py test_border_lengths_relationship   1 0 0   100%
tests / unit / utils / test_display_helpers.py (no function)   29 0 2   100%
tests / unit / utils / test_display_helpers_fallback.py console_capture   3 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py console_capture.mock_console   1 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py mock_click_unavailable   4 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py mock_click_unavailable.mock_import   3 1 0   67%
tests / unit / utils / test_display_helpers_fallback.py test_print_final_status_fallback_ansi_codes   6 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py test_print_final_status_fallback_outputs_blank_line   4 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py test_print_final_status_fallback_includes_reset_code   4 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py test_print_final_status_format_fallback_ansi_codes   5 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py test_print_final_status_format_fallback_outputs_blank_line   4 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py test_print_final_status_format_fallback_fixed_uses_green   4 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py test_print_final_status_format_fallback_remaining_uses_red   4 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py test_print_final_status_format_fallback_mixed_colors   6 0 0   100%
tests / unit / utils / test_display_helpers_fallback.py (no function)   26 0 2   100%
tests / unit / utils / test_enrich_doc_urls.py _make_issue   4 0 0   100%
tests / unit / utils / test_enrich_doc_urls.py test_tool_without_doc_url_method_is_noop   5 0 0   100%
tests / unit / utils / test_enrich_doc_urls.py test_result_with_no_issues_is_noop   5 0 0   100%
tests / unit / utils / test_enrich_doc_urls.py test_issue_with_existing_doc_url_not_overwritten   7 0 0   100%
tests / unit / utils / test_enrich_doc_urls.py test_issue_with_empty_code_skipped   7 0 0   100%
tests / unit / utils / test_enrich_doc_urls.py test_happy_path_doc_url_populated   7 0 0   100%
tests / unit / utils / test_enrich_doc_urls.py test_tool_returns_none_leaves_doc_url_empty   6 0 0   100%
tests / unit / utils / test_enrich_doc_urls.py test_multiple_mixed_issues   11 0 0   100%
tests / unit / utils / test_enrich_doc_urls.py (no function)   14 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py test_output_format_normalization   3 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py test_group_by_normalization   3 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py test_tool_name_normalization   2 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py test_yamllint_format_normalization   2 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py test_hadolint_normalization   4 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py test_tool_order_enum_values   3 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py test_tool_order_normalization_from_string   3 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py test_tool_order_normalization_from_enum   2 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py test_tool_order_normalization_invalid_raises   2 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py test_tool_config_info_reexport   3 0 0   100%
tests / unit / utils / test_enums_and_normalizers.py (no function)   18 0 0   100%
tests / unit / utils / test_file_cache.py test_file_fingerprint_to_dict   3 0 0   100%
tests / unit / utils / test_file_cache.py test_file_fingerprint_from_dict   5 0 0   100%
tests / unit / utils / test_file_cache.py test_file_fingerprint_roundtrip   5 0 0   100%
tests / unit / utils / test_file_cache.py test_tool_cache_empty_returns_all_files_as_changed   5 0 0   100%
tests / unit / utils / test_file_cache.py test_tool_cache_unchanged_file_not_returned   7 0 0   100%
tests / unit / utils / test_file_cache.py test_tool_cache_modified_file_returned   7 0 0   100%
tests / unit / utils / test_file_cache.py test_tool_cache_size_changed_file_returned   7 0 0   100%
tests / unit / utils / test_file_cache.py test_tool_cache_nonexistent_file_skipped   3 0 0   100%
tests / unit / utils / test_file_cache.py test_tool_cache_update_adds_fingerprints   5 0 0   100%
tests / unit / utils / test_file_cache.py test_tool_cache_clear_removes_all_fingerprints   4 0 0   100%
tests / unit / utils / test_file_cache.py test_tool_cache_save_and_load_roundtrip   7 0 0   100%
tests / unit / utils / test_file_cache.py test_tool_cache_load_returns_empty_for_missing_file   3 0 0   100%
tests / unit / utils / test_file_cache.py test_clear_all_caches_deletes_files   5 0 0   100%
tests / unit / utils / test_file_cache.py test_get_cache_stats_returns_file_counts   6 0 0   100%
tests / unit / utils / test_file_cache.py test_get_cache_stats_returns_empty_for_nonexistent_dir   4 0 0   100%
tests / unit / utils / test_file_cache.py (no function)   21 0 0   100%
tests / unit / utils / test_fix_retry.py _ConvergingMockTool.fix   4 0 0   100%
tests / unit / utils / test_fix_retry.py _NeverConvergingMockTool.fix   2 0 0   100%
tests / unit / utils / test_fix_retry.py test_fix_converges_on_second_attempt   7 0 0   100%
tests / unit / utils / test_fix_retry.py test_fix_reports_unfixable_after_max_retries   5 0 0   100%
tests / unit / utils / test_fix_retry.py test_fix_no_retry_when_first_pass_succeeds   5 0 0   100%
tests / unit / utils / test_fix_retry.py test_fix_retry_merges_results_correctly   6 0 0   100%
tests / unit / utils / test_fix_retry.py (no function)   24 0 0   100%
tests / unit / utils / test_json_output.py test_create_json_output_includes_summary_and_fix_suggestions_together   7 0 0   100%
tests / unit / utils / test_json_output.py test_create_json_output_normalizes_legacy_suggestions_key   5 0 0   100%
tests / unit / utils / test_json_output.py test_create_json_output_includes_ai_count_fields   8 0 0   100%
tests / unit / utils / test_json_output.py test_create_json_output_includes_ai_metrics   7 0 0   100%
tests / unit / utils / test_json_output.py test_create_json_output_counts_survive_legacy_normalization   11 0 0   100%
tests / unit / utils / test_json_output.py (no function)   10 0 0   100%
tests / unit / utils / test_jsonc.py test_strip_jsonc_comments_no_comments   3 0 0   100%
tests / unit / utils / test_jsonc.py test_strip_jsonc_comments_line_comment   3 0 0   100%
tests / unit / utils / test_jsonc.py test_strip_jsonc_comments_block_comment   4 0 0   100%
tests / unit / utils / test_jsonc.py test_strip_jsonc_comments_preserves_strings   4 0 0   100%
tests / unit / utils / test_jsonc.py test_strip_trailing_commas_removes_trailing_comma_before_brace   3 0 0   100%
tests / unit / utils / test_jsonc.py test_strip_trailing_commas_removes_trailing_comma_before_bracket   3 0 0   100%
tests / unit / utils / test_jsonc.py test_strip_trailing_commas_handles_whitespace   3 0 0   100%
tests / unit / utils / test_jsonc.py test_strip_trailing_commas_no_trailing_comma   3 0 0   100%
tests / unit / utils / test_jsonc.py test_load_jsonc_plain_json   2 0 0   100%
tests / unit / utils / test_jsonc.py test_load_jsonc_with_comments   4 0 0   100%
tests / unit / utils / test_jsonc.py test_load_jsonc_with_trailing_commas   4 0 0   100%
tests / unit / utils / test_jsonc.py test_load_jsonc_with_comments_and_trailing_commas   4 0 0   100%
tests / unit / utils / test_jsonc.py test_load_jsonc_invalid_json_raises   2 0 0   100%
tests / unit / utils / test_jsonc.py test_load_jsonc_tsconfig_with_comments_and_type_roots   4 0 0   100%
tests / unit / utils / test_jsonc.py (no function)   19 0 0   100%
tests / unit / utils / test_logger_setup.py test_setup_cli_logging_removes_handlers   2 0 0   100%
tests / unit / utils / test_logger_setup.py test_setup_cli_logging_adds_stderr_handler   5 0 0   100%
tests / unit / utils / test_logger_setup.py test_setup_execution_logging_removes_handlers   2 0 0   100%
tests / unit / utils / test_logger_setup.py test_setup_execution_logging_adds_console_and_file_handlers   2 0 0   100%
tests / unit / utils / test_logger_setup.py test_setup_execution_logging_debug_false_uses_warning   3 0 0   100%
tests / unit / utils / test_logger_setup.py test_setup_execution_logging_debug_true_uses_debug   3 0 0   100%
tests / unit / utils / test_logger_setup.py test_setup_execution_logging_file_handler_uses_debug   3 0 0   100%
tests / unit / utils / test_logger_setup.py test_setup_execution_logging_creates_run_dir   4 0 0   100%
tests / unit / utils / test_logger_setup.py (no function)   21 0 0   100%
tests / unit / utils / test_native_parsers.py test_load_json_config_parse_error_logs_warning   9 0 0   100%
tests / unit / utils / test_native_parsers.py test_load_json_config_file_not_found_logs_debug   7 0 0   100%
tests / unit / utils / test_native_parsers.py test_load_json_config_valid_returns_dict   4 0 0   100%
tests / unit / utils / test_native_parsers.py test_load_json_config_non_dict_returns_empty   4 0 0   100%
tests / unit / utils / test_native_parsers.py test_load_yamllint_config_yaml_error_logs_warning   6 0 0   100%
tests / unit / utils / test_native_parsers.py test_load_yamllint_config_os_error_returns_empty   4 0 0   100%
tests / unit / utils / test_native_parsers.py test_load_markdownlint_missing_config_returns_empty   3 0 0   100%
tests / unit / utils / test_native_parsers.py (no function)   12 0 0   100%
tests / unit / utils / test_node_deps.py test_should_install_deps_returns_false_when_no_package_json   2 0 0   100%
tests / unit / utils / test_node_deps.py test_should_install_deps_returns_true_when_package_json_exists_no_node_modules   3 0 0   100%
tests / unit / utils / test_node_deps.py test_should_install_deps_returns_false_when_both_exist_with_content   6 0 0   100%
tests / unit / utils / test_node_deps.py test_should_install_deps_returns_true_when_node_modules_empty   4 0 0   100%
tests / unit / utils / test_node_deps.py test_should_install_deps_returns_true_when_node_modules_only_has_bin   6 0 0   100%
tests / unit / utils / test_node_deps.py test_should_install_deps_raises_permission_error_when_cwd_not_writable   3 0 0   100%
tests / unit / utils / test_node_deps.py test_get_package_manager_command_returns_bun_when_available   4 0 0   100%
tests / unit / utils / test_node_deps.py test_get_package_manager_command_returns_npm_when_bun_not_available   4 0 0   100%
tests / unit / utils / test_node_deps.py test_get_package_manager_command_returns_none_when_no_package_manager   3 0 0   100%
tests / unit / utils / test_node_deps.py test_install_node_deps_returns_success_when_deps_already_installed   7 0 0   100%
tests / unit / utils / test_node_deps.py test_install_node_deps_returns_failure_when_cwd_not_writable   5 0 0   100%
tests / unit / utils / test_node_deps.py test_install_node_deps_returns_failure_when_no_package_manager   5 0 0   100%
tests / unit / utils / test_node_deps.py test_install_node_deps_runs_bun_install_with_frozen_lockfile   10 0 0   100%
tests / unit / utils / test_node_deps.py test_install_node_deps_falls_back_to_regular_install_on_frozen_failure   12 0 0   100%
tests / unit / utils / test_node_deps.py test_install_node_deps_returns_failure_on_install_error   10 0 0   100%
tests / unit / utils / test_node_deps.py test_install_node_deps_retries_on_frozen_timeout   9 0 0   100%
tests / unit / utils / test_node_deps.py test_install_node_deps_fails_on_both_attempts_timeout   5 0 0   100%
tests / unit / utils / test_node_deps.py test_install_node_deps_uses_npm_ci_for_frozen_install   10 0 0   100%
tests / unit / utils / test_node_deps.py test_install_node_deps_uses_correct_commands_per_package_manager   14 0 0   100%
tests / unit / utils / test_node_deps.py (no function)   27 0 0   100%
tests / unit / utils / test_output_writers.py test_sanitize_csv_value   2 0 0   100%
tests / unit / utils / test_output_writers.py sample_results   9 0 0   100%
tests / unit / utils / test_output_writers.py test_write_json_output   9 0 0   100%
tests / unit / utils / test_output_writers.py test_write_csv_output   7 0 0   100%
tests / unit / utils / test_output_writers.py test_write_markdown_output   10 0 0   100%
tests / unit / utils / test_output_writers.py test_write_html_output   9 0 0   100%
tests / unit / utils / test_output_writers.py test_write_plain_output   7 0 0   100%
tests / unit / utils / test_output_writers.py test_write_plain_output_fix_action   5 0 0   100%
tests / unit / utils / test_output_writers.py test_creates_parent_directories   3 0 0   100%
tests / unit / utils / test_output_writers.py test_json_with_issues_details   15 0 0   100%
tests / unit / utils / test_output_writers.py test_doc_url_rendered_in_json_markdown_html   20 0 0   100%
tests / unit / utils / test_output_writers.py test_empty_doc_url_omitted_from_json   12 0 0   100%
tests / unit / utils / test_output_writers.py test_html_escapes_special_characters   13 0 0   100%
tests / unit / utils / test_output_writers.py test_markdown_escapes_pipe_characters   12 0 0   100%
tests / unit / utils / test_output_writers.py test_grid_format_same_as_plain   4 0 0   100%
tests / unit / utils / test_output_writers.py test_doc_url_rendered_in_csv   13 0 0   100%
tests / unit / utils / test_output_writers.py test_empty_doc_url_is_empty_string_in_csv   12 0 0   100%
tests / unit / utils / test_output_writers.py (no function)   29 0 0   100%
tests / unit / utils / test_parser_registry.py reset_registry   4 0 0   100%
tests / unit / utils / test_parser_registry.py test_parser_entry_creation   4 0 0   100%
tests / unit / utils / test_parser_registry.py test_parser_entry_creation.dummy_parser   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_parser_entry_with_fixability   5 0 0   100%
tests / unit / utils / test_parser_registry.py test_parser_entry_with_fixability.dummy_parser   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_parser_entry_with_fixability.is_fixable   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_register_parser   3 0 0   100%
tests / unit / utils / test_parser_registry.py test_register_parser.my_parser   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_register_parser_case_insensitive   5 0 0   100%
tests / unit / utils / test_parser_registry.py test_register_parser_case_insensitive.my_parser   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_register_parser_with_fixability   6 0 0   100%
tests / unit / utils / test_parser_registry.py test_register_parser_with_fixability.my_parser   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_register_parser_with_fixability.my_fixable   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_get_registered_parser   5 0 0   100%
tests / unit / utils / test_parser_registry.py test_get_registered_parser.my_parser   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_get_unregistered_parser_returns_none   2 0 0   100%
tests / unit / utils / test_parser_registry.py test_parse_with_registered_parser   5 0 0   100%
tests / unit / utils / test_parser_registry.py test_parse_with_registered_parser.my_parser   1 0 0   100%
tests / unit / utils / test_parser_registry.py test_parse_unknown_tool_returns_empty   2 0 0   100%
tests / unit / utils / test_parser_registry.py test_parse_case_insensitive   4 0 0   100%
tests / unit / utils / test_parser_registry.py test_parse_case_insensitive.my_parser   1 0 0   100%
tests / unit / utils / test_parser_registry.py test_get_fixability_predicate_registered   5 0 0   100%
tests / unit / utils / test_parser_registry.py test_get_fixability_predicate_registered.my_parser   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_get_fixability_predicate_registered.my_fixable   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_get_fixability_predicate_no_predicate   4 0 0   100%
tests / unit / utils / test_parser_registry.py test_get_fixability_predicate_no_predicate.my_parser   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_get_fixability_predicate_unknown_tool   2 0 0   100%
tests / unit / utils / test_parser_registry.py test_clear_removes_all_parsers   8 0 0   100%
tests / unit / utils / test_parser_registry.py test_clear_removes_all_parsers.my_parser   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_is_registered_true   3 0 0   100%
tests / unit / utils / test_parser_registry.py test_is_registered_true.my_parser   1 1 0   0%
tests / unit / utils / test_parser_registry.py test_is_registered_false   1 0 0   100%
tests / unit / utils / test_parser_registry.py test_parser_error_raised_on_parsing_failure   3 0 0   100%
tests / unit / utils / test_parser_registry.py test_parser_error_raised_on_empty_output   3 0 0   100%
tests / unit / utils / test_parser_registry.py test_parser_error_preserves_original_exception   3 0 0   100%
tests / unit / utils / test_parser_registry.py (no function)   28 0 0   100%
tests / unit / utils / test_path_filtering.py test_should_exclude_path_empty_patterns   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_should_exclude_path_simple_glob_match   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_should_exclude_path_no_match   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_should_exclude_path_directory_pattern_with_slash   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_should_exclude_path_directory_pattern_nested   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_should_exclude_path_simple_directory_pattern   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_should_exclude_path_simple_directory_not_in_path   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_should_exclude_path_empty_pattern_ignored   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_should_exclude_path_path_part_match   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_should_exclude_path_normalization_error   3 0 0   100%
tests / unit / utils / test_path_filtering.py src_dir_with_files   6 0 0   100%
tests / unit / utils / test_path_filtering.py project_with_venv   7 0 0   100%
tests / unit / utils / test_path_filtering.py test_walk_files_single_file_match   5 0 0   100%
tests / unit / utils / test_path_filtering.py test_walk_files_single_file_no_match   4 0 0   100%
tests / unit / utils / test_path_filtering.py test_walk_files_directory_walk   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_walk_files_excludes_patterns   9 0 0   100%
tests / unit / utils / test_path_filtering.py test_walk_files_excludes_venv_by_default   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_walk_files_includes_venv_when_requested   2 0 0   100%
tests / unit / utils / test_path_filtering.py test_walk_files_returns_sorted_results   7 0 0   100%
tests / unit / utils / test_path_filtering.py test_walk_files_single_file_excluded   4 0 0   100%
tests / unit / utils / test_path_filtering.py test_is_venv_directory   2 0 0   100%
tests / unit / utils / test_path_filtering.py (no function)   30 0 0   100%
tests / unit / utils / test_path_utils.py test_find_lintro_ignore_in_current_dir   7 0 0   100%
tests / unit / utils / test_path_utils.py test_find_lintro_ignore_pyproject_stops_search   6 0 0   100%
tests / unit / utils / test_path_utils.py test_find_lintro_ignore_with_pyproject   8 0 0   100%
tests / unit / utils / test_path_utils.py test_find_lintro_ignore_returns_none_when_nothing_found   9 0 0   100%
tests / unit / utils / test_path_utils.py test_load_lintro_ignore_patterns_from_file   5 0 0   100%
tests / unit / utils / test_path_utils.py test_load_lintro_ignore_returns_empty_when_no_file   3 0 0   100%
tests / unit / utils / test_path_utils.py test_load_lintro_ignore_handles_file_read_error   6 0 0   100%
tests / unit / utils / test_path_utils.py test_load_lintro_ignore_skips_comments_and_empty_lines   5 0 0   100%
tests / unit / utils / test_path_utils.py test_normalize_file_path_relative_path   4 0 0   100%
tests / unit / utils / test_path_utils.py test_normalize_file_path_edge_cases   2 0 0   100%
tests / unit / utils / test_path_utils.py test_normalize_file_path_preserves_parent_path_prefix   8 0 0   100%
tests / unit / utils / test_path_utils.py test_normalize_file_path_handles_absolute_path   4 0 0   100%
tests / unit / utils / test_path_utils.py test_normalize_file_path_handles_os_error   4 0 0   100%
tests / unit / utils / test_path_utils.py test_normalize_file_path_adds_dot_slash_prefix   5 0 0   100%
tests / unit / utils / test_path_utils.py (no function)   22 0 0   100%
tests / unit / utils / test_streaming_output.py mock_tool_result   1 0 0   100%
tests / unit / utils / test_streaming_output.py mock_tool_result_with_issues   6 0 0   100%
tests / unit / utils / test_streaming_output.py mock_fix_result   1 0 0   100%
tests / unit / utils / test_streaming_output.py test_handler_stores_output_format   2 0 0   100%
tests / unit / utils / test_streaming_output.py test_handler_stores_action   2 0 0   100%
tests / unit / utils / test_streaming_output.py test_handler_initializes_totals   4 0 0   100%
tests / unit / utils / test_streaming_output.py test_handle_result_updates_totals   5 0 0   100%
tests / unit / utils / test_streaming_output.py test_handle_result_tracks_failures   4 0 0   100%
tests / unit / utils / test_streaming_output.py test_handle_result_tracks_fix_counts   5 0 0   100%
tests / unit / utils / test_streaming_output.py test_handle_result_buffers_results   5 0 0   100%
tests / unit / utils / test_streaming_output.py test_get_exit_code_returns_zero_on_success   4 0 0   100%
tests / unit / utils / test_streaming_output.py test_get_exit_code_returns_one_on_failure   3 0 0   100%
tests / unit / utils / test_streaming_output.py test_get_exit_code_returns_one_on_issues   3 0 0   100%
tests / unit / utils / test_streaming_output.py test_context_manager_opens_file   7 0 0   100%
tests / unit / utils / test_streaming_output.py test_context_manager_closes_file   10 0 0   100%
tests / unit / utils / test_streaming_output.py test_json_format_writes_array_brackets   10 0 0   100%
tests / unit / utils / test_streaming_output.py test_handles_file_open_error   3 0 0   100%
tests / unit / utils / test_streaming_output.py test_writes_jsonl_format   12 0 0   100%
tests / unit / utils / test_streaming_output.py test_writes_json_array_format   11 0 0   100%
tests / unit / utils / test_streaming_output.py test_writes_multiple_json_array_results   16 0 0   100%
tests / unit / utils / test_streaming_output.py test_result_to_dict_includes_basic_fields   4 0 0   100%
tests / unit / utils / test_streaming_output.py test_result_to_dict_includes_fix_counts   4 0 0   100%
tests / unit / utils / test_streaming_output.py test_create_streaming_handler_with_format   2 0 0   100%
tests / unit / utils / test_streaming_output.py test_create_streaming_handler_with_action   2 0 0   100%
tests / unit / utils / test_streaming_output.py test_create_streaming_handler_with_output_file   3 0 0   100%
tests / unit / utils / test_streaming_output.py (no function)   38 0 0   100%
tests / unit / utils / test_timeout_utils.py MockDefinition.__init__   1 0 0   100%
tests / unit / utils / test_timeout_utils.py MockTool.__init__   3 0 0   100%
tests / unit / utils / test_timeout_utils.py MockTool._run_subprocess   1 1 0   0%
tests / unit / utils / test_timeout_utils.py test_get_timeout_value_with_option   3 0 0   100%
tests / unit / utils / test_timeout_utils.py test_get_timeout_value_with_default   2 0 0   100%
tests / unit / utils / test_timeout_utils.py test_get_timeout_value_with_custom_default   2 0 0   100%
tests / unit / utils / test_timeout_utils.py test_create_timeout_result   8 0 0   100%
tests / unit / utils / test_timeout_utils.py test_run_subprocess_with_timeout_success   6 0 0   100%
tests / unit / utils / test_timeout_utils.py test_run_subprocess_with_timeout_exception   7 0 0   100%
tests / unit / utils / test_timeout_utils.py test_run_subprocess_with_timeout_exception.mock_run_subprocess   1 0 0   100%
tests / unit / utils / test_timeout_utils.py (no function)   17 0 0   100%
tests / unit / utils / test_tool_config_info.py test_get_tool_config_summary_is_importable   3 0 0   100%
tests / unit / utils / test_tool_config_info.py test_module_exports_get_tool_config_summary   2 0 0   100%
tests / unit / utils / test_tool_config_info.py (no function)   4 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_warn_ai_fix_disabled_warns_only_for_check_when_fix_requested_and_ai_disabled   6 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_warn_ai_fix_disabled_no_warning_for_other_states   5 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_warn_ai_fix_disabled_suppressed_for_json_output   3 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_warn_ai_fix_disabled_suppressed_for_sarif_output   3 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes   32 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes._FakeTool.set_options   1 1 0   0%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes._FakeTool.reset_options   1 1 0   0%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes._FakeTool.fix   1 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes._FakeTool.check   1 1 0   0%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes._fake_ai_enhancement   5 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes._FakeHook.should_run   1 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes._FakeHook.execute   2 0 0   100%
tests / unit / utils / test_tool_executor_ai.py test_fix_recomputes_totals_after_ai_changes._capture_exit_code   3 0 0   100%
tests / unit / utils / test_tool_executor_ai.py (no function)   17 0 0   100%
tests / unit / utils / test_tool_utils.py test_venv_patterns_is_list   1 0 0   100%
tests / unit / utils / test_tool_utils.py test_venv_patterns_not_empty   1 0 0   100%
tests / unit / utils / test_tool_utils.py test_venv_patterns_contains_common_venv_names   3 0 0   100%
tests / unit / utils / test_tool_utils.py test_venv_patterns_contains_node_modules   1 0 0   100%
tests / unit / utils / test_tool_utils.py test_venv_patterns_contains_site_packages   1 0 0   100%
tests / unit / utils / test_tool_utils.py test_venv_patterns_all_strings   2 0 0   100%
tests / unit / utils / test_tool_utils.py (no function)   9 0 0   100%
tests / unit / utils / unified_config / __init__.py (no function)   0 0 0   100%
tests / unit / utils / unified_config / conftest.py mock_empty_tool_order_config   2 0 0   100%
tests / unit / utils / unified_config / conftest.py mock_empty_configs   2 2 0   0%
tests / unit / utils / unified_config / conftest.py (no function)   8 0 0   100%
tests / unit / utils / unified_config / test_config_summary.py test_get_tool_config_summary_returns_dict_for_all_standard_tools   6 0 0   100%
tests / unit / utils / unified_config / test_config_summary.py test_get_tool_config_summary_returns_tool_config_info_instances   4 0 0   100%
tests / unit / utils / unified_config / test_config_summary.py test_get_tool_config_summary_includes_effective_line_length   4 0 0   100%
tests / unit / utils / unified_config / test_config_summary.py (no function)   7 0 0   100%
tests / unit / utils / unified_config / test_consistency.py test_validate_config_consistency_returns_empty_when_no_effective_line_length   3 0 0   100%
tests / unit / utils / unified_config / test_consistency.py test_validate_config_consistency_detects_mismatch   4 0 0   100%
tests / unit / utils / unified_config / test_consistency.py test_validate_config_consistency_returns_list   3 0 0   100%
tests / unit / utils / unified_config / test_consistency.py (no function)   7 0 0   100%
tests / unit / utils / unified_config / test_constants.py test_global_settings_line_length_has_expected_tools   5 0 0   100%
tests / unit / utils / unified_config / test_constants.py test_global_settings_line_length_has_injectable_tools   3 0 0   100%
tests / unit / utils / unified_config / test_constants.py test_global_settings_has_multiple_settings   3 0 0   100%
tests / unit / utils / unified_config / test_constants.py test_default_tool_priorities_formatters_before_linters   3 0 0   100%
tests / unit / utils / unified_config / test_constants.py test_default_tool_priorities_pytest_runs_last   4 0 0   100%
tests / unit / utils / unified_config / test_constants.py test_default_tool_priorities_has_expected_tools   3 0 0   100%
tests / unit / utils / unified_config / test_constants.py (no function)   9 0 0   100%
tests / unit / utils / unified_config / test_dataclasses.py test_tool_config_info_default_values   7 0 0   100%
tests / unit / utils / unified_config / test_dataclasses.py test_tool_config_info_with_all_values   8 0 0   100%
tests / unit / utils / unified_config / test_dataclasses.py test_tool_config_info_is_dataclass_instance   2 0 0   100%
tests / unit / utils / unified_config / test_dataclasses.py (no function)   7 0 0   100%
tests / unit / utils / unified_config / test_enums.py test_tool_order_strategy_enum_values   1 0 0   100%
tests / unit / utils / unified_config / test_enums.py test_tool_order_strategy_is_str_enum   2 0 0   100%
tests / unit / utils / unified_config / test_enums.py (no function)   7 0 0   100%
tests / unit / utils / unified_config / test_injectable.py test_is_tool_injectable_returns_true_for_injectable_tools   1 0 0   100%
tests / unit / utils / unified_config / test_injectable.py test_is_tool_injectable_is_case_insensitive   1 0 0   100%
tests / unit / utils / unified_config / test_injectable.py test_is_tool_injectable_returns_false_for_unknown_tool   1 0 0   100%
tests / unit / utils / unified_config / test_injectable.py test_is_tool_injectable_returns_false_for_non_injectable_known_tools   1 0 0   100%
tests / unit / utils / unified_config / test_injectable.py (no function)   10 0 0   100%
tests / unit / utils / unified_config / test_line_length.py test_get_effective_line_length_from_tool_config   3 0 0   100%
tests / unit / utils / unified_config / test_line_length.py test_get_effective_line_length_from_tool_config_hyphen_key   3 0 0   100%
tests / unit / utils / unified_config / test_line_length.py test_get_effective_line_length_from_global_config   3 0 0   100%
tests / unit / utils / unified_config / test_line_length.py test_get_effective_line_length_from_global_config_hyphen_key   3 0 0   100%
tests / unit / utils / unified_config / test_line_length.py test_get_effective_line_length_from_ruff_config   3 0 0   100%
tests / unit / utils / unified_config / test_line_length.py test_get_effective_line_length_from_ruff_config_underscore_key   3 0 0   100%
tests / unit / utils / unified_config / test_line_length.py test_get_effective_line_length_returns_none_when_no_config   3 0 0   100%
tests / unit / utils / unified_config / test_line_length.py (no function)   11 0 0   100%
tests / unit / utils / unified_config / test_nested_value.py test_get_nested_value_returns_expected_value   2 0 0   100%
tests / unit / utils / unified_config / test_nested_value.py test_get_nested_value_returns_none_for_missing_keys   2 0 0   100%
tests / unit / utils / unified_config / test_nested_value.py (no function)   9 0 0   100%
tests / unit / utils / unified_config / test_ordered_tools.py test_get_ordered_tools_priority_ordering   2 0 0   100%
tests / unit / utils / unified_config / test_ordered_tools.py test_get_ordered_tools_alphabetical_ordering   2 0 0   100%
tests / unit / utils / unified_config / test_ordered_tools.py test_get_ordered_tools_custom_ordering   4 0 0   100%
tests / unit / utils / unified_config / test_ordered_tools.py test_get_ordered_tools_invalid_strategy_falls_back_to_priority   2 0 0   100%
tests / unit / utils / unified_config / test_ordered_tools.py test_get_ordered_tools_invalid_config_strategy_falls_back_to_priority   3 0 0   100%
tests / unit / utils / unified_config / test_ordered_tools.py (no function)   10 0 0   100%
tests / unit / utils / unified_config / test_tool_priority.py test_get_tool_priority_returns_default_values   2 0 0   100%
tests / unit / utils / unified_config / test_tool_priority.py test_get_tool_priority_unknown_tool_returns_50   2 0 0   100%
tests / unit / utils / unified_config / test_tool_priority.py test_get_tool_priority_respects_override   3 0 0   100%
tests / unit / utils / unified_config / test_tool_priority.py test_get_tool_priority_override_is_case_insensitive   3 0 0   100%
tests / unit / utils / unified_config / test_tool_priority.py (no function)   11 0 0   100%
tests / utils / __init__.py (no function)   0 0 0   100%
tests / utils / test_formatting.py test_read_ascii_art   4 0 0   100%
tests / utils / test_formatting.py test_read_ascii_art_file_not_found   2 0 0   100%
tests / utils / test_formatting.py test_read_ascii_art_with_sections   6 0 0   100%
tests / utils / test_formatting.py (no function)   10 0 0   100%
tests / utils / test_output_manager.py temp_output_dir   3 0 0   100%
tests / utils / test_output_manager.py make_tool_result   1 0 0   100%
tests / utils / test_output_manager.py make_issue   1 0 0   100%
tests / utils / test_output_manager.py test_run_dir_creation   3 0 0   100%
tests / utils / test_output_manager.py test_write_console_log   5 0 0   100%
tests / utils / test_output_manager.py test_write_json   8 0 0   100%
tests / utils / test_output_manager.py test_write_markdown   5 0 0   100%
tests / utils / test_output_manager.py test_write_html   5 0 0   100%
tests / utils / test_output_manager.py test_write_csv   11 0 0   100%
tests / utils / test_output_manager.py test_write_reports_from_results   14 0 0   100%
tests / utils / test_output_manager.py test_write_reports_from_results_with_none_code   19 0 0   100%
tests / utils / test_output_manager.py test_permission_fallback_uses_temp_dir   15 0 0   100%
tests / utils / test_output_manager.py test_permission_fallback_uses_temp_dir.mock_mkdir   4 0 0   100%
tests / utils / test_output_manager.py (no function)   24 0 0   100%
tests / utils / test_path_utils.py _to_posix   1 0 0   100%
tests / utils / test_path_utils.py test_normalize_file_path_for_display_absolute   6 0 0   100%
tests / utils / test_path_utils.py test_normalize_file_path_for_display_relative   5 0 0   100%
tests / utils / test_path_utils.py test_normalize_file_path_for_display_current_dir   4 0 0   100%
tests / utils / test_path_utils.py test_normalize_file_path_for_display_parent_dir   6 0 0   100%
tests / utils / test_path_utils.py test_normalize_file_path_for_display_already_relative   5 0 0   100%
tests / utils / test_path_utils.py test_normalize_file_path_for_display_error   3 0 0   100%
tests / utils / test_path_utils.py test_normalize_file_path_for_display_os_error   3 0 0   100%
tests / utils / test_path_utils.py (no function)   20 0 0   100%
Total     48145 4110 461   91%

No items found using the specified filter.