Skip to main content
Glama

🚀 Анализатор графов функций Karate

Мощный инструмент MCP (Model Context Protocol) для анализа файлов функций (feature files) фреймворка Karate и создания интерактивных графов зависимостей.

Python Tests License


📋 Содержание


Related MCP server: GID MCP Server

✨ Возможности

Основные функции

  • 🔍 Парсинг файлов функций - Разбор файлов функций Karate с использованием синтаксиса Gherkin

  • 🎯 Анализ зависимостей - Извлечение и анализ зависимостей (рабочие процессы, API, страницы, БД)

  • 📊 Интерактивная визуализация - Создание красивых HTML-графов с легендой

  • 🎫 Интеграция с Jira - Извлечение и отслеживание тегов Jira (@PROJ-123)

  • 🔄 Анализ влияния - Определение затронутых тест-кейсов при изменении компонентов

  • 📈 Поддержка нескольких проектов - Управление и анализ нескольких проектов

  • 💾 Экспорт/Импорт - Экспорт графов в форматы JSON/GraphML

  • Оптимизация производительности - Быстрый анализ с использованием кэширования и индексов

Функции визуализации

  • 🎨 Цветовая кодировка узлов по типу (Тест, Рабочий процесс, API, Страница, База данных)

  • 🔍 Интерактивные подсказки с метаданными (путь к файлу, номера строк, теги Jira)

  • 🖱️ Клик для выделения связей и зависимостей

  • 📊 Легенда в правом верхнем углу с пояснением цветов и фигур

  • 🔄 Физическая симуляция для автоматической компоновки

  • 🎯 Представление влияния с выделением измененных компонентов и затронутых тестов


🚀 Быстрый старт

1. Установка зависимостей

pip install -e .
pip install pyvis  # For visualization

2. Запуск демо

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

# Run large project demo
python test_large_project.py

3. Просмотр результатов

cd output
start ecommerce-platform_full.html

📦 Установка

Предварительные требования

  • Python 3.8 или выше

  • Менеджер пакетов pip

Установка из исходного кода

# 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

Зависимости

Основные зависимости (устанавливаются автоматически):

  • networkx - Операции с графами

  • hypothesis - Тестирование на основе свойств

  • pydantic - Валидация данных

Дополнительные зависимости:

  • pyvis - Интерактивные визуализации


💻 Использование

Базовое использование

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'])

Визуализация

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"
)

Командная строка (через скрипт)

# 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)

📁 Структура проекта

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

📚 Документация

Основная документация

Спецификации


🎯 Примеры

Пример 1: Анализ демо-проекта

# Run demo
python test_large_project.py

# View results
cd output
start ecommerce-platform_full.html

Что вы увидите:

  • 84 узла (73 тест-кейса, 6 рабочих процессов, 3 страницы, 1 API, 1 БД)

  • 26 ребер (зависимостей)

  • Интерактивный граф с легендой

  • Цветовая кодировка по типу

  • Всплывающие подсказки с метаданными при наведении

Пример 2: Анализ влияния

# 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'])}")

Вывод:

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

Пример 3: Поиск общих компонентов

# 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'])}")

🧪 Тестирование

Запуск всех тестов

# 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

Статистика тестов

  • Всего тестов: 306

  • Пройдено: 306 (100%)

  • Не пройдено: 0

  • Пропущено: 1

  • Покрытие: Полное

Категории тестов

  • Модульные тесты (tests/unit/) - Тестирование отдельных компонентов

  • Интеграционные тесты (tests/integration/) - Тестирование взаимодействия компонентов

  • Тесты свойств (опционально) - Тестирование на основе свойств с помощью Hypothesis


🎨 Руководство по визуализации

Понимание легенды

Когда вы открываете HTML-файл визуализации, посмотрите в правый верхний угол, чтобы увидеть легенду:

📊 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

Интерактивные функции

  1. Наведение - Наведите курсор мыши на узел, чтобы увидеть подсказку с:

    • Именем узла

    • Типом узла

    • Путем к файлу

    • Номером строки

    • Тегами Jira

  2. Клик - Нажмите на узел, чтобы выделить:

    • Выбранный узел

    • Все связанные узлы

    • Все соединяющие ребра

  3. Масштабирование - Прокрутите колесо мыши для приближения/отдаления

  4. Панорамирование - Перетащите фон, чтобы перемещаться по графу

  5. Изменение положения - Перетаскивайте узлы, чтобы изменить компоновку


🔧 Конфигурация

Конфигурация парсера

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
)

📊 Ключевые метрики

Производительность

  • Время анализа: < 1 секунды для 4 файлов

  • Время запроса: < 10 мс для запросов зависимостей

  • Анализ влияния: < 50 мс для 6 затронутых тестов

  • Время экспорта: < 100 мс для 9 узлов

  • Визуализация: < 1 секунды для отрисовки

Масштабируемость

  • Протестировано на: 84 узлах, 26 ребрах

  • Поддерживает: 1000+ узлов (оценочно)

  • Память: Эффективно с использованием кэширования

  • Хранилище: Формат JSON, ~500 байт на узел


🤝 Участие в разработке

Вклад приветствуется! Пожалуйста, следуйте этим рекомендациям:

  1. Сделайте форк репозитория

  2. Создайте ветку для функции (git checkout -b feature/amazing-feature)

  3. Зафиксируйте свои изменения (git commit -m 'Add amazing feature')

  4. Отправьте изменения в ветку (git push origin feature/amazing-feature)

  5. Откройте Pull Request

Настройка среды разработки

# 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/

📝 Лицензия

Этот проект лицензирован по лицензии MIT - подробности см. в файле LICENSE.


🙏 Благодарности

  • Karate Framework - За потрясающий фреймворк для BDD-тестирования

  • NetworkX - За операции с графами

  • Pyvis - За интерактивные визуализации

  • Hypothesis - За тестирование на основе свойств


📞 Поддержка

Документация

Примеры

Проблемы

Если вы столкнулись с какими-либо проблемами:

  1. Проверьте документацию

  2. Просмотрите примеры

  3. Откройте issue на GitHub


🎉 Быстрые ссылки


Создано с ❤️ с использованием разработки на основе спецификаций (Spec-Driven Development)

Статус: ✅ Готов к продакшену Версия: 1.0.0 Последнее обновление: 30 апреля 2026 г.

🚀 Удачного анализа!

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