Custom lint
- Dart kursu
- Uzman
- Ders 29/47
- 5 dk
Custom lint kuralı yazmayı öğrenirsin.
Custom lint
custom_lint, özel lint maddeleri yazmanı sağlayan bir pakettir. analyzer üzerine kurulu olur; her madde bir AST düğümünü denetler.
Bir lint maddesi LintRule sınıfını kalıtır: name (madde adı), message (uyarı metni) ve run metodu (denetim mantığı).
Çalıştırma: dart pub run custom_lint. Maddeler projedeki tüm dosyaları gezer ve ihlal bulduğunda uyarı verir. IDE eklentisi ile gerçek zamanlı çalışır.
Madde bildirimi
Bir lint maddesi şu parçaları bildirir: name (benzersiz tanımlayıcı, örn. avoid_print), message (ihlal mesajı) ve run metodu.
run metodu bir ResolvedUnitResult alır (çözümlenmiş kaynak). İçinde AST'yi gezip ihlal bulunca reporter.reportError(...) çağrılır.
Maddeler bir eklenti (plugin) içinde toplanır: class MyPlugin extends PluginLintPlugin. Bu eklenti analysis_options.yaml ile etkinleştirilir.
Uygulama LintRule iskeleti tanımla
Bir LintRule sınıfı tanımla: final String name; ve final String message; alanları, LintRule(this.name, this.message); kurucusu ve void report() => print('[$name] $message'); metodu. main içinde final rule = LintRule('avoid_print', 'print() kullanmayın'); yarat ve rule.report(); çağır.
Başlangıç kodu
void main() {
// LintRule sınıfını tanımla (name, message alanları; report metodu)
// bir madde yarat; report'u çağır
}Örnek çözüm
class LintRule {
final String name;
final String message;
LintRule(this.name, this.message);
void report() => print('[$name] $message');
}
void main() {
final rule = LintRule('avoid_print', 'print() kullanmayın');
rule.report();
}Beklenen çıktı
[avoid_print] print() kullanmayın
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 LintRule kalıtımı
class AvoidPrintRule extends ____ { }
class AvoidPrintRule extends LintRule { }
Açıklama: her özel lint maddesi LintRule sınıfını kalıtır.
2 Lint madde parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
LintRule |
Madde tabanı |
name |
Madde adı |
message |
Uyarı metni |
AstVisitor |
Düğüm ziyareti |
3 custom_lint maddesi neyi kalıtır?
- LintPlugin
- LintRule Doğru cevap
- Diagnostic
- AnalyzerConfig
Açıklama: her madde LintRule sınıfını kalıtır.