Wir versuchen, unsere sehr große Codebasis von Guava 11 nach Guava 14 zu verschieben und möchten die Verwendung von entfernten oder veralteten APIs ermitteln. Können FindBugs solche Prüfungen durchführen? Wenn das so ist, wie?Kann FindBugs verwendet werden, um Code zu kennzeichnen, der eine Methode verwendet, die auf der schwarzen Liste steht?
Antwort
Eine Lösung wäre, den Java-Compiler javac
von Oracle dazu zu verwenden.
Entfernte Methoden in der API würden zu Compilerfehlern führen, wenn sie verwendet werden, daher sollte es möglich sein, diese durch Kompilieren des Codes zu finden.
Veraltete Methoden können mit der Option javac -deprecation
gefunden werden. Mehr zu -deprecation
hier: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/javac.html
Sie könnten auch PMD verwenden Sourceforge für diese Aufgabe. Es gibt Regeln, die Sie veraltete Methoden finden können
Ein Aspekt, den ich glaube javac
wird nicht abdecken, ist, wenn Sie den Code von Drittanbietern nicht ändern können, um @Deprecated
Annotationen hinzuzufügen. Wenn Sie nur eine Methode zu vermeiden, die als veraltet markiert wurde nicht, können Sie dieses Plugin verwende ich für FindBugs schrieb:
https://github.com/Grundlefleck/FindBugs4Deprecating3rdParty
Es gibt sehr wenig Dokumentation, so dass Sie sich ein wenig erkunden benötigen. Es ermöglicht das Konfigurieren von Methoden und Klassen in einer Eigenschaftendatei. Ich verwende es, um org.junit.Assert.assertThat
zu verwerfen.
Unsere Codebasis ist eine riesige Wald von Modulen mit (derzeit) unbekannten Abhängigkeiten und verschiedenen Möglichkeiten, sich selbst zu bauen. Wenn Guava 14 dort rausgeworfen wurde, werden viele Builds kaputt gehen (vielleicht mit Laufzeitfehlern) und können nicht repariert werden, bis ihre Abhängigkeiten behoben sind. –
Also, was ist das Problem? Sie wissen jetzt, welche Abhängigkeiten behoben werden müssen. –
Ich bin mir nicht sicher, ob ich das Problem auch verstehe. Sie müssen nicht "durch Guava 14 da draußen" gehen. Mach einfach die Kompilation lokal, bevor du irgendetwas begehst. – uldall