Skip to main content
Glama

Verum

CI crates.io docs.rs Marketplace Glama

Verumは、決定的なプログラム全体のコードアナライザーです。コードベースを単一の中間表現(シンボル、コールグラフ、ルート、データフロー)にマッピングし、そのマップに対して一連の解析(デッドコード、重複、taintベースのセキュリティチェック、複雑度、命名、インフラストラクチャ(Kubernetes、Dockerfile、Terraform))を実行します。ビルドステップも言語サーバーも不要な単一の静的バイナリなので、新規チェックアウトに対してほんの一瞬で実行できます。

同じ入力には同じ出力。すべてのシンボルID、検出結果、レポートはソースの安定したハッシュから導出されるため、同じツリーに対して2回実行するとバイト単位で同一の結果が得られます。これにより、VerumはCIゲート、差分を取れるベースライン、そしてツールやエージェントが信頼できるファクトレイヤーとして利用できます。

対応言語: PHP、Rust、JavaScript、TypeScript、Python、Go、Javaに加え、Kubernetes YAML、Dockerfile、Terraform。

脆弱なPHPフィクスチャに対するverum audit: デッドコード、セキュリティ検出結果、スコア

Related MCP server: Ferret MCP

インストール

cargo install verum

これにより、verum バイナリがPATHに追加されます(Verumはstable Rust 1.82以降でビルドされます)。代わりにチェックアウトからビルドする場合は、cargo install --path crates/verum を使用します。ツールチェーンなしで任意のLinuxマシンで実行するには、静的muslバイナリをビルドしてコピーします:

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 | a self-contained html report
verum init [path]       # write a default verum.standard.json

audit はコードをスコアリングし、重大度別に検出結果を一覧表示します。clean は適用する修正(呼び出し元のないシンボル、再マップすべき重複ボディ)を報告し、それぞれをファイルと行で特定します。レポートのみを実行し、ファイルを変更しません。その出力は手動で適用するワークリストとして扱ってください。

継続的インテグレーション

verum gate <path> は、デプロイゲートのしきい値を満たさない場合は終了コード 1 を、満たす場合は 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 . で現在の検出結果を一度スナップショットしてコミットします。するとゲートは、そのベースラインに対して新規の検出結果でのみ失敗するため、報告されたすべてを先に修正しなくても導入できます。

エージェント / MCP

verum mcp <path> は、解析をstdio上のMCPツールサーバーとして提供するため、エージェントはgrepの代わりにマップを照会できます。コールグラフ(callers_ofcallees_ofimpact_of)、dead_codeduplicatesauditaudit_delta(git refと比較して変更されたファイル内の検出結果のみ)、endpoints(どのクライアントHTTP呼び出しがどのルートにヒットするか)を公開します。マップは呼び出しのたびにツリーのmtimeと照合されるため、回答は編集内容に追従します。

MCP対応のクライアントはstdio経由で接続できます。たとえば、Claude Codeの場合:

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

言語横断

Verumはサポートするすべての言語を1つのIRにパースするため、TypeScriptフロントエンドの fetch('/api/users') は、それを処理するルートハンドラーにリンクされます(そのハンドラーが別の言語であっても)。verum mcpendpoints ツールは、マッチしたものに加え、どのルートにもヒットしないフロントエンド呼び出し(おそらく404)と、どのクライアントからも呼び出されないルート(おそらくデッドコード)を報告します。

オプションのAIレイヤー

verum full は、曖昧な検出結果(決定的な解析だけでは解決できないもの)を言語モデルに送信し、保持/削除/非推奨化の判断を仰ぐことができます。プロバイダーに依存しません。OpenAI互換のチャットAPIを使用し、環境変数だけで設定されるため、ホスト型APIでもローカルランナー(ollama、llama.cpp、vLLM、LM Studio)でも動作します。エンドポイントを設定しない限り、外部には一切接続されません。

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

設定

verum initverum.standard.json(解析のしきい値、言語ごとの命名規則、弱い暗号の許可リスト、デプロイゲートの制限)を書き出します。すべてに適切なデフォルトがあるため、このファイルは必須ではありません。

仕組み

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

mappa はtree-sitterを介してファイルを並列にパースし、1つのIRにマージします。IDはパスの安定した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