Skip to Content
新しいバージョン 12 を公開しました 🎉
ObfuscatorコマンドラインAI に適したモード

AI に適した CLI モード

Babel Obfuscator 11.7.0 以降、コマンドラインツールは、機械可読な構造化出力ストリームを出力できます。この出力は、CI パイプライン、ビルドオーケストレーター、AI やエージェントとの連携に適しています。

babel.exe の既定のテキスト出力は変更されておらず、完全な後方互換性を保っています。既存の CI スクリプトや、顧客側で構築した連携を変更する必要はありません。

AI に適したモードは、3 つの新しいグローバルフラグで有効にします。

  • --format=text|json|ndjson:出力チャネルの形式を選択します
  • --quiet(エイリアス -q):ロゴバナーを抑止し、対話型プロンプトでは入力を待たずにすぐに失敗します
  • --strict-exit:意味を持つ終了コードを有効にします

--format=json または --format=ndjson を選択すると、stdout には構造化ストリームが出力され、人が読むための診断メッセージは stderr に送られるため、2 つのチャネルが混ざることはありません。

フラグ

—format <format>

stdout で使用する出力形式を選択します。指定できる値は次のとおりです。

値説明
text既定。人が読むための従来のコンソール出力。以前のリリースから構造上の変更はありません。
json実行の完了時(または --help / --version の指定時)に書き出される、バッファリングされた単一の JSON エンベロープ。stdout をファイルに保存する場合や、JSON を処理するプログラムにパイプする場合に最適です。
ndjson改行区切りの JSON。1 行に 1 イベントで、生成されるたびにフラッシュされます。実行の終了前に反応する必要がある、ストリーミングで処理するプログラム、ログ転送ツール、稼働中のエージェントに最適です。

例:

babel myapp.exe --format=json > result.json babel myapp.exe --format=ndjson | jq -c 'select(.level=="error")'

—format=json または —format=ndjson を指定すると、—logo の指定にかかわらずロゴバナーが自動的に抑止されるため、stdout の最初の 1 バイトから有効な JSON になります。

—quiet (-q)

著作権表示とロゴのバナーを抑止し、対話型のパスワードプロンプトの動作を変更します。Babel は Console.In で入力を待ってブロックする代わりに、明示的なエラーを出してただちに失敗します。これにより、CI ランナー、コンテナーのビルドステップ、AI エージェントからの無人実行でも --quiet を安全に使用できます。

babel myapp.exe --quiet --keyfile mykey.pfx --keypwd env:KEY_PWD

--quiet は --format とは独立しています。従来の text 出力と組み合わせると、バナーなしで人が読めるログを残せます。

—strict-exit

プロセスが意味を持つ終了コードを返すようにします。このフラグを指定しない場合、Babel は、0 が成功、1 があらゆる失敗を表す従来の規約を維持します。

終了コード定数意味
0success実行はエラーなしで完了しました。
10invalidArgumentsコマンドラインを解析できなかったか、無効な値(たとえば不明な --format)が含まれていました。
20inputNotFoundプライマリアセンブリ、またはその他の必要な入力ファイルが見つかりませんでした。
30obfuscationFailure難読化が実行時に失敗しました(分類されていない難読化ツールの例外すべて)。
40licensingFailureライセンスの確認に失敗しました(ライセンスがない、期限切れ、または許可されていない)。
50keyOrSigningFailure厳密名の署名または暗号化キーの操作に失敗しました。

この分類は、--strict-exit が有効でない場合でも、JSON/NDJSON の結果レコードに exitReason として出力されます(結果エンベロープを参照)。そのため、出力を利用する側は、数値の終了コードとは別に失敗の種類を区別できます。

babel myapp.exe --strict-exit --format=json echo "exit=$?"

スキーマ:babel.cli.v1

構造化されたペイロードはすべて、バージョン管理された babel.cli.v1 スキーマに準拠しています。スキーマの同じメジャーバージョン内では、追加的な変更(新しいフィールド、新しいイベントコード、新しい終了理由)が許可されます。互換性を損なう変更がある場合は、スキーマ名が変わります。

イベントレコード

実行中に出力される診断は、すべてイベントに対応付けられます。

event
{ "ts": "2026-05-08T14:32:11.482Z", "level": "info", "code": "BAB1234", "message": "Renaming phase, elapsed time 00.082s", "data": { "phase": "renaming", "elapsedMs": 82 } }
フィールド型備考
ts文字列(ISO-8601、UTC)イベントが生成された時点のタイムスタンプ。
leveldebug | info | warning | error重大度。
code文字列 | null該当する場合は Babel の診断コード(たとえば BAB1234、W00013)。
message文字列人が読むためのメッセージ。
dataオブジェクト | nullイベントに添付される任意の構造化ペイロード。

結果エンベロープ

—format=json

実行が終了すると、単一の JSON オブジェクトが stdout に書き出されます。このオブジェクトには、実行全体の要約と、実行中にバッファリングされたすべてのイベントが含まれます。

result (json)
{ "exitCode": 0, "exitReason": "success", "elapsedMs": 4218, "warnings": 1, "errors": 0, "events": [ { "ts": "2026-05-08T14:32:09.500Z", "level": "info", "code": null, "message": "Babel Obfuscator 11.7.0.0", "data": null }, { "ts": "2026-05-08T14:32:11.482Z", "level": "info", "code": "BAB1234", "message": "Renaming phase ...", "data": { "phase": "renaming" } }, { "ts": "2026-05-08T14:32:13.012Z", "level": "warning", "code": "W00013", "message": "Could not resolve ...", "data": null } ] }

—format=ndjson

各イベントは、生成されるとすぐに、それぞれ 1 行としてフラッシュされます。最後のイベントの後に、最終的な結果の行が追加されます(イベントはすでにストリームとして出力されているため、events 配列は含まれません)。

result (ndjson)
{"ts":"2026-05-08T14:32:09.500Z","level":"info","code":null,"message":"Babel Obfuscator 11.7.0.0","data":null} {"ts":"2026-05-08T14:32:11.482Z","level":"info","code":"BAB1234","message":"Renaming phase ...","data":{"phase":"renaming"}} {"ts":"2026-05-08T14:32:13.012Z","level":"warning","code":"W00013","message":"Could not resolve ...","data":null} {"exitCode":0,"exitReason":"success","elapsedMs":4218,"warnings":1,"errors":0}
フィールド型備考
exitCode整数プロセスが実際に返した数値の終了コード(--strict-exit の有無に応じて、従来のコードまたは厳密なコード)。
exitReason文字列安定した分類トークン。--strict-exit を指定しなくても、常に意味上の分類を反映します。
elapsedMs整数実経過時間の合計(ミリ秒)。
warnings整数warning レベルのイベントの数。
errors整数error レベルのイベントの数。
events配列 | nulljson モードでは含まれ、ndjson では省略されます(イベントは個別の行としてストリーム出力されます)。

機械可読な —help

babel --help --format=json は、公開されているすべてのオプションの完全な説明を出力します。CLI の仕様を調べる必要があるツール(シェル補完、AI エージェント、ドキュメント生成ツール)に適しています。

--help --format=json (excerpt)
{ "version": "11.7.0.0", "usage": "babel.exe <primary assembly source> [<other assemblies>...] [options]", "options": [ { "name": "controlflow", "aliases": ["nocontrolflow", "no-controlflow", "control-flow", "no-control-flow", "i"], "description": "Enable ([no]disable) MSIL control flow obfuscation", "args": null, "argRequired": false, "argOptional": false, "negatable": true, "incremental": false, "container": "scalar", "type": "boolean", "group": "- Code Obfuscation -", "details": "Use this option to alter the method control flow ..." } ] }

範囲を絞った形式もサポートされています。babel --help controlflow --format=json は同じエンベロープを出力しますが、含まれるのは controlflow オプションだけです(その details は、オプションのリソースバンドルから解決されます)。

非表示のオプションや内部用のオプションが返されることはありません。

機械可読な —version

babel --version --format=json は、ランタイムとプラットフォームの情報を出力します。

--version --format=json
{ "product": "Babel Obfuscator", "version": "11.7.0.0", "fileVersion": "11.7.0.0", "runtime": ".NET 8.0.11", "platform": "win-x64" }

platform フィールドには、.NET 5 以降で実行している場合は .NET の RuntimeIdentifier(RID)が、従来のターゲットでは合成した <os>-<arch> 形式の文字列(net472-x64、unix-x64 など)が使用されます。

後方互換性

  • --format の既定値は text です。新しいフラグを指定しない場合、従来のテキスト出力、終了コード、動作は変わりません。
  • --strict-exit を指定しない場合、プロセスはこれまでどおり成功時に 0、失敗時に 1 を返します。$? で分岐する既存の CI ゲートは引き続き機能します。
  • --quiet は独立しており、構造化出力を有効にしなくても使用できます。

構造化出力は、MSBuild タスクと Babel.Obfuscator NuGet パッケージでも、標準のプロパティや引数の受け渡しを通じて同じフラグを渡すことで利用できます。

Last updated on