Skip to main content
Glama

Verum

CI crates.io docs.rs Marketplace Glama

Verum — это детерминированный анализатор кода, работающий на уровне всей программы. Он преобразует кодовую базу в единое промежуточное представление — символы, граф вызовов, маршруты, потоки данных — а затем выполняет по этой карте набор анализов: мёртвый код, дубликаты, проверки безопасности на основе taint-анализа, сложность, именование и инфраструктуру (Kubernetes, Dockerfile, Terraform). Это один статический бинарный файл без этапа сборки и без языкового сервера, поэтому он запускается на свежей копии репозитория за долю секунды.

Одинаковый вход — одинаковый выход. Каждый идентификатор символа, результат проверки и отчёт вычисляются из стабильного хеша исходного кода, поэтому два запуска на одном и том же дереве дают побайтно идентичные результаты. Это делает Verum пригодным для использования в качестве CI-шлюза, базовой линии, с которой можно сверять диффы, и слоя фактов, на который могут полагаться инструменты и агенты.

Поддерживаемые языки: PHP, Rust, JavaScript, TypeScript, Python, Go и Java, а также Kubernetes YAML, Dockerfile и Terraform.

Пример

verum audit на уязвимом PHP-фикстуре: мёртвый код, результаты проверок безопасности и оценка

Related MCP server: Ferret MCP

Установка

cargo install verum                 # compile from crates.io
cargo binstall verum                 # or grab the prebuilt binary, no compile
docker run --rm -v "$PWD:/work" ghcr.io/ibmark/verum audit .   # or no install

Готовые бинарные файлы для Linux (gnu/musl), macOS (x86_64/arm64) и Windows прикреплены к каждому релизу.

cargo install собирает бинарный файл verum и помещает его в PATH (Verum собирается на стабильном Rust 1.82 или новее). Чтобы вместо этого собрать из копии репозитория, используйте cargo install --path crates/verum. Для статического Linux-бинарника, который можно скопировать куда угодно:

cargo build --release --target x86_64-unknown-linux-musl

Этот же крейт является библиотекой. Добавьте verum как зависимость, чтобы разобрать дерево в IR и запускать анализы программно:

use verum::{Atlas, AtlasConfig, Prism, Standard};

let ir = Atlas::new(AtlasConfig { root: ".".into(), ..Default::default() }).build()?;
let result = Prism::analyse(&ir, &Standard::default())?;
println!("score: {}", result.score.overall);

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

verum analyse <path>    # map the code into the IR - symbol/call/route counts
verum audit <path>      # map + analyse - findings and a score, no changes
verum clean <path>      # audit + preview the dead-code/duplicate fixes
verum map <path>        # module/symbol graphs, cycles, SPOFs, data flows
verum gate <path>       # exit non-zero if the deploy-gate thresholds fail
verum baseline <path>   # snapshot findings so gate only fails on new ones
verum report <path>     # markdown | json | sarif | a self-contained html report
verum init [path]       # write a default verum.standard.json

audit оценивает код и перечисляет находки по уровню серьёзности. clean сообщает об исправлениях, которые он бы применил, — символы без вызывающего кода, дублирующиеся тела для переназначения — и указывает для каждого файл и строку. Он работает только в режиме отчёта и не изменяет ваши файлы; воспринимайте его вывод как список задач для ручного применения.

Непрерывная интеграция

verum gate <path> завершается с кодом 1, когда пороги deploy-gate не пройдены, и с кодом 0, когда они пройдены, поэтому конвейер может полагаться на код возврата, а не на разбор вывода. verum report <path> --format json выводит находки и оценку в формате JSON для панели мониторинга или собственной проверки.

# .github/workflows/verum.yml
name: verum
on: [push, pull_request]
jobs:
  gate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: IBMark/verum-action@v1   # runs `verum gate .` by default

Для существующей кодовой базы один раз сохраните текущие находки с помощью verum baseline . и закоммитьте результат; после этого шлюз будет завершаться с ошибкой только на находках, которые являются новыми относительно этой базовой линии, так что вы можете внедрить его, не исправляя предварительно всё, о чём он сообщает.

verum report <path> --format sarif выводит SARIF 2.1.0, поэтому находки появляются в виде встроенных аннотаций в pull request и на вкладке Security репозитория:

      - run: verum report . --format sarif --out verum.sarif
      - uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: verum.sarif

Агент / MCP

verum mcp <path> предоставляет анализ в виде MCP-сервера инструментов через stdio, чтобы агент мог запрашивать карту вместо grep. Он открывает граф вызовов (callers_of, callees_of, impact_of), dead_code, duplicates, audit, audit_delta (находки только в файлах, изменённых относительно git-ссылки) и endpoints (какие HTTP-вызовы клиента попадают в какие маршруты). Карта перепроверяется по mtime дерева при каждом вызове, поэтому ответы отслеживают ваши правки.

Любой клиент, поддерживающий MCP, может подключиться через stdio. Например, с Claude Code:

claude mcp add verum -- verum mcp /path/to/project

Межъязыковой

Verum разбирает все поддерживаемые языки в единый IR, поэтому fetch('/api/users') в TypeScript-фронтенде связывается с обработчиком маршрута, который его обслуживает, — даже если этот обработчик написан на другом языке. Инструмент endpoints в verum mcp сообщает о совпадениях, а также о вызовах фронтенда, не попадающих ни в один маршрут (вероятные 404), и о маршрутах, которые не вызывает ни один клиент (возможно, мёртвых).

Необязательный AI-слой

verum full может отправлять неоднозначные находки — те, которые детерминированный анализ не может разрешить самостоятельно, — языковой модели для решения «оставить/удалить/пометить устаревшим». Он нейтрален к провайдеру: говорит на OpenAI-совместимом chat API и настраивается полностью через окружение, поэтому работает с размещённым API или локальным раннером (ollama, llama.cpp, vLLM, LM Studio). Ничего не отправляется, пока вы не зададите endpoint.

export VERUM_AI_ENDPOINT="http://localhost:11434/v1/chat/completions"
export VERUM_AI_MODEL="qwen2.5-coder"
verum full <path>

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

verum init создаёт verum.standard.json — пороги анализа, правила именования для каждого языка, список разрешённых слабых криптоалгоритмов и ограничения deploy-gate. Всё имеет разумные значения по умолчанию, поэтому файл необязателен.

Как это работает

files -> map (mappa) -> IR -> analyse (lumen) -> findings + score
                            -> plan (faber)    -> fix worklist

mappa разбирает файлы параллельно через tree-sitter и объединяет их в единый IR. Идентификаторы — это стабильный FNV-1a-хеш пути, что обеспечивает воспроизводимость и позволяет разбирать файлы независимо без общего счётчика. lumen выполняет анализы по объединённому IR; faber превращает безопасные находки в конкретный список правок (в этом релизе — только отчёт).

Воркспейс разделён вдоль этого конвейера: verum-nucleus (общий IR и типы находок), verum-mappa (парсеры), verum-lumen (анализы), verum-faber (планировщик исправлений), verum-arbiter (необязательный AI-слой) и verum (бинарный файл и библиотечный фасад).

Лицензия

Двойное лицензирование на выбор:

по вашему усмотрению.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
3Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    An MCP server that provides structural codebase indexing and surgical query tools to drastically reduce token usage through symbol-level searches and transitive impact analysis. It supports multiple languages and integrates with git to help AI agents understand code dependencies and the impact of changes in sub-millisecond time.
    69
    1,115
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that extracts complete knowledge from any codebase — architecture, patterns, dependencies, API surface. Combines static analysis with AI-powered deep interpretation.
    8
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that provides ultra-efficient code exploration through AST analysis, reducing LLM token usage by up to 95% while enabling instant call graph generation and dependency analysis for massive codebases.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    MCP server that exposes pre-extracted facts about code behavior, design decisions, and assumptions to AI agents, saving time and tokens by avoiding direct source file reading.
    6

View all related MCP servers

Related MCP Connectors

  • Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.

  • Deterministic context layer for your codebase: change impact, blast radius, answers with receipts.

  • Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.

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/IBMark/verum'

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