Wie verhindere ich die Verwendung von Beta-Klassen aus der Google Guava Library?

8

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?

    
mjlee 27.12.2010, 15:23
quelle

6 Antworten

2

Richten Sie in Ihren Komponententests einen Aspekt zum Protokollieren und / oder Fehlschlagen ein, wenn eine der Beta-Klassen (oder eine unerwünschte Klasse) verwendet wird.

    
DwB 27.12.2010 15:28
quelle
1

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.

    
Cerber 27.12.2010 15:50
quelle
1

Wenn Sie Eclipse verwenden, sind Zugriffsregeln eine Option. Sie erhalten einen Kompilierungsfehler, wenn Sie eine eingeschränkte Klasse importieren oder anderweitig verwenden.

    
meriton 27.12.2010 16:18
quelle
0

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.

    
Emil 30.12.2010 07:03
quelle
0

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.

    
Evan Reynolds 01.08.2016 03:44
quelle

Tags und Links