Derleyici, derlemeyi durdurmayan tanısal bilgileri warnings dizisiyle döndürür. Her uyarı nesnesi şu alanlara sahiptir:
type LuisCompileWarning = { code: string line: number message: string}Politika
Section titled “Politika”İki politika vardır: fail-closed ve fail-soft.
| Politika | Limit aşımında davranış |
|---|---|
fail-closed | Compile error üretir, derlemeyi durdurur |
fail-soft | resource-limit uyarısı üretir, derleme devam eder |
Varsayılan politika fail-closed'dır. debug: true verildiğinde varsayılan politika fail-soft'a geçer.
Uyarı Kodları
Section titled “Uyarı Kodları”Söz Dizimi
Section titled “Söz Dizimi”| Kod | Tetiklenme Senaryosu |
|---|---|
missing-semicolon | Bir declaration veya composition satırında ; eksik |
invalid-syntax | Geçersiz .luis söz dizimi — tip tanımında mevcut; bu senaryolar genellikle error-path davranışıdır, uyarı olarak emit edilmez |
Direktif Sırası ve Konumu
Section titled “Direktif Sırası ve Konumu”| Kod | Tetiklenme Senaryosu |
|---|---|
invalid-directive-order | @charset, @layer gibi direktifler yanlış sırada yazıldı |
invalid-directive-position | Bir direktif izin verilmeyen konumda kullanıldı |
Import
Section titled “Import”| Kod | Tetiklenme Senaryosu |
|---|---|
unsupported-import | Derleyicinin desteklemediği import biçimi veya importResolver tanımlı değilken .luis import'u var |
import-not-found | importResolver null döndürdü — import çözümlenemedi |
import-cycle | İki veya daha fazla .luis dosyası birbirini import ediyor |
invalid-import-url | Güvensiz veya desteklenmeyen URL kullanıldı (javascript: vb.) |
duplicate-import-variable | Aynı değişken farklı import'lardan birden fazla kez tanımlandı |
Değişken ve Döngü
Section titled “Değişken ve Döngü”| Kod | Tetiklenme Senaryosu |
|---|---|
invalid-array-range-unit | Array aralığında başlangıç ve bitiş birimleri farklı ([1px-3rem] gibi) |
invalid-object-loop-access | @for döngüsünde object olmayan bir değere object key erişimi denendi |
Fonksiyon
Section titled “Fonksiyon”| Kod | Tetiklenme Senaryosu |
|---|---|
invalid-function-syntax | Fonksiyon tanımlama söz dizimi geçersiz |
invalid-function-name | Fonksiyon adı geçersiz karakter içeriyor |
duplicate-function | Aynı isimde iki fonksiyon tanımlandı |
unknown-function-call | Tanımlanmamış bir fonksiyon çağrıldı |
invalid-function-call | Fonksiyon çağrısı geçersiz biçimde yapıldı |
function-argument-mismatch | Çağrıdaki parametre sayısı tanımdakiyle eşleşmiyor |
function-recursion | Fonksiyon kendini çağırıyor |
| Kod | Tetiklenme Senaryosu |
|---|---|
resource-limit | Yalnızca fail-soft modunda: bir kaynak limiti aşıldı |
Varsayılan Limit Değerleri
Section titled “Varsayılan Limit Değerleri”Derleme Limitleri
Section titled “Derleme Limitleri”| Limit | Varsayılan | Açıklama |
|---|---|---|
maxForIterationsPerLoop | 2.000 | Tek bir @for döngüsündeki maksimum iterasyon sayısı |
maxNestedLoopProduct | 100.000 | İç içe döngülerde iterasyon çarpımı sınırı (i × j × k…) |
maxExpandedRules | 50.000 | Derlemede üretilebilecek maksimum kural sayısı |
maxOutputCssChars | 3.000.000 | Final CSS çıktısının maksimum karakter sayısı |
maxImportDepth | 64 | Import zincirinde izin verilen maksimum derinlik |
maxImportCount | 2.000 | Derleme sırasında çözümlenebilecek toplam import adedi |
maxImportedBytes | 4.000.000 | Import edilen toplam kaynak karakter/byte bütçesi |
Observed Runtime Bütçeleri
Section titled “Observed Runtime Bütçeleri”| Limit | Varsayılan | Açıklama |
|---|---|---|
maxObservedRules | 5.000 | Derleme sırasında kabul edilebilecek toplam observed kural sayısı |
maxObservedActiveRules | 1.000 | Runtime'da aynı anda aktif kalabilecek observed kural sayısı |
maxObservedRuleKeysPerToken | 300 | Runtime index'inde tek bir token için tutulabilecek maksimum rule key sayısı |
maxMutationBatchTokens | 1.500 | Runtime'da tek bir mutation batch içinde işlenebilecek token sayısı |
maxObservedReevalPerTick | 500 | Runtime'da tek bir tick içinde yeniden değerlendirilebilecek observed kural sayısı |
Fail-Soft Output Contract
Section titled “Fail-Soft Output Contract”resourcePolicy: 'fail-soft' aktifken her hata tipinde derleme durumu ve üretilen çıktı:
| Hata Tipi | Çıktı | Uyarı Kodu |
|---|---|---|
Eksik ; | Kural olduğu gibi üretilir | missing-semicolon |
| Geçersiz selector | Genel bir uyarı üretilmez; selector metni genelde olduğu gibi emit edilir. Bazı observed suffix hataları static selector'e düşürülür. Yapısal syntax hataları derlemeyi hata ile durdurur. | — |
Geçersiz ${...} ifadesi | Uyarıya çevrilmez; Invalid .luis syntax ... hatası fırlatır ve derlemeyi durdurur. Boş string'e çevrilmez. | — |
Bilinmeyen @fun çağrısı | Çağrı atlanır | unknown-function-call |
| Parametre sayısı uyuşmazlığı | Çağrı açılmaz | function-argument-mismatch |
Güvensiz veya desteklenmeyen @import URL | Import atlanır | invalid-import-url |
| Import depth / count / imported-bytes limit aşımı | resource-limit uyarısı üretilir; limit aşan import dalı kesilir | resource-limit |
| Loop / iç içe döngü limit aşımı | resource-limit uyarısı üretilir; limiti aşan döngü bloğu atlanır | resource-limit |
| Expanded rule limit aşımı | resource-limit uyarısı üretilir; fazla kurallar limite kesilir | resource-limit |
| Observed rule limit aşımı | resource-limit uyarısı üretilir; non-observed kurallar korunur, observed kurallar limite filtrelenir | resource-limit |
| Final CSS boyut limit aşımı | resource-limit uyarısı üretilir; CSS çıktısı olduğu gibi döndürülür, kısılmaz | resource-limit |
Limit Aşımında Fail-Soft Davranışı
Section titled “Limit Aşımında Fail-Soft Davranışı”fail-soft modunda her limitin aşım davranışı farklıdır:
| Limit Aşımı | Davranış |
|---|---|
| Import depth / count / imported-bytes limiti | resource-limit uyarısı üretilir; limiti aşan import dalı çözümlemede kesilir |
| Loop iterasyon / iç içe döngü çarpım limiti | resource-limit uyarısı üretilir; limiti aşan döngü bloğu atlanır |
| Expanded rule limiti | resource-limit uyarısı üretilir; fazla kurallar limite kesilir |
Observed rule limiti (maxObservedRules) | resource-limit uyarısı üretilir; non-observed kurallar korunur, observed kurallar limite filtrelenir |
| Final CSS boyut limiti | resource-limit uyarısı üretilir; CSS çıktısı olduğu gibi döndürülür, kısılmaz |
Mutation batch limiti (maxMutationBatchTokens) | resource-limit uyarısı üretilir; işlenecek token seti limite kesilir |
Observed reevaluation limiti (maxObservedReevalPerTick) | resource-limit uyarısı üretilir; yeniden değerlendirilecek rule key seti limite kesilir |
Aktif observed kural limiti (maxObservedActiveRules) | resource-limit uyarısı üretilir; aktif rule key seti limite kesilir |