Lines of code (LOC):
Opis:
Mierzy ilość linii kodu w rozpatrywanym typie.
Interpretacja:
Metryka ta może być używana jako wskaźnik za dużych metod i klas.
Comment lines of code (CLOC):
Opis:
Ilość linii komentarza.
Interpretacja:
Niska wartość może wskazywać na niedostateczne udokumentowanie kodu.
Halstead’s volume (V)
Opis:
Opisuje rozmiar implementacji algorytmu. Obliczanie V jest oparte na ilości wykonanych operacji i operandów przetwarzanych w algorytmie.
Interpretacja:
V funkcji powinna być zawarta pomiędzy 20 a 1000. Objętości wyższe niż 1000 dają do zrozumienia że funkcja prawdopodobnie robi zbyt dużo rzeczy. V pliku powinna być zawarta między 100 i 8000.
Comment Weight (CW)
Opis:
Stosunek między kodem logicznym a komentarzem.
Interpretacja:
Niska wartość stosunku między kodem logicznym, a komentarzem może wskazywać na niedostateczne udokumentowanie kodu.
Cyclomatic complexity (CC)
Opis:
Złożoność cyklomatyczna, metryka używana do obliczania złożoności metod lub procedur.
Uproszczona wersja metryki: CC = d +1
Gdzie: d – liczba węzłów decyzyjnych w grafie (w praktyce liczy się ilość instrukcji if, while, do, for, ?:, catch, switch, case i operatorów &&, ||).
Interpretacja:
Wysokie wartości metryki CC wskazują na to, że metoda jest zbyt skomplikowana, przez co zwiększa się prawdopodobieństwo wystąpienia błędu. Wartości 1-4 są uważana za dobre, 8-10 jako zalecane do refaktoryzacji, powyżej 11 konieczna jest refaktoryzacja.
Lack of Cohesion in Methods (LCOM)
Opis:
Jest to metryka mierząca spójność metod wewnątrz klasy.
Interpretacja:
Wysoka wartość metryki może wskazywać klasy, które mają przydzieloną zbyt dużą ilość obowiązków i są kandydatem do podziału na mniejsze. Klasa o wysokiej wartości LCOM może być bardziej narażona na błędy, jest trudniejsza w testowaniu.
Afferent coupling (Ca):
Opis:
Ca to liczba klas spoza rozpatrywanego pakietu, które zależą od klas w rozpatrywanym pakiecie.
Interpretacja:
Wysoka wartość tej metryki sugeruje w niejawny sposób dużą stabilność komponentu, ale także dużą odpowiedzialność względem zależnych typów.
Efferent coupling (Ce):
Opis:
Ce to liczba klas z rozpatrywanego pakietu, które zależą od klas w innych pakietach. Mierzy zatem podatność rozpatrywanego pakietu na zmiany w pakietach, od których zależy.
Interpretacja:
Wysokie wartości tej metryki wskazują na niestabilność pakietu – duża zależność od zewnętrznych klas.
Instability (I):
Opis:
I jest to względna podatność na zmiany. Metryka ta jest zdefiniowana za pomocą Ce i Ca.
Interpretacja:
Pakiety powinny się dzielić na dwie grupy:
– stabilne o wartości metryki I bliskiej 0, które ponoszą dużą odpowiedzialność
wobec innych komponentów.
– niestabilne o wartości metryki I bliskiej 1, które w dużej mierze zależą od
innych komponentów.