AI Slop Code RIsk Monitor

Giskard-AI/giskard-oss

🐢 Open-Source Evaluation & Testing library for LLM Agents

36.0 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for Giskard-AI/giskard-oss, a Python project with 5,887 GitHub stars. SynthScan examined 62,976 lines of code across 405 source files, recording 2203 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 36.0 (High pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

36.0
Adjusted Signal
36.0
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
5.9K
Stars
Python
Language
63.0K
Lines of Code
405
Files
2.2K
Pattern Hits
2026-10-12
Scan Date
0.02
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 74.2/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 1658 finding(s).

Hallucinated Dependency & Supply Chain Risk 26.0/100 · MEDIUM

Are imports declared and package/API names verified? 435 finding(s).

Agent Over-Engineering Ratio 76.3/100 · CRITICAL

Are wrappers, guards, and repeated structures necessary? 1726 finding(s).

PR Review Velocity Impact 84.0/100 · CRITICAL

Which changes need focused human review? 2203 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 9MEDIUM 30LOW 2164

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 2203 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers1614 hits · 1633 pts
SeverityFileLineSnippetContext
LOWtools/test_check_extra_pins.py13def test_matching_lower_bound_is_ok() -> None:CODE
LOWtools/test_check_extra_pins.py61def test_stale_lib_pin_is_ignored_by_root_only_check(tmp_path: Path) -> None:CODE
LOWtools/test_check_extra_pins.py67def test_stale_giskard_scan_pin_is_a_package_mismatch(tmp_path: Path) -> None:CODE
LOW⚡tools/test_check_extra_pins.py85def test_package_pins_reject_non_ge_operators(tmp_path: Path, scan_req: str) -> None:CODE
LOW⚡tools/test_check_extra_pins.py92def test_package_pins_ok_when_root_and_lib_match(tmp_path: Path) -> None:CODE
LOW⚡tools/test_check_extra_pins.py97def test_package_pins_ok_when_no_requirement_names_package(tmp_path: Path) -> None:CODE
LOWtools/test_check_extra_pins.py110def test_current_tree_giskard_has_no_versioned_pins() -> None:CODE
LOWtools/test_lint_readme_snippets.py6def test_lint_markdown_checks_spaced_python_fences(tmp_path: Path) -> None:CODE
LOWtools/test_lint_readme_snippets.py18def test_lint_markdown_checks_positional_f_strings(tmp_path: Path) -> None:CODE
LOWtools/test_bump_workspace_pins.py12def test_rewrite_preserves_extras_comments_and_other_packages() -> None:CODE
LOWtools/test_bump_workspace_pins.py27def test_rewrite_does_not_match_package_name_prefix() -> None:CODE
LOWtools/test_bump_workspace_pins.py42def test_bump_pins_updates_root_and_downstream_libs(tmp_path: Path) -> None:CODE
LOWtools/test_bump_workspace_pins.py72def test_simulated_checks_release_keeps_root_pins_aligned() -> None:CODE
LOWtools/check_extra_pins.py82def _iter_project_requirements(CODE
LOWtools/check_extra_pins.py153def collect_package_pin_mismatches(CODE
LOWlibs/giskard-scan/tests/test_judge_prompts.py37async def test_scan_judge_template_preserves_criteria_with_optional_context(CODE
LOWlibs/giskard-scan/tests/conftest.py7def isolated_vulnerability_registry():CODE
LOWlibs/giskard-scan/tests/conftest.py18def isolated_quality_registry():CODE
LOWlibs/giskard-scan/tests/test_public_import_surface.py47def test_scan_src_imports_upstream_libs_only_from_package_roots():CODE
LOWlibs/giskard-scan/tests/test_generators_concrete.py5def test_prompt_injection_generator_is_importable():CODE
LOWlibs/giskard-scan/tests/test_generators_concrete.py10async def test_prompt_injection_scenarios_have_tags():CODE
LOWlibs/giskard-scan/tests/test_public_api.py28def _registry_generator_types(registry: SuiteGeneratorRegistry) -> set[type]:CODE
LOWlibs/giskard-scan/tests/test_public_api.py32def test_default_registry_generators_are_public():CODE
LOWlibs/giskard-scan/tests/test_public_api.py43def test_all_public_symbols_importable():CODE
LOWlibs/giskard-scan/tests/test_public_api.py56def test_vulnerability_suite_generator_registry_contains_builtin_generators():CODE
LOWlibs/giskard-scan/tests/test_public_api.py64def test_vulnerability_scan_accepts_target_mode_param():CODE
LOWlibs/giskard-scan/tests/test_public_api.py75def test_quality_scan_accepts_target_mode_param():CODE
LOWlibs/giskard-scan/tests/test_public_api.py86def test_quality_suite_generator_registry_contains_builtin_generators():CODE
LOWlibs/giskard-scan/tests/test_public_api.py96def test_list_scan_items_giskard():CODE
LOWlibs/giskard-scan/tests/test_generators_base.py19def test_scenario_generator_is_importable():CODE
LOWlibs/giskard-scan/tests/test_generators_base.py24async def test_scenario_generator_generate_scenario_accepts_target_mode():CODE
LOWlibs/giskard-scan/tests/test_generators_base.py44def test_dataset_generator_has_dataset_name_field():CODE
LOWlibs/giskard-scan/tests/test_scan_options.py28def test_resolve_scan_options_matches_for_identical_shared_kwargs():CODE
LOWlibs/giskard-scan/tests/test_scan_options.py50def test_scan_entrypoints_expose_shared_explicit_kwargs():CODE
LOWlibs/giskard-scan/tests/test_scan_options.py70def test_scan_entrypoints_require_keyword_only_options_after_languages():CODE
LOWlibs/giskard-scan/tests/test_vulnerability.py40async def test_vulnerability_scan_runs_registry_scenarios_and_returns_suite_result(CODE
LOWlibs/giskard-scan/tests/test_vulnerability.py93async def test_vulnerability_scan_forwards_run_options(CODE
LOWlibs/giskard-scan/tests/test_vulnerability.py147async def test_vulnerability_scan_emits_privacy_safe_product_telemetry(CODE
LOWlibs/giskard-scan/tests/test_vulnerability.py215async def test_vulnerability_scan_allowlists_caller_controlled_telemetry_values(CODE
LOWlibs/giskard-scan/tests/test_vulnerability.py250async def test_vulnerability_scan_finishes_telemetry_when_scan_raises(CODE
LOWlibs/giskard-scan/tests/test_quality.py72async def test_quality_scan_runs_registry_scenarios_and_returns_suite_result(CODE
LOWlibs/giskard-scan/tests/test_quality.py140async def test_quality_scan_forwards_run_options(CODE
LOWlibs/giskard-scan/tests/test_quality.py193async def test_quality_scan_uses_empty_registry_by_default(CODE
LOWlibs/giskard-scan/tests/test_quality.py223async def test_quality_scan_warns_and_skips_empty_raw_knowledge_base(CODE
LOWlibs/giskard-scan/tests/test_quality.py274async def test_quality_scan_configures_knowledge_base_generator(CODE
LOWlibs/giskard-scan/tests/test_quality.py335async def test_quality_scan_does_not_generate_recommendation_without_failures(CODE
LOWlibs/giskard-scan/tests/test_quality.py360async def test_quality_scan_hides_recommendation_when_generation_fails(CODE
LOWlibs/giskard-scan/tests/test_quality.py388async def test_quality_scan_emits_privacy_safe_product_telemetry(CODE
LOWlibs/giskard-scan/tests/test_quality.py442async def test_quality_scan_allowlists_caller_controlled_telemetry_values(CODE
LOWlibs/giskard-scan/tests/test_quality.py475async def test_quality_scan_finishes_telemetry_when_scan_raises(CODE
LOWlibs/giskard-scan/tests/test_knowledge_base.py30def test_knowledge_base_from_texts_does_not_compute_embeddings():CODE
LOW⚡libs/giskard-scan/tests/test_knowledge_base.py43def test_normalize_knowledge_base_accepts_existing_instance_and_texts():CODE
LOW⚡libs/giskard-scan/tests/test_knowledge_base.py53def test_normalize_knowledge_base_rejects_single_string():CODE
LOW⚡libs/giskard-scan/tests/test_knowledge_base.py59def test_knowledge_base_drops_empty_documents():CODE
LOW⚡libs/giskard-scan/tests/test_knowledge_base.py68def test_knowledge_base_rejects_all_empty_documents():CODE
LOW⚡libs/giskard-scan/tests/test_knowledge_base.py73async def test_closest_documents_computes_missing_embeddings_lazily_in_batch():CODE
LOWlibs/giskard-scan/tests/test_knowledge_base.py99async def test_closest_documents_initializes_embeddings_once_for_concurrent_callers():CODE
LOWlibs/giskard-scan/tests/test_knowledge_base.py123async def test_closest_documents_recomputes_all_embeddings_when_any_is_missing():CODE
LOWlibs/giskard-scan/tests/test_knowledge_base.py150async def test_closest_documents_to_text_embeds_query_against_cached_documents():CODE
LOWlibs/giskard-scan/tests/test_knowledge_base.py172async def test_closest_documents_to_text_rejects_empty_query_without_embedding():CODE
1554 more matches not shown…
Unused Imports426 hits · 361 pts
SeverityFileLineSnippetContext
LOWtools/lint_readme_snippets.py3CODE
LOW…iskard-scan/tests/integrations/garak/test_garak_e2e.py26CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py8CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py9CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py10CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py10CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py10CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py10CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py16CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py17CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py18CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py19CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py20CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py20CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py20CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py20CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py20CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py20CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py28CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py29CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py29CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py29CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py30CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py30CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py31CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py32CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py33CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py33CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py34CODE
LOWlibs/giskard-scan/src/giskard/scan/__init__.py34CODE
LOWlibs/giskard-scan/src/giskard/scan/utils/__init__.py3CODE
LOWlibs/giskard-scan/src/giskard/scan/utils/__init__.py3CODE
LOWlibs/giskard-scan/src/giskard/scan/utils/__init__.py3CODE
LOW…giskard-scan/src/giskard/scan/integrations/__init__.py3CODE
LOW…giskard-scan/src/giskard/scan/integrations/__init__.py4CODE
LOW…giskard-scan/src/giskard/scan/integrations/__init__.py4CODE
LOW…d-scan/src/giskard/scan/integrations/garak/_adapter.py28CODE
LOW…d-scan/src/giskard/scan/integrations/garak/__init__.py3CODE
LOW…d-scan/src/giskard/scan/integrations/garak/__init__.py3CODE
LOW…d-scan/src/giskard/scan/integrations/garak/__init__.py3CODE
LOW…d-scan/src/giskard/scan/integrations/garak/__init__.py3CODE
LOW…d-scan/src/giskard/scan/integrations/lidar/__init__.py3CODE
LOW…can/src/giskard/scan/integrations/deepteam/__init__.py3CODE
LOW…can/src/giskard/scan/integrations/deepteam/__init__.py3CODE
LOW…can/src/giskard/scan/integrations/deepteam/__init__.py4CODE
LOW…can/src/giskard/scan/integrations/deepteam/__init__.py4CODE
LOW…giskard/scan/integrations/deepteam/_judge_generator.py17CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py3CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py4CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py4CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py4CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py5CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py6CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py7CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py8CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py9CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py9CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py9CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py9CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py9CODE
366 more matches not shown…
Decorative Section Separators21 hits · 75 pts
SeverityFileLineSnippetContext
MEDIUMlibs/giskard-agents/tests/test_generator.py213# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-agents/tests/test_generator.py215# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-agents/tests/test_tools.py194# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-agents/tests/test_tools.py196# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-agents/tests/test_tools.py255# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-agents/tests/test_tools.py257# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡libs/giskard-agents/tests/test_tools.py355# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡libs/giskard-agents/tests/test_tools.py357# ---------------------------------------------------------------------------COMMENT
MEDIUM…d-agents/src/giskard/agents/tools/_docstring_parser.py2# ==============================================================================COMMENT
MEDIUM⚡libs/giskard-checks/tests/builtin/test_composition.py208# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡libs/giskard-checks/tests/builtin/test_composition.py210# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡libs/giskard-checks/tests/builtin/test_composition.py310# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡libs/giskard-checks/tests/builtin/test_composition.py312# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡libs/giskard-checks/tests/builtin/test_composition.py408# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡libs/giskard-checks/tests/builtin/test_composition.py410# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-checks/tests/builtin/test_composition.py26# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-checks/tests/builtin/test_composition.py28# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-checks/tests/builtin/test_composition.py59# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-checks/tests/builtin/test_composition.py61# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-checks/tests/builtin/test_composition.py452# ---------------------------------------------------------------------------COMMENT
MEDIUMlibs/giskard-checks/tests/builtin/test_composition.py454# ---------------------------------------------------------------------------COMMENT
Modern Structural Boilerplate54 hits · 54 pts
SeverityFileLineSnippetContext
LOWlibs/giskard-scan/src/giskard/scan/__init__.py40__all__ = [CODE
LOWlibs/giskard-scan/src/giskard/scan/quality.py25logger = logging.getLogger(__name__)CODE
LOWlibs/giskard-scan/src/giskard/scan/utils/__init__.py5__all__ = [CODE
LOW…giskard-scan/src/giskard/scan/integrations/__init__.py6__all__ = ["ScanTool", "list_scan_items", "third_party_scan"]CODE
LOW…d-scan/src/giskard/scan/integrations/garak/_adapter.py33logger = logging.getLogger(__name__)CODE
LOW…d-scan/src/giskard/scan/integrations/garak/__init__.py5__all__ = [CODE
LOW…d-scan/src/giskard/scan/integrations/lidar/_adapter.py23logger = logging.getLogger(__name__)CODE
LOW…d-scan/src/giskard/scan/integrations/lidar/__init__.py5__all__ = [CODE
LOW…can/src/giskard/scan/integrations/deepteam/_adapter.py31logger = logging.getLogger(__name__)CODE
LOW…can/src/giskard/scan/integrations/deepteam/__init__.py6__all__ = [CODE
LOW…s/giskard-scan/src/giskard/scan/generators/__init__.py19__all__ = [CODE
LOW…iskard-scan/src/giskard/scan/generators/huggingface.py18logger = logging.getLogger(__name__)CODE
LOWlibs/giskard-scan/src/giskard/scan/generators/base.py13logger = logging.getLogger(__name__)CODE
LOW…/giskard/scan/generators/knowledge_base/multi_topic.py20logger = logging.getLogger(__name__)CODE
LOW…src/giskard/scan/generators/knowledge_base/__init__.py19__all__ = [CODE
LOW…giskard/scan/generators/knowledge_base/out_of_scope.py25logger = logging.getLogger(__name__)CODE
LOWlibs/giskard-llm/src/giskard/llm/__init__.py40__all__ = [CODE
LOW…giskard-llm/src/giskard/llm/translators/openai_chat.py28logger = logging.getLogger(__name__)CODE
LOW…giskard-llm/src/giskard/llm/translators/google_chat.py59logger = logging.getLogger(__name__)CODE
LOW…ard-llm/src/giskard/llm/translators/google_response.py56logger = logging.getLogger(__name__)CODE
LOW…s/giskard-llm/src/giskard/llm/translators/anthropic.py57logger = logging.getLogger(__name__)CODE
LOW…ard-llm/src/giskard/llm/translators/openai_response.py27logger = logging.getLogger(__name__)CODE
LOWlibs/giskard-llm/src/giskard/llm/types/__init__.py68__all__ = [CODE
LOWlibs/giskard-llm/src/giskard/llm/providers/google.py96logger = logging.getLogger(__name__)CODE
LOWlibs/giskard-llm/src/giskard/llm/providers/openai.py84logger = logging.getLogger(__name__)CODE
LOW…/giskard-llm/src/giskard/llm/providers/azure_openai.py47logger = logging.getLogger(__name__)CODE
LOWlibs/giskard-llm/src/giskard/llm/providers/anthropic.py79logger = logging.getLogger(__name__)CODE
LOWlibs/giskard-llm/src/giskard/llm/providers/azure_ai.py58logger = logging.getLogger(__name__)CODE
LOWlibs/giskard-llm/src/giskard/llm/utils/__init__.py7__all__ = [CODE
LOWlibs/giskard-core/src/giskard/core/__init__.py46__all__ = [CODE
LOW…bs/giskard-core/src/giskard/core/telemetry/__init__.py11__all__ = [CODE
LOW…s/giskard-core/src/giskard/core/telemetry/telemetry.py100def _set_tags() -> None:CODE
LOW…giskard-core/src/giskard/core/rate_limiter/__init__.py9__all__ = [CODE
LOWlibs/giskard-agents/src/giskard/agents/__init__.py21__all__ = [CODE
LOWlibs/giskard-agents/src/giskard/agents/pipeline.py5__all__ = ["Pipeline"]CODE
LOW…bs/giskard-agents/src/giskard/agents/tools/__init__.py5__all__ = ["Tool", "tool", "Function", "ToolCall"]CODE
LOW…skard-agents/src/giskard/agents/embeddings/__init__.py7__all__ = [CODE
LOWlibs/giskard-agents/src/giskard/agents/som/__init__.py21__all__ = [CODE
LOW…iskard-agents/src/giskard/agents/templates/__init__.py11__all__ = [CODE
LOW…skard-agents/src/giskard/agents/generators/__init__.py20__all__ = [CODE
LOW…skard-agents/src/giskard/agents/errors/serializable.py5__all__ = ["Error"]CODE
LOW…s/giskard-agents/src/giskard/agents/errors/__init__.py4__all__ = ["ModelRefusalError", "WorkflowError", "Error"]CODE
LOWlibs/giskard-checks/tests/generators/conftest.py3__all__ = ["LLMTrace", "MockGenerator"]CODE
LOWlibs/giskard-checks/src/giskard/checks/__init__.py97__all__ = [CODE
LOWlibs/giskard-checks/src/giskard/checks/settings.py81def set_default_generator(generator: BaseGenerator | str) -> None:CODE
LOWlibs/giskard-checks/src/giskard/checks/settings.py173def set_default_embedding_model(model: BaseEmbeddingModel | str | None) -> None:CODE
LOWlibs/giskard-checks/src/giskard/checks/core/__init__.py23__all__ = [CODE
LOW…checks/src/giskard/checks/core/interaction/__init__.py6__all__ = ["InteractionSpec", "Interact", "Interaction", "Trace"]CODE
LOW…s/giskard-checks/src/giskard/checks/judges/__init__.py11__all__ = [CODE
LOW…/giskard-checks/src/giskard/checks/testing/__init__.py3__all__ = ["WithSpy"]CODE
LOW…iskard-checks/src/giskard/checks/scenarios/__init__.py4__all__ = [CODE
LOW…skard-checks/src/giskard/checks/generators/__init__.py7__all__ = [CODE
LOW…s/giskard-checks/src/giskard/checks/export/__init__.py4__all__ = ["to_hub_format", "to_junit_xml"]CODE
LOW…/giskard-checks/src/giskard/checks/builtin/__init__.py22__all__ = [CODE
Excessive Try-Catch Wrapping30 hits · 33 pts
SeverityFileLineSnippetContext
LOW.claude/hooks/quality_gate.py132 except Exception: # noqa: BLE001 — fail open on any unexpected hook errorCODE
MEDIUM.claude/hooks/quality_gate.py39def main() -> int:CODE
LOW.claude/hooks/enforce_uv.py44 except Exception: # noqa: BLE001 — fail open on any unexpected hook errorCODE
MEDIUM.claude/hooks/enforce_uv.py18def main() -> int:CODE
LOWlibs/giskard-scan/src/giskard/scan/vulnerability.py141 except Exception:CODE
LOWlibs/giskard-scan/src/giskard/scan/quality.py147 except Exception:CODE
LOWlibs/giskard-scan/src/giskard/scan/quality.py155 except Exception:CODE
LOW…d-scan/src/giskard/scan/integrations/garak/_adapter.py171 except Exception as exc: # noqa: BLE001 — one bad plugin must not abortCODE
LOW…d-scan/src/giskard/scan/integrations/garak/_adapter.py199 except Exception as exc: # noqa: BLE001 — one bad plugin must not abort the scanCODE
LOW…d-scan/src/giskard/scan/integrations/garak/_adapter.py276 except Exception: # noqa: BLE001 — unknown module: fall back to instance pathCODE
LOW…d-scan/src/giskard/scan/integrations/garak/_adapter.py369 except Exception as exc: # noqa: BLE001 — one bad detector must not abort the scanCODE
LOW…d-scan/src/giskard/scan/integrations/garak/_adapter.py441 except Exception as exc: # noqa: BLE001 — a broken detector skips, not abortsCODE
LOW…d-scan/src/giskard/scan/integrations/garak/_adapter.py514 except Exception as exc: # noqa: BLE001 — one bad probe must not abort the scanCODE
LOWlibs/giskard-llm/src/giskard/llm/providers/google.py150 except Exception as exc:CODE
LOWlibs/giskard-llm/src/giskard/llm/providers/google.py286 except Exception as e: # Broad catch: _map_error checks SDK types first, then applies timeout heuristic, then rCODE
LOWlibs/giskard-llm/src/giskard/llm/providers/google.py319 except Exception as e: # Broad catch: _map_error checks SDK types first, then applies timeout heuristic, then rCODE
LOWlibs/giskard-llm/src/giskard/llm/providers/google.py382 except Exception as e: # Broad catch: _map_error checks SDK types first, then applies timeout heuristic, then rCODE
MEDIUMlibs/giskard-llm/src/giskard/llm/providers/google.py106def _import_genai() -> Any:CODE
LOWlibs/giskard-core/tests/test_telemetry.py214except Exception:CODE
LOWlibs/giskard-core/src/giskard/core/welcome.py31 except Exception:CODE
LOW…s/giskard-core/src/giskard/core/telemetry/telemetry.py237 except Exception as e:CODE
LOWlibs/giskard-agents/src/giskard/agents/workflow.py474 except Exception as err:CODE
LOWlibs/giskard-agents/src/giskard/agents/tools/tool.py192 except Exception as error:CODE
LOW…rd-checks/src/giskard/checks/core/interaction/trace.py170 except Exception as error:CODE
LOW…s/giskard-checks/src/giskard/checks/utils/inference.py19 except Exception:CODE
LOW…s/giskard-checks/src/giskard/checks/utils/inference.py32 except Exception:CODE
LOW…bs/giskard-checks/src/giskard/checks/testing/runner.py30 except Exception as e:CODE
LOW…/giskard-checks/src/giskard/checks/scenarios/runner.py185 except Exception as caught:CODE
LOW…skard-checks/src/giskard/checks/builtin/nlp_metrics.py147 except Exception as exc:CODE
LOW…iskard-checks/src/giskard/checks/builtin/comparison.py99 except Exception:CODE
Structural Annotation Overuse8 hits · 16 pts
SeverityFileLineSnippetContext
LOWlibs/giskard-checks/README.md298### Step 1: Define a custom checkCOMMENT
LOWlibs/giskard-checks/README.md320### Step 2: Define a custom interaction specificationCOMMENT
LOWlibs/giskard-checks/README.md341### Step 3: Verify registrationCOMMENT
LOW⚡libs/giskard-checks/tests/core/test_scenario.py821 # Step 1: interaction0, check1COMMENT
LOW⚡libs/giskard-checks/tests/core/test_scenario.py822 # Step 2: interaction2, check3COMMENT
LOW⚡libs/giskard-checks/tests/core/test_scenario.py823 # Step 3: interaction4, check5COMMENT
LOW⚡libs/giskard-checks/tests/core/test_scenario.py824 # Step 4: interaction6, check7COMMENT
LOW⚡libs/giskard-checks/tests/core/test_scenario.py825 # Step 5: interaction8, check9COMMENT
Deep Nesting15 hits · 15 pts
SeverityFileLineSnippetContext
LOWlibs/giskard-scan/tests/test_public_import_surface.py29CODE
LOW…d-scan/src/giskard/scan/integrations/garak/_adapter.py139CODE
LOW…iskard-scan/src/giskard/scan/generators/huggingface.py49CODE
LOW…iskard-scan/src/giskard/scan/generators/huggingface.py121CODE
LOWlibs/giskard-llm/tests/conftest.py49CODE
LOW…ard-llm/src/giskard/llm/translators/google_response.py278CODE
LOW…s/giskard-llm/src/giskard/llm/translators/anthropic.py254CODE
LOW…s/giskard-core/src/giskard/core/telemetry/telemetry.py219CODE
LOWlibs/giskard-agents/tests/conftest.py32CODE
LOWlibs/giskard-checks/tests/test_public_import_surface.py29CODE
LOWlibs/giskard-checks/src/giskard/checks/core/result.py753CODE
LOWlibs/giskard-checks/src/giskard/checks/core/judge.py170CODE
LOW…/giskard-checks/src/giskard/checks/scenarios/runner.py139CODE
LOW…s/giskard-checks/src/giskard/checks/generators/base.py72CODE
LOWlibs/giskard-checks/src/giskard/checks/export/junit.py66CODE
Empty Error Handlers3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHlibs/giskard-llm/tests/test_providers.py597except (ImportError, AttributeError):CODE
HIGH…s/giskard-core/src/giskard/core/telemetry/telemetry.py118except OSError:CODE
HIGH…s/giskard-checks/src/giskard/checks/utils/inference.py62except TypeError:CODE
Verbosity Indicators5 hits · 11 pts
SeverityFileLineSnippetContext
LOW⚡libs/giskard-checks/tests/core/test_scenario.py821 # Step 1: interaction0, check1COMMENT
LOW⚡libs/giskard-checks/tests/core/test_scenario.py822 # Step 2: interaction2, check3COMMENT
LOW⚡libs/giskard-checks/tests/core/test_scenario.py823 # Step 3: interaction4, check5COMMENT
LOW⚡libs/giskard-checks/tests/core/test_scenario.py824 # Step 4: interaction6, check7COMMENT
LOW⚡libs/giskard-checks/tests/core/test_scenario.py825 # Step 5: interaction8, check9COMMENT
Docstring Block Structure2 hits · 10 pts
SeverityFileLineSnippetContext
HIGH…ard-scan/src/giskard/scan/integrations/_entry_point.py63Run an external security scanner against a Giskard target. Requires the scanner's optional extra: ``pip install gisSTRING
HIGH…giskard-scan/src/giskard/scan/integrations/_listing.py28List selectable item names for a scan tool. Args: tool: ``"giskard"`` returns scenario generator class nameSTRING
Redundant / Tautological Comments6 hits · 8 pts
SeverityFileLineSnippetContext
LOWlibs/giskard-core/src/giskard/core/__init__.py33# Check if the legacy package is installedCOMMENT
LOWlibs/giskard-agents/src/giskard/agents/tools/tool.py81 # Check if this parameter is a RunContextCOMMENT
LOWlibs/giskard-agents/src/giskard/agents/tools/tool.py273 # Check if this is a class method by looking for 'self' as first parameterCOMMENT
LOW…ard-checks/src/giskard/checks/builtin/text_matching.py296 # Check if extraction failedCOMMENT
LOW…ard-checks/src/giskard/checks/builtin/text_matching.py312 # Check if keyword appears in textCOMMENT
LOW…ard-checks/src/giskard/checks/builtin/text_matching.py454 # Check if extraction failedSTRING
Cross-Language Confusion3 hits · 8 pts
SeverityFileLineSnippetContext
HIGH.claude/hooks/enforce_uv.py5forms (`cd x && pytest`, `PYTHONPATH=. python f.py`) are NOT caught -- aSTRING
HIGH…skard-llm/tests/translators/test_openai_chat_return.py158 """Tool-only turn: `content` is null, `tool_calls` populated, `finish_reason` is `tool_calls`."""STRING
HIGH…skard-checks/src/giskard/checks/builtin/rego_policy.py162 undefined, error if evaluation fails or the rule value is notSTRING
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md205### [RAGET](https://legacy-docs.giskard.ai/en/stable/open_source/testset_generation/index.html) — generate evaluation daCOMMENT
MEDIUM…skard-agents/src/giskard/agents/embeddings/__init__.py4# Default embedding model uses LitellmCOMMENT
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM…can/tests/integrations/garak/test_resolve_detectors.py151 # Create a minimal probe with only a skipped detectorCOMMENT
MEDIUM…can/tests/integrations/garak/test_resolve_detectors.py166 # Create a minimal attempt with 2 conversations (_evaluate_attempt onlyCOMMENT
Fake / Example Data5 hits · 6 pts
SeverityFileLineSnippetContext
LOWlibs/giskard-checks/tests/integration/test_stateless.py123 expected_value="test@test.com",STRING
LOWlibs/giskard-checks/tests/integration/test_stateful.py149 expected_value="test@test.com",STRING
LOW⚡libs/giskard-checks/tests/generators/test_dataset.py41 with pytest.raises(ValueError, match="placeholder"):CODE
LOW⚡libs/giskard-checks/tests/generators/test_dataset.py123 with pytest.raises(ValueError, match="placeholder"):CODE
LOW⚡libs/giskard-checks/tests/generators/test_dataset.py240 with pytest.raises(ValueError, match="placeholder"):CODE
Magic Placeholder Names1 hit · 5 pts
SeverityFileLineSnippetContext
HIGH.pre-commit-config.yaml39 args: ["--baseline", ".secrets.baseline", "--exclude-secrets", "YOUR_API_KEY"]CODE
Dead Code2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMlibs/giskard-core/src/giskard/core/rate_limiter/base.py162CODE
MEDIUMlibs/giskard-checks/tests/core/test_scenario.py142CODE
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWlibs/giskard-scan/src/giskard/scan/vulnerability.py38CODE
LOWlibs/giskard-scan/src/giskard/scan/quality.py41CODE
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…rd-scan/src/giskard/scan/integrations/lidar/_target.py41COMMENT
LOW…d-agents/src/giskard/agents/tools/_docstring_parser.py1# THIS MODULE IS TAKEN FROM Pydantic AI, with only slight modifications.COMMENT