M-Trust API Guard
Automatisierte semantische Versionierung für Dart- und Flutter-Pakete: API Guard analysiert die öffentliche API eines Pakets, erkennt Breaking Changes, erhöht die Versionsnummer und schreibt den Changelog — Schluss mit dem Rätselraten, ob ein Release ein Patch oder ein Major ist.
Semantische Versionierung stellt eine Frage, die die meisten Teams über den Daumen beantworten: Ist dieses Release ein Patch, ein Minor oder ein Major? API Guard beantwortet sie, indem es den Code liest.
Das Werkzeug läuft die öffentliche API eines Dart-Pakets ab, schreibt sie als strukturierten Snapshot heraus und vergleicht ihn mit einem früheren aus einer beliebigen Git-Referenz. Was dabei herauskommt, bestimmt den Versionssprung und den Changelog-Eintrag. Ein entfernter Parameter ist ein Major, ein neuer optionaler ein Minor. Niemand muss sich das merken.
Weil Teams Ausnahmen brauchen, lässt sich die Einstufung pro Element in der analysis_options.yaml steuern: interne Klassen unterdrücken, bei Experimentellem lockerer sein, bei kritischen Teilen strenger. In Workspaces bekommt jedes Paket eigene Version und eigenen Tag, und die Constraints zwischen den Paketen werden im selben Durchlauf mitgezogen.
Entstanden ist das Ganze im Zweierteam bei Merck, veröffentlicht hat es die EMD Group als Open Source. Von mir kamen Analyse und Vergleich sowie der Umgang mit Git. Für einen Vergleich kurz auf eine andere Referenz zu wechseln ist genau die Art Komfortfunktion, die fremde uncommittete Arbeit frisst, wenn man sie falsch baut.
- Im Zweierteam entwickelt
- Open Source von EMD Group / Merck
- Statische Analyse von Dart-API-Signaturen
Interesse an etwas Ähnlichem?