CodeBlanks Logo Icon CodeBlanks

Custom lint

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

main.dart
void main() {
  // LintRule sınıfını tanımla (name, message alanları; report metodu)
  // bir madde yarat; report'u çağır
}

Örnek çözüm

main.dart
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ı

Soru
class AvoidPrintRule extends ____ { }
Cevap
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.

Uzman bölümündeki tüm dersler