Skip to main content
Glama

🚀 Karate Feature Graph Analyzer

Ein leistungsstarkes MCP-Tool (Model Context Protocol) zur Analyse von Karate-Framework-Feature-Dateien und zur Generierung interaktiver Abhängigkeitsgraphen.

Python Tests License


📋 Inhaltsverzeichnis


Related MCP server: GID MCP Server

✨ Funktionen

Kernfähigkeiten

  • 🔍 Feature-Datei-Parsing - Parsen von Karate-Feature-Dateien mit Gherkin-Syntax

  • 🎯 Abhängigkeitsanalyse - Extrahieren und Analysieren von Abhängigkeiten (Workflows, APIs, Seiten, DB)

  • 📊 Interaktive Visualisierung - Generierung ansprechender HTML-Graphen mit Legende

  • 🎫 Jira-Integration - Extrahieren und Nachverfolgen von Jira-Tags (@PROJ-123)

  • 🔄 Auswirkungsanalyse - Identifizierung betroffener Testfälle bei Änderungen an Komponenten

  • 📈 Multi-Projekt-Unterstützung - Verwalten und Analysieren mehrerer Projekte

  • 💾 Export/Import - Exportieren von Graphen in JSON/GraphML-Formate

  • Leistungsoptimiert - Schnelle Analyse durch Caching und Indizes

Visualisierungsfunktionen

  • 🎨 Farbcodierte Knoten nach Typ (Test, Workflow, API, Seite, Datenbank)

  • 🔍 Interaktive Tooltips mit Metadaten (Dateipfad, Zeilennummern, Jira-Tags)

  • 🖱️ Klicken zum Hervorheben von Verbindungen und Abhängigkeiten

  • 📊 Legende in der oberen rechten Ecke zur Erläuterung von Farben und Formen

  • 🔄 Physik-Simulation für automatisches Layout

  • 🎯 Auswirkungsansicht zur Hervorhebung geänderter Komponenten und betroffener Tests


🚀 Schnellstart

1. Abhängigkeiten installieren

pip install -e .
pip install pyvis  # For visualization

2. Demo ausführen

# Set UTF-8 encoding (Windows)
$env:PYTHONIOENCODING="utf-8"

# Run large project demo
python test_large_project.py

3. Ergebnisse anzeigen

cd output
start ecommerce-platform_full.html

📦 Installation

Voraussetzungen

  • Python 3.8 oder höher

  • pip Paketmanager

Installation aus dem Quellcode

# Clone repository
git clone <repository-url>
cd karate-feature-graph-analyzer

# Install dependencies
pip install -e .

# Install visualization library
pip install pyvis

# Verify installation
pytest tests/ -v

Abhängigkeiten

Kernabhängigkeiten (automatisch installiert):

  • networkx - Graph-Operationen

  • hypothesis - Eigenschaftsbasiertes Testen

  • pydantic - Datenvalidierung

Optionale Abhängigkeiten:

  • pyvis - Interaktive Visualisierungen


💻 Verwendung

Grundlegende Verwendung

from karate_graph_analyzer.mcp_interface.mcp_tool import KarateGraphAnalyzerTool

# Initialize tool
tool = KarateGraphAnalyzerTool()

# Register project
tool.register_project(
    name="my-project",
    root_path="/path/to/karate/project",
    feature_file_patterns=["**/*.feature"]
)

# Analyze project
analysis = tool.analyze_project("my-project")
print(f"Found {analysis['statistics']['total_nodes']} nodes")

# Query dependencies
deps = tool.query_dependencies("tc_0001", transitive=True)
print(f"Found {deps['count']} dependencies")

# Impact analysis
impact = tool.impact_analysis("api_0001")
print(f"Affected: {impact['total_count']} test cases")

# Export graph
export = tool.export_graph("my-project", format="json")
with open("graph.json", "w") as f:
    f.write(export['data'])

Visualisierung

from karate_graph_analyzer.visualization.graph_visualizer import GraphVisualizer

# Get graph
graph = tool.graphs["my-project"]

# Create visualizer
visualizer = GraphVisualizer(graph)

# Render full graph
visualizer.render("output/graph.html", height="900px")

# Render impact view
visualizer.render_impact_view(
    changed_component_id="api_0001",
    affected_test_case_ids=["tc_0001", "tc_0002"],
    output_path="output/impact.html"
)

Befehlszeile (via Skript)

# Analyze large project
python test_large_project.py

# Output will be in output/ directory:
# - ecommerce-platform_full.html (full graph)
# - ecommerce-platform_impact.html (impact view)
# - ecommerce-platform_graph.json (graph data)
# - LARGE_PROJECT_ANALYSIS_REPORT.md (detailed report)

📁 Projektstruktur

karate-feature-graph-analyzer/
├── src/karate_graph_analyzer/
│   ├── models.py                    # Data models
│   ├── parser/                      # Feature file parsing
│   │   └── feature_parser.py
│   ├── graph/                       # Graph construction
│   │   └── graph_builder.py
│   ├── analyzer/                    # Dependency analysis
│   │   └── dependency_analyzer.py
│   ├── mcp_interface/               # MCP protocol
│   │   └── mcp_tool.py
│   ├── storage/                     # Project registry
│   │   └── project_registry.py
│   ├── cache/                       # AST caching
│   │   └── cache_manager.py
│   ├── visualization/               # Graph visualization
│   │   └── graph_visualizer.py
│   └── logging_config.py            # Logging setup
│
├── tests/
│   ├── unit/                        # 306 unit tests
│   ├── integration/                 # Integration tests
│   └── fixtures/                    # Test data
│
├── output/                          # Generated files
│   ├── ecommerce-platform_full.html
│   ├── ecommerce-platform_impact.html
│   ├── ecommerce-platform_graph.json
│   ├── LARGE_PROJECT_ANALYSIS_REPORT.md
│   └── README.md
│
├── test_project_demo/               # Small demo project
├── test_project_large/              # Large demo project (e-commerce)
├── examples/                        # Usage examples
├── docs/                            # Documentation
│   ├── API.md
│   └── jira_tag_extraction.md
│
├── test_large_project.py            # Demo script
├── pyproject.toml                   # Project config
├── pytest.ini                       # Test config
└── README.md                        # This file

📚 Dokumentation

Kerndokumentation

Spezifikationen


🎯 Beispiele

Beispiel 1: Demoprojekt analysieren

# Run demo
python test_large_project.py

# View results
cd output
start ecommerce-platform_full.html

Was Sie sehen werden:

  • 84 Knoten (73 Testfälle, 6 Workflows, 3 Seiten, 1 API, 1 DB)

  • 26 Kanten (Abhängigkeiten)

  • Interaktiver Graph mit Legende

  • Farbcodierung nach Typ

  • Hover-Tooltips mit Metadaten

Beispiel 2: Auswirkungsanalyse

# Find what tests are affected by API change
impact = tool.impact_analysis("api_0001")

print(f"Changed: {impact['changed_component']}")
print(f"Affected: {impact['total_count']} test cases")

for tc in impact['affected_test_cases']:
    print(f"  - {tc['name']} (depth: {tc['depth']})")
    if tc['jira_tags']:
        print(f"    Jira: {', '.join(tc['jira_tags'])}")

Ausgabe:

Changed: api_0001
Affected: 14 test cases
  - Successful login (depth: 1)
    Jira: @AUTH-101
  - Get user profile (depth: 1)
    Jira: @USER-101
  ...

Beispiel 3: Gemeinsame Komponenten finden

# Find reusable components across projects
common = tool.find_common_components(["project1", "project2"])

for comp in common['components']:
    print(f"{comp['component_type']}: {comp['identifier']}")
    print(f"  Used in {comp['usage_count']} projects")
    print(f"  Projects: {', '.join(comp['projects'])}")

🧪 Testen

Alle Tests ausführen

# Run all tests
pytest tests/ -v

# Run specific test suite
pytest tests/unit/ -v
pytest tests/integration/ -v

# Run with coverage
pytest tests/ --cov=src/karate_graph_analyzer --cov-report=html

Teststatistiken

  • Gesamtzahl der Tests: 306

  • Bestanden: 306 (100%)

  • Fehlgeschlagen: 0

  • Übersprungen: 1

  • Abdeckung: Umfassend

Testkategorien

  • Unit-Tests (tests/unit/) - Testen einzelner Komponenten

  • Integrationstests (tests/integration/) - Testen von Komponenteninteraktionen

  • Eigenschaftstests (optional) - Eigenschaftsbasiertes Testen mit Hypothesis


🎨 Visualisierungsleitfaden

Die Legende verstehen

Wenn Sie eine Visualisierungs-HTML-Datei öffnen, finden Sie in der oberen rechten Ecke die Legende:

📊 Legend
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🟢 Test Case - Scenario hoặc test
🔵 Workflow - Reusable workflow
🟠 API - API endpoint
🟣 Page - Page object
🔴 Database - Database operation
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💡 Tip: Hover để xem chi tiết
🖱️ Click để highlight connections
🔍 Scroll để zoom in/out

Interaktive Funktionen

  1. Hover - Bewegen Sie die Maus über einen Knoten, um ein Tooltip zu sehen mit:

    • Knotenname

    • Knotentyp

    • Dateipfad

    • Zeilennummer

    • Jira-Tags

  2. Klicken - Klicken Sie auf einen Knoten, um Folgendes hervorzuheben:

    • Den ausgewählten Knoten

    • Alle verbundenen Knoten

    • Alle verbindenden Kanten

  3. Zoomen - Scrollen Sie mit dem Mausrad zum Vergrößern/Verkleinern

  4. Verschieben - Ziehen Sie den Hintergrund, um sich zu bewegen

  5. Neupositionieren - Ziehen Sie Knoten, um das Layout neu anzuordnen


🔧 Konfiguration

Parser-Konfiguration

from karate_graph_analyzer.models import ParserConfig

config = ParserConfig(
    jira_tag_patterns=[
        r'@[A-Z]+-\d+',      # @PROJ-123
        r'@[a-z]+-\d+',      # @proj-123
        r'@[A-Z]+_\d+',      # @PROJ_123
    ],
    workflow_directories=['workflows', 'common'],
    page_object_directories=['pages', 'page-objects'],
    variable_patterns=[r'\$\{(\w+)\}'],
    api_extraction_rules={
        'extract_from_variables': True,
        'extract_from_strings': True,
    }
)

# Use custom config
tool.register_project(
    name="my-project",
    root_path="/path/to/project",
    parser_config=config
)

📊 Wichtige Kennzahlen

Leistung

  • Analysezeit: < 1 Sekunde für 4 Dateien

  • Abfragezeit: < 10ms für Abhängigkeitsabfragen

  • Auswirkungsanalyse: < 50ms für 6 betroffene Tests

  • Exportzeit: < 100ms für 9 Knoten

  • Visualisierung: < 1 Sekunde zum Rendern

Skalierbarkeit

  • Getestet mit: 84 Knoten, 26 Kanten

  • Unterstützt: 1000+ Knoten (geschätzt)

  • Speicher: Effizient durch Caching

  • Speicherung: JSON-Format, ~500 Bytes pro Knoten


🤝 Mitwirken

Beiträge sind willkommen! Bitte befolgen Sie diese Richtlinien:

  1. Forken Sie das Repository

  2. Erstellen Sie einen Feature-Branch (git checkout -b feature/amazing-feature)

  3. Commiten Sie Ihre Änderungen (git commit -m 'Add amazing feature')

  4. Pushen Sie auf den Branch (git push origin feature/amazing-feature)

  5. Öffnen Sie einen Pull Request

Entwicklungseinrichtung

# Clone your fork
git clone <your-fork-url>
cd karate-feature-graph-analyzer

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

# Run linter
flake8 src/

# Format code
black src/

📝 Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe die LICENSE-Datei für Details.


🙏 Danksagungen

  • Karate Framework - Für das großartige BDD-Testframework

  • NetworkX - Für Graph-Operationen

  • Pyvis - Für interaktive Visualisierungen

  • Hypothesis - Für eigenschaftsbasiertes Testen


📞 Support

Dokumentation

Beispiele

Probleme

Falls Sie auf Probleme stoßen:

  1. Überprüfen Sie die Dokumentation

  2. Überprüfen Sie die Beispiele

  3. Öffnen Sie ein Issue auf GitHub



Erstellt mit ❤️ unter Verwendung von Spec-Driven Development

Status: ✅ Produktionsbereit Version: 1.0.0 Zuletzt aktualisiert: 30. April 2026

🚀 Viel Spaß beim Analysieren!

Install Server
A
license - permissive license
B
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/duyngo91/karate-graph-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server