コンテンツにスキップ
日本語

エラーとトラブルシューティング

0.0.18 スナップショット対応範囲と制約 ↗

本書は実験的プレリリース v0.0.18 の確定した範囲を説明します。実際の公開状況とダウンロードは GitHub Releases を確認してください。実験的開発中はコンパイラー診断が変わることがあります。問題を報告するときは、CLI のバージョン、Git コミット、バックエンド、完全なコマンド、最小のソースを添えてください。

ターミナル
ku --version
ku -h
ku check hello.ku

ku が見つからない場合は、展開先ディレクトリから実行ファイルを呼び出してください。Windows では ku.exe を使用します。既定のビルドで Rust やリンク用ライブラリが不足する場合は、インストール要件を確認し、CLI だけをコピーせず、アーカイブ全体の配置を維持してください。

通常のチェックは、ファイル、ソース位置、該当箇所、利用可能な修正案を表示します。ツール連携には次の形式が使用できます:

ターミナル
ku check --json hello.ku

出力は JSON Lines で、1 行につき 1 件の診断です。フィールドには level、code、message、file、line、column、endLine、endColumn、notes、helps があります。成功時は何も出力しません。JSON 出力がないことは、チェックが実行されなかったことを意味しません。

診断 よくある原因 対処
E0105 let を使用している 最初の代入で変数を宣言する
E0302 if / while の条件が bool ではない 明示的な真偽値の比較を書く
E0601 不明な標準ライブラリモジュール std.json など、実際のモジュールパスを確認する
E0605 必須の明示的インポートがない import fs from "std.fs" などでモジュールをインポートする
E0901 ムーブ済みの値を読んでいる 独立した値を明示的にクローンするか、対応する同期借用を使用する
E0913 非同期パラメーターを借用している 所有パラメーターを使い、元の値が必要なら呼び出し側でクローンする
E0918 呼び出し側で &value と書いている 通常の引数を渡す。借用はシグネチャで宣言する

これは登録済み診断の概要であり、すべてのエラーの一覧ではありません。現在の正式な登録情報は src/error.rs にあります。

実行時 Error の domain/code 値は、コンパイラーの E コードとは別です。不正な JSON は json/parse_error、存在しないオブジェクトキーは object/missing_key を返すことがあります。失敗する可能性のある呼び出しには ? を付けるか、try/catch でフィールドを読みます。

import json from "std.json"
fn main() {
try {
json.parse("[1,]")?
} catch (error) {
println(error.domain)
println(error.code)
println(error.message)
}
}

この学習用プログラムは、意図的に回復可能な解析エラーを起こします。報告される byte N は、0 始まりの UTF-8 バイトオフセットです。中国語や絵文字を含む場合の文字数ではありません。

ku check の成功が示すのはフロントエンドのチェック成功だけです。ネイティブ C と LLVM にはそれぞれ機能上の制約があります。構文が明示的に拒否された場合は、対応表を確認してください。タイムアウトを延長したり、別のバックエンドで成功したりしても、未対応の経路の検証にはなりません。

-o なしの ku build --native file.ku は C だけを書き出します。実行ファイルをコンパイルおよびリンクするには、ku build --backend c file.ku を使用し、ターゲット用 C ツールチェーンをインストールしてください。

データベースエラー execution_unknown と execution_completed_without_result を理由に自動再実行してはいけません。リクエストと業務上の証拠を保管し、まず実際の実行状態を確認してください。ローカルのウェブサイトの検証に本番データベースへの接続は不要です。

詳しくはリポジトリの診断ガイドを参照してください。