Pakete, Repositories und App-Kategorien suchen

Paketdetailsv1.0.0

global_assert

Eine Mikrobibliothek, die es einfach macht, Laufzeit-Assertions über Konstanten durchzuführen, sodass fehlerhaft konfigurierte Apps bereits zur Build-Zeit fehlschlagen und nicht erst zur Laufzeit.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
9570
Likes
7
Pub-Punkte
160

Paket installieren

flutter pub add global_assert

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

GlobalAssert ist ein leichtgewichtiges Dart-Paket, das Build-Time-Assertion für Konstanten ermöglicht und so Fehler in der Konfiguration frühzeitig während des Builds statt zur Laufzeit aufdeckt. Durch die Überprüfung kritischer Werte zur Kompilierzeit verbessert es die Zuverlässigkeit der Anwendung und verringert das Risiko stummer Ausfälle in der Produktion. Ideal zum Durchsetzen von Invariantenbedingungen bei statischen Daten, lässt es sich nahtlos in Flutter-Projekte auf allen wichtigen Plattformen integrieren.

Anwendungsfälle

  • Überprüfung von Konfigurationskonstanten
  • Vermeidung von Laufzeitfehlern durch falsche Konfigurationen
  • Einhaltung von Invariantenprüfungen während des Builds
  • Verbesserung der Testzuverlässigkeit
  • Frühe Erkennung ungültigen Zustands
  • Sichere Initialisierung sicherstellen

Hauptmerkmale

  • Auswertung von Assertions zur Build-Zeit
  • Einfaches API für konstante Validierung
  • Keine Laufzeitüberhead
  • Plattformübergreifende Unterstützung
  • Integration in das Flutter-Buildsystem
  • Minimale Abhängigkeits-Spur

Geeignet für

  • Entwickler, die Bauteilsicherheit priorisieren
  • Teams, die statische Analyse zur Qualitätskontrolle verwenden
  • Projekte mit strengen Konfigurationsanforderungen
  • Flutter-Anwendungen, die robuste Initialisierungsprüfungen erfordern
  • CI/CD-Pipelines, die eine frühe Fehlererkennung benötigen

Hinweise

  • Funktioniert nur mit Kompilierzeit-Konstanten
  • Beschränkt auf einfache boolesche Bedingungen
  • Ersetzt die Laufzeitüberprüfung nicht
  • Erfordert Verständnis der Ausführung zur Build-Zeit
  • Kann die Build-Zeit leicht erhöhen
  • Nicht geeignet für dynamische oder vom Benutzer bereitgestellte Daten

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

A micro-library for asserting at build time.

pub package Build Status Coverage

It's a common practice to configure a Dart app using const (build-time) values. There are benefits to this approach, such as enabling tree shaking of unused code.

This library makes it easy to do build-time assertions about such constants so that misconfigured apps fail at build-time instead of failing at runtime.

Usage

Use this library to validate your app's const values at build time. Anything can be annotated with @Assert.

//
// This app will fail compilation with '--define=MY_VAL=foo'
//

@Assert(
  myBuildTimeVal == 'val1' || myBuildTimeVal == 'val2',
  'myBuildTimeVal must be one of "val1" or "val2"',
)
const myBuildTimeVal = String.fromEnvironment('MY_VAL');

void main() {
  print('myBuildTimeVal is "$myBuildTimeVal"');
}

FAQ

🤔 How does this even work?!

The Dart compiler invokes annotation constructors at compile-time. This micro-library takes advantage of that to "trick" the compiler into allowing build-time asserts that can be placed (almost) anywhere. Special thanks to Kyle Turney for the inspiration behind this approach.

Why not allow an assert without a message?

Unfortunately, Dart doesn't treat an assert with a null message the same as an assert without any message at all. This means that we would need two constructors for @Assert to enable both messageless asserts and asserts with messages. Instead, we made the design choice when creating this micro-library that @Assert should require a non-null message. This enforces more meaningful compilation failure messages.

Will this always be needed?

We expect that when Dart supports metaprogramming, this library will be deprecated.

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.