Oblicz metryki kodu [zamknięte]

87

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?

Bjorn Reppen
źródło
Zależy od języka, jakiego używasz?
Valentin Rocher,

Odpowiedzi:

67

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:

aku
źródło
Wydaje się, że SourceMonitor jest narzędziem działającym tylko w systemie Windows. Czy istnieje coś podobnego dla innych systemów operacyjnych (Linux, BSD, Mac)?
Mnementh
Mmmm, jestem programistą Windows, nie znam takich narzędzi dla facetów z FOSS. Może możesz spróbować uruchomić SourceMonitor pod emulatorem Wine?
aku
2
Teraz jest narzędzie typu NDepend dla C ++, CppDepend
Goosey.
SourceMonitor jest przeznaczony wyłącznie do użytku niekomercyjnego.
Scott 混合 理论
2
@Kevin 混合 理论 przeczytaj uważnie licencję - możesz jej używać w dowolnym środowisku, w którym po prostu nie możesz jej sprzedać. „Oznacza to, że możesz używać tego pliku wykonywalnego w ramach własnych przedsięwzięć programistycznych (komercyjnych lub innych), ale nie możesz go sprzedawać…”
Natalie Adams,
12

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

Romain Linsolas
źródło
Najwyraźniej tak nie pozwoli mi rozwiązać ten odnośnik - link powinien być: nemo.sonarsource.org
Natalie Adams
8

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:

  • Cyklomatyczna złożoność McCabe'a
  • Efektywne sprzęgła
  • Brak spójności metod
  • Linie kodu w metodzie
  • Liczba pól
  • Liczba poziomów
  • Liczba mieszkańców w zakresie
  • Liczba parametrów
  • Liczba instrukcji
  • Metody ważone na klasę

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.

sven
źródło
4

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.

Andreas Petersson
źródło
2
Oceń programistę wierszami komentarzy, a otrzymasz ... wiersze komentarzy.
EML
3

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 .

Patrick z zespołu NDepend
źródło
2

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).

moobaa
źródło
2

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.

Jack Leow
źródło
2

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 .

Topdown
źródło
2

Code Analyzer to proste narzędzie, które generuje tego rodzaju metryki.

tekst alternatywny
(źródło: teel.ws )

prakash
źródło
3
Chociaż GUI wydaje się przyjemne, generowane metryki wydają się całkiem bezużyteczne - np. „Białe znaki na plik”?
kizzx2
1

W przypadku Pythona pylint może zapewnić pewne metryki jakości kodu.

Tylko czytać
źródło
1

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 ;-)

Czytaj więcej tutaj o funkcji

Baljeetsingh
źródło
0

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.

Do
źródło
0

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ć

Rob Wells
źródło
0

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.

andreas buykx
źródło
0

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

Benji
źródło
0

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.

Tibor Bakota - FrontEndART
źródło