Overall: 93.8%
| File | Lines | Covered |
|---|---|---|
/tmp/pytest-of-runner/pytest-0/test_render_index_emits_import0/_rendered_index.py | 3/3 | 100.0% |
benchmarks/__init__.py | 3/3 | 100.0% |
benchmarks/harness/__init__.py | 6/6 | 100.0% |
benchmarks/harness/detect.py | 25/28 | 89.3% |
benchmarks/harness/results.py | 82/83 | 98.8% |
benchmarks/harness/runners.py | 45/46 | 97.8% |
benchmarks/harness/timing.py | 43/43 | 100.0% |
benchmarks/run.py | 29/87 | 33.3% |
lintro/__init__.py | 1/1 | 100.0% |
lintro/__main__.py | 2/3 | 66.7% |
lintro/_generated_versions.py | 2/2 | 100.0% |
lintro/_tool_packages.py | 4/4 | 100.0% |
lintro/_tool_versions.py | 88/107 | 82.2% |
lintro/ai/__init__.py | 6/6 | 100.0% |
lintro/ai/apply.py | 70/80 | 87.5% |
lintro/ai/audit.py | 57/78 | 73.1% |
lintro/ai/availability.py | 53/81 | 65.4% |
lintro/ai/budget.py | 59/59 | 100.0% |
lintro/ai/cache.py | 56/69 | 81.2% |
lintro/ai/checkpoints.py | 211/252 | 83.7% |
lintro/ai/cli_schemas.py | 23/23 | 100.0% |
lintro/ai/config.py | 145/145 | 100.0% |
lintro/ai/config_overrides.py | 125/134 | 93.3% |
lintro/ai/config_views.py | 54/54 | 100.0% |
lintro/ai/cost.py | 25/26 | 96.2% |
lintro/ai/display/__init__.py | 5/5 | 100.0% |
lintro/ai/display/fixes.py | 92/163 | 56.4% |
lintro/ai/display/shared.py | 28/28 | 100.0% |
lintro/ai/display/status.py | 76/76 | 100.0% |
lintro/ai/display/streaming.py | 18/18 | 100.0% |
lintro/ai/display/summary.py | 122/130 | 93.8% |
lintro/ai/display/validation.py | 25/26 | 96.2% |
lintro/ai/doctor_checks.py | 41/88 | 46.6% |
lintro/ai/enums/__init__.py | 8/8 | 100.0% |
lintro/ai/enums/ai_transport.py | 7/7 | 100.0% |
lintro/ai/enums/cli_bare_mode.py | 7/7 | 100.0% |
lintro/ai/enums/config_source.py | 8/8 | 100.0% |
lintro/ai/enums/cost_basis.py | 7/7 | 100.0% |
lintro/ai/enums/sanitize_mode.py | 6/6 | 100.0% |
lintro/ai/exceptions.py | 9/9 | 100.0% |
lintro/ai/fallback.py | 38/40 | 95.0% |
lintro/ai/filters.py | 21/41 | 51.2% |
lintro/ai/fix.py | 157/194 | 80.9% |
lintro/ai/fix_context.py | 81/94 | 86.2% |
lintro/ai/fix_params.py | 28/28 | 100.0% |
lintro/ai/fix_parsing.py | 62/62 | 100.0% |
lintro/ai/hook.py | 24/25 | 96.0% |
lintro/ai/integrations/__init__.py | 0/0 | 100.0% |
lintro/ai/integrations/github_pr.py | 346/429 | 80.7% |
lintro/ai/interactive.py | 142/198 | 71.7% |
lintro/ai/interface.py | 60/61 | 98.4% |
lintro/ai/invoke.py | 25/26 | 96.2% |
lintro/ai/json_response.py | 115/127 | 90.6% |
lintro/ai/liveness.py | 72/75 | 96.0% |
lintro/ai/metadata/__init__.py | 4/4 | 100.0% |
lintro/ai/metadata/fix_suggestion_payload.py | 21/21 | 100.0% |
lintro/ai/metadata/helpers.py | 34/35 | 97.1% |
lintro/ai/metadata/summary_payload.py | 15/15 | 100.0% |
lintro/ai/model_pricing.py | 17/19 | 89.5% |
lintro/ai/models/__init__.py | 4/4 | 100.0% |
lintro/ai/models/fix_suggestion.py | 18/18 | 100.0% |
lintro/ai/models/result.py | 10/10 | 100.0% |
lintro/ai/models/summary.py | 12/12 | 100.0% |
lintro/ai/orchestrator.py | 118/159 | 74.2% |
lintro/ai/paths.py | 42/51 | 82.4% |
lintro/ai/pipeline.py | 175/236 | 74.2% |
lintro/ai/prompts/__init__.py | 5/5 | 100.0% |
lintro/ai/prompts/_loader.py | 13/13 | 100.0% |
lintro/ai/prompts/fix.py | 6/6 | 100.0% |
lintro/ai/prompts/post_fix.py | 3/3 | 100.0% |
lintro/ai/prompts/review.py | 50/50 | 100.0% |
lintro/ai/prompts/summary.py | 4/4 | 100.0% |
lintro/ai/prompts/templates/__init__.py | 0/0 | 100.0% |
lintro/ai/provider_enum.py | 6/6 | 100.0% |
lintro/ai/provider_info.py | 10/10 | 100.0% |
lintro/ai/providers/__init__.py | 35/37 | 94.6% |
lintro/ai/providers/anthropic.py | 163/202 | 80.7% |
lintro/ai/providers/async_stream_result.py | 21/21 | 100.0% |
lintro/ai/providers/base.py | 129/141 | 91.5% |
lintro/ai/providers/capabilities.py | 8/8 | 100.0% |
lintro/ai/providers/claude_auth.py | 71/77 | 92.2% |
lintro/ai/providers/cli_contract_check.py | 78/82 | 95.1% |
lintro/ai/providers/cli_contracts.py | 36/36 | 100.0% |
lintro/ai/providers/cli_transport.py | 260/275 | 94.5% |
lintro/ai/providers/constants.py | 3/3 | 100.0% |
lintro/ai/providers/cursor.py | 115/124 | 92.7% |
lintro/ai/providers/openai.py | 143/202 | 70.8% |
lintro/ai/providers/response.py | 11/11 | 100.0% |
lintro/ai/providers/stream_result.py | 21/21 | 100.0% |
lintro/ai/raw_response.py | 76/79 | 96.2% |
lintro/ai/refinement.py | 71/81 | 87.7% |
lintro/ai/registry.py | 34/34 | 100.0% |
lintro/ai/rerun.py | 40/46 | 87.0% |
lintro/ai/resolved_ai_config.py | 20/20 | 100.0% |
lintro/ai/retry.py | 38/50 | 76.0% |
lintro/ai/review/__init__.py | 20/20 | 100.0% |
lintro/ai/review/agent_prompts.py | 120/123 | 97.6% |
lintro/ai/review/checklist/__init__.py | 7/7 | 100.0% |
lintro/ai/review/checklist/loader.py | 81/89 | 91.0% |
lintro/ai/review/checklist_builtin.py | 3/3 | 100.0% |
lintro/ai/review/checklist_display.py | 35/35 | 100.0% |
lintro/ai/review/checklist_registry.py | 45/47 | 95.7% |
lintro/ai/review/checklist_selector.py | 43/43 | 100.0% |
lintro/ai/review/chunker/__init__.py | 3/3 | 100.0% |
lintro/ai/review/chunker/github_action_paths.py | 33/37 | 89.2% |
lintro/ai/review/chunker/grouping.py | 275/300 | 91.7% |
lintro/ai/review/chunker/shell_run_parse.py | 416/458 | 90.8% |
lintro/ai/review/chunker/workflow_scripts.py | 127/148 | 85.8% |
lintro/ai/review/classifier.py | 118/124 | 95.2% |
lintro/ai/review/cli_limits.py | 47/48 | 97.9% |
lintro/ai/review/constants.py | 9/9 | 100.0% |
lintro/ai/review/context/__init__.py | 3/3 | 100.0% |
lintro/ai/review/context/collection.py | 185/211 | 87.7% |
lintro/ai/review/context/diff_parse.py | 258/293 | 88.1% |
lintro/ai/review/context/git_ops.py | 37/48 | 77.1% |
lintro/ai/review/context/pr_metadata.py | 48/58 | 82.8% |
lintro/ai/review/custom_agent_runner.py | 72/87 | 82.8% |
lintro/ai/review/custom_agents.py | 227/232 | 97.8% |
lintro/ai/review/display.py | 80/83 | 96.4% |
lintro/ai/review/enums/__init__.py | 14/14 | 100.0% |
lintro/ai/review/enums/agent_prompt_scope_kind.py | 7/7 | 100.0% |
lintro/ai/review/enums/changed_file_status.py | 9/9 | 100.0% |
lintro/ai/review/enums/checklist_display.py | 3/3 | 100.0% |
lintro/ai/review/enums/custom_agent_mode.py | 3/3 | 100.0% |
lintro/ai/review/enums/evidence_style.py | 6/6 | 100.0% |
lintro/ai/review/enums/file_domain.py | 3/3 | 100.0% |
lintro/ai/review/enums/file_skip_reason.py | 12/12 | 100.0% |
lintro/ai/review/enums/finding_kind.py | 5/5 | 100.0% |
lintro/ai/review/enums/finding_match_outcome.py | 7/7 | 100.0% |
lintro/ai/review/enums/finding_status.py | 5/5 | 100.0% |
lintro/ai/review/enums/fix_mode.py | 5/5 | 100.0% |
lintro/ai/review/enums/lifecycle_stage.py | 7/7 | 100.0% |
lintro/ai/review/enums/review_category.py | 3/3 | 100.0% |
lintro/ai/review/enums/review_context_error_code.py | 21/21 | 100.0% |
lintro/ai/review/enums/review_strictness.py | 3/3 | 100.0% |
lintro/ai/review/enums/review_verdict.py | 7/7 | 100.0% |
lintro/ai/review/enums/suggestion_rejection.py | 12/12 | 100.0% |
lintro/ai/review/error_contract.py | 19/19 | 100.0% |
lintro/ai/review/error_display.py | 52/62 | 83.9% |
lintro/ai/review/errors_taxonomy.py | 70/70 | 100.0% |
lintro/ai/review/exceptions.py | 27/31 | 87.1% |
lintro/ai/review/file_language.py | 45/45 | 100.0% |
lintro/ai/review/file_selection.py | 17/17 | 100.0% |
lintro/ai/review/finding_matcher.py | 129/129 | 100.0% |
lintro/ai/review/finding_parser.py | 52/58 | 89.7% |
lintro/ai/review/github.py | 220/233 | 94.4% |
lintro/ai/review/github_constants.py | 16/16 | 100.0% |
lintro/ai/review/github_errors.py | 55/62 | 88.7% |
lintro/ai/review/github_lifecycle.py | 146/151 | 96.7% |
lintro/ai/review/github_render.py | 143/155 | 92.3% |
lintro/ai/review/github_review_body.py | 104/107 | 97.2% |
lintro/ai/review/github_sticky.py | 408/413 | 98.8% |
lintro/ai/review/glob_utils.py | 77/77 | 100.0% |
lintro/ai/review/group_labels.py | 7/7 | 100.0% |
lintro/ai/review/inline_fix.py | 51/51 | 100.0% |
lintro/ai/review/lint_bridge.py | 44/53 | 83.0% |
lintro/ai/review/models/__init__.py | 26/26 | 100.0% |
lintro/ai/review/models/_coerce.py | 13/13 | 100.0% |
lintro/ai/review/models/agent_prompt_scope.py | 13/13 | 100.0% |
lintro/ai/review/models/changed_file.py | 20/25 | 80.0% |
lintro/ai/review/models/checklist_answer.py | 8/8 | 100.0% |
lintro/ai/review/models/checklist_item.py | 12/12 | 100.0% |
lintro/ai/review/models/chunking_result.py | 13/13 | 100.0% |
lintro/ai/review/models/file_assessment.py | 7/7 | 100.0% |
lintro/ai/review/models/file_classification.py | 7/7 | 100.0% |
lintro/ai/review/models/finding_match_result.py | 15/15 | 100.0% |
lintro/ai/review/models/finding_occurrence.py | 24/25 | 96.0% |
lintro/ai/review/models/finding_record.py | 93/94 | 98.9% |
lintro/ai/review/models/inline_post_failure.py | 14/14 | 100.0% |
lintro/ai/review/models/pr_metadata.py | 9/9 | 100.0% |
lintro/ai/review/models/review_chunk.py | 10/10 | 100.0% |
lintro/ai/review/models/review_context.py | 15/15 | 100.0% |
lintro/ai/review/models/review_finding.py | 38/38 | 100.0% |
lintro/ai/review/models/review_metadata.py | 38/38 | 100.0% |
lintro/ai/review/models/review_result.py | 25/25 | 100.0% |
lintro/ai/review/models/review_state.py | 29/29 | 100.0% |
lintro/ai/review/models/review_summary.py | 11/11 | 100.0% |
lintro/ai/review/models/review_thread.py | 7/7 | 100.0% |
lintro/ai/review/models/run_record.py | 83/87 | 95.4% |
lintro/ai/review/models/skipped_file.py | 13/13 | 100.0% |
lintro/ai/review/models/suggested_change.py | 30/30 | 100.0% |
lintro/ai/review/models/summary_bullet.py | 7/7 | 100.0% |
lintro/ai/review/models/verdict_reasoning.py | 11/11 | 100.0% |
lintro/ai/review/narrative_parser.py | 66/68 | 97.1% |
lintro/ai/review/orchestrator.py | 501/530 | 94.5% |
lintro/ai/review/output.py | 17/20 | 85.0% |
lintro/ai/review/path_utils.py | 147/155 | 94.8% |
lintro/ai/review/paths_registry.py | 87/91 | 95.6% |
lintro/ai/review/pipeline.py | 20/20 | 100.0% |
lintro/ai/review/progress.py | 85/88 | 96.6% |
lintro/ai/review/prompt_builder.py | 24/24 | 100.0% |
lintro/ai/review/prompt_redaction.py | 9/9 | 100.0% |
lintro/ai/review/response_recovery.py | 28/28 | 100.0% |
lintro/ai/review/review_state_codec.py | 88/92 | 95.7% |
lintro/ai/review/sanitize.py | 8/8 | 100.0% |
lintro/ai/review/sensitivity.py | 61/77 | 79.2% |
lintro/ai/review/severity_gate.py | 30/30 | 100.0% |
lintro/ai/review/verdict.py | 38/39 | 97.4% |
lintro/ai/risk.py | 72/81 | 88.9% |
lintro/ai/sanitize.py | 23/23 | 100.0% |
lintro/ai/sarif_bridge.py | 41/57 | 71.9% |
lintro/ai/secrets.py | 13/13 | 100.0% |
lintro/ai/summary.py | 103/130 | 79.2% |
lintro/ai/telemetry.py | 20/20 | 100.0% |
lintro/ai/token_budget.py | 16/16 | 100.0% |
lintro/ai/transcript.py | 128/145 | 88.3% |
lintro/ai/transport.py | 68/68 | 100.0% |
lintro/ai/undo.py | 118/154 | 76.6% |
lintro/ai/validation.py | 117/127 | 92.1% |
lintro/api/__init__.py | 2/2 | 100.0% |
lintro/api/core.py | 54/68 | 79.4% |
lintro/api/pipeline.py | 45/49 | 91.8% |
lintro/cli.py | 160/164 | 97.6% |
lintro/cli_utils/__init__.py | 0/0 | 100.0% |
lintro/cli_utils/command_chainer.py | 79/79 | 100.0% |
lintro/cli_utils/commands/__init__.py | 6/6 | 100.0% |
lintro/cli_utils/commands/check.py | 49/51 | 96.1% |
lintro/cli_utils/commands/completions.py | 11/11 | 100.0% |
lintro/cli_utils/commands/config.py | 116/140 | 82.9% |
lintro/cli_utils/commands/doctor.py | 289/359 | 80.5% |
lintro/cli_utils/commands/format.py | 40/40 | 100.0% |
lintro/cli_utils/commands/init.py | 109/161 | 67.7% |
lintro/cli_utils/commands/install.py | 111/199 | 55.8% |
lintro/cli_utils/commands/licenses.py | 47/51 | 92.2% |
lintro/cli_utils/commands/list_tools.py | 79/135 | 58.5% |
lintro/cli_utils/commands/mcp.py | 11/11 | 100.0% |
lintro/cli_utils/commands/review.py | 224/267 | 83.9% |
lintro/cli_utils/commands/setup.py | 82/161 | 50.9% |
lintro/cli_utils/commands/test.py | 69/73 | 94.5% |
lintro/cli_utils/commands/versions.py | 9/48 | 18.8% |
lintro/cli_utils/diff_option.py | 12/12 | 100.0% |
lintro/cli_utils/install_output.py | 30/31 | 96.8% |
lintro/cli_utils/onboarding.py | 14/25 | 56.0% |
lintro/config/__init__.py | 4/4 | 100.0% |
lintro/config/config_loader.py | 240/272 | 88.2% |
lintro/config/enforce_config.py | 5/5 | 100.0% |
lintro/config/execution_config.py | 17/17 | 100.0% |
lintro/config/licenses_config.py | 53/55 | 96.4% |
lintro/config/lintro_config.py | 51/51 | 100.0% |
lintro/config/output_config.py | 4/4 | 100.0% |
lintro/config/review_config.py | 72/74 | 97.3% |
lintro/config/score_config.py | 7/7 | 100.0% |
lintro/config/tool_config.py | 6/6 | 100.0% |
lintro/config/tool_config_generator.py | 117/145 | 80.7% |
lintro/enums/__init__.py | 0/0 | 100.0% |
lintro/enums/action.py | 13/15 | 86.7% |
lintro/enums/advisory_tools_value.py | 5/5 | 100.0% |
lintro/enums/bandit_levels.py | 26/26 | 100.0% |
lintro/enums/boolean_string.py | 6/6 | 100.0% |
lintro/enums/checklist_display.py | 8/8 | 100.0% |
lintro/enums/confidence_level.py | 10/10 | 100.0% |
lintro/enums/config_format.py | 12/12 | 100.0% |
lintro/enums/config_key.py | 5/5 | 100.0% |
lintro/enums/custom_agent_mode.py | 7/7 | 100.0% |
lintro/enums/display_column.py | 12/12 | 100.0% |
lintro/enums/doc_url_template.py | 27/27 | 100.0% |
lintro/enums/env_bool.py | 4/4 | 100.0% |
lintro/enums/execution_class.py | 12/12 | 100.0% |
lintro/enums/file_domain.py | 14/14 | 100.0% |
lintro/enums/git_command.py | 6/6 | 100.0% |
lintro/enums/git_ref.py | 4/4 | 100.0% |
lintro/enums/group_by.py | 16/16 | 100.0% |
lintro/enums/hadolint_enums.py | 34/36 | 94.4% |
lintro/enums/hyphenated_str_enum.py | 6/6 | 100.0% |
lintro/enums/idiom_review_mode.py | 6/6 | 100.0% |
lintro/enums/install_context.py | 34/34 | 100.0% |
lintro/enums/install_outcome.py | 19/19 | 100.0% |
lintro/enums/node_manager_source.py | 7/7 | 100.0% |
lintro/enums/output_format.py | 20/20 | 100.0% |
lintro/enums/pytest_enums.py | 48/48 | 100.0% |
lintro/enums/review_category.py | 13/13 | 100.0% |
lintro/enums/review_strictness.py | 8/8 | 100.0% |
lintro/enums/risk_level.py | 10/10 | 100.0% |
lintro/enums/semgrep_enums.py | 14/14 | 100.0% |
lintro/enums/severity_level.py | 17/17 | 100.0% |
lintro/enums/tool_name.py | 49/49 | 100.0% |
lintro/enums/tool_option_key.py | 5/5 | 100.0% |
lintro/enums/tool_order.py | 14/14 | 100.0% |
lintro/enums/tool_run_status.py | 19/19 | 100.0% |
lintro/enums/tool_status.py | 9/9 | 100.0% |
lintro/enums/tool_type.py | 15/20 | 75.0% |
lintro/enums/tools_value.py | 11/11 | 100.0% |
lintro/enums/uppercase_str_enum.py | 6/6 | 100.0% |
lintro/enums/yamllint_format.py | 14/17 | 82.4% |
lintro/exceptions/__init__.py | 0/0 | 100.0% |
lintro/exceptions/errors.py | 9/9 | 100.0% |
lintro/formatters/__init__.py | 4/4 | 100.0% |
lintro/formatters/core/__init__.py | 2/2 | 100.0% |
lintro/formatters/core/format_registry.py | 42/48 | 87.5% |
lintro/formatters/formatter.py | 96/100 | 96.0% |
lintro/formatters/styles/__init__.py | 8/8 | 100.0% |
lintro/formatters/styles/csv.py | 15/15 | 100.0% |
lintro/formatters/styles/github.py | 50/52 | 96.2% |
lintro/formatters/styles/grid.py | 24/27 | 88.9% |
lintro/formatters/styles/html.py | 16/16 | 100.0% |
lintro/formatters/styles/json.py | 23/23 | 100.0% |
lintro/formatters/styles/markdown.py | 15/15 | 100.0% |
lintro/formatters/styles/plain.py | 14/14 | 100.0% |
lintro/licenses/__init__.py | 2/2 | 100.0% |
lintro/licenses/attribution.py | 23/23 | 100.0% |
lintro/licenses/ecosystems/__init__.py | 3/3 | 100.0% |
lintro/licenses/ecosystems/npm.py | 105/125 | 84.0% |
lintro/licenses/ecosystems/python.py | 48/49 | 98.0% |
lintro/licenses/models.py | 24/24 | 100.0% |
lintro/licenses/policy_engine.py | 48/49 | 98.0% |
lintro/licenses/report.py | 60/63 | 95.2% |
lintro/licenses/spdx.py | 156/177 | 88.1% |
lintro/mcp/__init__.py | 16/16 | 100.0% |
lintro/mcp/annotations.py | 7/7 | 100.0% |
lintro/mcp/enums/__init__.py | 3/3 | 100.0% |
lintro/mcp/enums/mcp_error_code.py | 8/8 | 100.0% |
lintro/mcp/errors.py | 41/41 | 100.0% |
lintro/mcp/registry.py | 67/68 | 98.5% |
lintro/mcp/server.py | 76/84 | 90.5% |
lintro/mcp/toolkits/__init__.py | 5/5 | 100.0% |
lintro/mcp/toolkits/introspection.py | 91/91 | 100.0% |
lintro/mcp/toolkits/lint.py | 56/56 | 100.0% |
lintro/mcp/toolkits/review.py | 145/153 | 94.8% |
lintro/mcp/toolkits/runner.py | 48/48 | 100.0% |
lintro/mcp/toolkits/snapshot.py | 76/79 | 96.2% |
lintro/mcp/validation.py | 28/28 | 100.0% |
lintro/models/__init__.py | 0/0 | 100.0% |
lintro/models/core/__init__.py | 6/6 | 100.0% |
lintro/models/core/base_tool_options.py | 6/6 | 100.0% |
lintro/models/core/black_options.py | 8/8 | 100.0% |
lintro/models/core/node_manager_commands.py | 7/7 | 100.0% |
lintro/models/core/pytest_options.py | 22/22 | 100.0% |
lintro/models/core/ruff_options.py | 16/16 | 100.0% |
lintro/models/core/run_artifact.py | 24/24 | 100.0% |
lintro/models/core/sarif_enrichment.py | 7/7 | 100.0% |
lintro/models/core/tool_result.py | 33/33 | 100.0% |
lintro/models/core/yamllint_options.py | 6/6 | 100.0% |
lintro/parsers/__init__.py | 9/15 | 60.0% |
lintro/parsers/actionlint/__init__.py | 3/3 | 100.0% |
lintro/parsers/actionlint/actionlint_issue.py | 8/8 | 100.0% |
lintro/parsers/actionlint/actionlint_parser.py | 27/27 | 100.0% |
lintro/parsers/astro_check/__init__.py | 3/3 | 100.0% |
lintro/parsers/astro_check/astro_check_issue.py | 8/8 | 100.0% |
lintro/parsers/astro_check/astro_check_parser.py | 46/55 | 83.6% |
lintro/parsers/bandit/__init__.py | 3/3 | 100.0% |
lintro/parsers/bandit/bandit_issue.py | 21/21 | 100.0% |
lintro/parsers/bandit/bandit_parser.py | 39/50 | 78.0% |
lintro/parsers/base_issue.py | 35/35 | 100.0% |
lintro/parsers/base_parser.py | 75/75 | 100.0% |
lintro/parsers/black/__init__.py | 3/3 | 100.0% |
lintro/parsers/black/black_issue.py | 11/11 | 100.0% |
lintro/parsers/black/black_parser.py | 41/57 | 71.9% |
lintro/parsers/cargo_audit/__init__.py | 0/0 | 100.0% |
lintro/parsers/cargo_audit/cargo_audit_issue.py | 18/19 | 94.7% |
lintro/parsers/cargo_audit/cargo_audit_parser.py | 65/76 | 85.5% |
lintro/parsers/cargo_deny/__init__.py | 3/3 | 100.0% |
lintro/parsers/cargo_deny/cargo_deny_issue.py | 32/32 | 100.0% |
lintro/parsers/cargo_deny/cargo_deny_parser.py | 71/87 | 81.6% |
lintro/parsers/clippy/__init__.py | 3/3 | 100.0% |
lintro/parsers/clippy/clippy_issue.py | 11/11 | 100.0% |
lintro/parsers/clippy/clippy_parser.py | 53/67 | 79.1% |
lintro/parsers/commitlint/__init__.py | 3/3 | 100.0% |
lintro/parsers/commitlint/commitlint_issue.py | 10/10 | 100.0% |
lintro/parsers/commitlint/commitlint_parser.py | 35/35 | 100.0% |
lintro/parsers/dotenv_linter/__init__.py | 3/3 | 100.0% |
lintro/parsers/dotenv_linter/dotenv_linter_issue.py | 10/10 | 100.0% |
lintro/parsers/dotenv_linter/dotenv_linter_parser.py | 18/18 | 100.0% |
lintro/parsers/gitleaks/__init__.py | 3/3 | 100.0% |
lintro/parsers/gitleaks/gitleaks_issue.py | 29/29 | 100.0% |
lintro/parsers/gitleaks/gitleaks_parser.py | 57/60 | 95.0% |
lintro/parsers/golangci_lint/__init__.py | 3/3 | 100.0% |
lintro/parsers/golangci_lint/golangci_lint_issue.py | 10/10 | 100.0% |
lintro/parsers/golangci_lint/golangci_lint_parser.py | 48/54 | 88.9% |
lintro/parsers/hadolint/__init__.py | 4/9 | 44.4% |
lintro/parsers/hadolint/hadolint_issue.py | 8/8 | 100.0% |
lintro/parsers/hadolint/hadolint_parser.py | 19/19 | 100.0% |
lintro/parsers/html_validate/__init__.py | 3/3 | 100.0% |
lintro/parsers/html_validate/html_validate_issue.py | 11/11 | 100.0% |
lintro/parsers/html_validate/html_validate_parser.py | 32/37 | 86.5% |
lintro/parsers/idiom_review/__init__.py | 4/4 | 100.0% |
lintro/parsers/idiom_review/idiom_review_issue.py | 14/14 | 100.0% |
lintro/parsers/idiom_review/idiom_review_parser.py | 86/90 | 95.6% |
lintro/parsers/markdownlint/__init__.py | 3/3 | 100.0% |
lintro/parsers/markdownlint/markdownlint_issue.py | 8/8 | 100.0% |
lintro/parsers/markdownlint/markdownlint_parser.py | 31/33 | 93.9% |
lintro/parsers/mypy/__init__.py | 3/3 | 100.0% |
lintro/parsers/mypy/mypy_issue.py | 9/9 | 100.0% |
lintro/parsers/mypy/mypy_parser.py | 56/71 | 78.9% |
lintro/parsers/osv_scanner/__init__.py | 6/6 | 100.0% |
lintro/parsers/osv_scanner/osv_scanner_issue.py | 23/23 | 100.0% |
lintro/parsers/osv_scanner/osv_scanner_parser.py | 101/122 | 82.8% |
lintro/parsers/osv_scanner/suppression_models.py | 13/13 | 100.0% |
lintro/parsers/osv_scanner/suppression_parser.py | 46/49 | 93.9% |
lintro/parsers/osv_scanner/suppression_status.py | 5/5 | 100.0% |
lintro/parsers/oxfmt/__init__.py | 3/3 | 100.0% |
lintro/parsers/oxfmt/oxfmt_issue.py | 8/8 | 100.0% |
lintro/parsers/oxfmt/oxfmt_parser.py | 26/29 | 89.7% |
lintro/parsers/oxlint/__init__.py | 3/3 | 100.0% |
lintro/parsers/oxlint/oxlint_issue.py | 8/8 | 100.0% |
lintro/parsers/oxlint/oxlint_parser.py | 48/59 | 81.4% |
lintro/parsers/pip_audit/__init__.py | 3/3 | 100.0% |
lintro/parsers/pip_audit/pip_audit_issue.py | 20/20 | 100.0% |
lintro/parsers/pip_audit/pip_audit_parser.py | 48/51 | 94.1% |
lintro/parsers/prettier/__init__.py | 3/3 | 100.0% |
lintro/parsers/prettier/prettier_issue.py | 8/8 | 100.0% |
lintro/parsers/prettier/prettier_parser.py | 19/22 | 86.4% |
lintro/parsers/pydoclint/__init__.py | 3/3 | 100.0% |
lintro/parsers/pydoclint/pydoclint_issue.py | 9/9 | 100.0% |
lintro/parsers/pydoclint/pydoclint_parser.py | 33/36 | 91.7% |
lintro/parsers/pytest/__init__.py | 3/3 | 100.0% |
lintro/parsers/pytest/format_parsers.py | 148/172 | 86.0% |
lintro/parsers/pytest/models.py | 12/12 | 100.0% |
lintro/parsers/pytest/pytest_issue.py | 11/11 | 100.0% |
lintro/parsers/pytest/pytest_parser.py | 14/14 | 100.0% |
lintro/parsers/pytest/summary_extractor.py | 30/32 | 93.8% |
lintro/parsers/ruff/__init__.py | 4/4 | 100.0% |
lintro/parsers/ruff/ruff_format_issue.py | 10/10 | 100.0% |
lintro/parsers/ruff/ruff_issue.py | 10/10 | 100.0% |
lintro/parsers/ruff/ruff_parser.py | 61/76 | 80.3% |
lintro/parsers/rustfmt/__init__.py | 0/0 | 100.0% |
lintro/parsers/rustfmt/rustfmt_issue.py | 10/10 | 100.0% |
lintro/parsers/rustfmt/rustfmt_parser.py | 32/34 | 94.1% |
lintro/parsers/sarif/__init__.py | 3/3 | 100.0% |
lintro/parsers/sarif/sarif_issue.py | 13/13 | 100.0% |
lintro/parsers/sarif/sarif_parser.py | 100/108 | 92.6% |
lintro/parsers/semgrep/__init__.py | 3/3 | 100.0% |
lintro/parsers/semgrep/semgrep_issue.py | 25/25 | 100.0% |
lintro/parsers/semgrep/semgrep_parser.py | 57/63 | 90.5% |
lintro/parsers/shellcheck/__init__.py | 3/3 | 100.0% |
lintro/parsers/shellcheck/shellcheck_issue.py | 11/11 | 100.0% |
lintro/parsers/shellcheck/shellcheck_parser.py | 37/40 | 92.5% |
lintro/parsers/shfmt/__init__.py | 3/3 | 100.0% |
lintro/parsers/shfmt/shfmt_issue.py | 10/10 | 100.0% |
lintro/parsers/shfmt/shfmt_parser.py | 43/46 | 93.5% |
lintro/parsers/sqlfluff/__init__.py | 3/3 | 100.0% |
lintro/parsers/sqlfluff/sqlfluff_issue.py | 11/11 | 100.0% |
lintro/parsers/sqlfluff/sqlfluff_parser.py | 37/39 | 94.9% |
lintro/parsers/streaming.py | 79/87 | 90.8% |
lintro/parsers/stylelint/__init__.py | 3/3 | 100.0% |
lintro/parsers/stylelint/stylelint_issue.py | 7/7 | 100.0% |
lintro/parsers/stylelint/stylelint_parser.py | 79/91 | 86.8% |
lintro/parsers/svelte_check/__init__.py | 3/3 | 100.0% |
lintro/parsers/svelte_check/svelte_check_issue.py | 9/9 | 100.0% |
lintro/parsers/svelte_check/svelte_check_parser.py | 86/99 | 86.9% |
lintro/parsers/taplo/__init__.py | 4/4 | 100.0% |
lintro/parsers/taplo/taplo_issue.py | 9/9 | 100.0% |
lintro/parsers/taplo/taplo_parser.py | 41/41 | 100.0% |
lintro/parsers/trufflehog/__init__.py | 4/4 | 100.0% |
lintro/parsers/trufflehog/trufflehog_errors.py | 80/86 | 93.0% |
lintro/parsers/trufflehog/trufflehog_issue.py | 27/27 | 100.0% |
lintro/parsers/trufflehog/trufflehog_parser.py | 68/74 | 91.9% |
lintro/parsers/tsc/__init__.py | 3/3 | 100.0% |
lintro/parsers/tsc/tsc_issue.py | 9/9 | 100.0% |
lintro/parsers/tsc/tsc_parser.py | 53/57 | 93.0% |
lintro/parsers/vale/__init__.py | 3/3 | 100.0% |
lintro/parsers/vale/vale_issue.py | 13/13 | 100.0% |
lintro/parsers/vale/vale_parser.py | 34/35 | 97.1% |
lintro/parsers/vue_tsc/__init__.py | 3/3 | 100.0% |
lintro/parsers/vue_tsc/vue_tsc_issue.py | 7/7 | 100.0% |
lintro/parsers/vue_tsc/vue_tsc_parser.py | 53/57 | 93.0% |
lintro/parsers/yamllint/__init__.py | 3/3 | 100.0% |
lintro/parsers/yamllint/yamllint_issue.py | 9/9 | 100.0% |
lintro/parsers/yamllint/yamllint_parser.py | 28/37 | 75.7% |
lintro/plugins/__init__.py | 4/4 | 100.0% |
lintro/plugins/_builtin_index.py | 3/3 | 100.0% |
lintro/plugins/base.py | 144/149 | 96.6% |
lintro/plugins/discovery.py | 203/219 | 92.7% |
lintro/plugins/execution_preparation.py | 109/118 | 92.4% |
lintro/plugins/file_discovery.py | 63/67 | 94.0% |
lintro/plugins/file_processor.py | 68/69 | 98.6% |
lintro/plugins/protocol.py | 40/43 | 93.0% |
lintro/plugins/registry.py | 79/82 | 96.3% |
lintro/plugins/subprocess_executor.py | 116/131 | 88.5% |
lintro/plugins/subprocess_failure.py | 19/23 | 82.6% |
lintro/tools/__init__.py | 5/5 | 100.0% |
lintro/tools/core/__init__.py | 0/0 | 100.0% |
lintro/tools/core/command_builders.py | 185/202 | 91.6% |
lintro/tools/core/config_injection.py | 40/48 | 83.3% |
lintro/tools/core/install_context.py | 60/62 | 96.8% |
lintro/tools/core/install_hints.py | 18/27 | 66.7% |
lintro/tools/core/install_lock.py | 24/53 | 45.3% |
lintro/tools/core/install_plan.py | 30/30 | 100.0% |
lintro/tools/core/install_quickfix.py | 50/52 | 96.2% |
lintro/tools/core/install_strategies/__init__.py | 5/5 | 100.0% |
lintro/tools/core/install_strategies/base.py | 14/14 | 100.0% |
lintro/tools/core/install_strategies/binary_strategy.py | 24/26 | 92.3% |
lintro/tools/core/install_strategies/cargo_strategy.py | 21/22 | 95.5% |
lintro/tools/core/install_strategies/environment.py | 30/30 | 100.0% |
lintro/tools/core/install_strategies/node_project.py | 101/102 | 99.0% |
lintro/tools/core/install_strategies/npm_strategy.py | 69/71 | 97.2% |
lintro/tools/core/install_strategies/package_names.py | 14/15 | 93.3% |
lintro/tools/core/install_strategies/pip_strategy.py | 43/45 | 95.6% |
lintro/tools/core/install_strategies/registry.py | 12/14 | 85.7% |
lintro/tools/core/install_strategies/rustup_strategy.py | 21/22 | 95.5% |
lintro/tools/core/line_length_checker.py | 65/67 | 97.0% |
lintro/tools/core/manifest_models.py | 23/23 | 100.0% |
lintro/tools/core/node_fallback.py | 51/53 | 96.2% |
lintro/tools/core/option_spec.py | 90/91 | 98.9% |
lintro/tools/core/option_validators.py | 59/59 | 100.0% |
lintro/tools/core/runtime_discovery.py | 113/129 | 87.6% |
lintro/tools/core/timeout_utils.py | 26/26 | 100.0% |
lintro/tools/core/tool_installer.py | 206/255 | 80.8% |
lintro/tools/core/tool_manager.py | 62/72 | 86.1% |
lintro/tools/core/tool_registry.py | 127/155 | 81.9% |
lintro/tools/core/version_checking.py | 56/57 | 98.2% |
lintro/tools/core/version_parsing.py | 128/139 | 92.1% |
lintro/tools/core/version_requirements.py | 16/23 | 69.6% |
lintro/tools/definitions/__init__.py | 0/0 | 100.0% |
lintro/tools/definitions/_ts_checker_base.py | 52/61 | 85.2% |
lintro/tools/definitions/_ts_checker_command.py | 49/50 | 98.0% |
lintro/tools/definitions/_ts_checker_execution.py | 140/194 | 72.2% |
lintro/tools/definitions/actionlint.py | 36/74 | 48.6% |
lintro/tools/definitions/astro_check.py | 107/134 | 79.9% |
lintro/tools/definitions/bandit.py | 143/189 | 75.7% |
lintro/tools/definitions/black.py | 56/140 | 40.0% |
lintro/tools/definitions/cargo_audit.py | 71/73 | 97.3% |
lintro/tools/definitions/cargo_deny.py | 40/74 | 54.1% |
lintro/tools/definitions/clippy.py | 42/116 | 36.2% |
lintro/tools/definitions/commitlint.py | 63/66 | 95.5% |
lintro/tools/definitions/dotenv_linter.py | 116/129 | 89.9% |
lintro/tools/definitions/gitleaks.py | 115/121 | 95.0% |
lintro/tools/definitions/golangci_lint.py | 124/143 | 86.7% |
lintro/tools/definitions/hadolint.py | 93/97 | 95.9% |
lintro/tools/definitions/html_validate.py | 70/71 | 98.6% |
lintro/tools/definitions/idiom_review.py | 95/104 | 91.3% |
lintro/tools/definitions/markdownlint.py | 75/101 | 74.3% |
lintro/tools/definitions/mypy.py | 171/188 | 91.0% |
lintro/tools/definitions/osv_scanner.py | 150/157 | 95.5% |
lintro/tools/definitions/oxfmt.py | 121/141 | 85.8% |
lintro/tools/definitions/oxlint.py | 161/174 | 92.5% |
lintro/tools/definitions/oxlint_doctor.py | 55/76 | 72.4% |
lintro/tools/definitions/pip_audit.py | 133/138 | 96.4% |
lintro/tools/definitions/prettier.py | 155/203 | 76.4% |
lintro/tools/definitions/pydoclint.py | 45/47 | 95.7% |
lintro/tools/definitions/pytest.py | 104/143 | 72.7% |
lintro/tools/definitions/ruff.py | 89/92 | 96.7% |
lintro/tools/definitions/rustfmt.py | 98/110 | 89.1% |
lintro/tools/definitions/semgrep.py | 124/137 | 90.5% |
lintro/tools/definitions/shellcheck.py | 91/93 | 97.8% |
lintro/tools/definitions/shfmt.py | 120/131 | 91.6% |
lintro/tools/definitions/sqlfluff.py | 125/137 | 91.2% |
lintro/tools/definitions/stylelint.py | 111/124 | 89.5% |
lintro/tools/definitions/svelte_check.py | 85/111 | 76.6% |
lintro/tools/definitions/taplo.py | 147/153 | 96.1% |
lintro/tools/definitions/trufflehog.py | 158/164 | 96.3% |
lintro/tools/definitions/tsc.py | 62/62 | 100.0% |
lintro/tools/definitions/vale.py | 65/68 | 95.6% |
lintro/tools/definitions/vue_tsc.py | 44/44 | 100.0% |
lintro/tools/definitions/yamllint.py | 57/190 | 30.0% |
lintro/tools/idiom_review/__init__.py | 5/9 | 55.6% |
lintro/tools/idiom_review/engine.py | 68/76 | 89.5% |
lintro/tools/idiom_review/prompts.py | 21/21 | 100.0% |
lintro/tools/idiom_review/signatures.py | 53/56 | 94.6% |
lintro/tools/implementations/__init__.py | 4/4 | 100.0% |
lintro/tools/implementations/pytest/__init__.py | 3/3 | 100.0% |
lintro/tools/implementations/pytest/addopts_coverage.py | 78/92 | 84.8% |
lintro/tools/implementations/pytest/collection.py | 50/111 | 45.0% |
lintro/tools/implementations/pytest/coverage_processor.py | 16/68 | 23.5% |
lintro/tools/implementations/pytest/formatters.py | 89/137 | 65.0% |
lintro/tools/implementations/pytest/markers.py | 14/64 | 21.9% |
lintro/tools/implementations/pytest/output.py | 56/79 | 70.9% |
lintro/tools/implementations/pytest/output_parsers.py | 31/59 | 52.5% |
lintro/tools/implementations/pytest/pytest_command_builder.py | 92/131 | 70.2% |
lintro/tools/implementations/pytest/pytest_config.py | 73/79 | 92.4% |
lintro/tools/implementations/pytest/pytest_error_handler.py | 9/23 | 39.1% |
lintro/tools/implementations/pytest/pytest_executor.py | 28/44 | 63.6% |
lintro/tools/implementations/pytest/pytest_handlers.py | 118/118 | 100.0% |
lintro/tools/implementations/pytest/pytest_option_validators.py | 50/78 | 64.1% |
lintro/tools/implementations/pytest/pytest_output_processor.py | 6/6 | 100.0% |
lintro/tools/implementations/pytest/pytest_result_processor.py | 22/22 | 100.0% |
lintro/tools/implementations/pytest/test_analytics.py | 44/54 | 81.5% |
lintro/tools/implementations/ruff/__init__.py | 4/4 | 100.0% |
lintro/tools/implementations/ruff/check.py | 60/61 | 98.4% |
lintro/tools/implementations/ruff/commands.py | 55/67 | 82.1% |
lintro/tools/implementations/ruff/fix.py | 106/107 | 99.1% |
lintro/utils/__init__.py | 0/0 | 100.0% |
lintro/utils/ascii_normalize_cli.py | 39/39 | 100.0% |
lintro/utils/async_tool_executor.py | 99/106 | 93.4% |
lintro/utils/config.py | 129/141 | 91.5% |
lintro/utils/config_constants.py | 19/19 | 100.0% |
lintro/utils/config_priority.py | 79/83 | 95.2% |
lintro/utils/config_reporting.py | 60/60 | 100.0% |
lintro/utils/config_validation.py | 38/43 | 88.4% |
lintro/utils/console/__init__.py | 7/7 | 100.0% |
lintro/utils/console/constants.py | 16/18 | 88.9% |
lintro/utils/console/logger.py | 193/203 | 95.1% |
lintro/utils/console/pre_execution_summary.py | 36/44 | 81.8% |
lintro/utils/display_helpers.py | 75/75 | 100.0% |
lintro/utils/doctor_report.py | 180/193 | 93.3% |
lintro/utils/env.py | 10/12 | 83.3% |
lintro/utils/environment/__init__.py | 15/15 | 100.0% |
lintro/utils/environment/_protocol.py | 8/8 | 100.0% |
lintro/utils/environment/ci_environment.py | 11/17 | 64.7% |
lintro/utils/environment/collectors.py | 137/179 | 76.5% |
lintro/utils/environment/container_detection.py | 16/22 | 72.7% |
lintro/utils/environment/environment_report.py | 23/23 | 100.0% |
lintro/utils/environment/go_info.py | 11/14 | 78.6% |
lintro/utils/environment/lintro_info.py | 12/19 | 63.2% |
lintro/utils/environment/node_info.py | 13/16 | 81.2% |
lintro/utils/environment/project_info.py | 12/18 | 66.7% |
lintro/utils/environment/python_info.py | 13/16 | 81.2% |
lintro/utils/environment/renderer.py | 13/60 | 21.7% |
lintro/utils/environment/ruby_info.py | 11/14 | 78.6% |
lintro/utils/environment/rust_info.py | 12/15 | 80.0% |
lintro/utils/environment/system_info.py | 15/22 | 68.2% |
lintro/utils/execution/__init__.py | 4/4 | 100.0% |
lintro/utils/execution/advisory.py | 87/88 | 98.9% |
lintro/utils/execution/exit_codes.py | 34/34 | 100.0% |
lintro/utils/execution/fix_retry.py | 23/26 | 88.5% |
lintro/utils/execution/parallel_executor.py | 51/51 | 100.0% |
lintro/utils/execution/result_shaping.py | 37/38 | 97.4% |
lintro/utils/execution/run_aggregation.py | 30/30 | 100.0% |
lintro/utils/execution/run_context.py | 13/13 | 100.0% |
lintro/utils/execution/run_preflight.py | 48/74 | 64.9% |
lintro/utils/execution/run_renderer.py | 138/173 | 79.8% |
lintro/utils/execution/tool_configuration.py | 155/161 | 96.3% |
lintro/utils/file_cache.py | 87/107 | 81.3% |
lintro/utils/findings.py | 73/75 | 97.3% |
lintro/utils/formatting.py | 65/74 | 87.8% |
lintro/utils/git_diff.py | 142/172 | 82.6% |
lintro/utils/health_score.py | 80/80 | 100.0% |
lintro/utils/json_output.py | 51/51 | 100.0% |
lintro/utils/jsonc.py | 141/154 | 91.6% |
lintro/utils/logger_setup.py | 13/13 | 100.0% |
lintro/utils/module_size.py | 54/56 | 96.4% |
lintro/utils/native_parsers.py | 119/165 | 72.1% |
lintro/utils/node_deps.py | 78/88 | 88.6% |
lintro/utils/output/__init__.py | 5/5 | 100.0% |
lintro/utils/output/constants.py | 5/5 | 100.0% |
lintro/utils/output/file_writer.py | 200/211 | 94.8% |
lintro/utils/output/helpers.py | 9/9 | 100.0% |
lintro/utils/output/manager.py | 170/203 | 83.7% |
lintro/utils/output/parser_registration.py | 47/49 | 95.9% |
lintro/utils/output/parser_registry.py | 31/31 | 100.0% |
lintro/utils/output/sarif/__init__.py | 3/3 | 100.0% |
lintro/utils/output/sarif/bridge.py | 18/18 | 100.0% |
lintro/utils/output/sarif/document.py | 139/142 | 97.9% |
lintro/utils/path_filtering.py | 115/123 | 93.5% |
lintro/utils/path_utils.py | 82/86 | 95.3% |
lintro/utils/post_checks.py | 90/101 | 89.1% |
lintro/utils/project_detection.py | 73/87 | 83.9% |
lintro/utils/result_formatters.py | 104/184 | 56.5% |
lintro/utils/streaming_output.py | 94/100 | 94.0% |
lintro/utils/summary_tables.py | 192/238 | 80.7% |
lintro/utils/tool_config_info.py | 3/3 | 100.0% |
lintro/utils/tool_executor.py | 138/150 | 92.0% |
lintro/utils/tool_metadata.py | 44/47 | 93.6% |
lintro/utils/tool_options.py | 40/44 | 90.9% |
lintro/utils/tool_utils.py | 4/4 | 100.0% |
lintro/utils/tsconfig.py | 188/233 | 80.7% |
lintro/utils/tsconfig_info.py | 22/22 | 100.0% |
lintro/utils/unified_config.py | 8/8 | 100.0% |
lintro/utils/unified_config_manager.py | 56/56 | 100.0% |
scripts/build/build_macos.py | 37/146 | 25.3% |
scripts/ci/_generator/__init__.py | 6/6 | 100.0% |
scripts/ci/_generator/errors.py | 2/2 | 100.0% |
scripts/ci/_generator/inputs.py | 138/154 | 89.6% |
scripts/ci/_generator/outputs.py | 56/62 | 90.3% |
scripts/ci/_generator/seed.py | 47/52 | 90.4% |
scripts/ci/ai_tools_arg_pin.py | 50/51 | 98.0% |
scripts/ci/ai_tools_image_pin.py | 24/40 | 60.0% |
scripts/ci/check-dogfood-skips.py | 160/182 | 87.9% |
scripts/ci/check-release-version-skew.py | 168/184 | 91.3% |
scripts/ci/classify-lint-timeout.py | 89/91 | 97.8% |
scripts/ci/classify-osv-results.py | 40/62 | 64.5% |
scripts/ci/classify-release-tag.py | 22/23 | 95.7% |
scripts/ci/classify_review_outcome.py | 131/138 | 94.9% |
scripts/ci/compute-new-manifest-tools.py | 45/92 | 48.9% |
scripts/ci/format-changelog.py | 241/248 | 97.2% |
scripts/ci/generate-builtin-tool-index.py | 83/94 | 88.3% |
scripts/ci/generate-tool-versions.py | 78/80 | 97.5% |
scripts/ci/npm/stage_binaries.py | 40/43 | 93.0% |
scripts/ci/npm/sync_npm_version.py | 65/92 | 70.7% |
scripts/ci/site/fix-markdown-docs.py | 59/215 | 27.4% |
scripts/ci/site/migrate-docs-content.py | 113/156 | 72.4% |
scripts/ci/smoke-test-binary.py | 131/155 | 84.5% |
scripts/ci/sync-pinned-release-image.py | 78/113 | 69.0% |
scripts/ci/testing/render-coverage-json-html.py | 31/50 | 62.0% |
scripts/ci/update-security-support.py | 81/89 | 91.0% |
scripts/ci/verify-manifest-tools.py | 165/191 | 86.4% |
scripts/generate-checklist-corpus-schema.py | 46/47 | 97.9% |
scripts/utils/delete-previous-lintro-comments.py | 30/70 | 42.9% |
scripts/utils/merge_pr_comment.py | 48/51 | 94.1% |
tests/__init__.py | 0/0 | 100.0% |
tests/cli/__init__.py | 0/0 | 100.0% |
tests/cli/conftest.py | 8/14 | 57.1% |
tests/cli/test_check_score.py | 29/29 | 100.0% |
tests/cli/test_cli.py | 89/90 | 98.9% |
tests/cli/test_config_command.py | 85/85 | 100.0% |
tests/cli/test_diff_option.py | 72/72 | 100.0% |
tests/cli/test_init_command.py | 74/74 | 100.0% |
tests/cli/test_json_stdout_contract.py | 134/135 | 99.3% |
tests/config/__init__.py | 0/0 | 100.0% |
tests/config/test_config_loader.py | 158/158 | 100.0% |
tests/config/test_init_command.py | 66/66 | 100.0% |
tests/config/test_lintro_config.py | 50/50 | 100.0% |
tests/config/test_tool_config_generator.py | 186/186 | 100.0% |
tests/conftest.py | 37/46 | 80.4% |
tests/constants.py | 13/13 | 100.0% |
tests/contract/__init__.py | 0/0 | 100.0% |
tests/contract/conftest.py | 16/17 | 94.1% |
tests/contract/gating.py | 16/17 | 94.1% |
tests/contract/test_cli_flag_surface.py | 27/38 | 71.1% |
tests/contract/test_cli_invocation_smoke.py | 21/50 | 42.0% |
tests/formatters/__init__.py | 0/0 | 100.0% |
tests/formatters/test_formatters.py | 54/54 | 100.0% |
tests/licenses/__init__.py | 0/0 | 100.0% |
tests/licenses/conftest.py | 15/15 | 100.0% |
tests/licenses/test_attribution.py | 19/19 | 100.0% |
tests/licenses/test_command.py | 29/29 | 100.0% |
tests/licenses/test_config.py | 27/27 | 100.0% |
tests/licenses/test_ecosystems.py | 119/119 | 100.0% |
tests/licenses/test_policy_engine.py | 64/64 | 100.0% |
tests/licenses/test_report.py | 21/21 | 100.0% |
tests/licenses/test_spdx.py | 59/59 | 100.0% |
tests/scripts/__init__.py | 0/0 | 100.0% |
tests/scripts/ci/site/test_fix_markdown_docs.py | 28/28 | 100.0% |
tests/scripts/ci/test_check_release_version_skew.py | 125/125 | 100.0% |
tests/scripts/ci/test_classify_release_tag.py | 45/45 | 100.0% |
tests/scripts/ci/test_migrate_docs_content.py | 86/86 | 100.0% |
tests/scripts/ci/test_run_with_memory_trace.py | 46/46 | 100.0% |
tests/scripts/ci/test_sync_pinned_release_image.py | 81/81 | 100.0% |
tests/scripts/ci/testing/test_stage_coverage_html.py | 43/43 | 100.0% |
tests/scripts/conftest.py | 8/15 | 53.3% |
tests/scripts/generate_tool_versions/__init__.py | 0/0 | 100.0% |
tests/scripts/generate_tool_versions/conftest.py | 44/45 | 97.8% |
tests/scripts/generate_tool_versions/test_inputs.py | 97/97 | 100.0% |
tests/scripts/generate_tool_versions/test_main.py | 61/61 | 100.0% |
tests/scripts/generate_tool_versions/test_outputs.py | 32/32 | 100.0% |
tests/scripts/generate_tool_versions/test_real_repo.py | 16/16 | 100.0% |
tests/scripts/generate_tool_versions/test_seed.py | 27/27 | 100.0% |
tests/scripts/test_ai_contract_tests_workflow.py | 84/86 | 97.7% |
tests/scripts/test_ai_tools_arg_pin.py | 57/59 | 96.6% |
tests/scripts/test_build_macos.py | 34/34 | 100.0% |
tests/scripts/test_check_dogfood_skips.py | 142/144 | 98.6% |
tests/scripts/test_ci_post_pr_comment.py | 95/96 | 99.0% |
tests/scripts/test_classify_lint_timeout.py | 99/101 | 98.0% |
tests/scripts/test_classify_osv_results.py | 94/96 | 97.9% |
tests/scripts/test_classify_review_outcome.py | 171/173 | 98.8% |
tests/scripts/test_code_quality_gate_scripts.py | 208/208 | 100.0% |
tests/scripts/test_collect_oom_evidence.py | 133/133 | 100.0% |
tests/scripts/test_compute_new_manifest_tools.py | 199/200 | 99.5% |
tests/scripts/test_cosign_sign_images.py | 95/96 | 99.0% |
tests/scripts/test_coverage_pipeline_integration.py | 72/72 | 100.0% |
tests/scripts/test_delete_previous_lintro_comments.py | 44/46 | 95.7% |
tests/scripts/test_docker_backfill_validation.py | 36/36 | 100.0% |
tests/scripts/test_docker_ci_scripts.py | 326/326 | 100.0% |
tests/scripts/test_docker_entrypoint.py | 39/39 | 100.0% |
tests/scripts/test_dogfood_changed_files.py | 116/116 | 100.0% |
tests/scripts/test_extract_test_summary.py | 93/93 | 100.0% |
tests/scripts/test_extract_version.py | 25/25 | 100.0% |
tests/scripts/test_format_changelog.py | 151/153 | 98.7% |
tests/scripts/test_generate_builtin_tool_index.py | 96/98 | 98.0% |
tests/scripts/test_github_comment_utilities.py | 0/0 | 100.0% |
tests/scripts/test_github_comment_utilities_encode.py | 49/49 | 100.0% |
tests/scripts/test_github_comment_utilities_extract.py | 41/41 | 100.0% |
tests/scripts/test_github_comment_utilities_find.py | 49/49 | 100.0% |
tests/scripts/test_install_cursor_agent.py | 34/34 | 100.0% |
tests/scripts/test_memory_sampler.py | 155/155 | 100.0% |
tests/scripts/test_merge_pr_comment.py | 117/117 | 100.0% |
tests/scripts/test_npm_publish_packages.py | 251/251 | 100.0% |
tests/scripts/test_release_bump_only.py | 141/141 | 100.0% |
tests/scripts/test_resolve_allowed_endpoints.py | 80/80 | 100.0% |
tests/scripts/test_resolve_lintro_image.py | 102/102 | 100.0% |
tests/scripts/test_run_ai_review.py | 358/360 | 99.4% |
tests/scripts/test_shell_scripts.py | 176/176 | 100.0% |
tests/scripts/test_smoke_test_binary.py | 114/115 | 99.1% |
tests/scripts/test_stage_binaries.py | 64/64 | 100.0% |
tests/scripts/test_sync_npm_version.py | 73/73 | 100.0% |
tests/scripts/test_update_security_support.py | 82/84 | 97.6% |
tests/scripts/test_verify_image_manifest_tools.py | 113/113 | 100.0% |
tests/scripts/test_verify_manifest_tools.py | 165/166 | 99.4% |
tests/scripts/test_vuln_suppression_scripts.py | 84/84 | 100.0% |
tests/test_documentation.py | 188/210 | 89.5% |
tests/test_samples_helpers.py | 13/14 | 92.9% |
tests/unit/__init__.py | 0/0 | 100.0% |
tests/unit/ai/__init__.py | 0/0 | 100.0% |
tests/unit/ai/conftest.py | 100/105 | 95.2% |
tests/unit/ai/prompts/test_prompt_loader.py | 55/55 | 100.0% |
tests/unit/ai/prompts/test_review_prompts.py | 80/80 | 100.0% |
tests/unit/ai/providers/__init__.py | 0/0 | 100.0% |
tests/unit/ai/providers/test_anthropic.py | 124/124 | 100.0% |
tests/unit/ai/providers/test_base.py | 38/39 | 97.4% |
tests/unit/ai/providers/test_capabilities.py | 50/50 | 100.0% |
tests/unit/ai/providers/test_claude_auth.py | 123/123 | 100.0% |
tests/unit/ai/providers/test_cli_capability_guard.py | 214/215 | 99.5% |
tests/unit/ai/providers/test_cli_contract_check.py | 115/115 | 100.0% |
tests/unit/ai/providers/test_cli_exit_code.py | 43/44 | 97.7% |
tests/unit/ai/providers/test_cli_flag_gating.py | 140/140 | 100.0% |
tests/unit/ai/providers/test_cli_liveness.py | 96/104 | 92.3% |
tests/unit/ai/providers/test_cli_stdin_prompt.py | 56/56 | 100.0% |
tests/unit/ai/providers/test_factory.py | 60/60 | 100.0% |
tests/unit/ai/providers/test_openai.py | 147/147 | 100.0% |
tests/unit/ai/providers/test_prose_envelope_recovery.py | 72/72 | 100.0% |
tests/unit/ai/providers/test_provider_lifecycle.py | 149/173 | 86.1% |
tests/unit/ai/providers/test_stream.py | 119/120 | 99.2% |
tests/unit/ai/review/conftest.py | 51/57 | 89.5% |
tests/unit/ai/review/review_fixtures.py | 10/10 | 100.0% |
tests/unit/ai/review/test_addressed_lifecycle_1912.py | 313/315 | 99.4% |
tests/unit/ai/review/test_agent_prompts.py | 214/214 | 100.0% |
tests/unit/ai/review/test_architecture_characterization.py | 149/149 | 100.0% |
tests/unit/ai/review/test_architecture_characterization_1972.py | 143/144 | 99.3% |
tests/unit/ai/review/test_checklist_builtin.py | 27/27 | 100.0% |
tests/unit/ai/review/test_checklist_corpus_schema.py | 102/103 | 99.0% |
tests/unit/ai/review/test_checklist_display.py | 35/35 | 100.0% |
tests/unit/ai/review/test_checklist_loader.py | 71/71 | 100.0% |
tests/unit/ai/review/test_checklist_registry.py | 47/47 | 100.0% |
tests/unit/ai/review/test_checklist_selector.py | 112/112 | 100.0% |
tests/unit/ai/review/test_chunker_grouping.py | 75/75 | 100.0% |
tests/unit/ai/review/test_chunker_import_compat.py | 23/23 | 100.0% |
tests/unit/ai/review/test_chunker_sampling.py | 98/98 | 100.0% |
tests/unit/ai/review/test_chunker_workflow_scripts.py | 50/50 | 100.0% |
tests/unit/ai/review/test_classifier.py | 13/13 | 100.0% |
tests/unit/ai/review/test_cli_large_diff_1967.py | 178/178 | 100.0% |
tests/unit/ai/review/test_cli_limits.py | 50/50 | 100.0% |
tests/unit/ai/review/test_context_collect.py | 370/370 | 100.0% |
tests/unit/ai/review/test_context_integration.py | 97/102 | 95.1% |
tests/unit/ai/review/test_context_parse.py | 172/172 | 100.0% |
tests/unit/ai/review/test_custom_agent_runner.py | 154/154 | 100.0% |
tests/unit/ai/review/test_custom_agents.py | 115/115 | 100.0% |
tests/unit/ai/review/test_display.py | 49/49 | 100.0% |
tests/unit/ai/review/test_error_contract.py | 78/78 | 100.0% |
tests/unit/ai/review/test_error_display.py | 27/27 | 100.0% |
tests/unit/ai/review/test_error_sticky_1954.py | 130/130 | 100.0% |
tests/unit/ai/review/test_errors_taxonomy.py | 128/128 | 100.0% |
tests/unit/ai/review/test_file_language.py | 37/37 | 100.0% |
tests/unit/ai/review/test_file_selection.py | 33/33 | 100.0% |
tests/unit/ai/review/test_finding_matcher.py | 201/201 | 100.0% |
tests/unit/ai/review/test_github.py | 380/380 | 100.0% |
tests/unit/ai/review/test_github_badge_tables.py | 71/71 | 100.0% |
tests/unit/ai/review/test_github_review_body.py | 138/138 | 100.0% |
tests/unit/ai/review/test_github_sticky_mission_control.py | 220/220 | 100.0% |
tests/unit/ai/review/test_github_sticky_state.py | 163/163 | 100.0% |
tests/unit/ai/review/test_glob_utils.py | 41/41 | 100.0% |
tests/unit/ai/review/test_inline_finding_format.py | 140/140 | 100.0% |
tests/unit/ai/review/test_inline_posting_1911.py | 173/173 | 100.0% |
tests/unit/ai/review/test_lint_bridge.py | 31/31 | 100.0% |
tests/unit/ai/review/test_merge.py | 38/38 | 100.0% |
tests/unit/ai/review/test_mock_parity_1951.py | 153/153 | 100.0% |
tests/unit/ai/review/test_narrative_parser.py | 68/69 | 98.6% |
tests/unit/ai/review/test_orchestrator.py | 376/376 | 100.0% |
tests/unit/ai/review/test_orchestrator_hardening.py | 101/101 | 100.0% |
tests/unit/ai/review/test_output.py | 32/32 | 100.0% |
tests/unit/ai/review/test_package_exports.py | 45/47 | 95.7% |
tests/unit/ai/review/test_path_utils.py | 103/103 | 100.0% |
tests/unit/ai/review/test_paths_registry.py | 46/46 | 100.0% |
tests/unit/ai/review/test_pipeline.py | 43/43 | 100.0% |
tests/unit/ai/review/test_pipeline_integration.py | 16/16 | 100.0% |
tests/unit/ai/review/test_prompt_builder.py | 63/63 | 100.0% |
tests/unit/ai/review/test_prose_recovery.py | 118/118 | 100.0% |
tests/unit/ai/review/test_response_recovery.py | 45/45 | 100.0% |
tests/unit/ai/review/test_review_boundary_fencing.py | 114/114 | 100.0% |
tests/unit/ai/review/test_review_command_json_error.py | 50/50 | 100.0% |
tests/unit/ai/review/test_review_state_codec.py | 152/152 | 100.0% |
tests/unit/ai/review/test_rich_review_outputs.py | 95/96 | 99.0% |
tests/unit/ai/review/test_sensitivity.py | 41/41 | 100.0% |
tests/unit/ai/review/test_severity_gate.py | 100/100 | 100.0% |
tests/unit/ai/review/test_verdict.py | 61/61 | 100.0% |
tests/unit/ai/test_ai_config_validation.py | 29/29 | 100.0% |
tests/unit/ai/test_annotations.py | 91/91 | 100.0% |
tests/unit/ai/test_apply.py | 207/207 | 100.0% |
tests/unit/ai/test_async_retry.py | 59/59 | 100.0% |
tests/unit/ai/test_audit.py | 79/79 | 100.0% |
tests/unit/ai/test_availability.py | 37/37 | 100.0% |
tests/unit/ai/test_budget.py | 128/131 | 97.7% |
tests/unit/ai/test_cache.py | 101/101 | 100.0% |
tests/unit/ai/test_checkpoints.py | 324/324 | 100.0% |
tests/unit/ai/test_claude_cli_provider.py | 87/87 | 100.0% |
tests/unit/ai/test_cli_schemas.py | 49/49 | 100.0% |
tests/unit/ai/test_codex_cli_provider.py | 47/47 | 100.0% |
tests/unit/ai/test_config.py | 148/148 | 100.0% |
tests/unit/ai/test_config_overrides.py | 266/266 | 100.0% |
tests/unit/ai/test_config_resolution.py | 105/105 | 100.0% |
tests/unit/ai/test_config_views.py | 46/46 | 100.0% |
tests/unit/ai/test_config_wiring.py | 109/109 | 100.0% |
tests/unit/ai/test_cost.py | 60/60 | 100.0% |
tests/unit/ai/test_cursor_provider.py | 218/219 | 99.5% |
tests/unit/ai/test_display.py | 10/10 | 100.0% |
tests/unit/ai/test_display_status.py | 97/97 | 100.0% |
tests/unit/ai/test_doctor_liveness.py | 71/77 | 92.2% |
tests/unit/ai/test_enums.py | 57/57 | 100.0% |
tests/unit/ai/test_exceptions.py | 10/10 | 100.0% |
tests/unit/ai/test_fallback.py | 158/158 | 100.0% |
tests/unit/ai/test_filters.py | 129/129 | 100.0% |
tests/unit/ai/test_fix_context.py | 41/41 | 100.0% |
tests/unit/ai/test_fix_generation_basic.py | 133/139 | 95.7% |
tests/unit/ai/test_fix_generation_batch.py | 31/31 | 100.0% |
tests/unit/ai/test_fix_generation_edge.py | 87/89 | 97.8% |
tests/unit/ai/test_fix_parsing.py | 90/90 | 100.0% |
tests/unit/ai/test_fix_reading.py | 50/50 | 100.0% |
tests/unit/ai/test_github_pr.py | 305/305 | 100.0% |
tests/unit/ai/test_hook.py | 68/68 | 100.0% |
tests/unit/ai/test_interactive.py | 194/194 | 100.0% |
tests/unit/ai/test_interface.py | 123/123 | 100.0% |
tests/unit/ai/test_invoke.py | 48/48 | 100.0% |
tests/unit/ai/test_json_response.py | 42/42 | 100.0% |
tests/unit/ai/test_liveness.py | 117/117 | 100.0% |
tests/unit/ai/test_metadata.py | 51/51 | 100.0% |
tests/unit/ai/test_model_pricing.py | 12/12 | 100.0% |
tests/unit/ai/test_models.py | 66/66 | 100.0% |
tests/unit/ai/test_orchestrator_check.py | 90/90 | 100.0% |
tests/unit/ai/test_orchestrator_edge.py | 85/85 | 100.0% |
tests/unit/ai/test_orchestrator_fix.py | 108/108 | 100.0% |
tests/unit/ai/test_orchestrator_multi.py | 149/150 | 99.3% |
tests/unit/ai/test_paths.py | 43/43 | 100.0% |
tests/unit/ai/test_pipeline.py | 185/185 | 100.0% |
tests/unit/ai/test_prompts.py | 94/94 | 100.0% |
tests/unit/ai/test_raw_response.py | 81/81 | 100.0% |
tests/unit/ai/test_refinement.py | 121/121 | 100.0% |
tests/unit/ai/test_registry.py | 82/82 | 100.0% |
tests/unit/ai/test_rerun.py | 100/101 | 99.0% |
tests/unit/ai/test_retry.py | 100/101 | 99.0% |
tests/unit/ai/test_review_progress.py | 78/78 | 100.0% |
tests/unit/ai/test_risk.py | 103/103 | 100.0% |
tests/unit/ai/test_sanitize.py | 50/50 | 100.0% |
tests/unit/ai/test_sanitize_mode.py | 32/32 | 100.0% |
tests/unit/ai/test_sarif_artifact.py | 89/89 | 100.0% |
tests/unit/ai/test_secrets.py | 47/47 | 100.0% |
tests/unit/ai/test_stream_fallback.py | 80/86 | 93.0% |
tests/unit/ai/test_streaming.py | 65/67 | 97.0% |
tests/unit/ai/test_summary_formatting.py | 74/74 | 100.0% |
tests/unit/ai/test_summary_generation.py | 101/101 | 100.0% |
tests/unit/ai/test_telemetry.py | 46/46 | 100.0% |
tests/unit/ai/test_token_budget.py | 37/37 | 100.0% |
tests/unit/ai/test_transcript.py | 141/142 | 99.3% |
tests/unit/ai/test_transport_config.py | 46/46 | 100.0% |
tests/unit/ai/test_transport_profiles.py | 72/72 | 100.0% |
tests/unit/ai/test_undo.py | 65/65 | 100.0% |
tests/unit/ai/test_validation_applied.py | 151/151 | 100.0% |
tests/unit/ai/test_validation_core.py | 93/93 | 100.0% |
tests/unit/api/__init__.py | 0/0 | 100.0% |
tests/unit/api/test_api.py | 51/52 | 98.1% |
tests/unit/api/test_pipeline_checkpoints.py | 79/79 | 100.0% |
tests/unit/benchmarks/__init__.py | 0/0 | 100.0% |
tests/unit/benchmarks/test_results.py | 46/46 | 100.0% |
tests/unit/benchmarks/test_run.py | 17/17 | 100.0% |
tests/unit/benchmarks/test_runners.py | 67/67 | 100.0% |
tests/unit/benchmarks/test_timing.py | 49/49 | 100.0% |
tests/unit/cli/__init__.py | 0/0 | 100.0% |
tests/unit/cli/conftest.py | 26/38 | 68.4% |
tests/unit/cli/test_check_command.py | 108/108 | 100.0% |
tests/unit/cli/test_cli.py | 126/126 | 100.0% |
tests/unit/cli/test_cli_commands.py | 33/33 | 100.0% |
tests/unit/cli/test_cli_commands_more.py | 36/36 | 100.0% |
tests/unit/cli/test_cli_lintro_group.py | 152/152 | 100.0% |
tests/unit/cli/test_cli_programmatic.py | 38/38 | 100.0% |
tests/unit/cli/test_completions_command.py | 26/26 | 100.0% |
tests/unit/cli/test_format_command.py | 147/147 | 100.0% |
tests/unit/cli/test_review_command.py | 507/507 | 100.0% |
tests/unit/cli_utils/__init__.py | 0/0 | 100.0% |
tests/unit/cli_utils/command_chainer/__init__.py | 0/0 | 100.0% |
tests/unit/cli_utils/command_chainer/conftest.py | 18/20 | 90.0% |
tests/unit/cli_utils/command_chainer/test_execute.py | 68/68 | 100.0% |
tests/unit/cli_utils/command_chainer/test_group_commands.py | 24/24 | 100.0% |
tests/unit/cli_utils/command_chainer/test_init.py | 23/23 | 100.0% |
tests/unit/cli_utils/command_chainer/test_integration.py | 20/20 | 100.0% |
tests/unit/cli_utils/command_chainer/test_normalize_args.py | 24/24 | 100.0% |
tests/unit/cli_utils/command_chainer/test_should_chain.py | 19/19 | 100.0% |
tests/unit/cli_utils/commands/test_doctor_command.py | 184/185 | 99.5% |
tests/unit/cli_utils/commands/test_format.py | 113/113 | 100.0% |
tests/unit/cli_utils/commands/test_install_command.py | 154/154 | 100.0% |
tests/unit/cli_utils/commands/test_setup_command.py | 147/147 | 100.0% |
tests/unit/cli_utils/test_install_output.py | 43/43 | 100.0% |
tests/unit/compatibility/conftest.py | 0/0 | 100.0% |
tests/unit/compatibility/test_compatibility_ruff_black.py | 78/80 | 97.5% |
tests/unit/config/conftest.py | 8/16 | 50.0% |
tests/unit/config/test_config_compatibility.py | 23/23 | 100.0% |
tests/unit/config/test_config_cwd_cache.py | 34/34 | 100.0% |
tests/unit/config/test_config_loader.py | 68/68 | 100.0% |
tests/unit/config/test_config_loader_more.py | 14/14 | 100.0% |
tests/unit/config/test_config_loaders.py | 97/97 | 100.0% |
tests/unit/config/test_config_tool_specific.py | 67/67 | 100.0% |
tests/unit/config/test_enforce_config.py | 32/32 | 100.0% |
tests/unit/config/test_execution_config.py | 62/62 | 100.0% |
tests/unit/config/test_lintro_config.py | 109/109 | 100.0% |
tests/unit/config/test_output_config.py | 42/42 | 100.0% |
tests/unit/config/test_review_config.py | 148/148 | 100.0% |
tests/unit/config/test_unified_config.py | 42/42 | 100.0% |
tests/unit/conftest.py | 51/59 | 86.4% |
tests/unit/core/conftest.py | 0/0 | 100.0% |
tests/unit/core/test_tool_result_metadata.py | 33/33 | 100.0% |
tests/unit/core/test_version_requirements.py | 154/157 | 98.1% |
tests/unit/enums/__init__.py | 0/0 | 100.0% |
tests/unit/enums/test_bandit_levels.py | 30/30 | 100.0% |
tests/unit/enums/test_base.py | 49/49 | 100.0% |
tests/unit/enums/test_enum_normalizers.py | 34/34 | 100.0% |
tests/unit/enums/test_output_format.py | 20/20 | 100.0% |
tests/unit/enums/test_severity_level.py | 19/19 | 100.0% |
tests/unit/enums/test_tool_name.py | 24/24 | 100.0% |
tests/unit/exceptions/conftest.py | 0/0 | 100.0% |
tests/unit/exceptions/test_exceptions.py | 32/32 | 100.0% |
tests/unit/formatters/__init__.py | 1/1 | 100.0% |
tests/unit/formatters/conftest.py | 7/11 | 63.6% |
tests/unit/formatters/styles/__init__.py | 1/1 | 100.0% |
tests/unit/formatters/styles/conftest.py | 34/34 | 100.0% |
tests/unit/formatters/styles/test_csv.py | 26/26 | 100.0% |
tests/unit/formatters/styles/test_html.py | 28/28 | 100.0% |
tests/unit/formatters/styles/test_json.py | 44/44 | 100.0% |
tests/unit/formatters/styles/test_markdown.py | 29/29 | 100.0% |
tests/unit/formatters/styles/test_plain.py | 34/34 | 100.0% |
tests/unit/formatters/styles/test_style_common.py | 16/16 | 100.0% |
tests/unit/formatters/styles/test_style_csv.py | 20/20 | 100.0% |
tests/unit/formatters/styles/test_style_github.py | 62/62 | 100.0% |
tests/unit/formatters/styles/test_style_grid.py | 18/18 | 100.0% |
tests/unit/formatters/styles/test_style_html.py | 25/25 | 100.0% |
tests/unit/formatters/styles/test_style_json.py | 47/47 | 100.0% |
tests/unit/formatters/styles/test_style_markdown.py | 21/21 | 100.0% |
tests/unit/formatters/styles/test_style_plain.py | 21/21 | 100.0% |
tests/unit/formatters/test_format_fix_results.py | 46/46 | 100.0% |
tests/unit/formatters/test_format_issues.py | 137/137 | 100.0% |
tests/unit/formatters/test_format_registry.py | 75/75 | 100.0% |
tests/unit/logging/conftest.py | 0/0 | 100.0% |
tests/unit/logging/test_console_logger.py | 51/51 | 100.0% |
tests/unit/logging/test_console_logger_more.py | 41/41 | 100.0% |
tests/unit/mcp/__init__.py | 0/0 | 100.0% |
tests/unit/mcp/test_annotations.py | 12/13 | 92.3% |
tests/unit/mcp/test_availability.py | 26/26 | 100.0% |
tests/unit/mcp/test_cli_command.py | 31/31 | 100.0% |
tests/unit/mcp/test_errors.py | 89/89 | 100.0% |
tests/unit/mcp/test_registry.py | 61/61 | 100.0% |
tests/unit/mcp/test_server_builtins.py | 16/16 | 100.0% |
tests/unit/mcp/test_server_session.py | 124/127 | 97.6% |
tests/unit/mcp/test_toolkit_introspection.py | 146/149 | 98.0% |
tests/unit/mcp/test_toolkit_lint.py | 154/157 | 98.1% |
tests/unit/mcp/test_toolkit_review.py | 257/260 | 98.8% |
tests/unit/mcp/test_toolkit_snapshot.py | 88/88 | 100.0% |
tests/unit/mcp/test_validation.py | 64/64 | 100.0% |
tests/unit/models/test_run_artifact.py | 40/40 | 100.0% |
tests/unit/output/conftest.py | 0/0 | 100.0% |
tests/unit/output/test_output_manager_reports.py | 85/85 | 100.0% |
tests/unit/parsers/base_parser/__init__.py | 0/0 | 100.0% |
tests/unit/parsers/base_parser/test_continuation_lines.py | 28/28 | 100.0% |
tests/unit/parsers/base_parser/test_extract_fields.py | 68/68 | 100.0% |
tests/unit/parsers/base_parser/test_safe_parse.py | 46/47 | 97.9% |
tests/unit/parsers/base_parser/test_strip_ansi.py | 22/22 | 100.0% |
tests/unit/parsers/base_parser/test_validate_fields.py | 42/42 | 100.0% |
tests/unit/parsers/conftest.py | 9/16 | 56.2% |
tests/unit/parsers/gitleaks_parser/__init__.py | 0/0 | 100.0% |
tests/unit/parsers/gitleaks_parser/test_edge_cases.py | 27/27 | 100.0% |
tests/unit/parsers/gitleaks_parser/test_field_parsing.py | 34/34 | 100.0% |
tests/unit/parsers/gitleaks_parser/test_issue_model.py | 16/16 | 100.0% |
tests/unit/parsers/gitleaks_parser/test_plugin_parsing.py | 66/68 | 97.1% |
tests/unit/parsers/gitleaks_parser/test_valid_output.py | 28/28 | 100.0% |
tests/unit/parsers/pydoclint_parser/__init__.py | 0/0 | 100.0% |
tests/unit/parsers/pydoclint_parser/conftest.py | 12/12 | 100.0% |
tests/unit/parsers/pydoclint_parser/test_edge_cases.py | 53/53 | 100.0% |
tests/unit/parsers/pydoclint_parser/test_field_extraction.py | 39/39 | 100.0% |
tests/unit/parsers/pydoclint_parser/test_invalid_input.py | 24/24 | 100.0% |
tests/unit/parsers/pydoclint_parser/test_issue_model.py | 30/30 | 100.0% |
tests/unit/parsers/pytest/test_pytest_parser.py | 168/168 | 100.0% |
tests/unit/parsers/shellcheck_parser/__init__.py | 0/0 | 100.0% |
tests/unit/parsers/shellcheck_parser/conftest.py | 12/12 | 100.0% |
tests/unit/parsers/shellcheck_parser/test_edge_cases.py | 46/46 | 100.0% |
tests/unit/parsers/shellcheck_parser/test_field_extraction.py | 36/36 | 100.0% |
tests/unit/parsers/shellcheck_parser/test_invalid_input.py | 17/17 | 100.0% |
tests/unit/parsers/shellcheck_parser/test_issue_model.py | 14/14 | 100.0% |
tests/unit/parsers/shellcheck_parser/test_multiple_issues.py | 18/18 | 100.0% |
tests/unit/parsers/streaming/__init__.py | 0/0 | 100.0% |
tests/unit/parsers/streaming/conftest.py | 28/28 | 100.0% |
tests/unit/parsers/streaming/test_collect.py | 19/19 | 100.0% |
tests/unit/parsers/streaming/test_json_array.py | 24/24 | 100.0% |
tests/unit/parsers/streaming/test_json_lines.py | 44/44 | 100.0% |
tests/unit/parsers/streaming/test_parser_class.py | 40/40 | 100.0% |
tests/unit/parsers/streaming/test_text_lines.py | 26/26 | 100.0% |
tests/unit/parsers/test_actionlint_parser.py | 21/21 | 100.0% |
tests/unit/parsers/test_astro_check_parser.py | 78/78 | 100.0% |
tests/unit/parsers/test_bandit_parser.py | 88/88 | 100.0% |
tests/unit/parsers/test_base_issue.py | 143/143 | 100.0% |
tests/unit/parsers/test_base_parser.py | 174/175 | 99.4% |
tests/unit/parsers/test_black_parser.py | 34/34 | 100.0% |
tests/unit/parsers/test_cargo_audit_parser.py | 52/52 | 100.0% |
tests/unit/parsers/test_cargo_deny_parser.py | 48/48 | 100.0% |
tests/unit/parsers/test_clippy_parser.py | 50/50 | 100.0% |
tests/unit/parsers/test_commitlint_parser.py | 65/65 | 100.0% |
tests/unit/parsers/test_dotenv_linter_parser.py | 73/73 | 100.0% |
tests/unit/parsers/test_golangci_lint_parser.py | 76/76 | 100.0% |
tests/unit/parsers/test_hadolint_parser.py | 90/90 | 100.0% |
tests/unit/parsers/test_html_validate_parser.py | 59/59 | 100.0% |
tests/unit/parsers/test_idiom_review_parser.py | 79/79 | 100.0% |
tests/unit/parsers/test_markdownlint_parser.py | 88/88 | 100.0% |
tests/unit/parsers/test_mypy_parser.py | 58/58 | 100.0% |
tests/unit/parsers/test_osv_scanner_parser.py | 89/89 | 100.0% |
tests/unit/parsers/test_osv_suppression_parser.py | 87/87 | 100.0% |
tests/unit/parsers/test_oxfmt_parser.py | 84/84 | 100.0% |
tests/unit/parsers/test_oxlint_parser.py | 107/107 | 100.0% |
tests/unit/parsers/test_pip_audit_parser.py | 56/56 | 100.0% |
tests/unit/parsers/test_prettier_parser.py | 45/45 | 100.0% |
tests/unit/parsers/test_pydoclint_parser.py | 34/34 | 100.0% |
tests/unit/parsers/test_ruff_parser_additional.py | 53/53 | 100.0% |
tests/unit/parsers/test_ruff_parser_more.py | 23/23 | 100.0% |
tests/unit/parsers/test_rustfmt_parser.py | 44/44 | 100.0% |
tests/unit/parsers/test_sarif_parser.py | 92/92 | 100.0% |
tests/unit/parsers/test_semgrep_parser.py | 164/164 | 100.0% |
tests/unit/parsers/test_shfmt_parser.py | 101/101 | 100.0% |
tests/unit/parsers/test_sqlfluff_parser.py | 113/113 | 100.0% |
tests/unit/parsers/test_stylelint_parser.py | 84/84 | 100.0% |
tests/unit/parsers/test_svelte_check_parser.py | 163/163 | 100.0% |
tests/unit/parsers/test_taplo_parser.py | 144/144 | 100.0% |
tests/unit/parsers/test_tsc_parser.py | 142/142 | 100.0% |
tests/unit/parsers/test_vue_tsc_parser.py | 78/78 | 100.0% |
tests/unit/parsers/test_yamllint_parser.py | 53/53 | 100.0% |
tests/unit/parsers/trufflehog_parser/__init__.py | 0/0 | 100.0% |
tests/unit/parsers/trufflehog_parser/conftest.py | 11/11 | 100.0% |
tests/unit/parsers/trufflehog_parser/test_edge_cases.py | 26/26 | 100.0% |
tests/unit/parsers/trufflehog_parser/test_field_extraction.py | 43/43 | 100.0% |
tests/unit/parsers/trufflehog_parser/test_invalid_input.py | 13/13 | 100.0% |
tests/unit/parsers/trufflehog_parser/test_issue_model.py | 20/20 | 100.0% |
tests/unit/parsers/trufflehog_parser/test_scan_errors.py | 87/87 | 100.0% |
tests/unit/parsers/vale_parser/__init__.py | 0/0 | 100.0% |
tests/unit/parsers/vale_parser/conftest.py | 11/11 | 100.0% |
tests/unit/parsers/vale_parser/test_edge_cases.py | 38/38 | 100.0% |
tests/unit/parsers/vale_parser/test_field_extraction.py | 39/39 | 100.0% |
tests/unit/parsers/vale_parser/test_invalid_input.py | 22/22 | 100.0% |
tests/unit/parsers/vale_parser/test_issue_model.py | 30/30 | 100.0% |
tests/unit/plugins/base/__init__.py | 0/0 | 100.0% |
tests/unit/plugins/base/conftest.py | 12/13 | 92.3% |
tests/unit/plugins/base/test_execution.py | 205/206 | 99.5% |
tests/unit/plugins/base/test_options.py | 72/72 | 100.0% |
tests/unit/plugins/base/test_subprocess.py | 86/86 | 100.0% |
tests/unit/plugins/base/test_subprocess_failure.py | 16/16 | 100.0% |
tests/unit/plugins/base/test_subprocess_result.py | 38/38 | 100.0% |
tests/unit/plugins/base/test_subprocess_streaming.py | 112/112 | 100.0% |
tests/unit/plugins/conftest.py | 55/61 | 90.2% |
tests/unit/plugins/test_base_plugin_config.py | 69/69 | 100.0% |
tests/unit/plugins/test_copy_for_execution.py | 99/100 | 99.0% |
tests/unit/plugins/test_discovery.py | 251/251 | 100.0% |
tests/unit/plugins/test_entry_point_plugins.py | 167/171 | 97.7% |
tests/unit/plugins/test_execution_preparation.py | 30/30 | 100.0% |
tests/unit/plugins/test_file_processor.py | 137/137 | 100.0% |
tests/unit/plugins/test_registry.py | 152/153 | 99.3% |
tests/unit/plugins/test_reset_options.py | 45/45 | 100.0% |
tests/unit/pytest/conftest.py | 0/0 | 100.0% |
tests/unit/pytest/test_pytest_cli_commands.py | 109/109 | 100.0% |
tests/unit/pytest/test_pytest_cli_options.py | 87/87 | 100.0% |
tests/unit/pytest/test_pytest_handlers.py | 187/187 | 100.0% |
tests/unit/pytest/test_pytest_programmatic_api.py | 55/55 | 100.0% |
tests/unit/security/__init__.py | 0/0 | 100.0% |
tests/unit/security/conftest.py | 7/9 | 77.8% |
tests/unit/security/test_json_edge_cases.py | 147/148 | 99.3% |
tests/unit/security/test_path_traversal.py | 132/134 | 98.5% |
tests/unit/security/test_subprocess_injection.py | 77/77 | 100.0% |
tests/unit/test_ai_tools_image.py | 90/90 | 100.0% |
tests/unit/test_core_ai_import_boundary.py | 69/76 | 90.8% |
tests/unit/test_cursor_environment.py | 109/109 | 100.0% |
tests/unit/test_labeler_rules.py | 32/32 | 100.0% |
tests/unit/test_no_version_literals.py | 23/25 | 92.0% |
tests/unit/test_package_imports.py | 33/37 | 89.2% |
tests/unit/test_pre_commit_hooks.py | 56/56 | 100.0% |
tests/unit/test_semgrep_isolation.py | 111/111 | 100.0% |
tests/unit/test_tool_completeness.py | 143/146 | 97.9% |
tests/unit/test_workflow_wiring.py | 953/974 | 97.8% |
tests/unit/tools/assertions/__init__.py | 1/1 | 100.0% |
tests/unit/tools/assertions/conftest.py | 15/31 | 48.4% |
tests/unit/tools/astro_check/__init__.py | 0/0 | 100.0% |
tests/unit/tools/astro_check/conftest.py | 9/9 | 100.0% |
tests/unit/tools/astro_check/test_execution.py | 78/78 | 100.0% |
tests/unit/tools/astro_check/test_non_interactive.py | 111/111 | 100.0% |
tests/unit/tools/astro_check/test_options.py | 54/54 | 100.0% |
tests/unit/tools/bandit/__init__.py | 0/0 | 100.0% |
tests/unit/tools/bandit/test_bandit_no_files_output.py | 27/27 | 100.0% |
tests/unit/tools/bandit/test_bandit_parse_failure.py | 26/26 | 100.0% |
tests/unit/tools/base/conftest.py | 0/0 | 100.0% |
tests/unit/tools/cargo_audit/__init__.py | 0/0 | 100.0% |
tests/unit/tools/cargo_audit/test_cargo_audit_plugin.py | 86/86 | 100.0% |
tests/unit/tools/cargo_deny/__init__.py | 0/0 | 100.0% |
tests/unit/tools/cargo_deny/test_cargo_deny_plugin.py | 35/35 | 100.0% |
tests/unit/tools/commitlint/__init__.py | 0/0 | 100.0% |
tests/unit/tools/commitlint/conftest.py | 9/9 | 100.0% |
tests/unit/tools/commitlint/test_execution.py | 75/75 | 100.0% |
tests/unit/tools/commitlint/test_options.py | 19/19 | 100.0% |
tests/unit/tools/conftest.py | 45/95 | 47.4% |
tests/unit/tools/core/__init__.py | 0/0 | 100.0% |
tests/unit/tools/core/conftest.py | 5/9 | 55.6% |
tests/unit/tools/core/test_command_builders.py | 514/518 | 99.2% |
tests/unit/tools/core/test_install_context.py | 75/75 | 100.0% |
tests/unit/tools/core/test_install_outcomes.py | 199/199 | 100.0% |
tests/unit/tools/core/test_install_quickfix.py | 43/43 | 100.0% |
tests/unit/tools/core/test_install_strategies.py | 262/262 | 100.0% |
tests/unit/tools/core/test_line_length_checker.py | 101/101 | 100.0% |
tests/unit/tools/core/test_node_cwd_wiring.py | 60/60 | 100.0% |
tests/unit/tools/core/test_node_package_policy.py | 282/282 | 100.0% |
tests/unit/tools/core/test_option_spec.py | 58/58 | 100.0% |
tests/unit/tools/core/test_option_validators.py | 99/99 | 100.0% |
tests/unit/tools/core/test_package_names.py | 40/40 | 100.0% |
tests/unit/tools/core/test_runtime_discovery.py | 99/99 | 100.0% |
tests/unit/tools/core/test_tool_installer.py | 260/260 | 100.0% |
tests/unit/tools/core/test_tool_options_spec.py | 37/37 | 100.0% |
tests/unit/tools/core/test_tool_registry.py | 136/136 | 100.0% |
tests/unit/tools/core/test_version_checking.py | 89/89 | 100.0% |
tests/unit/tools/dotenv_linter/__init__.py | 0/0 | 100.0% |
tests/unit/tools/dotenv_linter/conftest.py | 8/8 | 100.0% |
tests/unit/tools/dotenv_linter/test_dotenv_linter_plugin.py | 85/85 | 100.0% |
tests/unit/tools/executor/conftest.py | 0/0 | 100.0% |
tests/unit/tools/executor/test_advisory_tool_selection.py | 33/33 | 100.0% |
tests/unit/tools/executor/test_execute_render_split.py | 127/130 | 97.7% |
tests/unit/tools/executor/test_tool_configuration_enabled.py | 258/260 | 99.2% |
tests/unit/tools/executor/test_tool_executor.py | 313/315 | 99.4% |
tests/unit/tools/executor/test_tool_executor_fmt_exclusion.py | 10/10 | 100.0% |
tests/unit/tools/executor/test_tool_executor_more.py | 141/146 | 96.6% |
tests/unit/tools/executor/test_tool_executor_post_checks.py | 81/85 | 95.3% |
tests/unit/tools/executor/test_tool_executor_pytest.py | 121/121 | 100.0% |
tests/unit/tools/gitleaks/__init__.py | 0/0 | 100.0% |
tests/unit/tools/gitleaks/conftest.py | 9/9 | 100.0% |
tests/unit/tools/gitleaks/test_error_handling.py | 24/24 | 100.0% |
tests/unit/tools/gitleaks/test_execution.py | 91/93 | 97.8% |
tests/unit/tools/gitleaks/test_options.py | 66/66 | 100.0% |
tests/unit/tools/golangci_lint/__init__.py | 0/0 | 100.0% |
tests/unit/tools/golangci_lint/conftest.py | 15/15 | 100.0% |
tests/unit/tools/golangci_lint/test_definition.py | 19/19 | 100.0% |
tests/unit/tools/golangci_lint/test_execution.py | 152/154 | 98.7% |
tests/unit/tools/golangci_lint/test_integration.py | 15/39 | 38.5% |
tests/unit/tools/hadolint/__init__.py | 0/0 | 100.0% |
tests/unit/tools/hadolint/conftest.py | 6/6 | 100.0% |
tests/unit/tools/hadolint/test_execution.py | 91/91 | 100.0% |
tests/unit/tools/hadolint/test_options.py | 90/90 | 100.0% |
tests/unit/tools/html_validate/__init__.py | 0/0 | 100.0% |
tests/unit/tools/html_validate/conftest.py | 6/6 | 100.0% |
tests/unit/tools/html_validate/test_execution.py | 159/159 | 100.0% |
tests/unit/tools/html_validate/test_options.py | 18/18 | 100.0% |
tests/unit/tools/idiom_review/__init__.py | 0/0 | 100.0% |
tests/unit/tools/idiom_review/test_idiom_review_engine.py | 59/59 | 100.0% |
tests/unit/tools/idiom_review/test_idiom_review_plugin.py | 106/107 | 99.1% |
tests/unit/tools/idiom_review/test_idiom_review_prompts.py | 39/39 | 100.0% |
tests/unit/tools/idiom_review/test_idiom_review_signatures.py | 27/27 | 100.0% |
tests/unit/tools/manager/conftest.py | 0/0 | 100.0% |
tests/unit/tools/manager/test_tool_manager.py | 74/74 | 100.0% |
tests/unit/tools/mypy/test_mypy_no_python_files.py | 57/57 | 100.0% |
tests/unit/tools/mypy/test_mypy_plugin.py | 103/103 | 100.0% |
tests/unit/tools/osv_scanner/__init__.py | 0/0 | 100.0% |
tests/unit/tools/osv_scanner/conftest.py | 9/9 | 100.0% |
tests/unit/tools/osv_scanner/test_exclusions.py | 136/136 | 100.0% |
tests/unit/tools/osv_scanner/test_osv_scanner_plugin.py | 226/226 | 100.0% |
tests/unit/tools/oxfmt/__init__.py | 0/0 | 100.0% |
tests/unit/tools/oxfmt/conftest.py | 9/9 | 100.0% |
tests/unit/tools/oxfmt/test_check_method.py | 55/55 | 100.0% |
tests/unit/tools/oxfmt/test_default_options.py | 32/32 | 100.0% |
tests/unit/tools/oxfmt/test_fix_method.py | 72/72 | 100.0% |
tests/unit/tools/oxfmt/test_set_options.py | 36/36 | 100.0% |
tests/unit/tools/oxlint/__init__.py | 0/0 | 100.0% |
tests/unit/tools/oxlint/conftest.py | 6/6 | 100.0% |
tests/unit/tools/oxlint/test_check_method.py | 77/77 | 100.0% |
tests/unit/tools/oxlint/test_default_options.py | 14/14 | 100.0% |
tests/unit/tools/oxlint/test_fix_method.py | 188/188 | 100.0% |
tests/unit/tools/oxlint/test_set_options.py | 75/75 | 100.0% |
tests/unit/tools/oxlint/test_type_aware_doctor.py | 74/74 | 100.0% |
tests/unit/tools/pip_audit/__init__.py | 0/0 | 100.0% |
tests/unit/tools/pip_audit/test_pip_audit_plugin.py | 206/206 | 100.0% |
tests/unit/tools/prettier/__init__.py | 0/0 | 100.0% |
tests/unit/tools/prettier/conftest.py | 6/6 | 100.0% |
tests/unit/tools/prettier/test_cannot_run_vs_no_files.py | 41/41 | 100.0% |
tests/unit/tools/prettier/test_check_method.py | 1/1 | 100.0% |
tests/unit/tools/prettier/test_config_discovery.py | 56/56 | 100.0% |
tests/unit/tools/prettier/test_default_options.py | 10/10 | 100.0% |
tests/unit/tools/prettier/test_fix_method.py | 42/42 | 100.0% |
tests/unit/tools/prettier/test_output_parsing.py | 16/16 | 100.0% |
tests/unit/tools/prettier/test_set_options.py | 12/12 | 100.0% |
tests/unit/tools/prettier/test_timeout_handling.py | 18/18 | 100.0% |
tests/unit/tools/pydoclint/__init__.py | 0/0 | 100.0% |
tests/unit/tools/pydoclint/conftest.py | 6/6 | 100.0% |
tests/unit/tools/pydoclint/test_build_command.py | 14/14 | 100.0% |
tests/unit/tools/pydoclint/test_check_method.py | 37/37 | 100.0% |
tests/unit/tools/pydoclint/test_config_initialization.py | 13/13 | 100.0% |
tests/unit/tools/pydoclint/test_default_options.py | 7/7 | 100.0% |
tests/unit/tools/pydoclint/test_fix_method.py | 9/9 | 100.0% |
tests/unit/tools/pydoclint/test_set_options.py | 9/9 | 100.0% |
tests/unit/tools/pytest_tool/__init__.py | 0/0 | 100.0% |
tests/unit/tools/pytest_tool/conftest.py | 64/86 | 74.4% |
tests/unit/tools/pytest_tool/test_addopts_coverage.py | 97/97 | 100.0% |
tests/unit/tools/pytest_tool/test_check_method.py | 39/39 | 100.0% |
tests/unit/tools/pytest_tool/test_configuration.py | 30/30 | 100.0% |
tests/unit/tools/pytest_tool/test_json_parsing.py | 22/22 | 100.0% |
tests/unit/tools/pytest_tool/test_junit_parsing.py | 19/19 | 100.0% |
tests/unit/tools/pytest_tool/test_output_parsing.py | 41/41 | 100.0% |
tests/unit/tools/pytest_tool/test_output_processing.py | 36/36 | 100.0% |
tests/unit/tools/pytest_tool/test_pytest_handlers.py | 131/131 | 100.0% |
tests/unit/tools/pytest_tool/test_pytest_issue.py | 17/17 | 100.0% |
tests/unit/tools/pytest_tool/test_pytest_output_processor.py | 31/31 | 100.0% |
tests/unit/tools/pytest_tool/test_result_processor.py | 27/27 | 100.0% |
tests/unit/tools/pytest_tool/test_set_options.py | 15/15 | 100.0% |
tests/unit/tools/pytest_tool/test_text_parsing.py | 22/22 | 100.0% |
tests/unit/tools/pytest_tool/test_validators.py | 17/17 | 100.0% |
tests/unit/tools/ruff/__init__.py | 0/0 | 100.0% |
tests/unit/tools/ruff/check/__init__.py | 0/0 | 100.0% |
tests/unit/tools/ruff/check/conftest.py | 0/0 | 100.0% |
tests/unit/tools/ruff/check/test_config_detection.py | 17/17 | 100.0% |
tests/unit/tools/ruff/check/test_error_handling.py | 36/36 | 100.0% |
tests/unit/tools/ruff/check/test_format_normalization.py | 17/17 | 100.0% |
tests/unit/tools/ruff/check/test_json_parsing.py | 34/34 | 100.0% |
tests/unit/tools/ruff/check/test_no_issues.py | 30/30 | 100.0% |
tests/unit/tools/ruff/check/test_output_format.py | 15/15 | 100.0% |
tests/unit/tools/ruff/check/test_output_truncation.py | 32/32 | 100.0% |
tests/unit/tools/ruff/check/test_path_filtering.py | 33/33 | 100.0% |
tests/unit/tools/ruff/check/test_real_plugin.py | 16/16 | 100.0% |
tests/unit/tools/ruff/check/test_timeout.py | 13/13 | 100.0% |
tests/unit/tools/ruff/check/test_with_issues.py | 40/40 | 100.0% |
tests/unit/tools/ruff/conftest.py | 66/67 | 98.5% |
tests/unit/tools/ruff/fix/__init__.py | 0/0 | 100.0% |
tests/unit/tools/ruff/fix/conftest.py | 0/0 | 100.0% |
tests/unit/tools/ruff/fix/test_combined_issues.py | 20/20 | 100.0% |
tests/unit/tools/ruff/fix/test_config.py | 8/8 | 100.0% |
tests/unit/tools/ruff/fix/test_edge_cases.py | 23/23 | 100.0% |
tests/unit/tools/ruff/fix/test_format_option.py | 21/21 | 100.0% |
tests/unit/tools/ruff/fix/test_no_files.py | 19/19 | 100.0% |
tests/unit/tools/ruff/fix/test_real_plugin.py | 19/19 | 100.0% |
tests/unit/tools/ruff/fix/test_successful_fix.py | 25/25 | 100.0% |
tests/unit/tools/ruff/fix/test_temporary_option.py | 27/27 | 100.0% |
tests/unit/tools/ruff/fix/test_timeout.py | 38/38 | 100.0% |
tests/unit/tools/ruff/fix/test_unsafe_fixes.py | 17/17 | 100.0% |
tests/unit/tools/ruff/fix/test_version_check.py | 11/11 | 100.0% |
tests/unit/tools/ruff/test_timeout_single_source.py | 32/32 | 100.0% |
tests/unit/tools/rustfmt/__init__.py | 0/0 | 100.0% |
tests/unit/tools/rustfmt/conftest.py | 8/8 | 100.0% |
tests/unit/tools/rustfmt/test_error_handling.py | 88/88 | 100.0% |
tests/unit/tools/rustfmt/test_execution.py | 82/82 | 100.0% |
tests/unit/tools/rustfmt/test_fix_method.py | 62/62 | 100.0% |
tests/unit/tools/rustfmt/test_options.py | 30/30 | 100.0% |
tests/unit/tools/semgrep/__init__.py | 0/0 | 100.0% |
tests/unit/tools/semgrep/conftest.py | 9/9 | 100.0% |
tests/unit/tools/semgrep/test_error_handling.py | 61/61 | 100.0% |
tests/unit/tools/semgrep/test_execution.py | 41/41 | 100.0% |
tests/unit/tools/semgrep/test_options.py | 88/88 | 100.0% |
tests/unit/tools/shellcheck/__init__.py | 0/0 | 100.0% |
tests/unit/tools/shellcheck/conftest.py | 9/9 | 100.0% |
tests/unit/tools/shellcheck/test_error_handling.py | 13/13 | 100.0% |
tests/unit/tools/shellcheck/test_execution.py | 53/53 | 100.0% |
tests/unit/tools/shellcheck/test_options.py | 125/125 | 100.0% |
tests/unit/tools/shfmt/__init__.py | 0/0 | 100.0% |
tests/unit/tools/shfmt/conftest.py | 8/8 | 100.0% |
tests/unit/tools/shfmt/test_error_handling.py | 46/46 | 100.0% |
tests/unit/tools/shfmt/test_execution.py | 51/51 | 100.0% |
tests/unit/tools/shfmt/test_fix_method.py | 36/36 | 100.0% |
tests/unit/tools/shfmt/test_options.py | 69/69 | 100.0% |
tests/unit/tools/sqlfluff/__init__.py | 0/0 | 100.0% |
tests/unit/tools/sqlfluff/conftest.py | 9/9 | 100.0% |
tests/unit/tools/sqlfluff/test_error_handling.py | 26/26 | 100.0% |
tests/unit/tools/sqlfluff/test_execution.py | 51/51 | 100.0% |
tests/unit/tools/sqlfluff/test_fix_method.py | 48/48 | 100.0% |
tests/unit/tools/sqlfluff/test_options.py | 103/103 | 100.0% |
tests/unit/tools/sqlfluff/test_output_parsing.py | 39/39 | 100.0% |
tests/unit/tools/stylelint/__init__.py | 0/0 | 100.0% |
tests/unit/tools/stylelint/conftest.py | 16/16 | 100.0% |
tests/unit/tools/stylelint/test_check_method.py | 88/88 | 100.0% |
tests/unit/tools/stylelint/test_definition.py | 25/25 | 100.0% |
tests/unit/tools/stylelint/test_fix_method.py | 50/50 | 100.0% |
tests/unit/tools/svelte_check/__init__.py | 0/0 | 100.0% |
tests/unit/tools/svelte_check/conftest.py | 9/9 | 100.0% |
tests/unit/tools/svelte_check/test_execution.py | 72/72 | 100.0% |
tests/unit/tools/svelte_check/test_options.py | 68/68 | 100.0% |
tests/unit/tools/taplo/__init__.py | 0/0 | 100.0% |
tests/unit/tools/taplo/conftest.py | 9/9 | 100.0% |
tests/unit/tools/taplo/test_error_handling.py | 35/35 | 100.0% |
tests/unit/tools/taplo/test_execution.py | 72/72 | 100.0% |
tests/unit/tools/taplo/test_options.py | 63/63 | 100.0% |
tests/unit/tools/test_common_behaviors.py | 97/105 | 92.4% |
tests/unit/tools/test_doc_url.py | 127/127 | 100.0% |
tests/unit/tools/test_edge_cases.py | 122/129 | 94.6% |
tests/unit/tools/test_helpers.py | 32/81 | 39.5% |
tests/unit/tools/test_plugin_definitions.py | 52/52 | 100.0% |
tests/unit/tools/test_tool_definitions.py | 40/40 | 100.0% |
tests/unit/tools/test_ts_checker_base.py | 137/137 | 100.0% |
tests/unit/tools/trufflehog/__init__.py | 0/0 | 100.0% |
tests/unit/tools/trufflehog/conftest.py | 23/23 | 100.0% |
tests/unit/tools/trufflehog/test_batching.py | 70/70 | 100.0% |
tests/unit/tools/trufflehog/test_error_handling.py | 26/26 | 100.0% |
tests/unit/tools/trufflehog/test_execution.py | 178/178 | 100.0% |
tests/unit/tools/trufflehog/test_options.py | 64/64 | 100.0% |
tests/unit/tools/tsc/__init__.py | 0/0 | 100.0% |
tests/unit/tools/tsc/conftest.py | 1/1 | 100.0% |
tests/unit/tools/tsc/test_execution.py | 133/133 | 100.0% |
tests/unit/tools/tsc/test_options.py | 93/94 | 98.9% |
tests/unit/tools/tsc/test_tsc_plugin.py | 190/190 | 100.0% |
tests/unit/tools/vale/__init__.py | 0/0 | 100.0% |
tests/unit/tools/vale/conftest.py | 19/19 | 100.0% |
tests/unit/tools/vale/test_execution.py | 65/65 | 100.0% |
tests/unit/tools/vale/test_options.py | 29/29 | 100.0% |
tests/unit/tools/vue_tsc/__init__.py | 0/0 | 100.0% |
tests/unit/tools/vue_tsc/conftest.py | 9/9 | 100.0% |
tests/unit/tools/vue_tsc/test_execution.py | 86/86 | 100.0% |
tests/unit/tools/vue_tsc/test_options.py | 77/77 | 100.0% |
tests/unit/tools/vue_tsc/test_vue_tsc_plugin.py | 70/70 | 100.0% |
tests/unit/utils/__init__.py | 0/0 | 100.0% |
tests/unit/utils/async_tool_executor/__init__.py | 0/0 | 100.0% |
tests/unit/utils/async_tool_executor/conftest.py | 42/46 | 91.3% |
tests/unit/utils/async_tool_executor/test_base_exceptions.py | 58/58 | 100.0% |
tests/unit/utils/async_tool_executor/test_callbacks.py | 32/32 | 100.0% |
tests/unit/utils/async_tool_executor/test_exceptions.py | 22/22 | 100.0% |
tests/unit/utils/async_tool_executor/test_init.py | 17/17 | 100.0% |
tests/unit/utils/async_tool_executor/test_parallel_batches.py | 94/94 | 100.0% |
tests/unit/utils/async_tool_executor/test_run_tool_async.py | 46/46 | 100.0% |
tests/unit/utils/async_tool_executor/test_run_tools_parallel.py | 57/57 | 100.0% |
tests/unit/utils/async_tool_executor/test_shutdown.py | 13/13 | 100.0% |
tests/unit/utils/config/__init__.py | 0/0 | 100.0% |
tests/unit/utils/config/conftest.py | 17/17 | 100.0% |
tests/unit/utils/config/test_manager_configuration.py | 74/74 | 100.0% |
tests/unit/utils/config/test_manager_core.py | 61/61 | 100.0% |
tests/unit/utils/conftest.py | 51/53 | 96.2% |
tests/unit/utils/console/conftest.py | 10/11 | 90.9% |
tests/unit/utils/console/summary/__init__.py | 0/0 | 100.0% |
tests/unit/utils/console/summary/test_delegation.py | 118/118 | 100.0% |
tests/unit/utils/console/summary/test_execution_summary.py | 103/103 | 100.0% |
tests/unit/utils/console/test_logger_headers.py | 32/32 | 100.0% |
tests/unit/utils/console/test_logger_initialization.py | 10/10 | 100.0% |
tests/unit/utils/console/test_logger_levels.py | 34/34 | 100.0% |
tests/unit/utils/console/test_logger_metadata.py | 31/31 | 100.0% |
tests/unit/utils/console/test_logger_output_methods.py | 47/47 | 100.0% |
tests/unit/utils/console/test_logger_results.py | 26/26 | 100.0% |
tests/unit/utils/console/test_pre_execution_summary.py | 40/40 | 100.0% |
tests/unit/utils/execution/__init__.py | 0/0 | 100.0% |
tests/unit/utils/execution/test_advisory.py | 88/88 | 100.0% |
tests/unit/utils/execution/test_parallel_executor_loop.py | 56/56 | 100.0% |
tests/unit/utils/native_parsers/__init__.py | 0/0 | 100.0% |
tests/unit/utils/native_parsers/conftest.py | 14/14 | 100.0% |
tests/unit/utils/native_parsers/test_config_constants.py | 8/8 | 100.0% |
tests/unit/utils/native_parsers/test_json_config.py | 42/42 | 100.0% |
tests/unit/utils/native_parsers/test_jsonc_comments.py | 92/92 | 100.0% |
tests/unit/utils/native_parsers/test_markdownlint_config.py | 40/40 | 100.0% |
tests/unit/utils/native_parsers/test_oxfmt_config.py | 43/43 | 100.0% |
tests/unit/utils/native_parsers/test_oxlint_config.py | 31/31 | 100.0% |
tests/unit/utils/native_parsers/test_pyproject_tools.py | 21/21 | 100.0% |
tests/unit/utils/native_parsers/test_yamllint_config.py | 29/29 | 100.0% |
tests/unit/utils/output/__init__.py | 1/1 | 100.0% |
tests/unit/utils/output/conftest.py | 28/28 | 100.0% |
tests/unit/utils/output/test_code_consistency.py | 34/34 | 100.0% |
tests/unit/utils/output/test_file_writer_common.py | 14/14 | 100.0% |
tests/unit/utils/output/test_file_writer_csv.py | 44/44 | 100.0% |
tests/unit/utils/output/test_file_writer_format.py | 65/65 | 100.0% |
tests/unit/utils/output/test_file_writer_html.py | 50/50 | 100.0% |
tests/unit/utils/output/test_file_writer_json.py | 52/52 | 100.0% |
tests/unit/utils/output/test_file_writer_markdown.py | 49/49 | 100.0% |
tests/unit/utils/output/test_file_writer_plain.py | 32/32 | 100.0% |
tests/unit/utils/output/test_helpers.py | 53/53 | 100.0% |
tests/unit/utils/output/test_parser_registration_bandit.py | 15/15 | 100.0% |
tests/unit/utils/output/test_sarif.py | 120/120 | 100.0% |
tests/unit/utils/output/test_sarif_ai_seam.py | 75/77 | 97.4% |
tests/unit/utils/output/test_sarif_bridge.py | 127/127 | 100.0% |
tests/unit/utils/output/test_sarif_parity.py | 53/56 | 94.6% |
tests/unit/utils/result_formatters/__init__.py | 0/0 | 100.0% |
tests/unit/utils/result_formatters/conftest.py | 9/9 | 100.0% |
tests/unit/utils/result_formatters/test_action_normalization.py | 19/19 | 100.0% |
tests/unit/utils/result_formatters/test_fix_action.py | 40/40 | 100.0% |
tests/unit/utils/result_formatters/test_fixable_hints.py | 33/33 | 100.0% |
tests/unit/utils/result_formatters/test_generic_output.py | 29/29 | 100.0% |
tests/unit/utils/result_formatters/test_output_display.py | 22/22 | 100.0% |
tests/unit/utils/result_formatters/test_pytest_output.py | 40/40 | 100.0% |
tests/unit/utils/result_formatters/test_ruff_formatting.py | 28/28 | 100.0% |
tests/unit/utils/summary/__init__.py | 0/0 | 100.0% |
tests/unit/utils/summary/test_display.py | 151/151 | 100.0% |
tests/unit/utils/summary/test_safe_cast.py | 30/30 | 100.0% |
tests/unit/utils/summary/test_totals_table.py | 134/134 | 100.0% |
tests/unit/utils/test_ascii_normalize.py | 22/22 | 100.0% |
tests/unit/utils/test_ascii_normalize_cli.py | 72/72 | 100.0% |
tests/unit/utils/test_config_reporting.py | 84/84 | 100.0% |
tests/unit/utils/test_console_output_writer.py | 98/98 | 100.0% |
tests/unit/utils/test_display_helpers.py | 108/108 | 100.0% |
tests/unit/utils/test_display_helpers_fallback.py | 73/74 | 98.6% |
tests/unit/utils/test_doctor_report.py | 246/247 | 99.6% |
tests/unit/utils/test_enrich_doc_urls.py | 66/66 | 100.0% |
tests/unit/utils/test_enums_and_normalizers.py | 45/45 | 100.0% |
tests/unit/utils/test_exit_codes.py | 22/22 | 100.0% |
tests/unit/utils/test_file_cache.py | 97/97 | 100.0% |
tests/unit/utils/test_findings.py | 92/92 | 100.0% |
tests/unit/utils/test_fix_retry.py | 53/53 | 100.0% |
tests/unit/utils/test_git_diff.py | 226/226 | 100.0% |
tests/unit/utils/test_json_output.py | 122/122 | 100.0% |
tests/unit/utils/test_jsonc.py | 103/103 | 100.0% |
tests/unit/utils/test_logger_setup.py | 45/45 | 100.0% |
tests/unit/utils/test_module_size.py | 63/63 | 100.0% |
tests/unit/utils/test_native_parsers.py | 49/49 | 100.0% |
tests/unit/utils/test_node_deps.py | 149/149 | 100.0% |
tests/unit/utils/test_output_ai_import_isolation.py | 18/18 | 100.0% |
tests/unit/utils/test_output_writers.py | 199/199 | 100.0% |
tests/unit/utils/test_parser_registry.py | 107/120 | 89.2% |
tests/unit/utils/test_path_filtering.py | 211/211 | 100.0% |
tests/unit/utils/test_path_utils.py | 158/158 | 100.0% |
tests/unit/utils/test_post_checks_isolation.py | 70/70 | 100.0% |
tests/unit/utils/test_streaming_output.py | 167/167 | 100.0% |
tests/unit/utils/test_timeout_json_state.py | 162/162 | 100.0% |
tests/unit/utils/test_timeout_utils.py | 83/84 | 98.8% |
tests/unit/utils/test_tool_config_info.py | 9/9 | 100.0% |
tests/unit/utils/test_tool_executor_ai.py | 135/140 | 96.4% |
tests/unit/utils/test_tool_metadata.py | 33/33 | 100.0% |
tests/unit/utils/test_tool_utils.py | 18/18 | 100.0% |
tests/unit/utils/test_tsconfig_discover.py | 53/53 | 100.0% |
tests/unit/utils/test_tsconfig_extends.py | 38/38 | 100.0% |
tests/unit/utils/test_tsconfig_parse.py | 45/45 | 100.0% |
tests/unit/utils/test_tsconfig_partition.py | 84/84 | 100.0% |
tests/unit/utils/tsconfig_helpers.py | 8/8 | 100.0% |
tests/unit/utils/unified_config/__init__.py | 0/0 | 100.0% |
tests/unit/utils/unified_config/conftest.py | 10/12 | 83.3% |
tests/unit/utils/unified_config/test_config_summary.py | 21/21 | 100.0% |
tests/unit/utils/unified_config/test_consistency.py | 17/17 | 100.0% |
tests/unit/utils/unified_config/test_constants.py | 30/30 | 100.0% |
tests/unit/utils/unified_config/test_dataclasses.py | 24/24 | 100.0% |
tests/unit/utils/unified_config/test_enums.py | 10/10 | 100.0% |
tests/unit/utils/unified_config/test_injectable.py | 14/14 | 100.0% |
tests/unit/utils/unified_config/test_line_length.py | 32/32 | 100.0% |
tests/unit/utils/unified_config/test_nested_value.py | 13/13 | 100.0% |
tests/unit/utils/unified_config/test_ordered_tools.py | 23/23 | 100.0% |
tests/unit/utils/unified_config/test_tool_priority.py | 21/21 | 100.0% |
tests/utils/__init__.py | 0/0 | 100.0% |
tests/utils/test_formatting.py | 22/22 | 100.0% |
tests/utils/test_health_score.py | 100/100 | 100.0% |
tests/utils/test_json_output_health_score.py | 20/20 | 100.0% |
tests/utils/test_output_manager.py | 123/123 | 100.0% |
tests/utils/test_path_utils.py | 53/53 | 100.0% |