verbieten, nehme an, ich habe eine externe Bibliothek mit einer Klasse namens Foo. Ich kann Foo nicht ändern, um einen privaten Konstruktor zu haben, aber ich habe eine FooFactory-Klasse, die ich geschrieben habe.checkstyle - Initialisiere Objekt vom Typ
So habe ich FooFactory.getAFoo()
, aber ich will checkstyle, um alle new Foo()
im Rest meines Codes zu fangen, um die Verwendung der Fabrik zu erzwingen.
Ich habe dies:
<module name="IllegalTokenText">
<property name="tokens" value="LITERAL_NEW"/>
<property name="format" value="Foo"/>
</module>
aber dies scheint nicht zu einem new Foo()
zu erkennen.
Ich könnte eine Regex verwenden, aber das ist viel sauberer.
Ich hatte ein ähnliches Problem mit der Verhinderung einer Klasse erweitern:
<module name="IllegalTokenText">
<property name="tokens" value="EXTENDS_CLAUSE"/>
<property name="format" value="AndroidTestCase"/>
</module>
Keines dieser Check Modul scheint überhaupt etwas zu tun.
Was mache ich falsch?