2010-06-16 5 views
35

수은 저장소에서 특정 기간 동안 변경된 코드 행 수를 계산하는 유용한 도구가 있습니까? statsvn 행에있는 것이 좋지만 6 개월 내에 변경된 코드 행 수를 계산하는 것은 hg 로그에 대한 논쟁의 영리한 조합을 포함하여 수행됩니다. 감사.변경된 코드 행을 시간이 지남에 따라 계산

PS :이 수를 측정의 목적을 논의하지 마십시오하며 hg churn extension 당신이 원하는 무엇

+1

http://code.google.com/p/gource/이 과정에서 꽤 멋지게 보입니다. :-) – Ken

답변

9

나는 이것을 할 필요가 있었고, hg churn 확장과 유사한 해결책으로 꽤 많은 시간을 보냈다. 결국

, 내가 일을 무엇을 나에게 가장 CLOC (카운트 코드 라인) 것을 발견했다 : http://cloc.sourceforge.net/

당신은 그것을 프로젝트의 두 가지 버전을 포함하는 두 개의 폴더를 제공 할 수 있습니다, 그리고이 모두를 계산합니다 수정, 추가, 제거 된 행. 그것은 여러 언어를 인식하고 코드, 주석 및 빈 줄을 항목별로 나열합니다.

그것을 사용하기 위해, 나는 두 개의 평행 한 폴더에 수은에서 내 코드의 두 가지 버전을 뽑아 다음 cloc --diff --ignore 공백

+4

그건 단지 하나의 Perl 파일을 다운로드 할 때 "문제"에 대한 좋은 해결책입니다. 구문은 다음과 같습니다 :'./cloc.pl --ignore-whitespace --ignore-case --diff

' – Pascal

+0

git diff --shortstat만큼 빠르지 않지만 복사 된 중복 코드를 찾는 것이 훨씬 낫습니다. – cmcginty

11

편집 사용 : hg diffhg log 지원 a를 모두 --stat 옵션을 사용하면 더 빠르고 간단하게이 작업을 수행 할 수 있습니다.


은 나를 위해 변경 선 (코드 반드시 라인)을 계산 lines라는 별명을했다. 때때로 당신이 줄 수를 알고 싶어

hg lines tip 또는 hg lines 123:456 -u brian

: 선택적 인수 다음에, 그 다음

[alias] 
lines = !echo `hg log -pr [email protected] | grep "^+" | wc -l` Additions; echo `hg log -pr [email protected] | grep "^-" | wc -l` Deletions; 

을 먼저에게 개정을 통과 : 당신의 .hgrc 파일에서이 별명을 넣어보십시오 공백 만있는 변경 사항을 제외하고 변경되었습니다. 이를 위해서는 log -p 대신 diff -w을 사용해야합니다. 예를 들어, log가있는 동안 diff가되지 않습니다 --user 매개 변수를 사용합니다 - 그들은 약간 다르게 diff 때문에 log 행동하라 다르게 동작

#ignore whitespace 
linesw = ![[ $1 =~ : ]] && r=$1 || r="$1~1:$1"; echo `hg diff -wr $r | grep "^+\([^+]\|$\)" | wc -l` Additions; echo `hg diff -wr $r | grep "^-\([^-]\|$\)" | wc -l` Deletions; 

hg linesw tip 또는 hg lines 123:456

참고 : 나는 이것에 대한 linesw 별칭을 설정 범위를 지날 때 log은 범위에 주어진 첫 번째 수정에서 커밋 된 변경 사항을 표시하지만 diff은 변경되지 않습니다.

이것은 bash를 통해서만 테스트되었습니다.

+0

hg log 명령을 사용하지 마십시오. 여기에는 현재 분기에서 커밋되지 않은 커밋을 포함하여 두 커밋 ID간에 ​​ 선형 Repo 호스트의 모든 변경 사항도 포함됩니다. – Paul