رفتن به محتوا
فارسی

خطاها و عیب‌یابی

این مستندات محدودهٔ نهایی پیش‌انتشار آزمایشی v0.0.18 را شرح می‌دهند. وضعیت انتشار واقعی و فایل‌های دانلود در GitHub Releases ثبت می‌شوند. پیام‌های تشخیصی کامپایلر ممکن است در طول توسعهٔ آزمایشی تغییر کنند. هنگام گزارش مشکل، نسخهٔ CLI، شناسهٔ Git commit، مسیر اجرا، فرمان کامل و کد منبع حداقلی را درج کنید.

پایانه
ku --version
ku -h
ku check hello.ku

اگر ku پیدا نمی‌شود، فایل اجرایی را از پوشهٔ استخراج‌شده فراخوانی کنید. در Windows از ku.exe استفاده کنید. اگر ساخت پیش‌فرض Rust یا کتابخانه‌های پیوند را ندارد، نیازمندی‌های نصب را بررسی کنید و به‌جای کپی کردن تنها CLI، چیدمان کامل بایگانی را حفظ کنید.

بررسی عادی، فایل، محل کد، بخش مربوط و راهنمای اصلاح موجود را گزارش می‌کند. یکپارچه‌سازی ابزارها می‌تواند از این فرمان استفاده کند:

پایانه
ku check --json hello.ku

خروجی JSON Lines است؛ هر خط یک پیام تشخیصی دارد. فیلدها شامل level، ‏code، ‏message، ‏file، ‏line، ‏column، ‏endLine، ‏endColumn، ‏notes و helps هستند. موفقیت خروجی ندارد؛ نبود خروجی JSON به معنی اجرا نشدن بررسی نیست.

تشخیص علت رایج اقدام
E0105 استفاده از let متغیر را با اولین انتساب تعریف کنید
E0302 شرط غیر bool در if / while مقایسهٔ بولی صریح بنویسید
E0601 ماژول ناشناختهٔ کتابخانهٔ استاندارد مسیر واقعی ماژول، مانند std.json، را بررسی کنید
E0605 نبود واردسازی صریح لازم ماژول را مثلاً با import fs from "std.fs" وارد کنید
E0901 خواندن مقدار منتقل‌شده مقدار مستقل را صریحاً تکثیر کنید یا از امانت‌گیری همگام پشتیبانی‌شده استفاده کنید
E0913 پارامتر امانت‌گرفتهٔ ناهمگام پارامتر مالک‌شده به کار ببرید؛ اگر اصل مقدار لازم است در فراخوان تکثیر کنید
E0918 نوشتن &value در محل فراخوانی آرگومان عادی بدهید؛ امانت‌گیری در امضا تعریف می‌شود

این جدول خلاصهٔ تشخیص‌های ثبت‌شده است و همهٔ خطاها را فهرست نمی‌کند. مرجع معتبر فعلی src/error.rs است.

مقادیر domain/code در Error زمان اجرا از کدهای 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 گزارش‌شده یک فاصلهٔ بایتی UTF-8 با شروع از صفر است. این مقدار شمارش نویسه‌های اطراف متن چینی یا ایموجی نیست.

موفقیت ku check تنها موفقیت بررسی بخش جلویی را ثابت می‌کند. C بومی و LLVM هرکدام محدودیت قابلیت دارند. اگر ساختاری صریحاً رد شد، جدول پشتیبانی را بررسی کنید. افزایش مهلت یا موفقیت در مسیر دیگر، مسیر پشتیبانی‌نشده را تأیید نمی‌کند.

ku build --native file.ku بدون -o فقط C می‌نویسد. برای کامپایل و پیوند فایل اجرایی از ku build --backend c file.ku استفاده کنید و زنجیره‌ابزار C مقصد را نصب کنید.

خطاهای پایگاه دادهٔ execution_unknown و execution_completed_without_result نباید باعث اجرای مجدد خودکار شوند. شواهد درخواست و عملیات تجاری را حفظ کنید و ابتدا وضعیت واقعی اجرا را مشخص کنید. بررسی وب‌سایت محلی به اتصال پایگاه دادهٔ محیط عملیاتی نیاز ندارد.

برای جزئیات بیشتر راهنمای تشخیص مخزن را ببینید.