Skip to content

Code Fat

Jooyung Han edited this page Feb 18, 2014 · 1 revision

Code Fat - 코드 지방

codefat = (1 - dloc / sloc) * 100
dloc of method = sum of dloc of basic blocks of method
dloc of basic block = decision depth of basic block * loc of basic block
decision depth of basic block = 0.5 ^ number of decision points to reach basic block
loc of basic block = number of statements of basic block
sloc of method = sum of loc of basic blocks of method

모든 메소드에 대해 SLOC >= DLOC 이다. 이 둘의 차이는 해당 메소드의 복잡도와 밀접하게 관련되어 있으며 여기에 브랜치의 크기도 영향을 받는다. (SLOC가 같고 if문이 하나씩 있다고 하더라도 if 로 분기된 LOC가 많으면 DLOC가 더 낮게 나온다.)[dloc 설명 참고][What is DLOC?] 메소드별 SLOC - DLOC 의 총합을 SLOC 총합으로 나눈 값을 '치선 값(Chisun Number)'로 이름 붙였다.

CN = sum(sloc - dloc) / sum(sloc)
   = (sum(sloc) - sum(dloc)) / sum(sloc)
   = 1 - sum(dloc)/sum(sloc)

SLOC 대비 DLOC가 낮을 수록 값이 나빠지는 경향을 보이므로 마치 인체의 체지방 비율 정도로 이해할 수 있다. (적정 체지방 비율은 성인 남성의 경우 1518%, 여성의 경우 2025%이다. 체지방 비율 참고) 이 값은 프로젝트 단위로 집계할 수 있고 패키지 단위로 살펴볼 수도 있다.

그래프

  • commit cn trend
  • date cn trend
  • loc cn trend - loc/cn 값의 2차원 평면에서 커밋별로 위치가 어떻게 변해가는지 파악해볼 수 있다. loc는 커지더라도

Samples

Clone this wiki locally