2009-03-05 18 views
6

Mam aplikację C# z Visual Studio 2005. Kod ma około 300 KLOC, który był nadużywany przez 3 lata.Porządkuj niechciany kod C#

Kiedy przechodziłem przez kod okazało się, że wiele nieużywanych funkcji/metod/właściwości. Nie można wyczyścić kodu ręcznie (Wymaga sprawdzenia każdego członka i jeśli nie znaleziono żadnych odniesień usunąć go).

Szukam zautomatyzować ten proces, przez makro VS, który będzie przechodził przez każdego członka w kodzie, jeśli to zrobi nie ma żadnych odniesień, które powinny go usunąć, jeśli znaleziono odnośniki, sprawdź odwołania do swojego członka wywołującego, jeśli członek wywołujący nie ma żadnego odniesienia, powinien usunąć oba i tak dalej.

Jestem pewien, że ktoś by to wcześniej złamał.

+1

Mam nadzieję, że aplikacja nie używa refleksji do wywoływania metod. – kenny

Odpowiedz

13

Resharper ma funkcję czyszczenia kodu i daje całkiem niezłą wskazówkę, które metody/klasy nie są używane.

+0

Nie jestem pewien, czy jest zautomatyzowany czy nie ... ale Resharper wskazuje, czy metoda ma jakieś referencje. –

4

Możesz przeszukiwać bazę kodów za pomocą NDepend przy użyciu CQL, aby dowiedzieć się, które metody i klasy nie są używane.

+0

NDepend pomoże ci jeszcze lepiej zrozumieć kod, dostarczając informacji o najczęściej używanych typach, zależnościach między typami, zależnościach bezpośrednich i pośrednich, mierzonej złożoności typów i metod itp. – flq

0

Pierwsze użycie ponownie ostrzejsze niż sugerowały inne.

Resharper zakłada, że ​​publiczne metody są używane gdzieś przez zewnętrzny zespół, nawet jeśli nie są, więc szukaj i zamień "publiczne" na "prywatne" i przekompiluj.

4

Uważaj na kod wywoływany za pomocą odbicia. Wiele narzędzi do refaktoryzacji oznaczać będzie ten kod jako nieużywany, gdy w rzeczywistości są.

Najbezpieczniej jest przeprowadzić testy jednostkowe (masz już to?) Przed i po refaktoryzacji, aby upewnić się, że wszystko nadal działa.

0

Użyłem Gendarme (jak FxCop), aby ustalić, który kod nie został wywołany. AFAIK nie może być zautomatyzowany, ale przynajmniej nie musisz iść linia po linii.