Wir haben Google-Sammlungen mehrere Monate lang in der Produktion verwendet. Wir möchten Guava für zusätzliche Funktionen verwenden. Allerdings habe ich Angst, Guava in unseren Produkt-Stack zu bringen. B / c Einige Entwickler beginnen vielleicht, Beta-Klassen zu verwenden.
Wir haben verschiedene Komponententests in unserem Code, aber zu diesem Zeitpunkt bevorzuge ich es, die "Beta" -Klasse b / c nicht einzubeziehen, da sie sich in Zukunft ändern kann.
Gibt es einen einfachen Weg zu erkennen, ob das Projekt irgendwelche "Beta" -Guava-Klassen enthält?
Overstock.com hat kürzlich ein Findbugs-Plugin veröffentlicht, das die Verwendung von @Beta kennzeichnet Klassen, Methoden oder Felder.
Anscheinend hat Google Guava eine @Beta
Annotation, die angibt, welche Klassen oder Methoden Sie nicht verwenden möchten.
Leider ist diese Annotation @Retention(value=CLASS)
, die ich noch nie benutzt habe, aber da sie in .class
files gespeichert werden soll, könnte es bedeuten, dass sie immer noch für Class.getDeclaredAnnotations()
. Wenn nicht, müssen Sie CGLIB oder eine ähnliche Bytecode-Level-Bibliothek verwenden, um sie zu finden.
Gegebenenfalls möchten Sie Ihre CI-Anwendung instrumentieren oder Ihrer App einen Prüfling-Classloader hinzufügen, um die Verwendung der Beta-API zu erkennen.
Wenn Sie Eclipse verwenden, sind Zugriffsregeln eine Option. Sie erhalten einen Kompilierungsfehler, wenn Sie eine eingeschränkte Klasse importieren oder anderweitig verwenden.
Hier finden Sie eine Liste von Guavas Beta-Klassen .Sie müssen anderen Entwicklern sagen, dass sie diesen Link überprüfen müssen, bevor sie eine Guava-Klasse verwenden.
Ich dachte, du könntest wahrscheinlich Reflektionen dafür verwenden, wenn du eine Liste mit Beta-Klassen hast, die du mit Gilis Link verwenden kannst. Dann wird es ziemlich einfach - sehen Sie einfach diese Antwort:
Können Sie alle Klassen in einem Paket mithilfe von finden? Reflexion?
Ich würde das wahrscheinlich einfach in einen Komponententest setzen und den Komponententest fehlschlagen lassen, wenn er eine Klasse sieht, die Sie nicht mögen.