2017-02-10 1 views
2

Wir haben eine Utility-Klasse haben: JsonRequestBuilderCheck überprüfen, ob eine bestimmte Klasse nur in einem bestimmten Paket oder subpackage verwendet wird

Ich möchte nur, dass diese Klasse im Innern verwendet wird „Datamanager“ Pakete (oder Subpackages) und nicht in ui Code und so weiter.

So JsonRequestBuilder in Verpackungen verwendet werden kann, wie

be.knarf.datamanager 
be.knarf.datamanager.special it is also ok 

Aber nicht in Paketen wie

be.knarf.screens 

Wer weiß, wie dies zu tun? Kann dies mit einer der Regex-Prüfungen geschehen?

Antwort

1

Mit Checkstyle wird dies normalerweise unter Verwendung der ImportControl Prüfung erreicht. Im Grunde können Sie angeben, welche Importe in welchen Paketen zulässig sind, und dies in Ihrer Codebasis überprüfen.

Eine Einschränkung ist, dass es im Code keine voll qualifizierten Verweise auf Klassen findet, es prüft nur Importe. Aber das ist immer noch sehr hilfreich.

1

Entschuldigung, dass Sie nicht mit checkstyle geantwortet haben, aber Sie können JsonRequestBuilder nicht in das Paket be.knarf.datamanager setzen und den öffentlichen Modifikator aus der Klasse entfernen, so sollte es Paket privat sein.

+0

Der Paketbaum möglicherweise zu kompliziert, um es zu ermöglichen –

+0

Das funktioniert nicht, Paket privat bedeutet, dass es auch nicht in Unterpaketen sichtbar ist. –

+0

JsonRequestBuilder ist eigentlich eine Klasse aus einer selbst geschriebenen Bibliothek, die von mehreren unserer Projekte verwendet wird. In all diesen Projekten gibt es ein Datamanager-Paket. Und JsonRequestBuilder sollte nur innerhalb dieser Pakete (oder deren Unterpaketen) verwendet werden. Wie Mad Physicist sagt, ist der Paketbaum zu kompliziert. – Knarf

Verwandte Themen