aletheia

Property-Based Testing
PBT
moon add f4ah6o/aletheia@0.6.0
Download zip
Author
Version
0.6.0
License
Apache-2.0
Last updated
6 months ago
Downloads
1K
README

#Aletheia - MoonBit Property-Based Testing Tool

Property-Based Testing (PBT) コード生成ツール for MoonBit。

#概要

Aletheia は MoonBit ソースコードから自動的にプロパティベーステストを生成するツールです。

  • パターン検出: Round-Trip, Idempotent, Producer-Consumer パターンを自動検出
  • テスト生成: 検出されたパターンに基づいて PBT コードを自動生成
  • PBT同期: <module>.pbt.mbt.md のコードブロックをパッケージごとのテストに同期
  • Dogfooding: ツール自身の品質を自己検証

#現在のステータス

#✅ 実装済み

モジュール説明状態
parserMarkdownパーサー✅ 完了
patternsパターン検出✅ 完了
generatorPBTコード生成✅ 完了
cliCLIコマンドパーサー✅ 完了
analyzer関数抽出器✅ 完了
pbtPBTランタイム✅ 完了
pbt_syncPBT同期✅ 完了
dogfooding自己テスト✅ 完了
state_machine状態マシンテスト✅ 完了

#テスト状況

  • 総テスト数: 50
  • パス率: 100%

#実行方法

# 全テスト実行 moon test # ビルド確認 moon check # CLI実行(ヘルプ表示) moon run src/aletheia # PBTターゲット収集 moon run src/aletheia -- generate ./src # 変更内容のサマリをJSONで出力(dry-run) moon run src/aletheia -- generate ./src --dry-run --format json # 検出根拠の詳細表示 moon run src/aletheia -- analyze ./src --explain # PBT markdown同期(デフォルト: src/aletheia.pbt.mbt.md) moon run src/aletheia -- sync # 自己適用PBTの生成(テンプレート出力) ./scripts/self_pbt.sh # self_pbt.sh は generate/sync + moon info + moon fmt を実行 # 開発時の一括チェック ./scripts/dev-check.sh

#PBT 開発ワークフロー

PBT テストファイルやマークダウンを変更する際のワークフロー:

  1. .pbt.mbt.md マークダウンファイルを編集
  2. ./scripts/self_pbt.sh を実行してテストファイルを再生成
  3. moon test で検証
  4. マークダウンと生成されたテストファイルの両方をコミット

重要: PBT 変更をコミットする前に必ず ./scripts/self_pbt.sh を実行してください。 このスクリプトは、生成されたテストファイルが moon fmt で正しくフォーマットされることを保証します。

# PBT 開発の推奨ワークフロー # 1. マークダウンを編集 vim src/aletheia.pbt.mbt.md # 2. テストファイルを再生成 ./scripts/self_pbt.sh # 3. テストを実行 moon test # 4. 変更を確認 git status git diff # 5. コミット(マークダウンと生成されたテストファイルの両方) git add src/aletheia.pbt.mbt.md src/*/pbt_generated_test.mbt git commit -m "feat: add PBT tests for XYZ"

#Claude Code Plugins

# ローカルでプラグインを試す(一般用途) claude --plugin-dir ./plugins/aletheia-pbt # ローカルでプラグインを試す(自己適用) claude --plugin-dir ./plugins/aletheia-self-pbt # マーケットプレイスを追加してインストール(Claude Code内) /plugin marketplace add . /plugin install aletheia-pbt@f4ah6o-plugins /plugin install aletheia-self-pbt@f4ah6o-plugins

#モジュール構成

src/ ├── aletheia.pbt.mbt.md # PBTターゲット/プロパティ集約 ├── aletheia/ # CLI エントリポイント ├── analyzer/ # 関数抽出器 ├── ast/ # AST定義 ├── cli/ # CLI コマンド処理 ├── dogfooding/ # 自己テスト(Dogfooding) ├── generator/ # PBT コード生成 ├── parser/ # Markdown パーサー ├── patterns/ # パターン検出 ├── pbt/ # PBTランタイム ├── pbt_sync/ # PBT同期 └── state_machine/ # 状態マシンテスト

#制約事項

  • AST解析の精度: 現在は簡易的な行スキャンのため、複雑なシグネチャや型推論には未対応
  • 生成テストの調整: 生成された .pbt.mbt.md はテンプレートとして扱い、必要に応じて型やプロパティを調整
  • 生成マーカー: .pbt.mbt.md<!-- aletheia:begin --><!-- aletheia:end --> を挿入。手編集はマーカー外に書くと再生成で保持される
  • ワーニング: ビルド時に未使用変数/関数に関する警告あり(機能に影響なし)

#生成されたファイルの編集

#マーカーで保護されたセクション

生成されたファイルには <!-- aletheia:begin --><!-- aletheia:end --> で囲まれたセクションが含まれます。

  • マーカー内: 自動生成される内容で、generate コマンド実行時に上書きされます
  • マーカー外: 手動で追加した内容は保持されます

#再生成のルール

# 同じコードベースで generate を複数回実行しても、生成結果は同一になります moon run src/aletheia -- generate ./src moon run src/aletheia -- generate ./src # 差分なし # マーカー外の手編集は保持されます echo "## Manual Notes" >> src/aletheia.pbt.mbt.md moon run src/aletheia -- generate ./src grep "Manual Notes" src/aletheia.pbt.mbt.md # Manual Notes が残っている

#ライセンス

Apache-2.0