Czy są dostępne jakieś narzędzia, które obliczą metryki kodu (na przykład liczbę linii kodu, cykliczną złożoność, sprzężenie, spójność) dla twojego projektu i z czasem utworzą wykres pokazujący trendy?
Czy są dostępne jakieś narzędzia, które obliczą metryki kodu (na przykład liczbę linii kodu, cykliczną złożoność, sprzężenie, spójność) dla twojego projektu i z czasem utworzą wykres pokazujący trendy?
Odpowiedzi:
W moim ostatnim projekcie użyłem SourceMonitor . To fajne darmowe narzędzie do analizy metryk kodu.
Oto fragment z oficjalnej strony SourceMonitor:
- Zbiera metryki w szybkim, pojedynczym przejściu przez pliki źródłowe.
- Mierzy metryki dla kodu źródłowego napisanego w C ++, C, C #, VB.NET, Java, Delphi, Visual Basic (VB6) lub HTML.
- Obejmuje metryki na poziomie metod i funkcji dla języków C ++, C, C #, VB.NET, Java i Delphi.
- Zapisuje metryki w punktach kontrolnych w celu porównania podczas projektów tworzenia oprogramowania.
- Wyświetla i drukuje metryki w tabelach i na wykresach.
- Działa w standardowym interfejsie użytkownika systemu Windows lub w skryptach przy użyciu plików poleceń XML.
- Eksportuje metryki do plików XML lub CSV (wartości rozdzielane przecinkami) w celu dalszego przetwarzania za pomocą innych narzędzi.
W przypadku .NET, obok NDepend, które jest po prostu najlepszym narzędziem, mogę polecić vil .
Następujące narzędzia mogą przeprowadzać analizę trendów:
Sonar jest zdecydowanie narzędziem, które należy wziąć pod uwagę, szczególnie w przypadku projektów Java. Jednak będzie również obsługiwać kod PHP lub C / C ++, Flex i Cobol.
Oto zrzut ekranu przedstawiający niektóre metryki dotyczące projektu:
tekst alternatywny http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png
Zauważ, że możesz wypróbować to narzędzie, korzystając z ich witryny demonstracyjnej pod adresem http://nemo.sonarsource.org
NDepend dla .net
Szukałem również narzędzia / wtyczki do pomiarów kodu dla mojego IDE, ale o ile wiem, nie ma żadnego (to znaczy zaćmienia), które również pokazuje wykres złożoności w określonym przedziale czasu. Jednak znalazłem wtyczkę Eclipse metrics , która obsługuje:
I podczas korzystania z niego nie przegapiłem opcji wykresu, której również szukasz.
Myślę, że jeśli nie znajdziesz żadnych wtyczek / narzędzi, które mogłyby obsłużyć wykresy w czasie, powinieneś spojrzeć na narzędzie, które najbardziej Ci odpowiada i oferuje wszystkie potrzebne informacje; nawet jeśli podane informacje dotyczą tylko bieżącej kompilacji projektu.
Na marginesie, wtyczka eclipse metrics umożliwia wyeksportowanie danych do pliku zewnętrznego (odsyłacz prowadzi do przykładu), więc jeśli używasz narzędzia do kontroli źródła, a powinieneś !, zawsze możesz wyeksportować dane dla konkretnego skompiluj i zapisz plik wraz z kodem źródłowym, dzięki czemu nadal będziesz mieć (podstawowy) sposób, aby cofnąć się w czasie i sprawdzić różnice.
pamiętaj, że otrzymujesz to, co mierzysz. loc nie mówi nic o produktywności ani wydajności.
oceń programistę według linii kodu, a otrzymasz ... wiersze kodu. ten sam argument dotyczy innych wskaźników.
otoh .. http://www.crap4j.org/ to bardzo konserwatywna i użyteczna miara. określa złożoność w odniesieniu do pokrycia.
NDepend, używam go i najlepiej do tego celu. Sprawdź to: http://www.codeproject.com/KB/dotnet/NDepend.aspx
Jeśli chodzi o narzędzie NDepend , zawiera 82 różne metryki kodu, od liczby wierszy kodu do rangi metody (popularność), złożoności cyklicznej, braku spójności metod, pokrycia procentowego (wyodrębnionego z NCover lub VSTS), głębokości dziedziczenia. .
Dzięki systemowi reguł NDepend może również znaleźć problemy i oszacować dług techniczny, który jest interesującą miarą kodu (ilość wysiłku deweloperskiego w celu naprawienia problemów w porównaniu z ilością czasu deweloperskiego marnowanego w ciągu roku, aby problemy zostały rozwiązane).
Wszystkie te dane są szczegółowo opisane tutaj .
Jeśli jesteś w środowisku .NET, program CodeRush firmy Developer Express zapewnia analizę LOC, złożoności cyklicznej i (raczej znakomitej, IMHO) analizy złożoności konserwacji kodu w czasie rzeczywistym.
(Przepraszamy za link do skomplikowanej konserwacji; przechodzi do pamięci podręcznej Google. Oryginał wygląda na bankomat offline).
Atlassian FishEye to kolejne doskonałe narzędzie do tego zadania. Integruje się z systemem kontroli źródła (obecnie obsługuje CVS, SVN i Perforce) i analizuje w ten sposób wszystkie pliki. Analiza jest jednak dość podstawowa, a sam produkt jest komercyjny (ale w bardzo przystępnej cenie, IMO).
Możesz również pobrać do niego dodatek o nazwie Tygiel, który ułatwia recenzowanie kodu przez rówieśników.
W przypadku Visual Studio .NET (przynajmniej C # i VB.NET) bezpłatne StudioTools są niezwykle przydatne w przypadku metryk. Dodaje również szereg funkcji dostępnych w komercyjnych narzędziach, takich jak ReSharper .
Code Analyzer to proste narzędzie, które generuje tego rodzaju metryki.
(źródło: teel.ws )
W przypadku Pythona pylint może zapewnić pewne metryki jakości kodu.
Istnieje również wtyczka do metryki kodu dla reflektora , jeśli używasz .NET.
Polecam Code Metrics Viewer Exention dla Visual Studio.
Bardzo łatwo jest od razu przeanalizować rozwiązanie, zrobić również porównanie, jeśli zrobiłeś postęp ;-)
Jeśli chodzi o PHP, uważam, że na przykład phpUnderControl zawiera metryki za pośrednictwem phpUnit (jeśli się nie mylę).
Pamiętaj, że wskaźniki są często błędne. Na przykład koder, który pracuje nad trywialnymi problemami, stworzy więcej kodu i będzie wyglądał lepiej na twoich wykresach niż programista, który rozwiązuje złożone problemy.
Jeśli szukasz analizy trendów, czy to naprawdę oznacza coś do zmierzenia poza SLOC?
Nawet jeśli po prostu wykonujesz grep dla końcowych średników i zliczając liczbę zwróconych wierszy, szukasz spójności w technice pomiaru SLOC. W ten sposób dzisiejszy pomiar można w sensowny sposób porównać z pomiarem z zeszłego miesiąca.
Naprawdę nie rozumiem, co dałby trend złożoności cyklometrycznej McCabe? Myślę, że CC powinno być używane bardziej jako migawka jakości, aby przekazać informacje zwrotne programistom.
Edycja: Ooh. Pomyślałem o kilku innych pomiarach, które mogą być przydatne. Komentarze jako procent SLOC i pokrycia testu. Żadnego z nich nie chcesz wypuścić. Powrót do modernizacji któregokolwiek z nich nigdy nie jest tak boski, jak robienie ich „w ogniu chwili!”
HTH.
Twoje zdrowie,
Obrabować
Zrozumienie Scitools ma możliwość wygenerowania dla Ciebie wielu metryk kodu. Nie mam dużego doświadczenia z funkcjami metryk kodu, ale ogólnie funkcje analizy statycznej były niezłe, a cena była bardzo rozsądna. Wsparcie było doskonałe.
Project Code Meter zapewnia różnicowy raport historii rozwoju (w formacie Excel), który pokazuje wskaźniki postępu kodowania w SLOC, czasie i procentach wydajności (jego oszacowanie czasu jest oparte na cyklicznej złożoności i innych wskaźnikach). Następnie w programie Excel możesz łatwo utworzyć żądany wykres.
zobacz ten artykuł, który opisuje to krok po kroku: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm
W przypadku Javy możesz wypróbować nasze narzędzie QualityGate, które oblicza ponad 60 metryk kodu źródłowego, śledzi wszystkie zmiany w czasie, a także zapewnia ogólną ocenę łatwości utrzymania kodu źródłowego.