2010-02-11 12 views
9

Muszę posprzątać stary projekt i ogólna wiedza jest taka, że ​​projekt zawiera dużo nieużywanego kodu, który możemy usunąć. To zaoszczędziłoby pewnych bólów głowy i ułatwiłoby konserwację.Znajdź nieużywany kod w modułowym projekcie Maven

Znalazłem plugin Eclipse Core Tools, który wygląda jak świetne narzędzie, ale w naszym przypadku mamy projekt Maven2, który jest podzielony na 3 moduły. Nie mogę wydawać się być w stanie uruchomić "znaleźć członków bez odniesienia" w projekcie nadrzędnym, a kiedy uruchomić go na jednym z modułów ignoruje całkowicie fakt, że inne moduły mogą być przy użyciu niektórych członków publicznych ..

Ktoś pokonał tę kwestię? Lub znaleźć inny sposób, aby przejść o tym?

Dzięki.

Odpowiedz

9

gdy uruchomię go na jednym z modułów ignoruje całkowicie fakt, że pozostałe moduły mogą być za pomocą niektórych członków publicznych ...

Tak, to jest problem, i dlatego nie nie jest rzeczywistym deterministycznym sposobem znalezienia nieużywanego kodu, o czym przypomina @cletus w this previous answer.

Mając to powiedziane, narzędzia takie jak PMD (i jego reguła unusedcode), Findbugs mogą w każdym razie pomóc. IDE, takie jak IntelliJ (kontrole kodu Java są w pełni dostępne w edycji Community) i Eclipse również mają na to dobre wsparcie.

Dla IntelliJ, rzucić okiem na Global unused declaration inspection:

dzięki poprawie wewnętrznych indeksów za kodem IDEA silnika wglądu IntelliJ, Maia będzie mógł od razu podkreślić pewne java klas, metod i pól, które są niewykorzystany w całym projekcie.

dla Eclipse, jest UCDetector wtyczki:

UCDetector (unecessary Kod Detector) jest Open Source eclipse plugin narzędzie do wyszukiwania unecessary (DEAD) kodu java publicznego. Próbuje również uczynić kod końcowym, chronionym lub prywatnym.

alt text http://www.ucdetector.org/images/popup.png

Ale muszę przyznać, że nie jestem pewien, czy którykolwiek z nich rozwiązania będą naprawdę działają w całej modułów. W takim przypadku moja sugestia polegałaby na umieszczeniu całego kodu w jednym projekcie "dozorcy" (tak, to jest brzydkie, ale dobrze ...) i uruchomieniu na nim narzędzi (i oczyszczeniu modułów na podstawie uzyskanych wyników).

+0

To bardzo miła i szczegółowa odpowiedź.Dziękuję Pascal. – Lancelot

+0

@Lancelot Nie ma za co. Powodzenia! –

1

Używam wtyczki Core Tools, aby znaleźć nieużywany kod w wielu różnych modułach. Ścieżka budowania każdego z projektów musi być odpowiednio skonfigurowana, aby Eclipse wiedział, że istnieją zależności między projektami. Jeśli importujesz projekty za pomocą wtyczki m2eclipse, ustawi się to automatycznie.

Myślę, że sposób, w jaki działa wtyczka Core Tools, automatyzuje proces, który wykonuje widok "Hierarchia wywołań". Wybierz metodę i uruchom "Hierarchię połączeń" (ctrl-alt-H), jeśli nie ma żadnych wywołujących, wówczas Narzędzia podstawowe powinny oznaczyć tę metodę jako niestosowną.

Powiązane problemy